Share via


IMFTranscodeSinkInfoProvider-Schnittstelle (mfidl.h)

Wird vom Aktivierungsobjekt der Transcodierungssenke implementiert.

Das Aktivierungsobjekt der Transcodierungssenke kann verwendet werden, um eine der folgenden Dateisenken zu erstellen:

  • 3GP-Dateisenke
  • MP3-Dateisenke
  • MP4-Dateisenke

Vererbung

Die IMFTranscodeSinkInfoProvider-Schnittstelle erbt von der IUnknown-Schnittstelle . IMFTranscodeSinkInfoProvider verfügt auch über folgende Membertypen:

Methoden

Die IMFTranscodeSinkInfoProvider-Schnittstelle verfügt über diese Methoden.

 
IMFTranscodeSinkInfoProvider::GetSinkInfo

Ruft die Medientypen für die Audio- und Videostreams ab, die im Transcodierungsprofil angegeben sind.
IMFTranscodeSinkInfoProvider::SetOutputByteStream

Legt einen Ausgabebytestream für die Transcodierungsmediensenke fest.
IMFTranscodeSinkInfoProvider::SetOutputFile

Legt den Namen der codierten Ausgabedatei fest.
IMFTranscodeSinkInfoProvider::SetProfile

Legt das Transcodierungsprofil für das Aktivierungsobjekt der Transcodierungssenke fest.

Hinweise

Führen Sie die folgenden Schritte aus, um diese Schnittstelle zu verwenden:

  1. Rufen Sie MFCreateTranscodeSinkActivate auf, um das Transcode-Senkenaktivierungsobjekt zu erstellen.
  2. Fragen Sie das Aktivierungsobjekt für die IMFTranscodeSinkInfoProvider-Schnittstelle ab.
  3. Rufen Sie MFCreateTranscodeProfile auf, um ein Transcodierungsprofil zu erstellen.
  4. Legen Sie das attribut MF_TRANSCODE_CONTAINERTYPE für das Transcodierungsprofil fest. Das Attribut muss über einen der folgenden Werte verfügen:
    • MFTranscodeContainerType_3GP
    • MFTranscodeContainerType_MP3
    • MFTranscodeContainerType_MPEG4
  5. Rufen Sie IMFTranscodeProfile::SetVideoAttributes und IMFTranscodeProfile::SetAudioAttributes auf, um die Video- und Audioformate anzugeben.
  6. Rufen Sie IMFTranscodeSinkInfoProvider::SetProfile auf, um das Transcodierungsprofil festzulegen.
  7. Rufen Sie eine der folgenden Methoden (aber nicht beide) auf, um die Ausgabedatei anzugeben:
  8. Rufen Sie IMFActivate::ActivateObject für das Aktivierungsobjekt auf, um die Mediensenke zu erstellen.

Beispiele

// 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;
}

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 7 [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 R2 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile mfidl.h

Weitere Informationen

MFCreateTranscodeSinkActivate

Media Foundation-Schnittstellen