0
PortAudio를 사용하여 다중 채널 오디오 데이터를 기록하고 있습니다. 각 채널의 데이터를 별도의 파일로 저장하려고합니다. 따라서 프로그램의 어딘가에서 File IO 작업을해야합니다. 이 문서는 높은 빈도로 호출되기 때문에 콜백 함수에서 IO 작업을 수행하지 않는 것이 좋습니다.콜백에없는 경우 PortAudio에서 파일 IO 작업을 수행해야하는 위치
그런 다음 IO 작업을 수행하는 올바른 방법은 무엇입니까? 다른 스레드를 시작해야합니까?
미리 내 게시물을 읽는 데 시간을내어 감사드립니다!
1) 각 채널에 대한 버퍼를 가지고 :
답장을 보내 주셔서 감사합니다. 나는 네가 말한 것과 같은 정신을 공유하는 것을 발견했다. 링 버퍼 (RingBuffer)라는 데이터 구조가 있습니다.이 구조는 여러 스레드에서 동시에 쓰기 및 읽기를 처리합니다. 콜백 함수에서 별도의 스레드를 사용하여 링 버퍼를 읽고 파일에 쓸 때 링 버퍼에 쓰기를해야합니다. – Foreverniu
아 맞아! 순환 버퍼가 필요합니다. 순환 버퍼를 대량으로 읽는다면 ... 2048 개의 샘플 크기 배열을 가지고 있다면 1024 개의 샘플 또는 모든 것을 읽게 될 것입니다. 그렇게하면 모든 샘플을 읽고/녹음하는 데 시간을 낭비하지 않습니다. –