diff --git a/gst-libs/gst/audio/audio.h b/gst-libs/gst/audio/audio.h index a050e515fe..ed282fa732 100644 --- a/gst-libs/gst/audio/audio.h +++ b/gst-libs/gst/audio/audio.h @@ -250,6 +250,8 @@ struct _GstAudioInfo { GstAudioChannelPosition position[64]; }; +#define GST_AUDIO_INFO_IS_VALID(i) ((i)->finfo != NULL && (i)->rate > 0 && (i)->channels > 0 && (i)->bpf > 0) + #define GST_AUDIO_INFO_FORMAT(i) (GST_AUDIO_FORMAT_INFO_FORMAT((i)->finfo)) #define GST_AUDIO_INFO_NAME(i) (GST_AUDIO_FORMAT_INFO_NAME((i)->finfo)) #define GST_AUDIO_INFO_WIDTH(i) (GST_AUDIO_FORMAT_INFO_WIDTH((i)->finfo)) diff --git a/gst-libs/gst/audio/gstaudiodecoder.c b/gst-libs/gst/audio/gstaudiodecoder.c index 2e3d1986b4..5e2c631140 100644 --- a/gst-libs/gst/audio/gstaudiodecoder.c +++ b/gst-libs/gst/audio/gstaudiodecoder.c @@ -722,6 +722,9 @@ gst_audio_decoder_finish_frame (GstAudioDecoder * dec, GstBuffer * buf, priv = dec->priv; ctx = &dec->priv->ctx; + /* must know the output format by now */ + g_return_val_if_fail (GST_AUDIO_INFO_IS_VALID (&ctx->info), GST_FLOW_ERROR); + GST_LOG_OBJECT (dec, "accepting %d bytes == %d samples for %d frames", buf ? GST_BUFFER_SIZE (buf) : -1, buf ? GST_BUFFER_SIZE (buf) / ctx->info.bpf : -1, frames);