mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 12:11:13 +00:00
mpeg2enc: fix interlace-mode detection
Previously, the code was always assuming progressive input, fix this by looking at the caps. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2455>
This commit is contained in:
parent
a561b1bd86
commit
c5d725652d
1 changed files with 19 additions and 1 deletions
|
@ -61,6 +61,7 @@ GstMpeg2EncPictureReader::StreamPictureParams (MPEG2EncInVidParams & strm)
|
||||||
const GValue *par_val;
|
const GValue *par_val;
|
||||||
y4m_ratio_t fps;
|
y4m_ratio_t fps;
|
||||||
y4m_ratio_t par;
|
y4m_ratio_t par;
|
||||||
|
const gchar *interlace_mode;
|
||||||
|
|
||||||
if (!gst_structure_get_int (structure, "width", &width))
|
if (!gst_structure_get_int (structure, "width", &width))
|
||||||
width = -1;
|
width = -1;
|
||||||
|
@ -90,7 +91,24 @@ GstMpeg2EncPictureReader::StreamPictureParams (MPEG2EncInVidParams & strm)
|
||||||
strm.horizontal_size = width;
|
strm.horizontal_size = width;
|
||||||
strm.vertical_size = height;
|
strm.vertical_size = height;
|
||||||
|
|
||||||
|
interlace_mode = gst_structure_get_string (structure, "interlace-mode");
|
||||||
|
|
||||||
|
if (!g_strcmp0(interlace_mode, "interleaved")) {
|
||||||
|
const gchar *field_order = gst_structure_get_string(structure, "field-order");
|
||||||
|
|
||||||
|
if (!g_strcmp0(field_order, "bottom-field-first")) {
|
||||||
|
strm.interlacing_code = Y4M_ILACE_BOTTOM_FIRST;
|
||||||
|
} else if (!g_strcmp0(field_order, "top-field-first")) {
|
||||||
|
strm.interlacing_code = Y4M_ILACE_TOP_FIRST;
|
||||||
|
} else {
|
||||||
|
GST_WARNING ("No field-order in caps, assuming top field first");
|
||||||
|
strm.interlacing_code = Y4M_ILACE_TOP_FIRST;
|
||||||
|
}
|
||||||
|
} else if (!g_strcmp0(interlace_mode, "mixed")) {
|
||||||
|
strm.interlacing_code = Y4M_ILACE_MIXED;
|
||||||
|
} else {
|
||||||
strm.interlacing_code = Y4M_ILACE_NONE;
|
strm.interlacing_code = Y4M_ILACE_NONE;
|
||||||
|
}
|
||||||
|
|
||||||
strm.aspect_ratio_code = mpeg_guess_mpeg_aspect_code (2, par,
|
strm.aspect_ratio_code = mpeg_guess_mpeg_aspect_code (2, par,
|
||||||
strm.horizontal_size, strm.vertical_size);
|
strm.horizontal_size, strm.vertical_size);
|
||||||
|
|
Loading…
Reference in a new issue