// Create the Sink Writer // ComPtr<IMFByteStream> spOutputByteStream; CHK(MFCreateMFByteStreamOnStreamEx((IUnknown*)outputStream, &spOutputByteStream)); ComPtr<IMFAttributes> spWriterAttributes; CHK(MFCreateAttributes(&spWriterAttributes, 10)); 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)) {