Lines Matching refs:mixer

107 void RemoveChangeListeners(PortMixer *mixer);   // forward declaration
112 PortMixer *mixer = (PortMixer *)inClientData;
133 if (devices[j] == mixer->deviceID) {
147 err = GetAudioObjectPropertySize(mixer->deviceID, kAudioObjectPropertyScopeGlobal,
152 err = GetAudioObjectProperty(mixer->deviceID, kAudioObjectPropertyScopeGlobal,
155 for (PortControl *ctrl = mixer->portControls; ctrl != NULL; ctrl = ctrl->next) {
176 TRACE1("PortMixer (deviceID=0x%x) becomes invalid", (int)mixer->deviceID);
178 for (int i=0; i<mixer->deviceControlCount; i++) {
179 mixer->deviceControls[i].controlID = 0;
181 RemoveChangeListeners(mixer);
194 void AddChangeListeners(PortMixer *mixer) {
195 if (!mixer->listenersInstalled) {
197 AudioObjectAddPropertyListener(mixer->deviceID, &changeListenersAddresses[i], ChangeListenerProc, mixer);
199 mixer->listenersInstalled = true;
203 void RemoveChangeListeners(PortMixer *mixer) {
204 if (mixer->listenersInstalled) {
206 AudioObjectRemovePropertyListener(mixer->deviceID, &changeListenersAddresses[i], ChangeListenerProc, mixer);
208 mixer->listenersInstalled = false;
231 PortMixer *mixer = (PortMixer *)calloc(1, sizeof(PortMixer));
233 mixer->deviceID = deviceCache.GetDeviceID(mixerIndex);
234 if (mixer->deviceID != 0) {
235 mixer->deviceControlCount = -1; // not initialized
236 // fill mixer->ports (and mixer->portCount)
243 err = GetAudioObjectPropertySize(mixer->deviceID, scope, kAudioDevicePropertyStreams, &size);
250 err = GetAudioObjectProperty(mixer->deviceID, scope, kAudioDevicePropertyStreams,
255 mixer->ports[mixer->portCount].streamID = streamID;
258 mixer->ports[mixer->portCount].streamID = 0;
260 mixer->ports[mixer->portCount].scope = scope;
261 mixer->portCount++;
265 TRACE2("<<PORT_Open (mixerIndex=%d) %p\n", mixerIndex, mixer);
266 return mixer;
272 PortMixer *mixer = (PortMixer *)id;
274 if (mixer) {
275 RemoveChangeListeners(mixer);
276 while (mixer->portControls != NULL) {
277 PortControl *control2delete = mixer->portControls;
278 mixer->portControls = control2delete->next;
285 if (mixer->deviceControls) {
286 free(mixer->deviceControls);
288 free(mixer);
290 TRACE1("<<PORT_Close %p\n", mixer);
294 PortMixer *mixer = (PortMixer *)id;
296 int result = mixer->portCount;
303 PortMixer *mixer = (PortMixer *)id;
306 if (portIndex < 0 || portIndex >= mixer->portCount) {
311 AudioObjectPropertyScope scope = mixer->ports[portIndex].scope;
312 AudioStreamID streamID = mixer->ports[portIndex].streamID;
360 PortMixer *mixer = (PortMixer *)id;
364 if (portIndex < 0 || portIndex >= mixer->portCount) {
369 AudioStreamID streamID = mixer->ports[portIndex].streamID;
383 OSStatus err = GetAudioObjectProperty(mixer->deviceID, kAudioObjectPropertyScopeGlobal,
413 static void* CreatePortControl(PortMixer *mixer, PortControlCreator *creator, PortControl::ControlType type,
443 // add the control to mixer control list;
444 control->next = mixer->portControls;
445 mixer->portControls = control;
451 PortMixer *mixer = (PortMixer *)id;
455 if (portIndex < 0 || portIndex >= mixer->portCount) {
460 PortLine *port = &(mixer->ports[portIndex]);
462 if (mixer->deviceControlCount < 0) { // not initialized
467 err = GetAudioObjectPropertySize(mixer->deviceID, kAudioObjectPropertyScopeGlobal,
473 mixer->deviceControlCount = size / sizeof(AudioObjectID);
474 TRACE1(" PORT_GetControls: detected %d owned objects\n", mixer->deviceControlCount);
476 AudioObjectID controlIDs[mixer->deviceControlCount];
478 err = GetAudioObjectProperty(mixer->deviceID, kAudioObjectPropertyScopeGlobal,
484 mixer->deviceControls = (AudioControl *)calloc(mixer->deviceControlCount, sizeof(AudioControl));
486 for (int i = 0; i < mixer->deviceControlCount; i++) {
487 AudioControl *control = &mixer->deviceControls[i];
509 if (mixer->deviceControlCount <= 0) {
514 int totalChannels = GetChannelCount(mixer->deviceID, port->scope == kAudioDevicePropertyScopeOutput ? 1 : 0);
522 for (int i=0; i<mixer->deviceControlCount; i++) {
523 AudioControl *control = &mixer->deviceControls[i];
558 masterVolume = CreatePortControl(mixer, creator, PortControl::Volume, volumeControls, 0, 1);
562 masterVolume = CreatePortControl(mixer, creator, PortControl::Volume, volumeControls, 1, totalChannels);
570 masterMute = CreatePortControl(mixer, creator, PortControl::Mute, muteControls, 0, 1);
574 masterMute = CreatePortControl(mixer, creator, PortControl::Mute, muteControls, 1, totalChannels);
584 masterBalance = CreatePortControl(mixer, creator, PortControl::Balance, volumeControls, 1, totalChannels);
614 OSStatus err = AudioObjectGetPropertyData(mixer->deviceID, &address, 0, NULL, &size, &cfname);
628 jControls[controlCount++] = CreatePortControl(mixer, creator, PortControl::Volume, volumeControls, ch, 1);
631 jControls[controlCount++] = CreatePortControl(mixer, creator, PortControl::Mute, muteControls, ch, 1);
643 AddChangeListeners(mixer);