diff options
author | James Almer <jamrial@gmail.com> | 2016-10-04 19:42:55 -0300 |
---|---|---|
committer | James Almer <jamrial@gmail.com> | 2016-10-04 19:42:55 -0300 |
commit | 3cc9d6d3824f24df677437b891b66bf84eabc45b (patch) | |
tree | ea0c42b7f7d9a58f430852c7dfdb0e430aa9c468 /libavformat/matroskaenc.c | |
parent | ee72b6d1874de4d52b366b0a2700f6c6514db8b3 (diff) | |
download | ffmpeg-3cc9d6d3824f24df677437b891b66bf84eabc45b.tar.gz |
avformat/matroska: write FlagInterlaced element in WebM
It's listed as supported in both https://www.webmproject.org/docs/container/
and https://matroska.org/technical/specs/index.html
Reviewed-by: Dave Rice <dave@dericed.com>
Signed-off-by: James Almer <jamrial@gmail.com>
Diffstat (limited to 'libavformat/matroskaenc.c')
-rw-r--r-- | libavformat/matroskaenc.c | 41 |
1 files changed, 21 insertions, 20 deletions
diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c index 3eeb09bab2..c6a8dceb79 100644 --- a/libavformat/matroskaenc.c +++ b/libavformat/matroskaenc.c @@ -791,7 +791,7 @@ static int mkv_write_video_color(AVIOContext *pb, AVCodecParameters *par, AVStre return 0; } -static void mkv_write_field_order(AVIOContext *pb, +static void mkv_write_field_order(AVIOContext *pb, int mode, enum AVFieldOrder field_order) { switch (field_order) { @@ -809,23 +809,25 @@ static void mkv_write_field_order(AVIOContext *pb, 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; + if (mode != MODE_WEBM) { + 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; + } } } } @@ -1088,8 +1090,7 @@ static int mkv_write_track(AVFormatContext *s, MatroskaMuxContext *mkv, put_ebml_uint (pb, MATROSKA_ID_VIDEOPIXELWIDTH , par->width); put_ebml_uint (pb, MATROSKA_ID_VIDEOPIXELHEIGHT, par->height); - if (mkv->mode != MODE_WEBM) - mkv_write_field_order(pb, par->field_order); + mkv_write_field_order(pb, mkv->mode, par->field_order); // check both side data and metadata for stereo information, // write the result to the bitstream if any is found |