Obtención de información de objetos de encabezado ASF
La información del encabezado ASF se almacena en los objetos de encabezado asf de un archivo multimedia. Media Foundation proporciona el objeto ContentInfo de ASF para trabajar con el objeto Header. Se requiere un objeto ContentInfo rellenado para que la aplicación lea la información de encabezado de un archivo existente. Esto se logra llamando a IMFASFContentInfo::P arseHeader. Si el análisis se completa correctamente, la biblioteca ASF del archivo, que se mantiene internamente por Media Foundation, se rellena con información de encabezado de varios objetos de encabezado. Algunas de estas propiedades se exponen a la aplicación, que puede recuperar mediante atributos en el descriptor de presentación, el descriptor de secuencia, el perfil y las propiedades de metadatos.
Para obtener la lista completa de atributos, vea Atributos de Media Foundation para objetos de encabezado ASF.
Recuperar información de encabezado de un descriptor de presentación
Un objeto descriptor de presentación contiene la descripción de un origen multimedia determinado, en este caso el origen multimedia asf. Si la llamada a ParseHeader se completa correctamente, la información de nivel de archivo del objeto header se almacena como atributos en el descriptor de presentación. Para crear el descriptor de presentación, llame a IMFASFContentInfo::GeneratePresentationDescriptor. Este método devuelve un puntero a un objeto descriptor de presentación rellenado que contiene estos atributos para el archivo ASF asociado al objeto ContentInfo. Para obtener valores para atributos específicos, llame a los métodos IMFAttributes::Getxxx en el descriptor de presentación y especifique el atributo MF_PD_ASF_xxx .
El código de ejemplo siguiente recupera la duración de reproducción de un archivo ASF, especificado por un objeto 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;
}
Para obtener más información sobre los descriptores de presentación en general, vea Descriptores de presentación.
Para obtener el conjunto completo de atributos del descriptor de presentación, vea Atributos del descriptor de presentación.
Recuperar información de encabezado de un descriptor de secuencia
Un objeto descriptor de flujo expone la interfaz IMFStreamDescriptor y describe las características de las secuencias del archivo. El descriptor de presentación del contenido de ASF contiene uno o varios descriptores de secuencia que representan las secuencias enumeradas en el objeto header. Una vez que la llamada a IMFASFContentInfo::GeneratePresentationDescriptor se completa correctamente, los descriptores de flujo subyacentes se rellenan con información de nivel de secuencia de los distintos objetos de encabezado. Para obtener un descriptor de secuencia para una secuencia ASF, llame a IMFPresentationDescriptor::GetStreamDescriptorByIndex en el descriptor de presentación que se genera a partir del objeto ContentInfo.
Algunas de las propiedades de la secuencia se establecen como atributos en descriptores de flujo. Llame a los métodos IMFAttributes::Getxxx en un descriptor de secuencia y especifique el atributo MF_SD_ASF_xxx .
Para obtener el conjunto completo de atributos de descriptor de secuencia, vea los atributos "ASF-Specific Stream Descriptor" enumerados en Atributos de descriptor de secuencia.
Recuperar información de encabezado del objeto de perfil
Además de los descriptores de secuencia, el objeto de perfil asf también describe las propiedades de la secuencia. Para obtener el perfil de un archivo ASF existente, llame a IMFASFContentInfo::GetProfile. El objeto de perfil asf devuelto por este método no incluye ninguno de los atributos de MF_PD_ASF_xxx . Estos atributos están disponibles para la aplicación solo después de llamar a MFCreateASFProfileFromPresentationDescriptor para generar el objeto de perfil a partir de un descriptor de presentación. Puede usar el perfil para obtener punteros a los objetos de exclusión mutua y priorización de flujos.
Para obtener información sobre el objeto de perfil, vea Perfil de ASF .
Recuperación de metadatos de objetos de encabezado
Un archivo ASF puede contener varias propiedades de metadatos que se establecen durante la codificación de archivos. Una aplicación puede enumerar estas propiedades con el objeto ContentInfo. Algunas de estas propiedades, como la información de velocidad de bits variable (VBR), están disponibles para la aplicación a través de atributos en el descriptor de presentación, los descriptores de flujo y los tipos de medios para el archivo multimedia. Estos atributos se establecen en el objeto ContentInfo durante la inicialización a través de la llamada a ParseHeader .
Temas relacionados