static gboolean gst_audio_panorama_set_caps (GstBaseTransform * base, GstCaps * incaps, GstCaps * outcaps) { GstAudioPanorama *filter = GST_AUDIO_PANORAMA (base); GstAudioInfo info; /*GST_INFO ("incaps are %" GST_PTR_FORMAT, incaps); */ if (!gst_audio_info_from_caps (&info, incaps)) goto no_format; GST_DEBUG ("try to process %d input with %d channels", GST_AUDIO_INFO_FORMAT (&info), GST_AUDIO_INFO_CHANNELS (&info)); if (!gst_audio_panorama_set_process_function (filter, &info)) goto no_format; filter->info = info; return TRUE; no_format: { GST_DEBUG ("invalid caps"); return FALSE; } }
static gboolean gst_audio_panorama_set_caps (GstBaseTransform * base, GstCaps * incaps, GstCaps * outcaps) { GstAudioPanorama *filter = GST_AUDIO_PANORAMA (base); const GstStructure *structure; gboolean ret; gint width; const gchar *fmt; /*GST_INFO ("incaps are %" GST_PTR_FORMAT, incaps); */ structure = gst_caps_get_structure (incaps, 0); ret = gst_structure_get_int (structure, "channels", &filter->channels); if (!ret) goto no_channels; ret = gst_structure_get_int (structure, "width", &width); if (!ret) goto no_width; filter->width = width / 8; fmt = gst_structure_get_name (structure); if (!strcmp (fmt, "audio/x-raw-int")) filter->format_float = FALSE; else filter->format_float = TRUE; GST_DEBUG ("try to process %s input with %d channels", fmt, filter->channels); ret = gst_audio_panorama_set_process_function (filter); if (!ret) GST_WARNING ("can't process input with %d channels", filter->channels); return ret; no_channels: GST_DEBUG ("no channels in caps"); return ret; no_width: GST_DEBUG ("no width in caps"); return ret; }
static void gst_audio_panorama_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec) { GstAudioPanorama *filter = GST_AUDIO_PANORAMA (object); switch (prop_id) { case PROP_PANORAMA: filter->panorama = g_value_get_float (value); break; case PROP_METHOD: filter->method = g_value_get_enum (value); gst_audio_panorama_set_process_function (filter, &filter->info); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } }