2011-11-02 3 views
2

나는 에서 OpenAL에을 FMOD 마이그레이션 그리고 난 그것의 주파수를 고려하지 않습니다 (샘플을에 샘플의 길이를 반환 FSOUND_Sample_GetLength() 기능의 아날로그를 찾을 수 없습니다 고려) ... 내가 얻을 OpenALalutLoadMemoryFromFileImage()에서 버퍼 이름, 그래서 내가이 방법으로 파형 데이터를 얻을 수 없습니다.OpenAL에서 단일 버퍼로 소스의 길이 (길이)를 얻는 방법은 무엇입니까?

도와주세요!

답변

11

당신은 alGetBufferi를 사용하여 함께 스스로를 조각 필요() :

ALint sizeInBytes; 
ALint channels; 
ALint bits; 

alGetBufferi(bufferID, AL_SIZE, &sizeInBytes); 
alGetBufferi(bufferID, AL_CHANNELS, &channels); 
alGetBufferi(bufferID, AL_BITS, &bits); 

lengthInSamples = sizeInBytes * 8/(channels * bits); 

그리고 초 기간 동안

:

ALint frequency; 

alGetBufferi(bufferID, AL_FREQUENCY, &frequency); 

durationInSeconds = (float)lengthInSamples/(float)frequency; 
+0

고마워, 칼을! – Ryan