audiodecoder: fix criticals fixating a non existent field

https://bugzilla.gnome.org/show_bug.cgi?id=766970
This commit is contained in:
Vincent Penquerc'h 2016-07-04 09:15:03 +01:00
parent 66342c5c86
commit c76e8c77eb

View file

@ -1903,7 +1903,7 @@ gst_audio_decoder_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer)
dec->priv->ctx.had_input_data = TRUE; dec->priv->ctx.had_input_data = TRUE;
if (!dec->priv->expecting_discont_buf && if (!dec->priv->expecting_discont_buf &&
GST_BUFFER_FLAG_IS_SET (buffer, GST_BUFFER_FLAG_DISCONT)) { GST_BUFFER_FLAG_IS_SET (buffer, GST_BUFFER_FLAG_DISCONT)) {
gint64 samples, ts; gint64 samples, ts;
/* track present position */ /* track present position */
@ -2012,10 +2012,18 @@ gst_audio_decoder_negotiate_default_caps (GstAudioDecoder * dec)
for (i = 0; i < caps_size; i++) { for (i = 0; i < caps_size; i++) {
structure = gst_caps_get_structure (caps, i); structure = gst_caps_get_structure (caps, i);
gst_structure_fixate_field_nearest_int (structure, if (gst_structure_has_field (structure, "channels"))
"channels", GST_AUDIO_DEF_CHANNELS); gst_structure_fixate_field_nearest_int (structure,
gst_structure_fixate_field_nearest_int (structure, "channels", GST_AUDIO_DEF_CHANNELS);
"rate", GST_AUDIO_DEF_RATE); else
gst_structure_set (structure, "channels", G_TYPE_INT,
GST_AUDIO_DEF_CHANNELS, NULL);
if (gst_structure_has_field (structure, "rate"))
gst_structure_fixate_field_nearest_int (structure,
"rate", GST_AUDIO_DEF_RATE);
else
gst_structure_set (structure, "rate", G_TYPE_INT, GST_AUDIO_DEF_RATE,
NULL);
} }
caps = gst_caps_fixate (caps); caps = gst_caps_fixate (caps);
structure = gst_caps_get_structure (caps, 0); structure = gst_caps_get_structure (caps, 0);