본문 바로가기

IT/VCpp

[펌]Multimedia Timer 사용시 고려할 사항

 

Multimedia Timer 사용시 고려할 사항

쭌이 진행하는 DirectShow 기반 프로젝트에서 각각의 자막 Object를 각각의 Timer를 사용해 유지 시간을 관리하는 이슈에서 Multimedia Timer의 사용이 언급되었다. 사용해본 결과 timeSetEvent() 함수를 사용해 Multimedia Timer를 생성하는데 Overhead 가 발생하였다.


그래서, Multimedia Timer에 대해 알아 보았다.

  • Multimedia Timer에 대해 (참조 : http://www.opcware.com/XtraTimer/MultimediaTimers.html)
    1. 정밀도 즉 miliseconds 단위로 정확히 이벤트가 발생하여야 할때 유용하게 사용될 수 있는 Timer이다.
    2. 일반 타이머의 경우 시스템 부하에 따라 그 정확성을 담보하기 힘들지만 Multimedia 타이머의 경우 miliseconds 단위에서 정확성을 보장할 수 있다.
    3. Win32 Multimedia library(winmm.dll)에 Multimedia Timer가 구현되어 있다.
    4. 참고 문서에 따르면 Operating System에따라 일반 System timer의 Resolution과 사용가능한 Multimedia Timer의 제한이 따른다. 다만 System timer Resolution은 다른 시스템 부하가 없는 상태에서의 최대 보장되는 간격으로 부하에 따라 가변적이다.

Operating System

System(일반) Timer Resolution

사용가능한 최대 Multimedia Timer 개수

Windows 95

55ms

32

Windows 98

55ms

32

Windows NT 3.51

10ms

16 per process

Windows NT 4.0

10ms

16 per process

Windows 2000

10ms

16 per process

Windows XP

10-15ms

16 per process

  • timeSetEvent() 함수를 사용해 Multimedia Timer 생성 결과 약 1초 정도의 생성 부하가 생기는 것으로 보인다.
  • 따라서 정확성을 요구하지 않는 경우 SetTimer()를 사용한 System Timer 사용을 권장한다.
  • 또한 경우에 따라서는 1개의 Multimedia Timer를 생성하여 callback 함수에서 일종의 Poolling 방식으로 시간 관련 리소스를 제어 하는 방법이 있을 수 있다. Time 정확도와 시스템 부하 모두를 고려해야 할 경우 생각해 볼 수 있다.
  • 또한 Waitable Timer( CreateWaitableTimer() )의 사용도 고려해 볼 수 있다

원본 위치 <http://www.codeforum.net/blog/pitoosung/category/프로그래밍?page=3&TSSESSION=26b94d00515facab38d5e38c674a88d6>