DirectShow DirectShow 레퍼런스 정수와 GUID 이벤트 통지 코드 [목차열람] [주소복사] [슬롯비우기] |
Microsoft DirectX 9.0 |
여기에서는, DVD 고유 이벤트 이외의 DirectShow 이벤트에 대해 설명한다. DVD 에 고유의 이벤트에 대해서는, 「DVD 이벤트 통지 코드」를 참조할것.
필터는,IMediaEventSink::Notify 메서드를 호출하는 것에 의해 필터 그래프 매니저에 이벤트를 건네준다. 필터 그래프 매니저는, 일부의 이벤트를 처리해, 그 이외의 이벤트를 애플리케이션의 큐에 넣는다. 애플리케이션은,IMediaEvent::GetEvent 메서드를 호출하는 것으로, 이벤트를 얻어온다.
이하의 섹션에서는, 이벤트 코드와 이벤트 파라미터의 의미를 리스트 해, 이벤트에 대해서 필터 그래프 매니저의 기정의 동작이 있으면 그것도 리스트 한다. 기정의 동작을 오버라이드(override) 하려면 ,IMediaEvent::CancelDefaultHandling 를 호출한다. 이벤트 코드는, 헤더 파일의 Evcode.h 및 Audevcod.h 에 정의되고 있다. 기정의 동작이 설정되지 않은 경우, 필터 그래프 매니저는, 이벤트 큐를 사용해 자동적으로 이벤트를 애플리케이션에 전송 한다.
커스텀 이벤트
필터는, EC_USER 이상의 범위에서 이벤트 코드를 사용해 커스텀 이벤트를 정의할 수 있다. 필터 그래프 매니저는 이것들을 직접 이벤트 큐에 둔다. 다만, 이하의 점에 주의 해야 한다.
이벤트 통지 코드 | 설명 |
EC_ACTIVATE | 비디오 윈도우가 액티브 또는 비액티브하다. |
EC_BUFFERING_DATA | 그래프가 데이터를 버퍼링 하고 있다, 또는 데이터의 버퍼링을 정지했다. |
EC_BUILT | 그래프를 생성 끝마쳤을 때에 비디오 컨트롤에 의해 송신된다. 애플리케이션에는 전송 되지 않는다. |
EC_CLOCK_CHANGED | 기준 클럭이 변경되었다. |
EC_CLOCK_UNSET | 클럭 프로바이더의 접속이 해제되었다. |
EC_CODECAPI_EVENT | 인코딩 이벤트를 통지하기 위해서 엔코더에 의해 송신된다. |
EC_COMPLETE | 특정의 스트림으로부터의 모든 데이터를 렌더링 끝마쳤다. |
EC_DEVICE_LOST | 플러그 앤 플레이 장치가 떼어내진, 또는 다시 사용할 수 있게 되었다. |
EC_DISPLAY_CHANGED | 디스플레이 모드가 변경되었다. |
EC_END_OF_SEGMENT | 세그먼트(segment)의 끝나에 도달했다. |
EC_ERROR_STILLPLAYING | 그래프를 실행하는 비동기 커멘드가 실패했다. |
EC_ERRORABORT | 에러이기 때문에 처리가 중지되었다. |
EC_EXTDEVICE_MODE_CHANGE | 지원하지 않는다. |
EC_FULLSCREEN_LOST | 비디오 렌더러가 풀 스크린 모드로부터 바뀌려 하고 있다. |
EC_GRAPH_CHANGED | 필터 그래프가 변경되었다. |
EC_LENGTH_CHANGED | 소스의 길이가 변경되었다. |
EC_NEED_RESTART | 필터가 그래프의 재개를 요구하고 있다. |
EC_NOTIFY_WINDOW | 필터에 비디오 렌더러의 윈도우를 통지한다. |
EC_OLE_EVENT | 필터가 애플리케이션에 텍스트 캐릭터 라인을 건네주고 있다. |
EC_OPENING_FILE | 그래프가 파일을 열고 있다, 또는 파일을 열어 끝냈다. |
EC_PALETTE_CHANGED | 비디오 팔레트가 변경되었다. |
EC_PAUSED | 포즈 요구가 완료했다. |
EC_QUALITY_CHANGE | 품질 컨트롤이기 때문에, 그래프가 샘플을 삭제했다. |
EC_REPAINT | 비디오 렌더러가 재드로잉(Drawing)를 요구하고 있다. |
EC_SEGMENT_STARTED | 새로운 세그먼트(segment)가 시작 했다. |
EC_SHUTTING_DOWN | 필터 그래프가 파기전에 셧다운 하고 있다. |
EC_SNDDEV_IN_ERROR | 입력 핀으로 오디오 장치 에러가 발생했다. |
EC_SNDDEV_OUT_ERROR | 출력 핀으로 오디오 장치 에러가 발생했다. |
EC_STARVATION | 필터는 충분한 데이터를 받지 않았다. |
EC_STATE_CHANGE | 필터 그래프가 변경되었다. |
EC_STEP_COMPLETE | 스탭핑(Stepping)를 실행하고 있는 필터가, 지정수의 스탭핑(Stepping)를 완료했다. |
EC_STREAM_CONTROL_STARTED | 스트림 제어 시작 커멘드가 유효하게 되었다. |
EC_STREAM_CONTROL_STOPPED | 스트림 제어 정지 커멘드가 유효하게 되었다. |
EC_STREAM_ERROR_STILLPLAYING | 스트림중에 에러가 발생했다. 스트림은 계속해 재생중이다. |
EC_STREAM_ERROR_STOPPED | 에러이기 때문에 스트림이 정지했다. |
EC_TIMECODE_AVAILABLE | 지원하지 않는다. |
EC_UNBUILT | 그래프를 파기 끝마쳤을 때에 비디오 컨트롤에 의해 송신된다. 애플리케이션에는 전송 되지 않는다. |
EC_USERABORT | 사용자가 재생을 강제 종료했다. |
EC_VIDEO_SIZE_CHANGED | 네이티브 비디오 사이즈가 변경되었다. |
EC_VMR_RENDERDEVICE_SET | VMR 가 렌더링 메카니즘을 선택 끝마쳤을 때에 송신된다. |
EC_VMR_SURFACE_FLIPPED | VMR-7 의 얼로케이터 프리젠터가, 표시하는 표면의 DirectDraw Flip 메서드를 호출했을 때에 송신된다. |
EC_VMR_RECONNECTION_FAILED | 업 스트림 디코더로부터 동적 포맷 변경 요구를 받아들일 수가 없었던 경우에, VMR-7 및 VMR-9 에 의해 송신된다. |
EC_WINDOW_DESTROYED | 비디오 렌더러가 파기 또는 그래프로부터 삭제되었다. |
EC_WMT_EVENT | 애플리케이션이 ASF Reader 필터를 사용해, DRM (digital rights management)에 의해 보호되고 있는 ASF 파일을 재생하는 경우에, Windows Media Format SDK 에 의해 송신된다. |
EC_WMT_INDEX_EVENT | 애플리케이션이 ASF Writer 를 사용해, Windows Media Video 파일에 인덱스를 붙이는 경우에, Windows Media Format SDK 에 의해 송신된다. |
참조