2014-03-28 28 views
0

我做了一些測試和學習IOS音頻隊列服務無法獲取IOS InputAudioQueue工作(很簡單的例子)

我得到一個-50 osstatus當我嘗試創建一個新的InputAudioQueue ,我是什麼做錯了?

我讀蘋果AudioQueue服務引用了幾次,和讀取功能的文檔,但我仍然不`噸知道什麼問題

感謝

#import "AudioSenderVC.h" 
#import <AudioToolbox/AudioToolbox.h> 
#import <Foundation/Foundation.h> 

@interface AudioSenderVC() 
@property (weak, nonatomic) IBOutlet UITextField *ipTextField; 
@end 

@implementation AudioSenderVC 

static void MyAudioQueueInputCallback (
            void        *inUserData, 
            AudioQueueRef      inAQ, 
            AudioQueueBufferRef     inBuffer, 
            const AudioTimeStamp    *inStartTime, 
            UInt32        inNumberPacketDescriptions, 
            const AudioStreamPacketDescription *inPacketDescs 
            ) 
{ 
NSLog(@"hey I just got audio data from the mic!"); 
} 
void createAudioQueue(AudioStreamBasicDescription* mDataFormat) 
{ 
AudioQueueRef* inAQ = NULL; 
OSStatus err=AudioQueueNewInput(mDataFormat, MyAudioQueueInputCallback ,NULL,CFRunLoopGetCurrent(), kCFRunLoopCommonModes, 0, inAQ); 
if(inAQ!=NULL) 
    NSLog(@"YAY!, InputQueue was Created"); 
if(err) 
    NSLog(@"Error:%i",(int)err); 

} 
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
if (self) { 
    // Custom initialization 
} 
return self; 
} 
- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
// Do any additional setup after loading the view. 
} 
- (void)setupAudioFormat:(AudioStreamBasicDescription*)format 
{ 
format->mSampleRate = 8000.0; 
format->mFormatID = kAudioFormatLinearPCM; 
format->mFramesPerPacket = 1; 
format->mChannelsPerFrame = 1; 
format->mBytesPerFrame = 2; 
format->mBytesPerPacket = 2; 
format->mBitsPerChannel = 16; 
format->mReserved = 0; 
format->mFormatFlags = kLinearPCMFormatFlagIsBigEndian | 
kLinearPCMFormatFlagIsSignedInteger | 
kLinearPCMFormatFlagIsPacked; 
} 
- (IBAction)sendAudio:(id)sender { 
AudioStreamBasicDescription* mDataFormat=malloc(sizeof(AudioStreamBasicDescription)); 
[self setupAudioFormat:mDataFormat]; 
createAudioQueue(mDataFormat); 
} 

@end 

回答

0

你傳遞NULL的產生隊列,而應該傳遞一個AudioQueueRef的地址,如下所示:

AudioQueueRef inAQ; 

OSStatus err=AudioQueueNewInput(mDataFormat, MyAudioQueueInputCallback, NULL, CFRunLoopGetCurrent(), kCFRunLoopCommonModes, 0, &inAQ); 
+0

非常感謝,解決了它! –