다음을 통해 공유


동적 서식 변경

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

두 필터가 연결되면 업스트림 필터가 제공할 데이터의 형식을 설명하는 미디어 형식에 동의합니다. 대부분의 경우 미디어 형식은 연결 기간 동안 고정됩니다. 그러나 DirectShow는 미디어 유형을 변경하는 필터에 대한 제한된 지원을 제공합니다. 필터가 미디어 형식을 전환하면 동적 형식 변경호출됩니다. DirectShow 필터를 작성하는 경우 동적 형식 변경 메커니즘을 알고 있어야 합니다. 필터가 이러한 변경 내용을 지원하지 않더라도 다른 필터가 새 형식을 요청하는 경우 올바르게 응답해야 합니다.

DirectShow는 필터 그래프의 상태 및 필요한 변경 유형에 따라 동적 형식 변경에 대한 몇 가지 고유한 메커니즘을 정의합니다.

  • 그래프가 중지되면 핀이 다시 연결되고 미디어 형식을 재협상할 수 있습니다. 자세한 내용은 다시 연결 핀참조하세요.
  • 일부 필터는 그래프가 활성 상태일 때(실행 중 또는 일시 중지된) 동안에도 핀을 다시 연결할 수 있습니다. 이 메커니즘에 대한 자세한 내용은 동적 다시 연결참조하세요.

그렇지 않으면 그래프가 활성 상태이지만 해당 필터가 동적 핀 다시 연결을 지원하지 않는 경우 형식을 변경할 수 있는 세 가지 메커니즘이 있습니다.

  • QueryAccept(다운스트림) 출력 핀이 다운스트림 피어에 형식 변경을 제안하는 경우 새 형식에 더 큰 버퍼가 필요하지 않은 경우에만 사용됩니다.
  • QueryAccept(업스트림) 입력 핀이 업스트림 피어에 형식 변경을 제안할 때 사용됩니다. 새 형식은 크기가 같거나 더 클 수 있습니다.
  • ReceiveConnection 출력 핀이 다운스트림 피어에 형식 변경을 제안하고 새 형식에 더 큰 버퍼가 필요할 때 사용됩니다.

Video Renderer 형식 변경 처리