3
이 기능에 대한 자세한 설명을 찾을 수 없습니다. 지금 알고 싶은 것은 다음과 같습니다 :OpenAL : alSourcePlay()가 현재 스레드를 차단합니까?
이 기능은 현재 스레드를 차단합니까? 아니면 한 번에 오디오를 비동기 적으로 재생하기 시작하도록 장치에 지시합니다.
이 기능에 대한 자세한 설명을 찾을 수 없습니다. 지금 알고 싶은 것은 다음과 같습니다 :OpenAL : alSourcePlay()가 현재 스레드를 차단합니까?
이 기능은 현재 스레드를 차단합니까? 아니면 한 번에 오디오를 비동기 적으로 재생하기 시작하도록 장치에 지시합니다.
예, alSourcePlay에 대한 호출을 래핑하는 코드가 차단되어 있으므로 은 자체 스레드에 있기를 원합니다. OpenAL은 자체 이벤트 루프 을 사용하여 사운드를 버퍼링하고 오디오 장치로 렌더링합니다.
일반적으로 별도의 스레드가 원본 미디어 (스레드 1)와 OpenAL 논리 (스레드 2)를위한 다른 스레드를 사용할 수있게하려고합니다. UI 스레드 (스레드 3)가있는 경우 이것이 추가됩니다.
예를 들어, {백그라운드 스레드} - PCM 데이터 쓰기 -> [공유 버퍼] --read -> {메인 스레드}를 수행해야합니다. 백그라운드 스레드는 메인 스레드가 (alSourcePlay라고 부르는) 재생하면서 데이터를 가져온다. –
최종 사용자가 소프트웨어와 상호 작용하는 경우 사용자 인터페이스가없는 독립 실행 형 프로세스와 달리 UI 코드는 일반적으로 주 스레드 인 자체 스레드를 필요로합니다. 미디어 가져 오기/디코딩 및 I/O 처리에는 추가 스레드가 필요합니다. 세 번째 스레드는 OpenAL 코드를 둘러싼 논리에 사용됩니다. 그러나 OpenAL의 타이어를 걷어 차서 재생 중에 반응이없는 과정을 원한다면 OpenAL은 상관 없지만 미디어 재생 중에 응용 프로그램을 멈추게 할 것입니다 . –