opusdec: Reset the decoder if the caps change

This commit is contained in:
Sebastian Dröge 2015-03-23 12:07:52 +01:00
parent bb5b0f2d12
commit c2f38cd054

View file

@ -541,9 +541,22 @@ gst_opus_dec_set_format (GstAudioDecoder * bdec, GstCaps * caps)
gboolean ret = TRUE;
GstStructure *s;
const GValue *streamheader;
GstCaps *old_caps;
GST_DEBUG_OBJECT (dec, "set_format: %" GST_PTR_FORMAT, caps);
if ((old_caps = gst_pad_get_current_caps (GST_AUDIO_DECODER_SINK_PAD (bdec)))) {
if (gst_caps_is_equal (caps, old_caps)) {
gst_caps_unref (old_caps);
GST_DEBUG_OBJECT (dec, "caps didn't change");
goto done;
}
GST_DEBUG_OBJECT (dec, "caps have changed, resetting decoder");
gst_opus_dec_reset (dec);
gst_caps_unref (old_caps);
}
s = gst_caps_get_structure (caps, 0);
if ((streamheader = gst_structure_get_value (s, "streamheader")) &&
G_VALUE_HOLDS (streamheader, GST_TYPE_ARRAY) &&