mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-28 03:00:35 +00:00
h265parse: Detect height change on field-based interlaced files
The first time update_src_caps is called, there's no frame parsed yet, therefore we don't know whether the file has alternate-field interlacing mode. If we run it again after we have a frame, it might be that now we have the SEI pic_struct parsed, and therefore we know that it's field-based interlaced, and therefore the height must be multiplied by two. Earlier on this was not detected as a change. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2022>
This commit is contained in:
parent
de83bd6b2f
commit
66bfd0e8ae
1 changed files with 4 additions and 2 deletions
|
@ -2026,12 +2026,14 @@ gst_h265_parse_update_src_caps (GstH265Parse * h265parse, GstCaps * caps)
|
|||
crop_width = sps->width;
|
||||
crop_height = sps->height;
|
||||
}
|
||||
if (gst_h265_parse_is_field_interlaced (h265parse)) {
|
||||
crop_height *= 2;
|
||||
}
|
||||
|
||||
if (G_UNLIKELY (h265parse->width != crop_width ||
|
||||
h265parse->height != crop_height)) {
|
||||
h265parse->width = crop_width;
|
||||
h265parse->height = gst_h265_parse_is_field_interlaced (h265parse) ?
|
||||
crop_height * 2 : crop_height;
|
||||
h265parse->height = crop_height;
|
||||
GST_INFO_OBJECT (h265parse, "resolution changed %dx%d",
|
||||
h265parse->width, h265parse->height);
|
||||
modified = TRUE;
|
||||
|
|
Loading…
Reference in a new issue