Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Implemented by the transcode sink activation object.
The transcode sink activation object can be used to create any of the following file sinks:
- 3GP file sink
- MP3 file sink
- MP4 file sink
Inheritance
The IMFTranscodeSinkInfoProvider interface inherits from the IUnknown interface. IMFTranscodeSinkInfoProvider also has these types of members:
Methods
The IMFTranscodeSinkInfoProvider interface has these methods.
IMFTranscodeSinkInfoProvider::GetSinkInfo Gets the media types for the audio and video streams specified in the transcode profile. |
IMFTranscodeSinkInfoProvider::SetOutputByteStream Sets an output byte stream for the transcode media sink. |
IMFTranscodeSinkInfoProvider::SetOutputFile Sets the name of the encoded output file. |
IMFTranscodeSinkInfoProvider::SetProfile Sets the transcoding profile on the transcode sink activation object. |
Remarks
To use this interface, perform the following steps:
- Call MFCreateTranscodeSinkActivate to create the transcode sink activation object.
- Query the activation object for the IMFTranscodeSinkInfoProvider interface.
- Call MFCreateTranscodeProfile to create a transcode profile.
- Set the MF_TRANSCODE_CONTAINERTYPE attribute on the transcode profile. The attribute must have one of the following values:
- MFTranscodeContainerType_3GP
- MFTranscodeContainerType_MP3
- MFTranscodeContainerType_MPEG4
- Call IMFTranscodeProfile::SetVideoAttributes and IMFTranscodeProfile::SetAudioAttributes to specify the video and audio formats.
- Call IMFTranscodeSinkInfoProvider::SetProfile to set the transcode profile.
- Call one of the following methods (but not both) to specify the output file:
- Call IMFActivate::ActivateObject on the activation object to create the media sink.
Examples
// 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;
}
Requirements
Requirement | Value |
---|---|
Minimum supported client | Windows 7 [desktop apps only] |
Minimum supported server | Windows Server 2008 R2 [desktop apps only] |
Target Platform | Windows |
Header | mfidl.h |