From fae814aef8472ada67a8e6ccfd67161c3ce3f1a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Sat, 28 Jun 2014 10:43:43 +0200 Subject: [PATCH] interaudiosrc: Fail in set_caps() if the caps can't be parsed --- gst/inter/gstinteraudiosrc.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/gst/inter/gstinteraudiosrc.c b/gst/inter/gstinteraudiosrc.c index ee8786e983..cab0eb6803 100644 --- a/gst/inter/gstinteraudiosrc.c +++ b/gst/inter/gstinteraudiosrc.c @@ -195,17 +195,22 @@ gst_inter_audio_src_set_caps (GstBaseSrc * src, GstCaps * caps) structure = gst_caps_get_structure (caps, 0); - ret = gst_structure_get_int (structure, "rate", &sample_rate); - if (ret) { - interaudiosrc->sample_rate = sample_rate; - - ret = gst_pad_set_caps (src->srcpad, caps); + if (!gst_structure_get_int (structure, "rate", &sample_rate)) { + GST_ERROR_OBJECT (src, "Audio caps without rate"); + return FALSE; } - if (gst_audio_info_from_caps (&info, caps)) { - interaudiosrc->finfo = info.finfo; + interaudiosrc->sample_rate = sample_rate; + + if (!gst_audio_info_from_caps (&info, caps)) { + GST_ERROR_OBJECT (src, "Can't parse audio caps"); + return FALSE; } + interaudiosrc->finfo = info.finfo; + + ret = gst_pad_set_caps (src->srcpad, caps); + return ret; }