mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-20 04:56:24 +00:00
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:
parent
155ca93a46
commit
6c08f53416
2 changed files with 12 additions and 3 deletions
|
@ -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;
|
||||
|
||||
|
|
|
@ -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) \
|
||||
|
|
Loading…
Reference in a new issue