Función MFCreateASFStreamingMediaSink (wmcontainer.h)

Crea un objeto de activación para el receptor de streaming asf.

El receptor de streaming asf permite a una aplicación escribir paquetes de formato de sistemas avanzados (ASF) de streaming en una secuencia de bytes HTTP.

Sintaxis

HRESULT MFCreateASFStreamingMediaSink(
  IMFByteStream *pIByteStream,
  IMFMediaSink  **ppIMediaSink
);

Parámetros

pIByteStream

Puntero a un objeto de secuencia de bytes en el que el receptor multimedia asf escribe el contenido transmitido.

ppIMediaSink

Recibe un puntero a la interfaz IMFMediaSink del objeto receptor de medios de streaming asf. Para crear el receptor de medios, la aplicación debe llamar a IMFActivate::ActivateObject en el puntero recibido. El llamador debe liberar el puntero de interfaz.

Valor devuelto

Si esta función se realiza correctamente, devuelve S_OK. De lo contrario, devuelve un código de error de HRESULT.

Comentarios

Para crear el receptor de streaming asf en otro proceso, llame a MFCreateASFStreamingMediaSinkActivate.

Una aplicación puede obtener un puntero al objeto ContentInfo de ASF llamando a IUnknown::QueryInterface en el objeto receptor multimedia recibido en el parámetro ppIMediaSink . El objeto ContentInfo se usa para establecer las opciones de configuración del codificador, proporcionar propiedades de secuencia proporcionadas por un perfil de ASF y agregar información de metadatos. Estas opciones de configuración rellenan los distintos objetos de encabezado ASF del archivo ASF codificado. Para obtener más información, vea
Establecer propiedades en el objeto ContentInfo.

Ejemplos

En el ejemplo de código siguiente se muestra cómo crear un receptor multimedia para un origen de ASF. En este ejemplo se copian los valores de configuración del flujo del origen en el objeto ContentInfo que representa el objeto de encabezado ASF del archivo de salida.

//  Creates an an instance of the ASF streaming sink.

HRESULT CreateASFStreamingSink(
    IMFMediaSource *pSource, 
    IMFByteStream  *pOutputByteStream, 
    IMFMediaSink   **ppMediaSink
    )
{
    IMFPresentationDescriptor* pSourcePD = NULL;
    IMFASFProfile* pASFProfile = NULL;;
    IMFMediaSink* pMediaSink = NULL;
    IMFASFContentInfo* pASFContentInfo = NULL;

    // Create the streaming media sink for the ASF file
    HRESULT hr = MFCreateASFStreamingMediaSink(pOutputByteStream, &pMediaSink);
    if (FAILED(hr))
    {
        goto done;
    }

    //
    // Transfer the ASF profile from the media source to the sink.
    //

    // Get the presentation descriptor from the source.
    hr = pSource->CreatePresentationDescriptor(&pSourcePD);
    if (FAILED(hr))
    {
        goto done;
    }

    // Convert the presentation descriptor to an ASF profile.
    hr = MFCreateASFProfileFromPresentationDescriptor(pSourcePD, &pASFProfile);
    if (FAILED(hr))
    {
        goto done;
    }

    hr = pMediaSink->QueryInterface(IID_PPV_ARGS(&pASFContentInfo));
    if (FAILED(hr))
    {
        goto done;
    }

    // Set the profile on the sink.
    hr = pASFContentInfo->SetProfile(pASFProfile);
    if (FAILED(hr))
    {
        goto done;
    }

    *ppMediaSink = pMediaSink;
    (*ppMediaSink)->AddRef();

done:
    SafeRelease(&pSourcePD);
    SafeRelease(&pASFProfile);
    SafeRelease(&pASFContentInfo);
    SafeRelease(&pMediaSink);
    return hr;
}

Requisitos

Requisito Value
Cliente mínimo compatible Windows 7 [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 R2 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado wmcontainer.h
Library Mf.lib
Archivo DLL Mf.dll

Consulte también

MFCreateASFStreamingMediaSinkActivate

Funciones de Media Foundation