다음을 통해 공유


MPEG-2 Demux Run-Time 모드

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

MPEG-2 Demultiplexer("demux")는 푸시 모드 또는 끌어오기 모드에서 작동할 수 있습니다. 푸시 모드에서 데이터는 네트워크 브로드캐스트와 같은 라이브 원본에서 가져옵니다. 끌어오기 모드에서 데이터는 로컬 파일에서 가져옵니다.

  • 끌어오기 모드는 Windows XP 이상에서 프로그램 스트림에만 사용할 수 있습니다. 하위 수준 플랫폼에서는 MPEG-2 분할자 필터를 사용합니다.
  • 푸시 모드는 프로그램 스트림과 전송 스트림 모두에 대해 모든 플랫폼에서 사용할 수 있습니다.

따라서 demux는 세 가지 가능한 모드인 끌어오기 모드의 프로그램 스트림, 푸시 모드의 프로그램 스트림 및 푸시 모드의 전송 스트림을 지원합니다. demux는 런타임에 사용할 모드를 결정합니다. 이 모드는 입력 핀이 연결되거나 첫 번째 출력 핀이 구성된 경우(먼저 발생하는 경우) 결정됩니다.

  • 입력 핀이 연결될 때: Windows XP 이상에서 demux는 IAsyncReader 인터페이스에 대한 업스트림 필터를 쿼리합니다. 업스트림 필터가 해당 인터페이스를 노출하면 demux는 끌어오기 모드의 프로그램 스트림에 대해 자체 구성합니다. 그렇지 않으면 demux는 푸시 모드를 사용하고 미디어 유형은 스트림 유형(프로그램 스트림 또는 전송 스트림)을 결정합니다. 입력 형식 목록은 MPEG-2 Demultiplexer 미디어 형식 참조하세요.
  • 첫 번째 출력 핀이 구성된 경우: 출력 핀을 만들고 IMPEG2PIDMap대해 쿼리하는 경우 demux는 푸시 모드의 전송 스트림에 대해 자체적으로 구성됩니다. IMPEG2StreamIdMap대한 핀을 쿼리하는 경우 demux는 푸시 모드에서도 프로그램 스트림에 대해 자체적으로 구성합니다. demux는 한 번에 두 가지 모드로 작동할 수 없으므로 다른 인터페이스에 대한 후속 쿼리는 실패합니다.

demux가 특정 모드에 대해 자체 구성되면 해당 모드로 유지됩니다. 다른 모드를 사용하려면 demux의 새 인스턴스를 만들어야 합니다.

MPEG-2 Demultiplexer 사용