C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[63434] [질문] waveOutWrite()로 출력 시 음 찢어지는 현상..
땅주인 [heaven2] 1527 읽음    2011-01-07 16:36
DVR  Viewer Software인데..
영상과 음성 정보가 함께 저장된 Raw Stream 파일을 열어서 Play를 합니다.
이때 TimeTable에 시간대별로 영상이 있는 시간 정보를 보여주고, 사용자가 클릭한 시간의
영상을 Play하는 방식으로 운영이 됩니다.

그럭저럭 돌아는 가는데..

특정 시간을 Play하다가 사용자가 다른 시간 대를 클릭했을 때 Raw Stream에서 해당 위치로 이동하여
Play를 하는데.. 간혹 클릭한 시점에서 음성 출력이 찢어지는 듯한 소리가 순간적으로 납니다. (다 그런 것이 아니라,
가끔 나는데...종잡을 수 없는 상황이라..)

프로그램 구성은 Raw Stream을 읽어서 Queue에 넣어주는 Thread,
Queue에 넣은 Raw Data를 꺼내서 음성 Thread로 넘겨주고, Video는 Play하는 Thread,
Audio만 전담하는 Thread 이렇게 구성되어 있고,

Audio Thread에서는 ..

waveOutOpen();
...
waveOutPrepareHeader();
...
while(1) {
    WaitForMultipleObjects();
    ...
    waveOutWrite();
   ...
}


이런 형태로 구성해 놓았습니다.
계속 Play를 하면 정상적으로 음성도 Play가 되는데.. 다른 시간대를 클릭하는 순간에 잡음처럼 찢어지는 소리가
순간적으로 나오고 다시 정상적인 소리가 나오는데요..또 다 그런 것이 아니라 어쩌다가 한 번씩 그러구요..
(그리고, 다른 시간 대의 클릭 순간에 Audio Queue도 모두 Clear 시키고 다시 채우기 시작합니다.)

waveOutWrite()에 데이터를 넣어주는 순차적인 주기가 맞지 않아서 그런 것인 지? 데이터가 깨지는 것인 지..
보통 이런 경우 어떤 원인이라고 추정해 볼 수 있는 것인 지.. 이런 쪽에 작업을 해 보신 분이면 대충
어떤 원인 인 지.. 추정을 할 수 있을 지...

경험있으신 분들 조언을 바랍니다.

감사합니다.

+ -

관련 글 리스트
63434 [질문] waveOutWrite()로 출력 시 음 찢어지는 현상.. 땅주인 1527 2011/01/07
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.