품질 메시지

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

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

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

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

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

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

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

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