2009년 05월 16일
Create Sound Ex Info
1차 PT
FMOD_CREATESOUNDEXINFO
System::createSound 의 인자로 들어가는 구조체입니다.
보통 sample들에선 거의 0 으로 넣어버리긴 합니다만..
이번 코딩에선 이게 주요 관심 대상이 될거 같아서...
(어디까지나 직감...추측....찍기....이지만..)
정리 해두려 합니다.
그렇다면 0을 안 넣고 이녀석의 포인터를 넣어주는 이유에 대해서 알아봐야겠죠.
헬프문서에 잘 나와있지만..
1. 메모리로 부터 파일을 로딩할 수 있습니다.(이게 추측의 근거가 되었습니다)
2. 큰 파일로 부터 오프셋과 길이를 이용하여 로딩 할 수 있다.
-> 한마디로 큰파일 열고 일정부분 떼어온다는 이야기 같습니다..
3. 유저가 만든것 or sound가 아닌 것으로 부터 만들 수 있다..?
4. 멀티...셈플...은 잘 모르니 패스........
아무튼 기타등등 좋은 점이 있으니 이런게 있겠죠.
...뭐 하나하나 구조체의 변수들을 짚어가다 보면 뭔가 필요한 이유를 알 수 있을듯 하니
하나하나 보도록 하겠습니다.
1. cbsize
구조체의 크기입니다. 나중에 확장될때..등을 위해서 만들어 뒀다는군요.
2. length (Optional)
로드할 파일의 크기, 또는 만들 sound의 크기
3. fileoffset (op)
큰파일로 부터 로딩할 오프셋이 되겠습니다.
4. numchannels (op)
mandatory의 채널 갯수......mandatory가 뭐지;;
5. defaultfrequency (op)
주파수.
6. format (op)
파일 포멧.
7. decodebuffersize (op)
스트림을 위해사용. 스트림에서 사용하는 더블버퍼의 크기를 결정합니다.
(PCM sample).
8. initialsubsound (op)
멀티샘플 파일 포맷
켁 넘 많아서 일단 패스
메모리로 부터 파일을 로딩.
-> FMOD_OPENMEMORY flag를 이용하여 sound를 만들것.
-> 반드시 length는 byte이야 함.
-> 나머지 플레그는 옵션
큰파일에서 부분적으로 떼어올때.
-> 반드시 length랑 fileoffset의 값이 있어야 할것!
-> 나머지 플레그는 옵션
사용자가 만들 때, 사운드 기반파일이 아닐때.
-> FMOD_OPENUSER 플레그로 사운드 만들것.
-> defaultfrequency, numchannels, format이 명확히 값이 있을것!
-> 나머지는 옵션
(예제 좀 보니 VoIP에서 사용하긴 하더군요...일단 이건 관심밖)
기타등등은 역시 생략하고.
FMOD_MODE 중
FMOD_OPENMEMORY
메모리의 포인터를 가리키라는 이야기 같습니다.
역시나 위에서 설명했던 FMOD_CreateSoundExInfo구조체언급이 있군요.
length부분을 명시화...어려운 말이니..그냥 꼭 나타내라고 합니다.
그렇게 하면 FMOD는 우리가 가리킨곳(첫번째인자-포인터)부터 +length만큼(byte죠)를
FMOD자신이 갖고 있는 어떤 버퍼로 복사합니다.
이게 끝인거 같긴 한데..그아래에 비슷한 이름의 플레그가 하나 있어서 일단 적어봅니다.
FMOD_OPENMEMORY_POINT
"name_or_data" will be interpreted as a pointer to memory instead of filename for creating sounds.
Use FMOD_CREATESOUNDEXINFO to specify length. (같으니 생략)
This differs to FMOD_OPENMEMORY in that it uses the memory as is, without duplicating the memory into its own buffers. For Wii/PSP FMOD_HARDWARE supports this flag for the GCADPCM/VAG formats.
On other platforms FMOD_SOFTWARE must be used, as sound hardware on the other platforms (ie PC) cannot access main ram.
Cannot be freed after open, only after Sound::release.
Will not work if the data is compressed and FMOD_CREATECOMPRESSEDSAMPLE is not used.
흠 일단 그냥 오픈메모리랑 은 비슷한데요.
다른점이라곤 메모리를 복사하지 않습니다.
...
FMOD_OPENRAW
구조체의 format의 값을 주고.
최소한 defaultfrequency, numchannels, format은 만들기 전에 채워넣어두세요.
리들엔디안 데이터로 넣어주세요.
.........
파일 포멧을 무시하고 mp3던 ogg던.. raw pcm으로 처리하겠다는 이야기 같습니다.
배고프니 밥하고 밥먹고 더 쓰죠..
FMOD_CREATESOUNDEXINFO
System::createSound 의 인자로 들어가는 구조체입니다.
보통 sample들에선 거의 0 으로 넣어버리긴 합니다만..
이번 코딩에선 이게 주요 관심 대상이 될거 같아서...
(어디까지나 직감...추측....찍기....이지만..)
정리 해두려 합니다.
그렇다면 0을 안 넣고 이녀석의 포인터를 넣어주는 이유에 대해서 알아봐야겠죠.
헬프문서에 잘 나와있지만..
1. 메모리로 부터 파일을 로딩할 수 있습니다.(이게 추측의 근거가 되었습니다)
2. 큰 파일로 부터 오프셋과 길이를 이용하여 로딩 할 수 있다.
-> 한마디로 큰파일 열고 일정부분 떼어온다는 이야기 같습니다..
3. 유저가 만든것 or sound가 아닌 것으로 부터 만들 수 있다..?
4. 멀티...셈플...은 잘 모르니 패스........
아무튼 기타등등 좋은 점이 있으니 이런게 있겠죠.
...뭐 하나하나 구조체의 변수들을 짚어가다 보면 뭔가 필요한 이유를 알 수 있을듯 하니
하나하나 보도록 하겠습니다.
1. cbsize
구조체의 크기입니다. 나중에 확장될때..등을 위해서 만들어 뒀다는군요.
2. length (Optional)
로드할 파일의 크기, 또는 만들 sound의 크기
3. fileoffset (op)
큰파일로 부터 로딩할 오프셋이 되겠습니다.
4. numchannels (op)
mandatory의 채널 갯수......mandatory가 뭐지;;
5. defaultfrequency (op)
주파수.
6. format (op)
파일 포멧.
7. decodebuffersize (op)
스트림을 위해사용. 스트림에서 사용하는 더블버퍼의 크기를 결정합니다.
(PCM sample).
8. initialsubsound (op)
멀티샘플 파일 포맷
켁 넘 많아서 일단 패스
메모리로 부터 파일을 로딩.
-> FMOD_OPENMEMORY flag를 이용하여 sound를 만들것.
-> 반드시 length는 byte이야 함.
-> 나머지 플레그는 옵션
큰파일에서 부분적으로 떼어올때.
-> 반드시 length랑 fileoffset의 값이 있어야 할것!
-> 나머지 플레그는 옵션
사용자가 만들 때, 사운드 기반파일이 아닐때.
-> FMOD_OPENUSER 플레그로 사운드 만들것.
-> defaultfrequency, numchannels, format이 명확히 값이 있을것!
-> 나머지는 옵션
(예제 좀 보니 VoIP에서 사용하긴 하더군요...일단 이건 관심밖)
기타등등은 역시 생략하고.
FMOD_MODE 중
FMOD_OPENMEMORY
"name_or_data" will be interpreted as a pointer to memory instead of filename for creating sounds.
Use FMOD_CREATESOUNDEXINFO to specify length.
FMOD duplicates the memory into its own buffers.
Can be freed after open.
메모리의 포인터를 가리키라는 이야기 같습니다.
역시나 위에서 설명했던 FMOD_CreateSoundExInfo구조체언급이 있군요.
length부분을 명시화...어려운 말이니..그냥 꼭 나타내라고 합니다.
그렇게 하면 FMOD는 우리가 가리킨곳(첫번째인자-포인터)부터 +length만큼(byte죠)를
FMOD자신이 갖고 있는 어떤 버퍼로 복사합니다.
이게 끝인거 같긴 한데..그아래에 비슷한 이름의 플레그가 하나 있어서 일단 적어봅니다.
FMOD_OPENMEMORY_POINT
Use FMOD_CREATESOUNDEXINFO to specify length.
This differs to FMOD_OPENMEMORY in that it uses the memory as is, without duplicating the memory into its own buffers. For Wii/PSP FMOD_HARDWARE supports this flag for the GCADPCM/VAG formats.
On other platforms FMOD_SOFTWARE must be used, as sound hardware on the other platforms (ie PC) cannot access main ram.
Cannot be freed after open, only after Sound::release.
Will not work if the data is compressed and FMOD_CREATECOMPRESSEDSAMPLE is not used.
흠 일단 그냥 오픈메모리랑 은 비슷한데요.
다른점이라곤 메모리를 복사하지 않습니다.
...
FMOD_OPENRAW
Will ignore file format and treat as raw pcm.
Use FMOD_CREATESOUNDEXINFO to specify format.
Requires at least defaultfrequency, numchannels and format to be specified before it will open.
Must be little endian data.
구조체의 format의 값을 주고.
최소한 defaultfrequency, numchannels, format은 만들기 전에 채워넣어두세요.
리들엔디안 데이터로 넣어주세요.
.........
파일 포멧을 무시하고 mp3던 ogg던.. raw pcm으로 처리하겠다는 이야기 같습니다.
배고프니 밥하고 밥먹고 더 쓰죠..
# by | 2009/05/16 07:49 | 삽질일기_FMOD | 트랙백





☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]