[FFmpeg-soc] [soc]: r251 - matroska/matroskaenc.c

David Conrad umovimus at gmail.com
Mon Jun 25 02:25:59 CEST 2007


On Jun 14, 2007, at 12:08 PM, Aurelien Jacobs wrote:

> On Thu, 14 Jun 2007 00:50:44 +0200 (CEST)
> conrad <subversion at mplayerhq.hu> wrote:
>
>> Author: conrad
>> Date: Thu Jun 14 00:50:44 2007
>> New Revision: 251
>>
>> Log:
>> First stab at writing the tracks element, still needs some  
>> additional cases for certain codecs
>>
>> Modified:
>>    matroska/matroskaenc.c
>>
>> Modified: matroska/matroskaenc.c
>> ===================================================================== 
>> =========
>> --- matroska/matroskaenc.c	(original)
>> +++ matroska/matroskaenc.c	Thu Jun 14 00:50:44 2007
>> @@ -112,7 +112,7 @@ static int mkv_write_header(AVFormatCont
>>      MatroskaMuxContext *mkv = s->priv_data;
>>      ByteIOContext *pb = &s->pb;
>>      offset_t ebml_header, segment_info, tracks;
>> -    int i;
>> +    int i, j;
>>
>>      ebml_header = start_ebml_master(pb, EBML_ID_HEADER);
>>      put_ebml_uint   (pb, EBML_ID_EBMLVERSION        ,           1);
>> @@ -141,9 +141,77 @@ static int mkv_write_header(AVFormatCont
>>      tracks = start_ebml_master(pb, MATROSKA_ID_TRACKS);
>>      for (i = 0; i < s->nb_streams; i++) {
>>          AVStream *st = s->streams[i];
>> -        offset_t track = start_ebml_master(pb,  
>> MATROSKA_ID_TRACKENTRY);
>> +        AVCodecContext *codec = st->codec;
>> +        offset_t subinfo, track;
>> +        int native_id = 0;
>> +
>> +        track = start_ebml_master(pb, MATROSKA_ID_TRACKENTRY);
>> +        put_ebml_uint (pb, MATROSKA_ID_TRACKNUMBER     , i);
>> +        // XXX: random number for UID? and can we use the same  
>> UID when copying
>> +        // from another MKV as the specs recommend?
>> +        put_ebml_uint (pb, MATROSKA_ID_TRACKUID        , i);
>> +        put_ebml_uint (pb, MATROSKA_ID_TRACKFLAGLACING ,  
>> 0);    // no lacing (yet)
>
> I think this is the right way to set the track UID.
> Anyway, you have no way to know if you are remuxing from another mkv
> file or from another format, so there is no way to use the same UID
> as original file.

I thought so, I double checked the specs and the only requirement is  
that both are an integer greater than 0, so I fixed that.



More information about the FFmpeg-soc mailing list