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.
This commit is contained in:
Wim Taymans 2012-02-06 13:22:14 +01:00
parent 155ca93a46
commit 6c08f53416
2 changed files with 12 additions and 3 deletions

View file

@ -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;

View file

@ -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) \