2012-01-29 25 views
5

Tôi đang cố gắng sử dụng Bộ lọc thông thấp AU. Tôi tiếp tục nhận được một lỗi kAudioUnitErr_FormatNotSupported (-10868) khi thiết lập định dạng luồng cho đơn vị lọc, nhưng nếu tôi chỉ sử dụng đơn vị IO từ xa thì không có lỗi.Định dạng luồng nào nên sử dụng Đơn vị hiệu ứng iOS5 sử dụng

Định dạng dòng Tôi đang sử dụng được (Cập nhật):

myASBD.mSampleRate = hardwareSampleRate; 
myASBD.mFormatID = kAudioFormatLinearPCM;  
myASBD.mFormatFlags = kAudioFormatFlagIsSignedInteger; 
myASBD.mBitsPerChannel = 8 * sizeof(float); 
myASBD.mFramesPerPacket = 1;           
myASBD.mChannelsPerFrame = 1;   
myASBD.mBytesPerPacket = sizeof(float) * myASBD.mFramesPerPacket;                    
myASBD.mBytesPerFrame = sizeof(float) * myASBD.mChannelsPerFrame; 

Và tôi thiết lập các dòng bộ lọc như thế này:

// Sets input stream type to ASBD 
setupErr = AudioUnitSetProperty(filterUnit, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Input, 0, &myASBD, sizeof(myASBD)); 
NSLog(@"Filter in: %i", setupErr); 

//NSAssert(setupErr == noErr, @"No ASBD on Finput"); 


//Sets output stream type to ASBD 
setupErr = AudioUnitSetProperty(filterUnit, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Output, 0, &myASBD, sizeof(myASBD)); 
NSLog(@"Filter out: %i", setupErr); 
NSAssert(setupErr == noErr, @"No ASBD on Foutput"); 

Trả lời

3

Định dạng kinh điển dành cho iOS đơn vị bộ lọc âm thanh 8.24 điểm cố định (PCM tuyến tính), là 32 bit trên mỗi kênh, không phải là 16.

+0

tôi đã cố gắng sử dụng các kênh 32 bit và tôi vẫn nhận dạng dòng lỗi. Tôi đã được nói ở nơi khác rằng các hiệu ứng AU được xây dựng trong iOS5 cũng không sử dụng định dạng chuẩn. Tôi đã thử định dạng luồng từ bộ lọc bằng AudioUnitGetProperty nhưng mỗi khi tôi thử, tôi nhận được lỗi. Sẽ tốt hơn nếu sử dụng gọi lại kết xuất và chỉ sử dụng ASBD hiện tại? –

+0

Bạn đã đặt loại cố định hoặc điểm nổi? Đó là một sự khác biệt giữa định dạng chuẩn trên Mac so với iOS. – hotpaw2

+0

Tôi đã thay đổi nó vì vậy tôi không sử dụng phao, nhưng tôi vẫn gặp lỗi. Tôi không chắc liệu tôi có cài đặt bộ lọc ASBD đúng không vì đây là nơi tôi gặp lỗi. –

2

định dạng nào hoạt động với đơn vị reverb ??? Tôi nhận được lỗi lạ tryn để ghi lại một bộ đệm .... bất kỳ tin tức về chủ đề này?

0

Hãy thử tính năng này cho định dạng chuẩn.

size_t bytesPerSample = sizeof (AudioUnitSampleType); //Default is 4 bytes 
myASBD.mSampleRate  = hardwareSampleRate; 
myASBD.mFormatID   = kAudioFormatLinearPCM; 
myASBD.mFormatFlags  = kAudioFormatFlagsAudioUnitCanonical; //Canonical AU format 
myASBD.mBytesPerPacket = bytesPerSample; 
myASBD.mFramesPerPacket = 1; 
myASBD.mBytesPerFrame  = bytesPerSample; 
myASBD.mChannelsPerFrame = 2; //Stereo 
myASBD.mBitsPerChannel = 8 * bytesPerSample; //32bit integer 

Bạn sẽ cần phải đảm bảo tất cả AudioUnits bạn ASBDs được cấu hình thống nhất.

Nếu bạn đang thực hiện xử lý âm thanh nặng, phao nổi (được hỗ trợ trong iOS5) cũng không phải là một ý tưởng tồi.

size_t bytesPerSample  = sizeof (float); //float is 4 bytes 
myASBD.mSampleRate  = hardwareSampleRate; 
myASBD.mFormatID   = kAudioFormatLinearPCM; 
myASBD.mFormatFlags  = kAudioFormatFlagIsFloat; 
myASBD.mBytesPerPacket = bytesPerSample; 
myASBD.mFramesPerPacket = 1; 
myASBD.mBytesPerFrame  = bytesPerSample; 
myASBD.mChannelsPerFrame = 2; 
myASBD.mBitsPerChannel = 8 * bytesPerSample; //32bit float 
Các vấn đề liên quan