Ошибка памяти с GetThumbnailsAsync

Минимальный пример [C++/WinRT]:

#include "winrt/Windows.Storage.Streams.h"
#include "winrt/Windows.Media.Editing.h"

using namespace std::literals;
using namespace winrt;
using namespace Windows::Media::Editing;
using namespace Windows::Storage;

int main()
{
    init_apartment();
    StorageFile file = StorageFile::GetFileFromPathAsync(L"video.mp4").get();
    MediaClip clip = MediaClip::CreateFromFileAsync(file).get();
    MediaComposition composition = MediaComposition();
    composition.Clips().Append(clip);

    while (true)
    {
        auto stream = composition.GetThumbnailAsync(0s, 10, 10, VideoFramePrecision::NearestFrame).get();
        printf("%lld\n", stream.Size());
    }
}

Проблема: когда я запускаю этот код, использование памяти быстро увеличивается и в конечном итоге происходит сбой программы. В идеале я бы предположил, что если я получу результат операции, эта операция перестанет потреблять память, но в этом случае GetThumbnailAsync продолжает использовать память. Закрытие операции или закрытие результата операции не помогает. Как я могу сделать GetThumbnailAsync операция освободить всю выделенную память после ее завершения?

Платформа: Microsoft Windows 10 Insider Preview (сборка 17682)

0 ответов

Другие вопросы по тегам