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
qvideoframetexturefromsource.cpp
Go to the documentation of this file.
1// Copyright (C) 2024 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
7
8using namespace QVideoTextureHelper;
9
10QVideoFrameTexturesFromRhiTextureArray::QVideoFrameTexturesFromRhiTextureArray(
11 RhiTextureArray &&rhiTextures, QVideoFrame sourceFrame)
12 : QVideoFrameTextures(std::move(sourceFrame)), m_rhiTextures(std::move(rhiTextures))
13{
14}
15
16// out-of-line destructor to get arount potential RTTI problems
17QVideoFrameTexturesFromRhiTextureArray::~QVideoFrameTexturesFromRhiTextureArray() = default;
18
19QRhiTexture *QVideoFrameTexturesFromRhiTextureArray::texture(uint plane) const
20{
21 return plane < m_rhiTextures.size() ? m_rhiTextures[plane].get() : nullptr;
22}
23
24RhiTextureArray QVideoFrameTexturesFromRhiTextureArray::takeTextureArray() &&
25{
26 return std::move(m_rhiTextures);
27}
28
29QVideoFrameTexturesFromMemory::QVideoFrameTexturesFromMemory(RhiTextureArray &&rhiTextures,
30 QVideoFrame mappedFrame)
31 : QVideoFrameTexturesFromRhiTextureArray(std::move(rhiTextures), mappedFrame),
32 m_mappedFrame(std::move(mappedFrame))
33{
34 Q_ASSERT(!m_mappedFrame.isValid() || m_mappedFrame.isReadable());
35}
36
37// We keep the source frame mapped until QRhi::endFrame is invoked.
38// QRhi::endFrame ensures that the mapped frame's memory has been loaded into the texture.
39// See QTBUG-123174 for bug's details.
40QVideoFrameTexturesFromMemory::~QVideoFrameTexturesFromMemory()
41{
42 m_mappedFrame.unmap();
43}
44
45void QVideoFrameTexturesFromMemory::onFrameEndInvoked()
46{
47 // After invoking QRhi::endFrame, the texture is loaded, and we don't need to
48 // to store the source mapped frame anymore
49 m_mappedFrame.unmap();
50 m_mappedFrame = {};
51}
52
53QVideoFrameTexturesFromHandlesSet::QVideoFrameTexturesFromHandlesSet(
54 RhiTextureArray &&rhiTextures, QVideoFrameTexturesHandlesUPtr handles,
55 QVideoFrame sourceFrame)
56 : QVideoFrameTexturesFromRhiTextureArray(std::move(rhiTextures), std::move(sourceFrame)),
57 m_textureHandles(std::move(handles))
58{
59}
60
61// out-of-line destructor to get arount potential RTTI problems
62QVideoFrameTexturesFromHandlesSet::~QVideoFrameTexturesFromHandlesSet() = default;
63
64QVideoFrameTexturesHandlesUPtr QVideoFrameTexturesFromHandlesSet::takeHandles()
65{
66 return std::move(m_textureHandles);
67}
68
69QT_END_NAMESPACE
Combined button and popup list for selecting options.