Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qmediaenginevideobuffer.cpp
Go to the documentation of this file.
1// Copyright (C) 2026 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
5
6#include <QtMultimedia/private/qvideotexturehelper_p.h>
7#include <QtMultimedia/qvideoframeformat.h>
8
10
11QMediaEngineVideoBuffer::QMediaEngineVideoBuffer(
12 ComPtr<ID3D11Texture2D> texture, ComPtr<ID3D11Device> engineDevice, QSize frameSize,
13 std::shared_ptr<QtMultimediaPrivate::QWindowsD3D11RhiTextureImporter> importer)
14 : m_texture(std::move(texture)),
15 m_engineDevice(std::move(engineDevice)),
16 m_frameSize(frameSize),
17 m_importer(std::move(importer))
18{
19}
20
21QMediaEngineVideoBuffer::~QMediaEngineVideoBuffer() = default;
22
23QVideoFrameTexturesUPtr
24QMediaEngineVideoBuffer::mapTextures(QRhi &rhi, QVideoFrameTexturesUPtr & /*oldTextures*/)
25{
26 if (!m_importer)
27 return nullptr;
28
29 ComPtr<ID3D11DeviceContext> engineCtx;
30 m_engineDevice->GetImmediateContext(&engineCtx);
31
32 QVideoFrameTexturesHandlesUPtr handles = m_importer->importTexture(
33 rhi, m_engineDevice.Get(), engineCtx.Get(), m_texture, m_frameSize,
34 QVideoFrameFormat::Format_BGRA8888);
35 if (!handles)
36 return nullptr;
37
38 return QVideoTextureHelper::createTexturesFromHandles(
39 std::move(handles), rhi, QVideoFrameFormat::Format_BGRA8888, m_frameSize);
40}
41
42QAbstractVideoBuffer::MapData QMediaEngineVideoBuffer::map(QVideoFrame::MapMode mode)
43{
44 if (mode != QVideoFrame::ReadOnly)
45 return {};
46
47 return m_readback.map(m_engineDevice, m_texture, m_frameSize);
48}
49
50void QMediaEngineVideoBuffer::unmap()
51{
52 m_readback.unmap();
53}
54
55QT_END_NAMESPACE
Combined button and popup list for selecting options.