Changeset 2077:7efcbad0c4fb in roaraudio for plugins/gstreamer0.10
- Timestamp:
- 07/19/09 06:19:35 (15 years ago)
- Branch:
- default
- Phase:
- public
- Location:
- plugins/gstreamer0.10
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
plugins/gstreamer0.10/roarmixer.c
r2076 r2077 228 228 229 229 void gst_roarmixer_updatestreamlist (GstRoarMixer *mixer) { 230 gboolean record = FALSE;231 gboolean input = FALSE;232 gint master = 0;233 230 gint i = 0; 234 gint channels = 2; 231 gint num; 232 gint id[ROAR_STREAMS_MAX]; 235 233 GstMixerTrack *track; 236 234 … … 242 240 } 243 241 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); 242 if ( (num = roar_list_streams(&(mixer->con), id, ROAR_STREAMS_MAX)) == -1 ) { 243 return; 244 } 245 246 247 for (i = 0; i < num; i++) { 248 track = gst_roarmixer_track_new(mixer, id[i]); 249 mixer->tracklist = g_list_append(mixer->tracklist, track); 250 } 250 251 251 252 ROAR_WARN("gst_roarmixer_updatestreamlist(mixer=%p) = (void)", mixer); … … 267 268 GstMixerTrack * track, 268 269 gint * volumes) { 270 GstRoarMixerTrack *roartrack = GST_ROARMIXER_TRACK(track); 271 int channels; 272 struct roar_mixer_settings m; 273 gint i; 274 275 276 g_return_if_fail(gst_roarmixer_contains_track(mixer, roartrack)); 277 278 if ( roar_get_vol(&(mixer->con), roartrack->stream_id, &m, &channels) == -1 ) { 279 fprintf(stderr, "Error: can not get stream mixer info\n"); 280 return; 281 } 282 283 if ( channels != track->num_channels ) { 284 ROAR_WARN("gst_roarmixer_get_volume(*): numer of channels for stream %i mismatch", roartrack->stream_id); 285 286 if ( track->num_channels < channels ) 287 channels = track->num_channels; 288 } 289 290 for (i = 0; i < channels; i++) { 291 volumes[i] = m.mixer[i]; 292 } 269 293 } 270 294 void gst_roarmixer_set_record (GstRoarMixer * mixer, … … 275 299 GstMixerTrack * track, 276 300 gboolean mute) { 301 GstRoarMixerTrack *roartrack = GST_ROARMIXER_TRACK(track); 302 struct roar_stream s; 303 304 g_return_if_fail(gst_roarmixer_contains_track(mixer, roartrack)); 305 306 roar_stream_new_by_id(&s, roartrack->stream_id); 307 308 if (mute) { 309 roar_stream_set_flags(&(mixer->con), &s, ROAR_FLAG_MUTE, ROAR_SET_FLAG); 310 } else { 311 roar_stream_set_flags(&(mixer->con), &s, ROAR_FLAG_MUTE, ROAR_RESET_FLAG); 312 } 277 313 } 278 314 … … 296 332 GstMixerTrack * 297 333 gst_roarmixer_track_new (GstRoarMixer * mixer, 298 gint stream_id , gint max_chans, gint flags)334 gint stream_id) 299 335 { 300 336 GstRoarMixerTrack *roartrack; 301 337 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); 338 struct roar_stream s; 339 gint flags = 0; 340 gchar buf[1024]; 341 342 ROAR_WARN("gst_roarmixer_track_new(mixer=%p, stream_id=%i) = ?", mixer, stream_id); 343 344 if ( roar_get_stream(&(mixer->con), &s, stream_id) == -1 ) { 345 return NULL; 346 } 347 348 switch (s.dir) { 349 case ROAR_DIR_PLAY: 350 flags |= GST_MIXER_TRACK_OUTPUT; 351 break; 352 case ROAR_DIR_OUTPUT: 353 flags |= GST_MIXER_TRACK_MASTER; 354 case ROAR_DIR_MONITOR: 355 flags |= GST_MIXER_TRACK_OUTPUT; 356 break; 357 } 358 359 sprintf(buf, "Stream %i", stream_id); 360 361 roartrack = g_object_new(GST_TYPE_ROARMIXER_TRACK, NULL); 306 362 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;363 track = GST_MIXER_TRACK(roartrack); 364 track->label = g_strdup(buf); 365 track->num_channels = s.info.channels; 366 track->flags = flags; 367 track->min_volume = 0; 368 track->max_volume = 65535; 313 369 roartrack->stream_id = stream_id; 314 370 315 371 /* 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);372 ROAR_WARN("gst_roarmixer_track_new(mixer=%p, stream_id=%i) = %p", mixer, stream_id, track); 317 373 return track; 318 374 } -
plugins/gstreamer0.10/roarmixer.h
r2076 r2077 135 135 GstMixerTrack * 136 136 gst_roarmixer_track_new (GstRoarMixer * mixer, 137 gint stream_id , gint max_chans, gint flags);137 gint stream_id); 138 138 139 139 #define GST_IMPLEMENT_ROAR_MIXER_METHODS(Type, interface_as_function) \
Note: See TracChangeset
for help on using the changeset viewer.