Antarmuka IMFTranscodeSinkInfoProvider (mfidl.h)
Diimplementasikan oleh objek aktivasi sink transcode.
Objek aktivasi sink transkode dapat digunakan untuk membuat salah satu sink file berikut:
- Sink file 3GP
- Sink file MP3
- Sink file MP4
Warisan
Antarmuka IMFTranscodeSinkInfoProvider mewarisi dari antarmuka IUnknown . IMFTranscodeSinkInfoProvider juga memiliki jenis anggota berikut:
Metode
Antarmuka IMFTranscodeSinkInfoProvider memiliki metode ini.
IMFTranscodeSinkInfoProvider::GetSinkInfo Mendapatkan jenis media untuk aliran audio dan video yang ditentukan dalam profil transkode. |
IMFTranscodeSinkInfoProvider::SetOutputByteStream Mengatur aliran byte output untuk sink media transkode. |
IMFTranscodeSinkInfoProvider::SetOutputFile Mengatur nama file output yang dikodekan. |
IMFTranscodeSinkInfoProvider::SetProfile Mengatur profil transkode pada objek aktivasi sink transkode. |
Keterangan
Untuk menggunakan antarmuka ini, lakukan langkah-langkah berikut:
- Panggil MFCreateTranscodeSinkActivate untuk membuat objek aktivasi sink transcode.
- Kueri objek aktivasi untuk antarmuka IMFTranscodeSinkInfoProvider .
- Panggil MFCreateTranscodeProfile untuk membuat profil transkode.
- Atur atribut MF_TRANSCODE_CONTAINERTYPE pada profil transcode. Atribut harus memiliki salah satu nilai berikut:
- MFTranscodeContainerType_3GP
- MFTranscodeContainerType_MP3
- MFTranscodeContainerType_MPEG4
- Panggil IMFTranscodeProfile::SetVideoAttributes dan IMFTranscodeProfile::SetAudioAttributes untuk menentukan format video dan audio.
- Panggil IMFTranscodeSinkInfoProvider::SetProfile untuk mengatur profil transkode.
- Panggil salah satu metode berikut (tetapi tidak keduanya) untuk menentukan file output:
- Panggil IMFActivate::ActivateObject pada objek aktivasi untuk membuat sink media.
Contoh
// 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;
}
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 7 [hanya aplikasi desktop] |
Server minimum yang didukung | Windows Server 2008 R2 [hanya aplikasi desktop] |
Target Platform | Windows |
Header | mfidl.h |