오디오 그래프에서 원격 I/O 장치에서 오디오를 캡처하려고하는 콜백이 있습니다. 내 콜백의 내부에서 AudioBufferList
이 AudioUnitRender
함수에있어 두 채널의 비 인터리브 데이터를 저장해야합니다.이비 인터리브 오디오 데이터를 저장할 버퍼 목록을 구성 하시겠습니까?
//audiounit render function inside of a callback
OSStatus status;
status = AudioUnitRender(THIS.ioUnit,
ioActionFlags,
inTimeStamp,
0,
inNumberFrames,
&bufferList);
//want to initialize and configure bufferList to store non-interleaved data from both channels
...
//write audio data to disk
OSStatus result;
if (*ioActionFlags == kAudioUnitRenderAction_PostRender) {
result = ExtAudioFileWriteAsync(THIS.extAudioFileRef, inNumberFrames, &bufferList);
if(result) printf("ExtAudioFileWriteAsync %ld \n", result);}
return noErr;
사람이이 작업을 수행하는 방법을 알고 있나요 :
다음 컨텍스트에 대한 코드이다?
감사합니다.
감사합니다. +1. 나는 방금 내가 틀린 나무를 짖고있는 것을 알아 차렸다. 내 연구에 따르면 ExtAudioFileWriteAsync는 스테레오를 전달하는 경우 인터리브 된 데이터의 버퍼를 1 개 예상합니다. 어쩌면 당신은 관련된 질문으로 도울 수있을 것입니다 : http://stackoverflow.com/questions/10511272/turn-non-interleaved-audio-data-into-interleaved –
그래, 그렇지. 이 경우 많은 인터레이스와 디인터레이싱이 필요할 것입니다. :) –
Audio Unit 콜백에 매개 변수 구조체를 전달할 수 있습니다. 스타일 가이드가 그런 것을 선호하지 않는다면 전역을 사용할 필요가 없습니다. – hotpaw2