2011-04-07 5 views
0

AudioQueueBuffer에 직접 복사 할 수 있습니까?오디오를 iPhone의 오디오 버퍼에 직접 복사하십시오.

android.AudioTrack의 write() 함수를 사용하여 사운드 버퍼에 직접 쓰는 Android 앱을 다시 만들고 싶습니다. iPhone에서 AudioQueueBuffer를 사용하여 비슷한 작업을 수행 할 수 있습니까?

나는의 라인을 따라 뭔가를 할 거라고 :

AudioQueueAllocateBuffer(mAudioQueueData.mQueue, dataSize, &mAudioQueueData.mBuffer); 
mAudioQueueData.mBuffer->mAudioDataByteSize = dataSize; 
memcpy(mAudioQueueData.mBuffer->mAudioData, soundData, dataSize); 
AudioQueueStart(mAudioQueueData.mQueue, NULL); 

답변

1

네, 그것은 당신이 RemoteIO라고 찾고 무엇 가능합니다. 처음에는 설정하기가 다소 어려웠지만 오디오 버퍼를 직접 제어 할 수 있으며 iPhone에서 가장 낮은 수준의 오디오 API입니다.

체크 아웃이 튜토리얼을 시작합니다 : 오디오 버퍼 만 오디오 큐 콜백 내부 (의미)에 기록 할 수 있도록 설계되어 http://timbolstad.com/2010/03/14/core-audio-getting-started/

2

: http://atastypixel.com/blog/using-remoteio-audio-unit/

또한 블로그 게시물이 유용 시리즈가 있습니다 . 그러나 오디오 데이터를 자신의 중간 버퍼로 항상 복사/대기 한 다음 오디오 큐 콜백 중에 중간 버퍼에서 오디오 대기열 버퍼로 다시 복사 할 수 있습니다. 그것은 로켓 과학이 아닌 또 하나의 단계입니다.

오디오 장치 RemoteIO 버퍼도 비슷한 방식으로 작동합니다.

+0

저는 Apples 예제를보고 AudioQueueCallback을 설정했습니다. 필자가 확신 할 수 없었던 것은 AudioQueueBuffer에 복사하는 "올바른"방법이었습니다. Memcpy를 AudioQueueCallback으로 옮기면 버퍼가 모두 양호해야합니다. – TurqMage

+0

데이터가 샘플 형식, 크기, 패킹, endianess 등의 오디오 대기열 데이터 형식과 일치하면 memcpy를 사용할 수 있습니다. – hotpaw2

관련 문제