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>
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;