Recupero di informazioni dagli oggetti intestazione ASF
Le informazioni sull'intestazione ASF vengono archiviate negli oggetti intestazione ASF di un file multimediale. Media Foundation fornisce l'oggetto ContentInfo ASF da utilizzare con l'oggetto Header. Per consentire all'applicazione di leggere le informazioni di intestazione di un file esistente, è necessario un oggetto ContentInfo popolato. Questo risultato si ottiene chiamando IMFASFContentInfo::P arseHeader. Se l'analisi viene completata correttamente, la libreria ASF per il file, gestita internamente da Media Foundation, viene popolata con le informazioni di intestazione di vari oggetti intestazione. Alcune di queste proprietà vengono esposte all'applicazione, che può essere recuperata tramite attributi nel descrittore di presentazione, descrittore di flusso, profilo e proprietà dei metadati.
Per l'elenco completo degli attributi, vedere Attributi di Media Foundation per gli oggetti intestazione ASF.
Recupero delle informazioni di intestazione da un descrittore di presentazione
Un oggetto descrittore di presentazione contiene la descrizione di una determinata origine multimediale, in questo caso l'origine multimediale ASF. Se la chiamata ParseHeader viene completata correttamente, le informazioni a livello di file dell'oggetto Header vengono archiviate come attributi nel descrittore di presentazione. Per creare il descrittore di presentazione, chiamare IMFASFContentInfo::GeneratePresentationDescriptor. Questo metodo restituisce un puntatore a un oggetto descrittore di presentazione popolato che contiene questi attributi per il file ASF associato all'oggetto ContentInfo. Per ottenere valori per attributi specifici, chiamare i metodi IMFAttributes::Getxxx nel descrittore di presentazione e specificare l'attributo MF_PD_ASF_xxx .
Il codice di esempio seguente recupera la durata di riproduzione di un file ASF, specificato da un oggetto ContentInfo.
HRESULT GetPlayDuration(
IMFASFContentInfo *pContentInfo, // An initialized ContentInfo object.
UINT64 *pcbPlayDuration // Receives the play duration.
)
{
IMFPresentationDescriptor* pPD = NULL;
HRESULT hr = pContentInfo->GeneratePresentationDescriptor(&pPD);
if (SUCCEEDED(hr))
{
hr = pPD->GetUINT64(MF_PD_ASF_FILEPROPERTIES_PLAY_DURATION, pcbPlayDuration);
pPD->Release();
}
return hr;
}
Per altre informazioni sui descrittori di presentazione in generale, vedere Descrittori di presentazione.
Per il set completo di attributi del descrittore di presentazione, vedere Attributi del descrittore di presentazione.
Recupero delle informazioni di intestazione da un descrittore di flusso
Un oggetto descrittore di flusso espone l'interfaccia IMFStreamDescriptor e descrive le caratteristiche dei flussi nel file. Il descrittore di presentazione per il contenuto ASF contiene uno o più descrittori di flusso che rappresentano i flussi elencati nell'oggetto Header. Al termine della chiamata a IMFASFContentInfo::GeneratePresentationDescriptor , i descrittori di flusso sottostanti vengono popolati con informazioni a livello di flusso dei vari oggetti intestazione. Per ottenere un descrittore di flusso per un flusso ASF, chiamare IMFPresentationDescriptor::GetStreamDescriptorByIndex nel descrittore di presentazione generato dall'oggetto ContentInfo.
Alcune proprietà del flusso vengono impostate come attributi nei descrittori di flusso. Chiamare i metodi IMFAttributes::Getxxx in un descrittore di flusso e specificare l'attributo MF_SD_ASF_xxx .
Per il set completo di attributi del descrittore di flusso, vedere gli attributi "Descrittore di flusso specifico di ASF" elencati in Attributi del descrittore di flusso.
Recupero delle informazioni di intestazione dall'oggetto Profile
Oltre ai descrittori di flusso, l'oggetto profilo ASF descrive anche le proprietà del flusso. Per ottenere il profilo di un file ASF esistente, chiamare IMFASFContentInfo::GetProfile. L'oggetto profilo ASF restituito da questo metodo non include alcun attributo MF_PD_ASF_xxx . Questi attributi sono disponibili per l'applicazione solo dopo aver chiamato MFCreateASFProfileFromPresentationDescriptor per generare l'oggetto profilo da un descrittore di presentazione. È possibile usare il profilo per ottenere puntatori agli oggetti di esclusione reciproca e priorità del flusso.
Per informazioni sull'oggetto profilo, vedere Profilo ASF .
Recupero di metadati da oggetti intestazione
Un file ASF può contenere diverse proprietà di metadati impostate durante la codifica dei file. Un'applicazione può enumerare queste proprietà con l'oggetto ContentInfo. Alcune di queste proprietà, ad esempio le informazioni VBR (Variable Bit Rate), sono disponibili per l'applicazione tramite attributi sul descrittore di presentazione, descrittori di flusso e tipi di supporti per il file multimediale. Questi attributi vengono impostati sull'oggetto ContentInfo durante l'inizializzazione tramite la chiamata parseHeader .
Argomenti correlati