summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMathieu Duponchelle <mathieu@centricular.com>2021-08-10 00:51:36 +0200
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>2021-08-20 00:16:43 +0000
commitcb75eda13b20b5633546e40e7d8fcc0d479ee901 (patch)
tree44081ed8c8d29013dafdb2bee5eb1d41fda0daf5
parent896c49cf4959815badcb5dd538a5d522a1f1629e (diff)
downloadgstreamer-plugins-good-cb75eda13b20b5633546e40e7d8fcc0d479ee901.tar.gz
isomp4/qtmux: allow renegotiating when tier / level / profile change
Those are carried either in codec_data or in-band SPS (for avc3), and it is OK for those to change, though decoders obviously need to support it. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/1047>
-rw-r--r--gst/isomp4/gstqtmux.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/gst/isomp4/gstqtmux.c b/gst/isomp4/gstqtmux.c
index eb55e8059..bae5ff727 100644
--- a/gst/isomp4/gstqtmux.c
+++ b/gst/isomp4/gstqtmux.c
@@ -5740,9 +5740,18 @@ check_field (GQuark field_id, const GValue * value, gpointer user_data)
if (g_strcmp0 (name, "video/x-h264") == 0 ||
g_strcmp0 (name, "video/x-h265") == 0) {
- /* we support muxing multiple codec_data structures */
+ /* We support muxing multiple codec_data structures, and the new SPS
+ * will contain updated tier / level / profiles, which means we do
+ * not need to fail renegotiation when those change.
+ */
if (g_strcmp0 (g_quark_to_string (field_id), "codec_data") == 0) {
return TRUE;
+ } else if (g_strcmp0 (g_quark_to_string (field_id), "tier") == 0) {
+ return TRUE;
+ } else if (g_strcmp0 (g_quark_to_string (field_id), "level") == 0) {
+ return TRUE;
+ } else if (g_strcmp0 (g_quark_to_string (field_id), "profile") == 0) {
+ return TRUE;
}
}