Condividi tramite


Inizializzazione dell'oggetto ContentInfo di un nuovo file ASF

Dopo aver creato un oggetto ContentInfo vuoto chiamando la funzione MFCreateASFContentInfo , l'applicazione deve chiamare IMFASFContentInfo::SetProfile per fornire il profilo di codifica. Per informazioni sulla creazione di un profilo, vedere Creazione di un profilo ASF.

Prima di poter leggere le informazioni dal profilo, il metodo SetProfile deve convalidare l'oggetto profilo specificato controllando gli identificatori di flusso o i tipi di supporti. Se il profilo supera la convalida, vengono generati vari oggetti intestazione, ad esempio l'oggetto Proprietà file, l'oggetto Proprietà bitrate di flusso, l'oggetto Proprietà flusso e l'oggetto Esclusione reciproca.

SetProfile calcola e imposta i valori consigliati per determinate proprietà, ad esempio il valore della preroll. Se non è già impostato, il valore della preroll consigliata in millisecondi dipende dalla finestra massima del buffer del bucket di perdita specificato per i flussi nel profilo. Analogamente, vengono impostate anche le dimensioni minime e massime dei pacchetti di dati. I valori consigliati potrebbero eseguire l'override delle dimensioni dei pacchetti impostate nel profilo tramite attributi.

Poiché il file è in corso di creazione, il file viene classificato come tipo broadcast, indicato dal campo Flags dell'oggetto Proprietà file. Alcuni valori sconosciuti, ad esempio il numero di pacchetti di dati, la durata di riproduzione e la durata di invio sono impostati su zero. Questi valori sono rappresentati da MF_PD_ASF_xxx attributi e devono essere aggiornati dall'applicazione al termine della creazione del file.

L'oggetto profilo specificato sostituisce qualsiasi profilo esistente associato all'oggetto ContentInfo, rimuove gli oggetti intestazione di riferimento e reimposta le proprietà globali dei file, ad esempio la preroll e le dimensioni dei pacchetti di dati.

Il metodo SetProfile crea anche l'oggetto dati che rappresenta l'oggetto dati ASF. Se si riutilizza un oggetto ContentInfo che include informazioni su tutti i pacchetti di dati, SetProfile ha esito negativo e restituisce l'errore MF_E_ALREADY_INITIALIZED che indica che è già associato a un oggetto dati ASF esistente. Per impostazione predefinita, per un nuovo oggetto ContentInfo, il conteggio dei pacchetti di dati è impostato su zero e le dimensioni dell'oggetto dati sono impostate su 50 byte. Se si usa il multiplexer per generare pacchetti di dati, il multiplexer aggiorna l'oggetto ContentInfo in modo da riflettere nuovi valori, ad esempio il numero di pacchetti di dati. Per altre informazioni sulla generazione di pacchetti di dati, vedere Generazione di nuovi pacchetti di dati ASF.

Dopo l'aggiunta di tutti gli oggetti header all'oggetto intestazione ASF finale, è possibile recuperare le dimensioni totali dell'intestazione chiamando IMFASFContentInfo::GetHeaderSize. Queste dimensioni includono le dimensioni iniziali dell'oggetto dati.

Impostazione delle proprietà nell'oggetto ContentInfo

Scrittura di un oggetto intestazione ASF per un nuovo file