1 /* GStreamer 2 * Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu> 3 * 2000 Wim Taymans <wtay@chello.be> 4 * Copyright (C) 2013 Sebastian Dröge <slomo@circular-chaos.org> 5 * 6 * gstaudiomixer.h: Header for GstAudioMixer element 7 * 8 * This library is free software; you can redistribute it and/or 9 * modify it under the terms of the GNU Library General Public 10 * License as published by the Free Software Foundation; either 11 * version 2 of the License, or (at your option) any later version. 12 * 13 * This library is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16 * Library General Public License for more details. 17 * 18 * You should have received a copy of the GNU Library General Public 19 * License along with this library; if not, write to the 20 * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, 21 * Boston, MA 02110-1301, USA. 22 */ 23 24 #ifndef __GST_AUDIO_MIXER_H__ 25 #define __GST_AUDIO_MIXER_H__ 26 27 #include <gst/gst.h> 28 #include <gst/audio/audio.h> 29 #include <gst/audio/gstaudioaggregator.h> 30 31 G_BEGIN_DECLS 32 33 #define GST_TYPE_AUDIO_MIXER (gst_audiomixer_get_type()) 34 #define GST_AUDIO_MIXER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_AUDIO_MIXER,GstAudioMixer)) 35 #define GST_IS_AUDIO_MIXER(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_AUDIO_MIXER)) 36 #define GST_AUDIO_MIXER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass) ,GST_TYPE_AUDIO_MIXER,GstAudioMixerClass)) 37 #define GST_IS_AUDIO_MIXER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass) ,GST_TYPE_AUDIO_MIXER)) 38 #define GST_AUDIO_MIXER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj) ,GST_TYPE_AUDIO_MIXER,GstAudioMixerClass)) 39 40 typedef struct _GstAudioMixer GstAudioMixer; 41 typedef struct _GstAudioMixerClass GstAudioMixerClass; 42 43 typedef struct _GstAudioMixerPad GstAudioMixerPad; 44 typedef struct _GstAudioMixerPadClass GstAudioMixerPadClass; 45 46 /** 47 * GstAudioMixer: 48 * 49 * The audiomixer object structure. 50 */ 51 struct _GstAudioMixer { 52 GstAudioAggregator element; 53 }; 54 55 struct _GstAudioMixerClass { 56 GstAudioAggregatorClass parent_class; 57 }; 58 59 GType gst_audiomixer_get_type (void); 60 61 #define GST_TYPE_AUDIO_MIXER_PAD (gst_audiomixer_pad_get_type()) 62 #define GST_AUDIO_MIXER_PAD(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_AUDIO_MIXER_PAD,GstAudioMixerPad)) 63 #define GST_IS_AUDIO_MIXER_PAD(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_AUDIO_MIXER_PAD)) 64 #define GST_AUDIO_MIXER_PAD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass) ,GST_TYPE_AUDIO_MIXER_PAD,GstAudioMixerPadClass)) 65 #define GST_IS_AUDIO_MIXER_PAD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass) ,GST_TYPE_AUDIO_MIXER_PAD)) 66 #define GST_AUDIO_MIXER_PAD_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj) ,GST_TYPE_AUDIO_MIXER_PAD,GstAudioMixerPadClass)) 67 68 struct _GstAudioMixerPad { 69 GstAudioAggregatorConvertPad parent; 70 71 gdouble volume; 72 gint volume_i32; 73 gint volume_i16; 74 gint volume_i8; 75 gboolean mute; 76 }; 77 78 struct _GstAudioMixerPadClass { 79 GstAudioAggregatorConvertPadClass parent_class; 80 }; 81 82 GType gst_audiomixer_pad_get_type (void); 83 84 G_END_DECLS 85 86 87 #endif /* __GST_AUDIO_MIXER_H__ */ 88