From ed5e935fb7f74f3e6ce0503700e6beec123b1184 Mon Sep 17 00:00:00 2001 From: Jan Schmidt Date: Wed, 1 Jul 2020 16:13:27 +1000 Subject: [PATCH] matroska-mux: Warn on late caps arrival As well as warning when caps change after the headers were already written, make sure to warn if the *first* caos arrive late too. Part-of: --- gst/matroska/matroska-mux.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/gst/matroska/matroska-mux.c b/gst/matroska/matroska-mux.c index b365ebf47b..be76bf0e9a 100644 --- a/gst/matroska/matroska-mux.c +++ b/gst/matroska/matroska-mux.c @@ -977,6 +977,11 @@ gst_matroska_mux_video_pad_setcaps (GstPad * pad, GstCaps * caps) goto refuse_caps; } gst_caps_unref (old_caps); + } else if (mux->state >= GST_MATROSKA_MUX_STATE_HEADER) { + GST_ELEMENT_ERROR (mux, STREAM, MUX, (NULL), + ("Caps on pad %" GST_PTR_FORMAT + " arrived late. Headers were already written", pad)); + goto refuse_caps; } /* find context */ @@ -1834,6 +1839,11 @@ gst_matroska_mux_audio_pad_setcaps (GstPad * pad, GstCaps * caps) goto refuse_caps; } gst_caps_unref (old_caps); + } else if (mux->state >= GST_MATROSKA_MUX_STATE_HEADER) { + GST_ELEMENT_ERROR (mux, STREAM, MUX, (NULL), + ("Caps on pad %" GST_PTR_FORMAT + " arrived late. Headers were already written", pad)); + goto refuse_caps; } /* find context */ @@ -2270,6 +2280,11 @@ gst_matroska_mux_subtitle_pad_setcaps (GstPad * pad, GstCaps * caps) goto refuse_caps; } gst_caps_unref (old_caps); + } else if (mux->state >= GST_MATROSKA_MUX_STATE_HEADER) { + GST_ELEMENT_ERROR (mux, STREAM, MUX, (NULL), + ("Caps on pad %" GST_PTR_FORMAT + " arrived late. Headers were already written", pad)); + goto refuse_caps; } /* find context */ @@ -2779,6 +2794,8 @@ gst_matroska_mux_track_header (GstMatroskaMux * mux, break; } + GST_DEBUG_OBJECT (mux, "Wrote track header. Codec %s", context->codec_id); + gst_ebml_write_ascii (ebml, GST_MATROSKA_ID_CODECID, context->codec_id); if (context->codec_priv) gst_ebml_write_binary (ebml, GST_MATROSKA_ID_CODECPRIVATE,