다음을 통해 공유


품질 메시지

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

품질 메시지는 품질 구조로 정의됩니다. 이 구조체에는 다음 멤버가 포함됩니다.

  • 형식: QualityMessageType 열거형으로 정의된; 필터가 너무 적은 데이터를 수신하고 있음을 나타내는 기근 또는 필터가 너무 많은 데이터를 수신하고 있음을 나타내는 Flood입니다.
  • 비율: 1000의 기준선에서 데이터 속도의 요청된 조정입니다. 예를 들어 750은 75% 나타내고 1500은 150%나타냅니다.
  • 지연: 가장 최근 샘플이 얼마나 늦게 도착했는지를 나타내는 참조 시간입니다. 샘플이 일찍 도착한 경우 값은 음수입니다.
  • TimeStamp: 가장 최근 샘플의 타임스탬프입니다.

예를 들어 타임스탬프가 240밀리초(밀리초)인 샘플이 스트림 시간인 280ms의 렌더러에 도달한다고 가정합니다. 렌더러는 기근 유형의 품질 메시지를 만듭니다. 샘플은 40ms 늦게 도착했기 때문에 늦은 멤버는 400000입니다. (모든 참조 시간은 100나노초 단위입니다.) TimeStamp 멤버는 2400000입니다.

비율 멤버의 경우 렌더러는 실행 평균을 사용하여 값을 계산할 수 있습니다. 아마도 샘플이 정시에 도착했으며 이 샘플은 변칙일 수 있습니다. 이 경우 렌더러는 작은 수정만 요청할 수 있습니다. 반면 샘플이 지속적으로 늦으면 렌더러는 더 큰 수정을 요청할 수 있습니다.

품질 제어는 IQualityControl 인터페이스를 통해 처리됩니다. 여기에는 두 가지 메서드가 포함되어 있습니다.

  • 알림: 품질 메시지를 보냅니다.
  • SetSink: 사용자 지정 품질 관리자를 지정합니다.

IQualityControl 구현하는 개체는 Notify 메서드를 통해 품질 메시지를 받습니다. 메시지를 처리하거나 다른 개체에 메시지를 전달할 수 있습니다. 애플리케이션이 개체의 SetSink 메서드를 호출하는 경우 개체는 지정된 품질 관리자에게 품질 관리를 위임해야 합니다.