diff --git a/gst-libs/gst/audio/gstaudiofilter.c b/gst-libs/gst/audio/gstaudiofilter.c index 8eba036179..cc8c9e5486 100644 --- a/gst-libs/gst/audio/gstaudiofilter.c +++ b/gst-libs/gst/audio/gstaudiofilter.c @@ -119,17 +119,24 @@ gst_audio_filter_set_caps (GstBaseTransform * btrans, GstCaps * incaps, { GstAudioFilterClass *klass; GstAudioFilter *filter = GST_AUDIO_FILTER (btrans); + GstAudioInfo info; gboolean ret = TRUE; GST_LOG_OBJECT (filter, "caps: %" GST_PTR_FORMAT, incaps); + GST_LOG_OBJECT (filter, "info: %d", GST_AUDIO_FILTER_RATE (filter)); - if (!gst_audio_info_from_caps (&filter->info, incaps)) + if (!gst_audio_info_from_caps (&info, incaps)) goto invalid_format; - klass = GST_AUDIO_FILTER_CLASS_CAST (G_OBJECT_GET_CLASS (filter)); + klass = GST_AUDIO_FILTER_GET_CLASS (filter); if (klass->setup) - ret = klass->setup (filter, &filter->info); + ret = klass->setup (filter, &info); + + if (ret) { + filter->info = info; + GST_LOG_OBJECT (filter, "configured caps: %" GST_PTR_FORMAT, incaps); + } return ret; diff --git a/gst-libs/gst/audio/gstaudiofilter.h b/gst-libs/gst/audio/gstaudiofilter.h index dfa75e17d8..63f82976ed 100644 --- a/gst-libs/gst/audio/gstaudiofilter.h +++ b/gst-libs/gst/audio/gstaudiofilter.h @@ -40,6 +40,8 @@ typedef struct _GstAudioFilterClass GstAudioFilterClass; (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_AUDIO_FILTER,GstAudioFilterClass)) #define GST_AUDIO_FILTER_CLASS_CAST(klass) \ ((GstAudioFilterClass *) (klass)) +#define GST_AUDIO_FILTER_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS((obj),GST_TYPE_AUDIO_FILTER,GstAudioFilterClass)) #define GST_IS_AUDIO_FILTER(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_AUDIO_FILTER)) #define GST_IS_AUDIO_FILTER_CLASS(klass) \