2014-04-24 3 views
0

내가 AudioBuffer 같은 CMSampleBufferAVCaptureSession에서있다 :AudioBuffer의 샘플을 열거합니까?

샘플을 열거/
Sample Rate:    44100 
Format ID:     lpcm 
Format Flags:     C 
Bytes per Packet:    2 
Frames per Packet:   1 
Bytes per Frame:    2 
Channels per Frame:   1 
Bits per Channel:   16 

kAudioFormatFlagIsSignedInteger 
kAudioFormatFlagIsPacked 
kLinearPCMFormatFlagIsSignedInteger 
kLinearPCMFormatFlagIsPacked 
kLinearPCMFormatFlagsSampleFractionShift 
kAppleLosslessFormatFlag_32BitSourceData 

내가 제대로 시전 할 수 있습니까? (일부 처리) 위의 구성으로 어떤 유형으로 캐스팅해야합니까? mData?

포맷 플래그를 파싱하는 것이 맞습니까? 위 출력은 https://gist.github.com/eppz/11272305

답변

0

에 의해 작성되었습니다. 위의 플래그를 구문 분석하면 kAudioFormatFlagIsSignedInteger이 채널당 16 비트를 갖는 답으로 보입니다.

// Enumerate audio buffers (probably faceing a sole buffer handling mono PCM anyway). 
for (int audioBufferIndex = 0; audioBufferIndex <= audioBufferList.mNumberBuffers; audioBufferIndex++) 
{ 
    AudioBuffer eachAudioBuffer = audioBufferList.mBuffers[audioBufferIndex]; 

    // Enumerate samples. 
    SInt16 *samples; 
    samples = (SInt16*)eachAudioBuffer.mData; 
    for (int sampleIndex = 0; sampleIndex <= sampleCount; sampleIndex++) 
    { 
     SInt16 eachSample = samples[sampleIndex]; 
     printf("%i \n", eachSample); 
    } 
} 
:

는 지금까지처럼 간다