Impostazione delle proprietà nell'oggetto ContentInfo

Durante la creazione di un file ASF, l'oggetto ContentInfo deve conoscere le caratteristiche del contenuto multimediale in modo che i vari oggetti intestazione vengano popolati con i valori corretti.

Le impostazioni di configurazione del contenuto sono impostazioni di flusso, contenute nel profilo e specificano l'identificatore del flusso, il tipo di supporto e i parametri bucket persi per il sink multimediale. Dopo aver impostato il profilo sull'oggetto ContentInfo chiamando IMFASFContentInfo::SetProfile, questi valori vengono riflessi nell'oggetto intestazione ASF generato. Per informazioni su queste impostazioni, vedere Creazione e configurazione di flussi ASF.

Configurazione dell'oggetto ContentInfo con le impostazioni del codificatore

I dati audio multimediali digitali o video sono complessi e richiedono grandi quantità di memoria. Nella maggior parte dei casi, sia l'audio che il video vengono compressi usando codificatori prima di essere aggiunti a un file ASF. In Media Foundation i codificatori vengono implementati come trasformazioni media foundation (MFT) con un input e un output. È necessario selezionare il tipo di supporto di output a seconda del tipo di supporto del flusso di input e del tipo di codifica scelto per comprimere il flusso.

Prima della sessione di codifica, il codificatore deve essere configurato impostando le proprietà pertinenti a seconda del tipo di codifica.

Dopo aver configurato il codificatore, è necessario configurare l'oggetto ContentInfo con i valori del codificatore perché ASF Multiplexer e ASF Media Sink, inizializzati con l'oggetto ContentInfo popolato, utilizzare impostazioni come i valori bucket persi, per generare pacchetti di dati ASF. I valori non vengono salvati nell'oggetto intestazione ASF finale. Le impostazioni di codifica vengono esposte come proprietà. Per configurare l'oggetto ContentInfo con le proprietà del codificatore, eseguire le operazioni seguenti:

  1. Ottenere un puntatore all'archivio delle proprietà del codificatore eseguendo una query sul codificatore (interfaccia IMFTransform ) direttamente per l'interfaccia IPropertyStore .
  2. Chiamare IMFASFContentInfo::GetEncodingConfigurationPropertyStore. Per impostare proprietà specifiche del flusso, specificare l'identificatore del flusso nel parametro wStreamNumber ; per le proprietà a livello di file, passare 0. Il parametro ppIStore riceve un puntatore all'interfaccia IPropertyStore . L'archivio proprietà ricevuto è vuoto.
  3. Chiamare IPropertyStore::GetValue nel codificatore e ottenere il valore della proprietà specificando le costanti della chiave di proprietà. Per un elenco completo delle proprietà di codifica, vedere Le informazioni di riferimento sulla programmazione dei codec.
  4. Chiamare IPropertyStore::SetValue nell'oggetto ContentInfo per impostare la proprietà richiesta nell'archivio delle proprietà.
  5. Ripetere i passaggi 3 e 4 per ogni proprietà che si desidera impostare.

Il sink multimediale ASF può essere creato usando un oggetto attivazione chiamando MFCreateASFMediaSinkActivate. Il nuovo oggetto sink multimediale è configurato in base alle impostazioni specifiche del sink multimediale che possono essere impostate nell'archivio delle proprietà dell'oggetto ContentInfo. Nella tabella seguente vengono illustrate le costanti della proprietà del sink multimediale ASF.

Proprietà Descrizione
MFPKEY_ASFMEDIASINK_BASE_SENDTIME Il tempo di invio indica quando verrà rilasciato il payload all'interno del bucket persa. Questo valore della proprietà indica la prima volta di invio. Il multiplexer usa questo valore per calcolare i tempi di invio successivi per i pacchetti generati e garantisce che i dati vengano trasmessi costantemente attraverso il bucket di perdita.
MFPKEY_ASFMEDIASINK_AUTOADJUST_BITRATE Questo valore BOOL indica se il multiplexer deve regolare automaticamente la velocità in bit per garantire che i dati non eseguino l'overflow del bucket persa.
MFPKEY_ASFMEDIASINK_DRMACTION Indica l'azione DRM del sink multimediale ASF per la generazione di file. In questa versione è supportata solo la transcodifica DRM.
MFPKEY_ASFSTREAMSINK_CORRECTED_LEAKYBUCKET Questa proprietà deve essere impostata quando il codificatore decide quale finestra del buffer e velocità di bit utilizzare. Per impostare questi valori, usare l'interfaccia IWMCodecLeakyBucket . Questa impostazione deve essere impostata per ogni flusso nel file ASF.

 

Scrittura di un oggetto intestazione ASF per un nuovo file