날씨가 많이 덥네요 .. 헉헉~
DSound 를 이용한 자체 라이브러만 쓰다가,
이번에 쉽고 안정적?으로 가고자 FMOD 에 입문하게 되었습니다.
FMOD 에서
Music 이나 Stream 에는 시간으로 구하는 함수가 제공되는것 같은데,
Sample(FSOUND_SAMPLE) 에는 시간으로 구하는 함수가 존재 하지 않네요.
제가 못찾았는지... FMOD 에서 따로 제공하는 방법이 있는지 궁금합니다.
FMOD - Sample 의 플레이시간을 알려면 ?
Moderator: 류광
-
- Posts: 36
- Joined: 2005-03-17 12:56
[자답] FMOD - FSOUND_SAMPLE 에서 정보 얻기.
FMOD 관련 작업을 하다가 FSOUND_SAMPLE 의 플레이시간을 구하는 함수가 따로 없기에
예전 자체 사운드라이브러리 제작때 직접 계산하여 구하는 방식으로
다음과 같이 파일정보를 얻는것을 정리해 보았습니다.
FSOUND_SAMPLE* pSample = FSOUND_Sample_Load( ... );
// 모드 얻기
unsigned int mode = FSOUND_Sample_GetMode( pSample );
// 비트 카운트
unsigned int bits = ( mode & FSOUND_16BITS) ? 16 : 8;
// 채널
unsigned int channels = (mode & FSOUND_STEREO) ? 2 : 1;
// 샘플 레이트
int aFreq = 0;
FSOUND_Sample_GetDefaults( pSample, &aFreq, NULL, NULL, NULL );
unsigned int sample_rate = aFreq;
// 데이타 크기
unsigned int data_size = FSOUND_Sample_GetLength( pSample ) * ( channels * bits / 8.0f );
// 청크 크기
unsigned int chunk_size = 4 + 8 + 16 + 8 + data_size;
// 초당 바이트
unsigned int byte_per_sec = sample_rate * ( channels * bits / 8.0f );
// 플레이 시간 (1)
float play_time = (float)data_size / (float)byte_per_sec;
// 플레이 시간 (2)
float play_time = (float)FSOUND_Sample_GetLength( pSample ) / (float)sample_rate ;
예전 자체 사운드라이브러리 제작때 직접 계산하여 구하는 방식으로
다음과 같이 파일정보를 얻는것을 정리해 보았습니다.
FSOUND_SAMPLE* pSample = FSOUND_Sample_Load( ... );
// 모드 얻기
unsigned int mode = FSOUND_Sample_GetMode( pSample );
// 비트 카운트
unsigned int bits = ( mode & FSOUND_16BITS) ? 16 : 8;
// 채널
unsigned int channels = (mode & FSOUND_STEREO) ? 2 : 1;
// 샘플 레이트
int aFreq = 0;
FSOUND_Sample_GetDefaults( pSample, &aFreq, NULL, NULL, NULL );
unsigned int sample_rate = aFreq;
// 데이타 크기
unsigned int data_size = FSOUND_Sample_GetLength( pSample ) * ( channels * bits / 8.0f );
// 청크 크기
unsigned int chunk_size = 4 + 8 + 16 + 8 + data_size;
// 초당 바이트
unsigned int byte_per_sec = sample_rate * ( channels * bits / 8.0f );
// 플레이 시간 (1)
float play_time = (float)data_size / (float)byte_per_sec;
// 플레이 시간 (2)
float play_time = (float)FSOUND_Sample_GetLength( pSample ) / (float)sample_rate ;
[외길을 가는 사람의 뒷모습은 아름답다.]