本文整理汇总了C++中ComPtr::BeginWriting方法的典型用法代码示例。如果您正苦于以下问题:C++ ComPtr::BeginWriting方法的具体用法?C++ ComPtr::BeginWriting怎么用?C++ ComPtr::BeginWriting使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ComPtr
的用法示例。
在下文中一共展示了ComPtr::BeginWriting方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: CHK
CHK(spWriterAttributes->SetUnknown(MF_SINK_WRITER_D3D_MANAGER, spDeviceManager.Get()));
CHK(spWriterAttributes->SetUINT32(MF_READWRITE_ENABLE_HARDWARE_TRANSFORMS, true));
ComPtr<IMFSinkWriter> spSinkWriter;
CHK(MFCreateSinkWriterFromURL(L".mp4", spOutputByteStream.Get(), spWriterAttributes.Get(), &spSinkWriter));
DWORD streamIndex;
CHK(spSinkWriter->AddStream(spTypeOut.Get(), &streamIndex));
CHK(spSinkWriter->SetInputMediaType(streamIndex, spTypeShared.Get(), nullptr));
//
// Write some data
//
CHK(spSinkWriter->BeginWriting());
ComPtr<IMFSample> spSample;
DWORD flags = 0;
double progress = 0.;
long long time = 0;
while (!token.is_canceled() && (time < DURATION) && !(flags & MF_SOURCE_READERF_ENDOFSTREAM))
{
// Notify caller of progress
double newProgress = 100. * (double)time / (double)DURATION;
if (newProgress - progress >= 1.)
{
_preview.Set(spSample.Get());
progress = newProgress;
reporter.report(progress);