Condividi tramite


Messaggi di qualità

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, FMMediaEngine e Audio/Video Capture in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer, FMMediaEngine e Audio/Video Capture in Media Foundation anziché DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

I messaggi di qualità vengono definiti con la struttura Quality . Questa struttura contiene i membri seguenti:

  • Digitare: Definito dall'enumerazione QualityMessageType ; Che indica che il filtro riceve dati troppo piccoli o Inonda, che indica che il filtro riceve troppi dati.
  • Proporzione: Regolazione richiesta nella velocità dei dati, da una linea di base di 1000. Ad esempio, il 750 indica il 75% e il 1500 indica il 150%.
  • Tardi: Ora di riferimento che indica in ritardo l'arrivo dell'esempio più recente. Il valore è negativo se l'esempio è arrivato in anticipo.
  • Timestamp: Timestamp nell'esempio più recente.

Si supponga, ad esempio, che un esempio con un timestamp di 240 millisecondi (ms) raggiunga il renderer a 280 ms, ora di flusso. Il renderer crea un messaggio di qualità di tipo Carestia. L'esempio è arrivato in ritardo 40 ms, quindi il membro late è 400000. Tutti i tempi di riferimento sono in 100-nanosecondi. Il membro TimeStamp è 2400000.

Per il membro Proportion , il renderer potrebbe usare una media in esecuzione per calcolare il valore. Forse gli esempi sono arrivati in tempo e questo esempio è un'anomalia. In tal caso, il renderer potrebbe richiedere solo una piccola correzione. D'altra parte, se gli esempi sono in ritardo, il renderer potrebbe richiedere una correzione più grande.

Il controllo qualità viene gestito tramite l'interfaccia IQualityControl . Contiene due metodi.

  • Notifica: invia un messaggio di qualità.
  • SetSink: specifica un gestore qualità personalizzato.

Oggetto che implementa IQualityControl riceve messaggi di qualità tramite il relativo metodo Notify . Può gestire il messaggio o passare il messaggio a un altro oggetto. Se l'applicazione chiama il metodo SetSink dell'oggetto, l'oggetto deve delegare il controllo della qualità al gestore qualità specificato.