summaryrefslogtreecommitdiff
path: root/libavformat/matroskaenc.c
diff options
context:
space:
mode:
authorJames Almer <jamrial@gmail.com>2016-10-04 19:42:55 -0300
committerJames Almer <jamrial@gmail.com>2016-10-04 19:42:55 -0300
commit3cc9d6d3824f24df677437b891b66bf84eabc45b (patch)
treeea0c42b7f7d9a58f430852c7dfdb0e430aa9c468 /libavformat/matroskaenc.c
parentee72b6d1874de4d52b366b0a2700f6c6514db8b3 (diff)
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.c41
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