title: Possible Output Sampling Rates in Audio Units
body: <p>I am trying to set different sampling rates (like 32kHz, 24kHz etc..) to the input stream of Remote I/O audio unit. But the output is always played at one of these sampling rates - 
  22.05kHz, 33.1kHz, 11.0kHz irrespective of what I set. And surprisingly, when I call     <code>AudioUnitGetProperty</code> on <code>kAudioUnitScope_Output</code> for <code>kAudioUnitProperty_SampleRate</code>, it always returns 44.1kHz</p>
  
  <pre><code>- (void)startToneUnit
  {
      AudioComponentDescription defaultOutputDescription;
      defaultOutputDescription.componentType = kAudioUnitType_Output;
      defaultOutputDescription.componentSubType = kAudioUnitSubType_RemoteIO;
      defaultOutputDescription.componentManufacturer = kAudioUnitManufacturer_Apple;
      defaultOutputDescription.componentFlags = 0;
      defaultOutputDescription.componentFlagsMask = 0;
  
          // Get the default playback output unit
      AudioComponent defaultOutput = AudioComponentFindNext(NULL, &amp;defaultOutputDescription);
      NSAssert(defaultOutput, @"Can't find default output");
  
          // Create a new unit based on this that we'll use for output
      OSErr err = AudioComponentInstanceNew(defaultOutput, &amp;toneUnit);
      NSAssert1(toneUnit, @"Error creating unit: %hd", err);
  
          // Set our tone rendering function on the unit
      AURenderCallbackStruct input;
      input.inputProc = RenderTone;
      input.inputProcRefCon = (__bridge void *)(self);
      err = AudioUnitSetProperty(toneUnit,
                                 kAudioUnitProperty_SetRenderCallback,
                                 kAudioUnitScope_Input,
                                 0,
                                 &amp;input,
                                 sizeof(input));
      NSAssert1(err == noErr, @"Error setting callback: %hd", err);
  
          // Set the format to 32 bit, single channel, floating point, linear PCM
      const int four_bytes_per_float = 4;
      const int eight_bits_per_byte = 8;
  
      AudioStreamBasicDescription streamFormat;
      streamFormat.mSampleRate = SAMPLE_RATE;
      streamFormat.mFormatID = kAudioFormatLinearPCM;
      streamFormat.mFormatFlags =
      kAudioFormatFlagsNativeFloatPacked;
      streamFormat.mBytesPerPacket = four_bytes_per_float;
      streamFormat.mFramesPerPacket = 1;
      streamFormat.mBytesPerFrame = four_bytes_per_float;
      streamFormat.mChannelsPerFrame = 1;
      streamFormat.mBitsPerChannel = four_bytes_per_float * eight_bits_per_byte;
      err = AudioUnitSetProperty (toneUnit,
                                  kAudioUnitProperty_StreamFormat,
                                  kAudioUnitScope_Input,
                                  0,
                                  &amp;streamFormat,
                                  sizeof(AudioStreamBasicDescription));
  
      NSAssert1(err == noErr, @"Error setting stream format: %hd", err);
  
          // Stop changing parameters on the unit
      err = AudioUnitInitialize(toneUnit);
      NSAssert1(err == noErr, @"Error initializing unit: %hd", err);
  
          // Start playback
      err = AudioOutputUnitStart(toneUnit);
      NSAssert1(err == noErr, @"Error starting unit: %hd", err);
  
      Float64 outSampleRate = 0.0;
      UInt32 size = sizeof(Float64);
      AudioUnitGetProperty (toneUnit,
                            kAudioUnitProperty_SampleRate,
                            kAudioUnitScope_Output,
                            0,
                            &amp;outSampleRate,
                            &amp;size);
      NSLog(@"Output sample rate is now at %f Hz", outSampleRate);
  
     }
  </code></pre>
  
  <p>What are all the possible output sampling rates supported for Audio Units? Any reference to Apple's documentation on this will be greatly helpful</p>
  
  <p>Thanks</p>