diff options
author | Raju Babannavar <raju.babannavar@gmail.com> | 2020-12-21 14:06:53 +0530 |
---|---|---|
committer | Tim-Philipp Müller <tim@centricular.com> | 2021-01-13 13:19:56 +0000 |
commit | c85d6f2429d8c4167f03fe41d13bbbb1a5ecaa63 (patch) | |
tree | 3e704615af6b842b26a9e38acb3b13882d540e0f | |
parent | 2afc46b5b724276d1e02eb91accdc6fa2badac38 (diff) | |
download | gstreamer-plugins-bad-c85d6f2429d8c4167f03fe41d13bbbb1a5ecaa63.tar.gz |
dvbsuboverlay: Add support for dynamic resolution update.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1487
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1954>
-rw-r--r-- | gst/dvbsuboverlay/dvb-sub.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/gst/dvbsuboverlay/dvb-sub.c b/gst/dvbsuboverlay/dvb-sub.c index 3c056326e..6a0b322c0 100644 --- a/gst/dvbsuboverlay/dvb-sub.c +++ b/gst/dvbsuboverlay/dvb-sub.c @@ -1139,6 +1139,7 @@ _dvb_sub_parse_display_definition_segment (DvbSub * dvb_sub, guint8 * buf, gint buf_size) { int dds_version, info_byte; + int display_width, display_height; if (buf_size < 5) return -1; @@ -1146,14 +1147,23 @@ _dvb_sub_parse_display_definition_segment (DvbSub * dvb_sub, guint8 * buf, info_byte = *buf++; dds_version = info_byte >> 4; + display_width = GST_READ_UINT16_BE (buf) + 1; + buf += 2; + display_height = GST_READ_UINT16_BE (buf) + 1; + buf += 2; + + if ((display_width != dvb_sub->display_def.display_width) + || (display_height != dvb_sub->display_def.display_height)) { + dvb_sub->display_def.display_width = display_width; + dvb_sub->display_def.display_height = display_height; + + dvb_sub->display_def.version = -1; + } + if (dvb_sub->display_def.version == dds_version) return 0; /* already have this display definition version */ dvb_sub->display_def.version = dds_version; - dvb_sub->display_def.display_width = GST_READ_UINT16_BE (buf) + 1; - buf += 2; - dvb_sub->display_def.display_height = GST_READ_UINT16_BE (buf) + 1; - buf += 2; dvb_sub->display_def.window_flag = info_byte & 1 << 3; |