On 03/04/16 11:23, Tim W. wrote: > On Sat, Apr 2, 2016 at 10:36 PM, Luca Barbato <[email protected]> wrote: > >> And bump the document version to 4. >> --- >> libavformat/matroskaenc.c | 45 >> +++++++++++++++++++++++++++++++++++++++++++-- >> 1 file changed, 43 insertions(+), 2 deletions(-) >> >> diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c >> index c2b1de0..667646d 100644 >> --- a/libavformat/matroskaenc.c >> +++ b/libavformat/matroskaenc.c >> @@ -632,6 +632,45 @@ static int mkv_write_codecprivate(AVFormatContext *s, >> AVIOContext *pb, >> return ret; >> } >> >> +static void mkv_write_field_order(AVIOContext *pb, >> + enum AVFieldOrder field_order) >> +{ >> + switch (field_order) { >> + case AV_FIELD_UNKNOWN: >> + put_ebml_uint(pb, MATROSKA_ID_VIDEOFLAGINTERLACED, >> + MATROSKA_VIDEO_INTERLACE_FLAG_UNDETERMINED); >> + break; >> + case AV_FIELD_PROGRESSIVE: >> + put_ebml_uint(pb, MATROSKA_ID_VIDEOFLAGINTERLACED, >> + MATROSKA_VIDEO_INTERLACE_FLAG_PROGRESSIVE); >> + break; >> + case AV_FIELD_TT: >> + case AV_FIELD_BB: >> + case AV_FIELD_TB: >> + case AV_FIELD_BT: >> + put_ebml_uint(pb, MATROSKA_ID_VIDEOFLAGINTERLACED, >> + MATROSKA_VIDEO_INTERLACE_FLAG_INTERLACED); >> + switch (field_order) { >> + case AV_FIELD_TT: >> + put_ebml_uint(pb, MATROSKA_ID_VIDEOFIELDORDER, >> + MATROSKA_VIDEO_FIELDORDER_TT); >> + break; >> + case AV_FIELD_BB: >> + put_ebml_uint(pb, MATROSKA_ID_VIDEOFIELDORDER, >> + MATROSKA_VIDEO_FIELDORDER_BB); >> + break; >> + case AV_FIELD_TB: >> + put_ebml_uint(pb, MATROSKA_ID_VIDEOFIELDORDER, >> + MATROSKA_VIDEO_FIELDORDER_TB); >> + break; >> + case AV_FIELD_BT: >> + put_ebml_uint(pb, MATROSKA_ID_VIDEOFIELDORDER, >> + MATROSKA_VIDEO_FIELDORDER_BT); >> + break; >> + } >> + } >> +} >> + >> static int mkv_write_stereo_mode(AVFormatContext *s, AVIOContext *pb, >> AVStream *st, int mode) >> { >> @@ -831,10 +870,12 @@ static int mkv_write_track(AVFormatContext *s, >> MatroskaMuxContext *mkv, >> } >> >> subinfo = start_ebml_master(pb, MATROSKA_ID_TRACKVIDEO, 0); >> - // XXX: interlace flag? >> + >> put_ebml_uint (pb, MATROSKA_ID_VIDEOPIXELWIDTH , par->width); >> put_ebml_uint (pb, MATROSKA_ID_VIDEOPIXELHEIGHT, par->height); >> >> + mkv_write_field_order(pb, par->field_order); >> + >> // check both side data and metadata for stereo information, >> // write the result to the bitstream if any is found >> ret = mkv_write_stereo_mode(s, pb, st, mkv->mode); >> @@ -1151,7 +1192,7 @@ static int mkv_write_header(AVFormatContext *s) >> put_ebml_uint (pb, EBML_ID_EBMLMAXIDLENGTH , 4); >> put_ebml_uint (pb, EBML_ID_EBMLMAXSIZELENGTH , 8); >> put_ebml_string (pb, EBML_ID_DOCTYPE , s->oformat->name); >> - put_ebml_uint (pb, EBML_ID_DOCTYPEVERSION , 2); >> + put_ebml_uint (pb, EBML_ID_DOCTYPEVERSION , 4); >> put_ebml_uint (pb, EBML_ID_DOCTYPEREADVERSION , 2); >> end_ebml_master(pb, ebml_header); >> >> -- >> 2.6.1 >> > > Looks OK.
The fate hashes need to be updated accordingly. _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
