内でオーディオをキャプチャしAVCaptureSession
ています。今、それを再生しようとしています。
私は実際には低レベルのオーディオ処理にObjectAL
は興味がないので、これは公正な選択だと思われるので、バッファ ポインタといくつかのフォーマット情報を取得してから、ObjectAL バッファを作成しようとしました。
-(void)captureOutput:(AVCaptureOutput*) captureOutput
didOutputSampleBuffer:(CMSampleBufferRef) sampleBuffer
fromConnection:(AVCaptureConnection*) connection
{
if ([captureOutput isKindOfClass:[AVCaptureAudioDataOutput class]])
{
// Get samples.
CMBlockBufferRef audioBuffer = CMSampleBufferGetDataBuffer(sampleBuffer);
size_t lengthAtOffset;
size_t totalLength;
char *samples;
CMBlockBufferGetDataPointer(audioBuffer, 0, &lengthAtOffset, &totalLength, &samples);
// Get format.
CMAudioFormatDescriptionRef format = CMSampleBufferGetFormatDescription(sampleBuffer);
const AudioStreamBasicDescription *description = CMAudioFormatDescriptionGetStreamBasicDescription(format);
ALBuffer *openALbuffer = [ALBuffer bufferWithName:@"buffer just captured before"
data:sampleBuffer
size:totalLength
format:description->mFormatID
frequency:description->mSampleRate];
}
}
それは言いますInvalid Value
:
OAL Error: +[ALWrapper bufferDataStatic:format:data:size:frequency:]: Invalid Value (error code 0x0000a003)
ObjectAL は実際には、私が理解できなかったいくつかの OpenAL のものにフックしますALBuffer.m
。ALWrapper.m