Interfaccia IMFTranscodeSinkInfoProvider (mfidl.h)
Implementato dall'oggetto di attivazione sink transcodifica.
L'oggetto di attivazione sink transcodifica può essere usato per creare uno dei sink di file seguenti:
- Sink di file 3GP
- Sink di file MP3
- Sink di file MP4
Ereditarietà
L'interfaccia IMFTranscodeSinkInfoProvider eredita dall'interfaccia IUnknown . IMFTranscodeSinkInfoProvider include anche questi tipi di membri:
Metodi
L'interfaccia IMFTranscodeSinkInfoProvider include questi metodi.
IMFTranscodeSinkInfoProvider::GetSinkInfo Ottiene i tipi di supporti per i flussi audio e video specificati nel profilo di transcodifica. |
IMFTranscodeSinkInfoProvider::SetOutputByteStream Imposta un flusso di byte di output per il sink multimediale transcodifica. |
IMFTranscodeSinkInfoProvider::SetOutputFile Imposta il nome del file di output codificato. |
IMFTranscodeSinkInfoProvider::SetProfile Imposta il profilo di transcodifica nell'oggetto attivazione sink transcodifica. |
Commenti
Per usare questa interfaccia, seguire questa procedura:
- Chiamare MFCreateTranscodeSinkActivate per creare l'oggetto di attivazione sink transcodifica.
- Eseguire una query sull'oggetto attivazione per l'interfaccia IMFTranscodeSinkInfoProvider .
- Chiamare MFCreateTranscodeProfile per creare un profilo transcodifica.
- Impostare l'attributo MF_TRANSCODE_CONTAINERTYPE nel profilo transcodifica. L'attributo deve avere uno dei valori seguenti:
- MFTranscodeContainerType_3GP
- MFTranscodeContainerType_MP3
- MFTranscodeContainerType_MPEG4
- Chiama IMFTranscodeProfile::SetVideoAttributes e IMFTranscodeProfile::SetAudioAttributes per specificare i formati video e audio.
- Chiamare IMFTranscodeSinkInfoProvider::SetProfile per impostare il profilo transcodifica.
- Chiamare uno dei metodi seguenti (ma non entrambi) per specificare il file di output:
- Chiamare IMFActivate::ActivateObject sull'oggetto attivazione per creare il sink multimediale.
Esempio
// 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;
}
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 7 [solo app desktop] |
Server minimo supportato | Windows Server 2008 R2 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | mfidl.h |