matroskamux: Add support for interlaced field order
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5534>
This commit is contained in:
parent
671dd6a61e
commit
123a7a515f
@ -1107,8 +1107,12 @@ gst_matroska_mux_video_pad_setcaps (GstMatroskaMux * mux,
|
|||||||
if (interlace_mode != NULL) {
|
if (interlace_mode != NULL) {
|
||||||
if (strcmp (interlace_mode, "progressive") == 0)
|
if (strcmp (interlace_mode, "progressive") == 0)
|
||||||
videocontext->interlace_mode = GST_MATROSKA_INTERLACE_MODE_PROGRESSIVE;
|
videocontext->interlace_mode = GST_MATROSKA_INTERLACE_MODE_PROGRESSIVE;
|
||||||
else
|
else {
|
||||||
videocontext->interlace_mode = GST_MATROSKA_INTERLACE_MODE_INTERLACED;
|
videocontext->interlace_mode = GST_MATROSKA_INTERLACE_MODE_INTERLACED;
|
||||||
|
if ((s = gst_structure_get_string (structure, "field-order"))) {
|
||||||
|
videocontext->field_order = gst_video_field_order_from_string (s);
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
videocontext->interlace_mode = GST_MATROSKA_INTERLACE_MODE_UNKNOWN;
|
videocontext->interlace_mode = GST_MATROSKA_INTERLACE_MODE_UNKNOWN;
|
||||||
}
|
}
|
||||||
@ -2844,6 +2848,18 @@ gst_matroska_mux_track_header (GstMatroskaMux * mux, GstMatroskaMuxPad * pad)
|
|||||||
switch (videocontext->interlace_mode) {
|
switch (videocontext->interlace_mode) {
|
||||||
case GST_MATROSKA_INTERLACE_MODE_INTERLACED:
|
case GST_MATROSKA_INTERLACE_MODE_INTERLACED:
|
||||||
gst_ebml_write_uint (ebml, GST_MATROSKA_ID_VIDEOFLAGINTERLACED, 1);
|
gst_ebml_write_uint (ebml, GST_MATROSKA_ID_VIDEOFLAGINTERLACED, 1);
|
||||||
|
if (videocontext->field_order != GST_VIDEO_FIELD_ORDER_UNKNOWN) {
|
||||||
|
if (videocontext->field_order ==
|
||||||
|
GST_VIDEO_FIELD_ORDER_TOP_FIELD_FIRST) {
|
||||||
|
gst_ebml_write_uint (ebml, GST_MATROSKA_ID_VIDEOFIELDORDER, 9);
|
||||||
|
} else if (videocontext->field_order ==
|
||||||
|
GST_VIDEO_FIELD_ORDER_BOTTOM_FIELD_FIRST) {
|
||||||
|
gst_ebml_write_uint (ebml, GST_MATROSKA_ID_VIDEOFIELDORDER, 14);
|
||||||
|
} else {
|
||||||
|
GST_FIXME_OBJECT (mux, "unhandled video field order %d",
|
||||||
|
videocontext->field_order);
|
||||||
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case GST_MATROSKA_INTERLACE_MODE_PROGRESSIVE:
|
case GST_MATROSKA_INTERLACE_MODE_PROGRESSIVE:
|
||||||
gst_ebml_write_uint (ebml, GST_MATROSKA_ID_VIDEOFLAGINTERLACED, 2);
|
gst_ebml_write_uint (ebml, GST_MATROSKA_ID_VIDEOFLAGINTERLACED, 2);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user