Ignore:
Timestamp:
07/19/09 04:01:35 (15 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

copyed a lot code from the oss mixer

File:
1 edited

Legend:

Unmodified
Added
Removed
  • plugins/gstreamer0.10/roarmixer.h

    r2072 r2073  
    3939G_BEGIN_DECLS 
    4040 
     41#define GST_ROAR_MIXER_ELEMENT(obj)              (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_ROAR_MIXER_ELEMENT,GstRoarMixerElement)) 
     42#define GST_ROAR_MIXER_ELEMENT_CLASS(klass)      (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_ROAR_MIXER_ELEMENT,GstRoarMixerElementClass)) 
     43#define GST_IS_ROAR_MIXER_ELEMENT(obj)           (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_ROAR_MIXER_ELEMENT)) 
     44#define GST_IS_ROAR_MIXER_ELEMENT_CLASS(klass)   (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_ROAR_MIXER_ELEMENT)) 
     45#define GST_TYPE_ROAR_MIXER_ELEMENT              (gst_roar_mixer_element_get_type()) 
     46 
     47 
     48typedef struct _GstRoarMixerElement GstRoarMixerElement; 
     49typedef struct _GstRoarMixerElementClass GstRoarMixerElementClass; 
     50typedef struct _GstRoarMixer GstRoarMixer; 
     51 
     52struct _GstRoarMixerElement { 
     53  GstElement            parent; 
     54 
     55  GstRoarMixer           *mixer; 
     56}; 
     57 
     58struct _GstRoarMixerElementClass { 
     59  GstElementClass       parent; 
     60}; 
     61 
     62 
     63GType           gst_roar_mixer_element_get_type          (void); 
     64 
    4165typedef enum { 
    4266  GST_ROAR_MIXER_CAPTURE = 1<<0, 
     
    4569} GstRoarMixerDirection; 
    4670 
    47 typedef struct _GstRoarMixer GstRoarMixer; 
    4871 
    4972#define GST_ROAR_MIXER(obj)              ((GstRoarMixer*)(obj)) 
     73 
     74#define GST_TYPE_ROARMIXER \ 
     75  (gst_roarmixer_get_type()) 
    5076 
    5177struct _GstRoarMixer { 
     
    74100} GstRoarMixerTrackClass; 
    75101 
     102GType gst_roarmixer_get_type(void); 
     103gboolean gst_roarmixer_factory_init (GstPlugin *plugin); 
    76104 
    77105GstRoarMixer*    gst_roarmixer_new                (const gchar *device, 
     
    93121                                                 gboolean mute); 
    94122 
     123#define GST_IMPLEMENT_ROAR_MIXER_METHODS(Type, interface_as_function)            \ 
     124static gboolean                                                                 \ 
     125interface_as_function ## _supported (Type *this, GType iface_type)              \ 
     126{                                                                               \ 
     127  g_assert (iface_type == GST_TYPE_MIXER);                                      \ 
     128                                                                                \ 
     129  return (this->mixer != NULL);                                                 \ 
     130}                                                                               \ 
     131                                                                                \ 
     132static const GList*                                                             \ 
     133interface_as_function ## _list_tracks (GstMixer * mixer)                        \ 
     134{                                                                               \ 
     135  Type *this = (Type*) mixer;                                                   \ 
     136                                                                                \ 
     137  g_return_val_if_fail (this != NULL, NULL);                                    \ 
     138  g_return_val_if_fail (this->mixer != NULL, NULL);                             \ 
     139                                                                                \ 
     140  return gst_roarmixer_list_tracks (this->mixer);                                \ 
     141}                                                                               \ 
     142                                                                                \ 
     143static void                                                                     \ 
     144interface_as_function ## _set_volume (GstMixer * mixer, GstMixerTrack * track,  \ 
     145    gint * volumes)                                                             \ 
     146{                                                                               \ 
     147  Type *this = (Type*) mixer;                                                   \ 
     148                                                                                \ 
     149  g_return_if_fail (this != NULL);                                              \ 
     150  g_return_if_fail (this->mixer != NULL);                                       \ 
     151                                                                                \ 
     152  gst_roarmixer_set_volume (this->mixer, track, volumes);                        \ 
     153}                                                                               \ 
     154                                                                                \ 
     155static void                                                                     \ 
     156interface_as_function ## _get_volume (GstMixer * mixer, GstMixerTrack * track,  \ 
     157    gint * volumes)                                                             \ 
     158{                                                                               \ 
     159  Type *this = (Type*) mixer;                                                   \ 
     160                                                                                \ 
     161  g_return_if_fail (this != NULL);                                              \ 
     162  g_return_if_fail (this->mixer != NULL);                                       \ 
     163                                                                                \ 
     164  gst_roarmixer_get_volume (this->mixer, track, volumes);                        \ 
     165}                                                                               \ 
     166                                                                                \ 
     167static void                                                                     \ 
     168interface_as_function ## _set_record (GstMixer * mixer, GstMixerTrack * track,  \ 
     169    gboolean record)                                                            \ 
     170{                                                                               \ 
     171  Type *this = (Type*) mixer;                                                   \ 
     172                                                                                \ 
     173  g_return_if_fail (this != NULL);                                              \ 
     174  g_return_if_fail (this->mixer != NULL);                                       \ 
     175                                                                                \ 
     176  gst_roarmixer_set_record (this->mixer, track, record);                         \ 
     177}                                                                               \ 
     178                                                                                \ 
     179static void                                                                     \ 
     180interface_as_function ## _set_mute (GstMixer * mixer, GstMixerTrack * track,    \ 
     181    gboolean mute)                                                              \ 
     182{                                                                               \ 
     183  Type *this = (Type*) mixer;                                                   \ 
     184                                                                                \ 
     185  g_return_if_fail (this != NULL);                                              \ 
     186  g_return_if_fail (this->mixer != NULL);                                       \ 
     187                                                                                \ 
     188  gst_roarmixer_set_mute (this->mixer, track, mute);                             \ 
     189}                                                                               \ 
     190                                                                                \ 
     191static void                                                                     \ 
     192interface_as_function ## _interface_init (GstMixerClass * klass)                \ 
     193{                                                                               \ 
     194  GST_MIXER_TYPE (klass) = GST_MIXER_HARDWARE;                                  \ 
     195                                                                                \ 
     196  /* set up the interface hooks */                                              \ 
     197  klass->list_tracks = interface_as_function ## _list_tracks;                   \ 
     198  klass->set_volume = interface_as_function ## _set_volume;                     \ 
     199  klass->get_volume = interface_as_function ## _get_volume;                     \ 
     200  klass->set_mute = interface_as_function ## _set_mute;                         \ 
     201  klass->set_record = interface_as_function ## _set_record;                     \ 
     202} 
     203 
     204 
    95205G_END_DECLS 
    96206 
Note: See TracChangeset for help on using the changeset viewer.