그래서 저는 OpenAL 에 오디오 데이터를 스트리밍하는 스레드 된 IMA ADPCM 디코더를 구축하고 있습니다 (짧은 설명은 아래 참조).하지만 약간의 문제가 있습니다. 내 문제의OpenAL : 입력 변수 *가 * 확인 되어도 alBufferData가 AL_INVALID_VALUE를 반환합니다.
하나는 가끔 alBufferData에 내 전화 : 비록
alBufferData(*bufferID, format, pcmData, sizeInBytes, bitRate);
반환 AL_INVALID_VALUE
, 매개 변수를 점검 할 때이 같은 예를 들어 보면 :
bufferID='109770616', format='AL_FORMAT_STEREO16', dataPtr='109754188', sizeInBytes='8164'
실마리, 누구? 실제로 발생하는 소리는 스투 테르 (stutteres)와 같은 일을합니다. 오류는 대개 10 번 연속으로 발생합니다 (동일한 사운드에서). (AN LMG와 짧은 버스트 촬영 ... 예를 들어) 나는 반복적으로 같은 소리를 시작할 때 그것은 또한 일반적으로 발생) 스트리밍 디코더 모듈 - 일의
빠른 간단한 투어를
사운드가 재생되는 방식 :
- 사운드가 재생되도록 재생됩니다.
- 하나의 bufferSize 상당의 오디오가 디코딩되고 나머지는 추가 디코딩을 위해 대기합니다.
- OpenAL이 트리거되어 사운드 재생이 시작됩니다.
디코딩/스트리밍 각 음향 루프
- 는 디코딩 된 오디오의 디코딩 버퍼 크기 상당 큐잉.
- 디코딩 된 오디오는 적절한 bufferID를 사용하여 alBuffer (위의 호출 참조)에 추가됩니다.
bufferID 포인트에 유효한 bufffer ID가있는 정수는 있습니까? 그것이 alGenBuffers로 생성 되었습니까? –
bufferID 값은 dataPtr 값과 매우 유사합니다. 포인터 일 가능성이 높습니다. bufferID 또는 * bufferID를 인쇄하고 있습니까? 나는 bufferID에 더 관심이있다. –
위의 설명을 무시하고 편집 속도가 너무 느림 : Hiya @ Mārtiņš! 'bufferID'의 값은 위에 표시된 값입니다 (' '109770616 ''). bufferID가 생성되어 다음과 같이 사용됩니다 : 'alGenBuffers' ->'alBufferData' ->'alSourceQueueBuffers'. 나는 계속해서 'alGetSourcei (sID, AL_BUFFERS_PROCESSED, & processedBuffers)'로 처리 된 버퍼를 검사하고, 처리 된 bufferID를'alSourceUnqueueBuffers'로 언 큐링하여 다시 사용하고'alBufferData'로 다시 채 웁니다. – happytrooper