• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
AUGraph with built-in input failing to set device (OSX)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

AUGraph with built-in input failing to set device (OSX)


  • Subject: AUGraph with built-in input failing to set device (OSX)
  • From: John Nastos <email@hidden>
  • Date: Tue, 04 Dec 2012 01:56:13 -0800

I'm trying to build an AUGraph with the built-in input set as the device.  Note that in the code example, I have the built-in input selected as the current input device in system preferences.

For some reason, this results in OSStatus -10851

If I switch the code around to use different inputs (Soundflower for example), it works fine -- no errors, I get audio in my callback, etc.  Why is this failing for the built-in input?

Code below.

Thanks,
- John Nastos

- (void) initAudioGraph {

    OSStatus status;

    

    NewAUGraph(&inputAudioGraph);

    AUNode ioNode;

    

    AudioComponentDescription desc;

desc.componentType = kAudioUnitType_Output;

    desc.componentSubType = kAudioUnitSubType_HALOutput;

    desc.componentFlags = 0;

desc.componentFlagsMask = 0;

desc.componentManufacturer = kAudioUnitManufacturer_Apple;

    

    status = AUGraphAddNode(inputAudioGraph, &desc, &ioNode);

    NSLog(@"Add node %i",status);

    

    status = AUGraphOpen(inputAudioGraph);

    NSLog(@"Open graph %i",status);

    

    status = AUGraphNodeInfo(inputAudioGraph, ioNode, NULL, &inputAudioUnit);

    NSLog(@"Node info %i",status);

    

    

    BOOL enable = true;

    status = AudioUnitSetProperty(inputAudioUnit,

                                  kAudioOutputUnitProperty_EnableIO,

                                  kAudioUnitScope_Input,

                                  1, &enable, sizeof(enable));

    NSLog(@"Status (enable input): %i",(int)status);

    

    enable = false;

    status = AudioUnitSetProperty(inputAudioUnit,

                                  kAudioOutputUnitProperty_EnableIO,

                                  kAudioUnitScope_Output,

                                  0, &enable, sizeof(enable));

    NSLog(@"Status (enable output): %i",(int)status);

    

     AudioDeviceID input_device_id = kAudioObjectUnknown;

     

     

     AudioObjectPropertyAddress property_address = {

     kAudioHardwarePropertyDefaultInputDevice,

     kAudioObjectPropertyScopeGlobal,

     kAudioObjectPropertyElementMaster

     };

     

     int statusCounter = 0;

     

     UInt32 input_device_id_size = sizeof(input_device_id);

     status = AudioObjectGetPropertyData(kAudioObjectSystemObject, &property_address, 0, NULL, &input_device_id_size, &input_device_id);

     NSLog(@"Get default device status: %i -- %i",status,input_device_id);

    

     

     status = AudioUnitSetProperty(inputAudioUnit, kAudioOutputUnitProperty_CurrentDevice, kAudioUnitScope_Global, 0, &input_device_id, sizeof(input_device_id));

     NSLog(@"%i Status (set current device): %i",statusCounter++,status);

     

    /*

    AudioDeviceID input_device_id = sourceID;

    connectedInputDeviceID = input_device_id;

    

    int statusCounter = 0;

    

    status = AudioUnitSetProperty(inputAudioUnit, kAudioOutputUnitProperty_CurrentDevice, kAudioUnitScope_Global, 0, &input_device_id, sizeof(input_device_id));

    NSLog(@"%i Status (set current device): %i",statusCounter++,status);

    */

    

    inputAudioFormat.mSampleRate= 44100.0f;

    inputAudioFormat.mFormatID= kAudioFormatLinearPCM;

    inputAudioFormat.mFormatFlags= kAudioFormatFlagIsSignedInteger | kAudioFormatFlagIsPacked;

    inputAudioFormat.mFramesPerPacket= 1;

    inputAudioFormat.mChannelsPerFrame= 1;

    inputAudioFormat.mBitsPerChannel= 16;

    inputAudioFormat.mBytesPerPacket= 2;

    inputAudioFormat.mBytesPerFrame= 2;

    

    status = AudioUnitSetProperty(inputAudioUnit,

                                  kAudioUnitProperty_StreamFormat,

                                  kAudioUnitScope_Output, 1,

                                  &inputAudioFormat, sizeof(inputAudioFormat));

    NSLog(@"%i Status (format): %i",statusCounter++,status);

     

    status = AUGraphInitialize(inputAudioGraph);

    

    NSLog(@"Init input graph: %i",status);

    

    CAShow(inputAudioGraph);

    

}


--
- John Nastos
http://johnnastos.com
 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Coreaudio-api mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden

  • Follow-Ups:
    • Re: AUGraph with built-in input failing to set device (OSX)
      • From: Tim Kemp <email@hidden>
  • Prev by Date: Re: Looking up AU parameters (was: Re: kAudioUnitSubType_DynamicsProcessor)
  • Next by Date: Re: How to capture audio generated by a render callback, iOS
  • Previous by thread: Re: How to set my AUDynamicsProcessor's audioformat?
  • Next by thread: Re: AUGraph with built-in input failing to set device (OSX)
  • Index(es):
    • Date
    • Thread