Condividi tramite


Informazioni parametri

[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.

Il metodo IMediaParamInfo::GetParamInfo restituisce una struttura MP_PARAMINFO che descrive un parametro. Questa struttura contiene le informazioni seguenti:

  • Il membro mpType indica il tipo di dati del valore del parametro. Per l'efficienza, tutti i parametri vengono implementati come valori a virgola mobile a 32 bit. L'enumerazione MP_TYPE definisce se interpretare il valore come intero, valore a virgola mobile, booleano o enumerazione (serie integer).
  • Il membro mopCaps indica quali curve supporta questo parametro. Se il tipo di dati è booleano o enumerazione, l'unica curva che il parametro può supportare è "Jump".
  • I membri mpdMinValue e mpdMaxValue definiscono i valori minimi e massimi per questo parametro. Tutte le curve per questo parametro devono rientrare all'interno di questo intervallo.
  • Il membro mpdNeutralValue è il valore predefinito del parametro.
  • Il membro szLabel è il nome del parametro e il membro szUnitText è il nome dell'unità di misura per il parametro. Gli esempi possono includere "Volume" e "Decibels", o "Frequenza" e "kHz". Entrambe le stringhe sono in inglese e non vengono mai localizzate. DMO può fornire versioni localizzate tramite il metodo IMediaParamInfo::GetParamText .

Le informazioni per ogni parametro rimangono fisse durante la durata dell'oggetto DMO. Pertanto, il client può eseguire una query per queste informazioni una volta e quindi memorizzarla nella cache.

Formati di tempo

Il client deve timestampare i dati di input, in modo che il DMO possa calcolare i valori dei parametri corrispondenti. Per impostazione predefinita, i timestamp rappresentano unità di 100 nanosecondi, detta anche ora di riferimento. Questa unità temporale non è utile per ogni applicazione, tuttavia, un DMO ha un'opzione per supportare altri formati di tempo. I formati temporali vengono identificati dal GUID.

GUID Descrizione
GUID_TIME_REFERENCE Tempo di riferimento
GUID_TIME_MUSIC Note parti al trimestre (PPQN)
GUID_TIME_SAMPLES Esempi al secondo

 

Le terze parti sono incoraggiate a definire i propri formati di tempo in base alle esigenze. Tuttavia, tutti i DMO devono supportare il tempo di riferimento. In questo modo viene fornita una linea di base standard che tutti possono usare. Per determinare il numero di formati supportati da un DMO, chiamare il metodo IMediaParamInfo::GetNumTimeFormats . Per enumerare i formati supportati, chiamare il metodo IMediaParamInfo::GetSupportedTimeFormat .

Per impostare il formato ora, chiamare IMediaParams::SetTimeFormat. Questo metodo specifica il GUID del formato ora e i dati di ora, ovvero il numero di unità per ogni segno di spunta dell'orologio. Ad esempio, se il formato temporale è campione al secondo e i dati di ora sono 32, un valore di timestamp pari a 10 corrisponde a 320 campioni.

Parametri multimediali