Changeset 2076:13dee50aead2 in roaraudio for plugins/gstreamer0.10
- Timestamp:
- 07/19/09 05:51:19 (15 years ago)
- Branch:
- default
- Phase:
- public
- Location:
- plugins/gstreamer0.10
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
plugins/gstreamer0.10/roarmixer.c
r2074 r2076 152 152 } 153 153 154 G_DEFINE_TYPE (GstRoarMixerTrack, gst_roarmixer_track, GST_TYPE_MIXER_TRACK); 155 154 156 GstRoarMixer* gst_roarmixer_new (const gchar *device, 155 157 GstRoarMixerDirection dir) { 156 158 GstRoarMixer *ret = NULL; 159 160 ROAR_WARN("gst_roarmixer_new(device='%s', dir=0x%.4x) = ?", device, dir); 157 161 158 162 g_return_val_if_fail(device != NULL, NULL); … … 172 176 goto error; 173 177 178 ROAR_WARN("gst_roarmixer_new(device='%s', dir=0x%.4x) = %p", device, dir, ret); 174 179 return ret; 175 180 … … 178 183 gst_roarmixer_free (ret); 179 184 185 ROAR_WARN("gst_roarmixer_new(device='%s', dir=0x%.4x) = NULL // Error?", device, dir); 180 186 return NULL; 181 187 } … … 183 189 void gst_roarmixer_free (GstRoarMixer *mixer) { 184 190 g_return_if_fail(mixer != NULL); 191 192 ROAR_WARN("gst_roarmixer_free(mixer=%p) = ?", mixer); 185 193 186 194 if (mixer->device) { … … 203 211 204 212 g_free (mixer); 213 214 ROAR_WARN("gst_roarmixer_free(mixer=%p) = (void)", mixer); 205 215 } 206 216 … … 217 227 } 218 228 229 void gst_roarmixer_updatestreamlist (GstRoarMixer *mixer) { 230 gboolean record = FALSE; 231 gboolean input = FALSE; 232 gint master = 0; 233 gint i = 0; 234 gint channels = 2; 235 GstMixerTrack *track; 236 237 ROAR_WARN("gst_roarmixer_updatestreamlist(mixer=%p) = ?", mixer); 238 239 if (mixer->tracklist) { 240 ROAR_WARN("gst_roarmixer_updatestreamlist(mixer=%p) = (void)", mixer); 241 return; 242 } 243 244 track = gst_roarmixer_track_new (mixer, i, channels, 245 (record ? GST_MIXER_TRACK_RECORD : 0) | 246 (input ? GST_MIXER_TRACK_INPUT : 247 GST_MIXER_TRACK_OUTPUT) | 248 ((master != i) ? 0 : GST_MIXER_TRACK_MASTER)); 249 mixer->tracklist = g_list_append (mixer->tracklist, track); 250 251 ROAR_WARN("gst_roarmixer_updatestreamlist(mixer=%p) = (void)", mixer); 252 } 253 219 254 const GList* gst_roarmixer_list_tracks (GstRoarMixer * mixer) { 255 ROAR_WARN("gst_roarmixer_list_tracks(mixer=%p) = ?", mixer); 256 257 gst_roarmixer_updatestreamlist(mixer); 258 220 259 return (const GList *) mixer->tracklist; 221 260 } … … 238 277 } 239 278 279 // tracks: 280 #define MASK_BIT_IS_SET(mask, bit) \ 281 (mask & (1 << bit)) 282 283 static void 284 gst_roarmixer_track_class_init (GstRoarMixerTrackClass * klass) 285 { 286 /* nop */ 287 } 288 289 static void 290 gst_roarmixer_track_init (GstRoarMixerTrack * track) 291 { 292 //memset(track, 0, sizeof(*track)); 293 track->stream_id = -1; 294 } 295 296 GstMixerTrack * 297 gst_roarmixer_track_new (GstRoarMixer * mixer, 298 gint stream_id, gint max_chans, gint flags) 299 { 300 GstRoarMixerTrack *roartrack; 301 GstMixerTrack *track; 302 303 ROAR_WARN("gst_roarmixer_track_new(mixer=%p, stream_id=%i, max_chans=%i, flags=0x%.4x) = ?", mixer, stream_id, max_chans, flags); 304 305 roartrack = g_object_new (GST_TYPE_ROARMIXER_TRACK, NULL); 306 ROAR_WARN("gst_roarmixer_track_new(*): roartrack=%p", roartrack); 307 track = GST_MIXER_TRACK (roartrack); 308 track->label = g_strdup ("TRACKLABLE"); 309 track->num_channels = max_chans; 310 track->flags = flags; 311 track->min_volume = 0; 312 track->max_volume = 65535; 313 roartrack->stream_id = stream_id; 314 315 /* volume */ 316 ROAR_WARN("gst_roarmixer_track_new(mixer=%p, stream_id=%i, max_chans=%i, flags=0x%.4x) = %p", mixer, stream_id, max_chans, flags, track); 317 return track; 318 } 319 240 320 //ll -
plugins/gstreamer0.10/roarmixer.h
r2073 r2076 45 45 #define GST_TYPE_ROAR_MIXER_ELEMENT (gst_roar_mixer_element_get_type()) 46 46 47 #define GST_TYPE_ROARMIXER_TRACK \ 48 (gst_roarmixer_track_get_type ()) 49 #define GST_ROARMIXER_TRACK(obj) \ 50 (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_ROARMIXER_TRACK, \ 51 GstRoarMixerTrack)) 52 #define GST_ROARMIXER_TRACK_CLASS(klass) \ 53 (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_ROARMIXER_TRACK, \ 54 GstRoarMixerTrackClass)) 55 #define GST_IS_ROARMIXER_TRACK(obj) \ 56 (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_ROARMIXER_TRACK)) 57 #define GST_IS_ROARMIXER_TRACK_CLASS(klass) \ 58 (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_ROARMIXER_TRACK)) 59 47 60 48 61 typedef struct _GstRoarMixerElement GstRoarMixerElement; … … 72 85 #define GST_ROAR_MIXER(obj) ((GstRoarMixer*)(obj)) 73 86 74 #define GST_TYPE_ROARMIXER \75 (gst_roarmixer_get_type())76 77 87 struct _GstRoarMixer { 78 88 GList * tracklist; /* list of available tracks */ … … 106 116 GstRoarMixerDirection dir); 107 117 void gst_roarmixer_free (GstRoarMixer *mixer); 118 void gst_roarmixer_updatestreamlist (GstRoarMixer *mixer); 108 119 109 120 const GList* gst_roarmixer_list_tracks (GstRoarMixer * mixer); … … 120 131 GstMixerTrack * track, 121 132 gboolean mute); 133 134 GType gst_roarmixer_track_get_type (void); 135 GstMixerTrack * 136 gst_roarmixer_track_new (GstRoarMixer * mixer, 137 gint stream_id, gint max_chans, gint flags); 122 138 123 139 #define GST_IMPLEMENT_ROAR_MIXER_METHODS(Type, interface_as_function) \
Note: See TracChangeset
for help on using the changeset viewer.