From 6c08f53416e158a474a824155fb6cdf7b01a4604 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Mon, 6 Feb 2012 13:22:14 +0100 Subject: [PATCH] audiofilter: configure info after calling vmethod First call the vmethod and then configure the audioinfo in the baseclass. This allows subclasses to know about the old format. --- gst-libs/gst/audio/gstaudiofilter.c | 13 ++++++++++--- gst-libs/gst/audio/gstaudiofilter.h | 2 ++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/gst-libs/gst/audio/gstaudiofilter.c b/gst-libs/gst/audio/gstaudiofilter.c index 8eba036..cc8c9e5 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 dfa75e1..63f8297 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) \ -- 2.7.4