다음을 통해 공유


이벤트 알림 코드

[이 페이지와 연결된 기능인 DirectShow는 레거시 기능입니다. MediaPlayer, IMFMediaEngineMedia Foundation의 오디오/비디오 캡처로 대체되었습니다. 이러한 기능은 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드에서 DirectShow 대신 MediaPlayer, IMFMediaEngine오디오/비디오 캡처를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]

이 섹션에서는 DVD와 관련이 없는 DirectShow 이벤트를 나열합니다. DVD와 관련된 이벤트는 DVD 이벤트 알림 코드를 참조하세요.

필터는 IMediaEventSink::Notify 메서드를 호출하여 필터 그래프 관리자로 이벤트를 보냅니다. Filter Graph Manager는 일부 이벤트를 처리하고 애플리케이션에 대해 다른 이벤트를 큐에 대기합니다. 애플리케이션은 IMediaEvent::GetEvent 메서드를 호출하여 검색합니다.

다음 섹션에서 각 항목에는 이벤트 코드, 이벤트 매개 변수의 의미 및 이벤트에 대한 Graph 관리자 필터링의 기본 작업(있는 경우)이 나열됩니다. 기본 작업을 재정의하려면 IMediaEvent::CancelDefaultHandling을 호출합니다. 이벤트 코드는 헤더 파일 Evcode.h 및 Audevcod.h에 정의됩니다. 기본 작업이 없는 경우 Filter Graph Manager는 이벤트 큐를 통해 애플리케이션에 이벤트를 자동으로 전달합니다.

사용자 지정 이벤트

필터는 EC_USER 이상의 범위에서 이벤트 코드를 사용하여 사용자 지정 이벤트를 정의할 수 있습니다. 필터 그래프 관리자는 이벤트 큐에 직접 배치합니다. 그러나 다음 주의 사항이 적용됩니다.

  • Filter Graph Manager는 일반 IMediaEvent::FreeEventParams 메서드를 사용하여 이벤트 매개 변수를 해제할 수 없습니다. 애플리케이션은 이벤트 매개 변수와 연결된 모든 메모리 또는 참조 수를 해제해야 합니다.
  • 필터는 이벤트를 처리할 준비가 된 애플리케이션 내에서만 이벤트를 보내야 합니다. (애플리케이션이 필터에서 사용자 지정 속성을 설정하여 이벤트를 안전하게 보낼 수 있음을 나타낼 수 있습니다.)
이벤트 알림 코드 Description
EC_ACTIVATE 비디오 창이 활성화되거나 비활성화되고 있습니다.
EC_BANDWIDTHCHANGE 지원되지 않습니다.
EC_BUFFERING_DATA 그래프가 데이터를 버퍼링하거나 데이터 버퍼링을 중지했습니다.
EC_BUILT 그래프가 작성되었을 때 Video Control에서 보냅니다. 애플리케이션에 전달되지 않습니다.
EC_CLOCK_CHANGED 참조 클록이 변경되었습니다.
EC_CLOCK_UNSET 클록 공급자의 연결이 끊어졌습니다.
EC_CODECAPI_EVENT 인코더에서 인코딩 이벤트를 신호로 보냅니다.
EC_COMPLETE 특정 스트림의 모든 데이터가 렌더링되었습니다.
EC_CONTENTPROPERTY_CHANGED 지원되지 않습니다.
EC_DEVICE_LOST 플러그 앤 플레이 디바이스가 제거되었거나 다시 사용할 수 있게 되었습니다.
EC_DISPLAY_CHANGED 디스플레이 모드가 변경되었습니다.
EC_END_OF_SEGMENT 세그먼트의 끝에 도달했습니다.
EC_EOS_SOON 지원되지 않습니다.
EC_ERROR_STILLPLAYING 그래프를 실행하는 비동기 명령이 실패했습니다.
EC_ERRORABORT 오류로 인해 작업이 중단되었습니다.
EC_ERRORABORTEX 오류로 인해 작업이 중단되었습니다.
EC_EXTDEVICE_MODE_CHANGE 지원되지 않습니다.
EC_FILE_CLOSED 예기치 않은 이벤트로 인해 원본 파일이 닫혔습니다.
EC_FULLSCREEN_LOST 비디오 렌더러가 전체 화면 모드에서 전환되고 있습니다.
EC_GRAPH_CHANGED 필터 그래프가 변경되었습니다.
EC_LENGTH_CHANGED 원본의 길이가 변경되었습니다.
EC_LOADSTATUS 네트워크 파일을 열 때 애플리케이션에 진행 상황을 알 수 있습니다.
EC_MARKER_HIT 지원되지 않습니다.
EC_NEED_RESTART 필터가 그래프를 다시 시작하라는 요청입니다.
EC_NEW_PIN 지원되지 않습니다.
EC_NOTIFY_WINDOW 비디오 렌더러 창의 필터에 알립니다.
EC_OLE_EVENT 필터가 텍스트 문자열을 애플리케이션에 전달합니다.
EC_OPENING_FILE 그래프가 파일을 열거나 파일 열기를 완료했습니다.
EC_PALETTE_CHANGED 비디오 팔레트가 변경되었습니다.
EC_PAUSED 일시 중지 요청이 완료되었습니다.
EC_PLEASE_REOPEN 원본 파일이 변경되었습니다.
EC_PREPROCESS_COMPLETE 멀티패스 인코딩을 위한 사전 처리를 완료할 때 WM ASF 기록 기 필터에서 전송됩니다.
EC_PROCESSING_LATENCY 구성 요소가 각 샘플을 처리하는 데 걸리는 시간을 나타냅니다.
EC_QUALITY_CHANGE 그래프는 품질 관리를 위해 샘플을 삭제하고 있습니다.
EC_RENDER_FINISHED 지원되지 않습니다.
EC_REPAINT 비디오 렌더러에는 다시 그려야 합니다.
EC_SAMPLE_LATENCY 구성 요소가 샘플 처리를 위한 일정보다 훨씬 뒤처지는 정도를 지정합니다.
EC_SAMPLE_NEEDED EVR(고급 비디오 렌더러) 필터에서 새 입력 샘플을 요청합니다.
EC_SCRUB_TIME 가장 최근 프레임 단계의 타임스탬프를 지정합니다.
EC_SEGMENT_STARTED 새 세그먼트가 시작되었습니다.
EC_SHUTTING_DOWN 필터 그래프는 삭제되기 전에 종료됩니다.
EC_SNDDEV_IN_ERROR 오디오 캡처 필터에서 디바이스 오류가 발생했습니다.
EC_SNDDEV_OUT_ERROR 오디오 렌더러 필터에서 디바이스 오류가 발생했습니다.
EC_STARVATION 필터가 충분한 데이터를 받지 못하고 있습니다.
EC_STATE_CHANGE 필터 그래프의 상태가 변경되었습니다.
EC_STATUS 두 개의 임의 상태 문자열을 포함합니다.
EC_STEP_COMPLETE 프레임 스테핑을 수행하는 필터가 지정된 수의 프레임을 밟았습니다.
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_VIDEOFRAMEREADY 비디오 프레임을 표시할 준비가 된 것입니다.
EC_VMR_RECONNECTION_FAILED 업스트림 디코더에서 동적 형식 변경 요청을 수락할 수 없는 경우 VMR-7 및 VMR-9에서 전송됩니다.
EC_VMR_RENDERDEVICE_SET VMR이 렌더링 메커니즘을 선택한 경우 전송됩니다.
EC_VMR_SURFACE_FLIPPED VMR-7의 할당자 발표자가 표시되는 표면에서 DirectDraw Flip 메서드를 호출했을 때 전송됩니다.
EC_WINDOW_DESTROYED 비디오 렌더러가 그래프에서 제거되거나 제거되었습니다.
EC_WMT_EVENT WM ASF 판독기 필터가 DRM(디지털 권한 관리)으로 보호되는 ASF 파일을 읽을 때 전송됩니다.
EC_WMT_INDEX_EVENT 애플리케이션이 WM ASF 기록기를 사용하여 Windows Media Video 파일을 인덱싱할 때 전송됩니다.

 

상수 및 GUID

DirectShow의 이벤트 알림