메뉴 건너뛰기

TIP FMOD 라이브러리 이용하여 음악 재생시 문제점

2010.03.05 13:03

허우행 조회 수:14748 추천:86

FMOD 이용시 음악 재생이 끊기는 문제점 이 있으며 이를 Detection 하기 위한 함수를 제공하고 있습니다.

제공하는 Detection 기능을 이용해서 오류발생시 초기화 할수있습니다.

하지만 초기화 후에 다시 오류가 감지가 되어 중복 초기화가 되는 문제가 있습니다.

Detection 기능이 완벽하지 않아 아쉽네요..


/*
[API]
[
[DESCRIPTION]
    Returns a TRUE if a fatal open/read or seek error was returned from the file system.

[PARAMETERS]

[RETURN_VALUE]
    On a fatal disk error, TRUE is returned.
    On normal operation, FALSE is returned.

[REMARKS]
    This would be TRUE if for example, there was damage to the disk, or the disk was ejected when FMOD was trying to read from it.

[SEE_ALSO]
]
*/
DLL_API signed char F_API FSOUND_File_HasFatalErrorOccurred();


/*
[API]
[
[DESCRIPTION]
    Returns a TRUE if a poweron detection has occured.

[PARAMETERS]

[RETURN_VALUE]
    Upon FMOD detecting a power-on, TRUE is returned.
    On normal operation, FALSE is returned.

[REMARKS]
    FMOD uses 2 methods to detect power on, and both of them work on the audio output.  FMOD does not try and access windows messages or
    use any other form of poweron detection, as generally, these don't excist on certain revisions of WindowsCE.
    ----------
    Method 1 is FMOD detects if waveout has stopped working.  This happens on MOST devices and is reliable.
    FMOD can tell if waveout isnt processing any more by checking its cursor position.  
    If waveout is idle for 400ms then it triggeres a mixer reset, and this flag is set.
    ----------
    Method 2 is less elegant, and only happens on certain PocketPC devices.  Waveout doesnt stop on these devices, and even though the sound
    really is dead, the cursor position keeps ticking, and FMOD mixes to it, but there is no sound.  This is a PocketPC bug that FMOD has to work around.
    
    This method, as a last resort, compares GetLocalTime versus QueryPerformanceCounter.  
    QueryPerformanceCounter always stops during poweroff, but GetLocalTime keeps ticking.  
    If the difference is 2 seconds, then fmod knows the result is a timeout caused by power off/on, and triggers this flag as well as doing a mixer reset.
    If the millisecond value of GetLocalTime actually worked, 2 second delay for off then on wouldnt be nescessary, but the granularity of
    this function is seconds, not ms, then 2 seconds is the smallest time period it can skip to detect the power off/on event.

[SEE_ALSO]
]
*/
DLL_API signed char F_API FSOUND_HasPowerOnOccurred();
번호 제목 글쓴이 날짜 조회 수
공지 이곳은 개발자를 위한 공간입니다. [1] 허우행 2007.02.27 33582
81 마이플랫폼 컴파일 [1] file 관리자 2016.08.18 3181
80 리눅스에 Wine 1.9.9 설치 - 소스로 설치 file 관리자 2016.08.16 3165
79 Hippo to nmea protocol [1] Kirrrilka 2014.04.10 7102
78 허우행님 봐주세요.마이포인트 파일 분석해서 확인 가능한가요? [1] file ckr02 2013.01.13 9735
77 개발관련 질문 - 허우행님 봐주세요 [1] 알부자 2012.06.08 10687
76 허우행님 안녕하세요? 오브젝트 검색기와 관련하여.. [1] com 2012.02.10 11404
75 질문 있습니다. 바하무트 2011.12.30 11321
74 WolfNCU Rafael 2011.12.01 16358
73 소스 형상관리 사용하기 허우행 2011.10.01 11819
72 허우행님. 좀 봐주세요. 레아 2011.02.01 7814
71 Windows CE 5.0 FTDI 드라이버 설치 및 포팅 허우행 2010.10.13 16989
70 안녕하세요. 허우행님. wince 6.0에서 dll을 하나 만들고있습니다. [1] 이문배 2010.09.29 8430
69 안드로이드 개발환경 구성 [1] 허우행 2010.08.02 14307
68 WinCE 6.0 되는 내비 모델명? [5] 김찬성 2010.07.26 16783
67 네비 응용은 첨이라...초저질질문... [2] 김상훈 2010.06.29 12044
66 네이게이션 UI 개발 관련 SKD... 도와주세요... [1] 장명한 2010.03.08 12799
» FMOD 라이브러리 이용하여 음악 재생시 문제점 허우행 2010.03.05 14748
64 우행님 이파일이 실행이 안되서요 김현덕 2010.02.26 12143
63 허우행님 Device 기기고유값을 불러오고 변경하는 방법 좀 알려주세요. 유닉스 2010.02.25 15198