[gst-devel] Mixer plugin
Lee Brown
leejr at linuxsoftwareconsultants.com
Fri Mar 16 09:15:36 CET 2001
On Fri, 16 Mar 2001, Simon Per Soren Kagedal wrote:
> Hi,
>
> I'm writing a mixer plugin for GStreamer, and I've run into some
> issues that I would like to ask for ideas about.
>
> Basic Idea: A filter that takes m input audio streams (sinks) and
> mixes to n sources, by adding together the data. For simplicity, I'll
> assume here that all streams are mono audio/raw data of the same
> format. Then, to mix stereo data, one would have to use channel
> splitters/mergers. It would be convinient though to let all in/out
> streams have any number of channels, and probably more efficient.
>
> Problems/Issues:
>
> 1. Setting "Panning" Values
>
> For each sink i=1..m, you should be able to set (and get) how much of
> it's signal should be sent to each source j=1..n.
>
> So how do I do this? gtk_object_set/get is the only interface I know
> of for setting properties of elements in a plugin, and as far as I
> know, there is no way to access "subproperties" except by registering
> one argument type for every g_strdup_printf("mix%d%d",i,j). This idea
> doesn't appeal to me very much. I would like both the sinks and the
> sources to be "hotpluggable", and then you would have to add and
> remove lots of argument types when streams come and go.
>
> So.. any other ideas or is this the way I have to go?
>
I think you want:
//start
struct audio_level{
int sink;
int source;
float level; // er, whatever
}
struct gst_mixer_element {
struct gst_element;
GList* audio_levels;
....
}
void gst_mixer_set_audio_level(
gst_mixer_element e,
int sink,
int source,
float level );
float gst_mixer_get_audio_level(
gst_mixer_element e,
int sink,
int source );
// end
Forgive my ignorance, whats wrong with this?
--
Lee Brown Jr.
More information about the gstreamer-devel
mailing list