IMFTranscodeSinkInfoProvider 인터페이스(mfidl.h)
코드 변환 싱크 활성화 개체에 의해 구현됩니다.
코드 변환 싱크 활성화 개체를 사용하여 다음 파일 싱크를 만들 수 있습니다.
- 3GP 파일 싱크
- MP3 파일 싱크
- MP4 파일 싱크
상속
IMFTranscodeSinkInfoProvider 인터페이스는 IUnknown 인터페이스에서 상속됩니다. IMFTranscodeSinkInfoProvider 에는 다음과 같은 유형의 멤버도 있습니다.
메서드
IMFTranscodeSinkInfoProvider 인터페이스에는 이러한 메서드가 있습니다.
IMFTranscodeSinkInfoProvider::GetSinkInfo 코드 변환 프로필에 지정된 오디오 및 비디오 스트림의 미디어 유형을 가져옵니다. |
IMFTranscodeSinkInfoProvider::SetOutputByteStream 코드 변환 미디어 싱크에 대한 출력 바이트 스트림을 설정합니다. |
IMFTranscodeSinkInfoProvider::SetOutputFile 인코딩된 출력 파일의 이름을 설정합니다. |
IMFTranscodeSinkInfoProvider::SetProfile 코드 변환 싱크 활성화 개체의 코드 변환 프로필을 설정합니다. |
설명
이 인터페이스를 사용하려면 다음 단계를 수행합니다.
- MFCreateTranscodeSinkActivate를 호출하여 코드 변환 싱크 활성화 개체를 만듭니다.
- IMFTranscodeSinkInfoProvider 인터페이스에 대한 활성화 개체를 쿼리합니다.
- MFCreateTranscodeProfile을 호출하여 코드 변환 프로필을 만듭니다.
- 코드 변환 프로필에서 MF_TRANSCODE_CONTAINERTYPE 특성을 설정합니다. 특성에는 다음 값 중 하나가 있어야 합니다.
- MFTranscodeContainerType_3GP
- MFTranscodeContainerType_MP3
- MFTranscodeContainerType_MPEG4
- IMFTranscodeProfile::SetVideoAttributes 및 IMFTranscodeProfile::SetAudioAttributes를 호출하여 비디오 및 오디오 형식을 지정합니다.
- IMFTranscodeSinkInfoProvider::SetProfile을 호출하여 코드 변환 프로필을 설정합니다.
- 출력 파일을 지정하려면 다음 메서드 중 하나를 호출합니다(둘 다 아님).
- 활성화 개체에서 IMFActivate::ActivateObject 를 호출하여 미디어 싱크를 만듭니다.
예제
// 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;
}
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 7 [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2008 R2 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | mfidl.h |