向编写器添加接收器
编写器接收器是独立于编写器的对象,必须添加到编写器中才能使用。 如果要写入文件,只需调用 IWMWriter::SetOutputFilename 即可自动设置文件接收器。 否则,若要将接收器添加到编写器,请调用 IWMWriterAdvanced::AddSink 方法。 AddSink 需要指向接收器的 IWMWriterSink 接口的指针。
使用完接收器后,应根据接收器的类型调用适当的方法将其关闭,然后通过调用 IWMWriterAdvanced::RemoveSink 将其从编写器中删除。
以下示例代码演示如何创建编写器文件接收器并将其添加到编写器。 有关使用此代码的详细信息,请参阅 使用代码示例。
HRESULT AddFileSink(IWMWriterFileSink** ppFileSink, IWMWriter* pWriter)
{
HRESULT hr = S_OK;
IWMWriterSink* pSinkBase = NULL;
IWMWriterAdvanced* pWriterAdvanced = NULL;
hr = CreateWriterFileSink(ppFileSink);
GOTO_EXIT_IF_FAILED(hr);
hr = *ppFileSink->QueryInterface(IID_IWMWriterSink,
(void**) &pSinkBase);
GOTO_EXIT_IF_FAILED(hr);
hr = pWriter->QueryInterface(IID_IWMWriterAdvanced,
(void**) &pWriterAdvanced);
GOTO_EXIT_IF_FAILED(hr);
hr = pWriterAdvanced->AddSink(pSinkBase);
GOTO_EXIT_IF_FAILED(hr);
Exit:
SAFE_RELEASE(pSinkBase);
SAFE_RELEASE(pWriterAdvanced);
return hr;
}
相关主题