Compartir a través de


Interfaz IMFTranscodeSinkInfoProvider (mfidl.h)

Implementado por el objeto de activación del receptor de transcodificación.

El objeto de activación del receptor de transcodificación se puede usar para crear cualquiera de los siguientes receptores de archivos:

  • Receptor de archivos 3GP
  • Receptor de archivos MP3
  • Receptor de archivos MP4

Herencia

La interfaz IMFTranscodeSinkInfoProvider hereda de la interfaz IUnknown . IMFTranscodeSinkInfoProvider también tiene estos tipos de miembros:

Métodos

La interfaz IMFTranscodeSinkInfoProvider tiene estos métodos.

 
IMFTranscodeSinkInfoProvider::GetSinkInfo

Obtiene los tipos multimedia de las secuencias de audio y vídeo especificadas en el perfil de transcodificación.
IMFTranscodeSinkInfoProvider::SetOutputByteStream

Establece un flujo de bytes de salida para el receptor de medios de transcodificación.
IMFTranscodeSinkInfoProvider::SetOutputFile

Establece el nombre del archivo de salida codificado.
IMFTranscodeSinkInfoProvider::SetProfile

Establece el perfil de transcodificación en el objeto de activación del receptor de transcodificación.

Comentarios

Para usar esta interfaz, realice los pasos siguientes:

  1. Llame a MFCreateTranscodeSinkActivate para crear el objeto de activación del receptor transcodificado.
  2. Consulte el objeto de activación de la interfaz IMFTranscodeSinkInfoProvider .
  3. Llame a MFCreateTranscodeProfile para crear un perfil de transcodificación.
  4. Establezca el atributo MF_TRANSCODE_CONTAINERTYPE en el perfil de transcodificación. El atributo debe tener uno de los siguientes valores:
    • MFTranscodeContainerType_3GP
    • MFTranscodeContainerType_MP3
    • MFTranscodeContainerType_MPEG4
  5. Llame a IMFTranscodeProfile::SetVideoAttributes y IMFTranscodeProfile::SetAudioAttributes para especificar los formatos de vídeo y audio.
  6. Llame a IMFTranscodeSinkInfoProvider::SetProfile para establecer el perfil de transcodificación.
  7. Llame a uno de los métodos siguientes (pero no ambos) para especificar el archivo de salida:
  8. Llame a IMFActivate::ActivateObject en el objeto de activación para crear el receptor multimedia.

Ejemplos

// Creates an activation object for the generic transcode sink.

HRESULT CreateTranscodeSinkActivate(
    REFGUID         guidContainerType,
    IMFAttributes   *pVideoAttributes,
    IMFAttributes   *pAudioAttributes,
    IMFActivate     *pByteStreamActivate, 
    IMFActivate     **ppSinkActivate
    )
{
    IMFActivate* pSinkActivate = NULL;
    IMFTranscodeSinkInfoProvider* pSinkInfoProvider = NULL;
    IMFTranscodeProfile* pProfile = NULL;
    IMFAttributes* pContainerAttributes = NULL;

    HRESULT hr = MFCreateAttributes(&pContainerAttributes, 1);
    if (FAILED(hr))
    {
        goto done;
    }

    // Create the transcode profile.
    hr = MFCreateTranscodeProfile(&pProfile);
    if (FAILED(hr))
    {
        goto done;
    }

    // Set the profile attributes.

    hr = pContainerAttributes->SetGUID(MF_TRANSCODE_CONTAINERTYPE, guidContainerType);
    if (FAILED(hr))
    {
        goto done;
    }

    hr = pProfile->SetContainerAttributes(pContainerAttributes);
    if (FAILED(hr))
    {
        goto done;
    }

    if (pVideoAttributes)
    {
        hr = pProfile->SetVideoAttributes(pVideoAttributes);
        if (FAILED(hr))
        {
            goto done;
        }
    }

    if (pAudioAttributes)
    {
        hr = pProfile->SetAudioAttributes(pAudioAttributes);
        if (FAILED(hr))
        {
            goto done;
        }
    }

    // Create the transcode sink activation object.
    hr = MFCreateTranscodeSinkActivate(&pSinkActivate);
    if (FAILED(hr))
    {
        goto done;
    }

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

    // Set the output byte stream.
    hr = pSinkInfoProvider->SetOutputByteStream(pByteStreamActivate);
    if (FAILED(hr))
    {
        goto done;
    }

    // Set the transcode profile.
    hr = pSinkInfoProvider->SetProfile(pProfile);
    if (FAILED(hr))
    {
        goto done;
    }

    // Return the activation object to the caller.
    *ppSinkActivate = pSinkActivate;
    (*ppSinkActivate)->AddRef();

done:
    SafeRelease(&pProfile);
    SafeRelease(&pSinkInfoProvider);
    SafeRelease(&pSinkActivate);
    SafeRelease(&pContainerAttributes);
    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 mfidl.h

Consulte también

MFCreateTranscodeSinkActivate

Interfaces de Media Foundation