Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
Loading...
Searching...
No Matches
qffmpegmediadataholder_p.h
Go to the documentation of this file.
1
// Copyright (C) 2021 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
4
#
ifndef
QFFMPEGMEDIADATAHOLDER_P_H
5
#
define
QFFMPEGMEDIADATAHOLDER_P_H
6
7
//
8
// W A R N I N G
9
// -------------
10
//
11
// This file is not part of the Qt API. It exists purely as an
12
// implementation detail. This header file may change from version to
13
// version without notice, or even be removed.
14
//
15
// We mean it.
16
//
17
18
#
include
<
QtCore
/
private
/
qexpected_p
.
h
>
19
#
include
<
QtMultimedia
/
qmediametadata
.
h
>
20
#
include
<
QtMultimedia
/
qvideoframe
.
h
>
21
#
include
<
QtMultimedia
/
private
/
qplatformmediaplayer_p
.
h
>
22
#
include
<
QtMultimedia
/
private
/
qmultimediautils_p
.
h
>
23
#
include
<
QtFFmpegMediaPluginImpl
/
private
/
qffmpegtime_p
.
h
>
24
#
include
<
QtFFmpegMediaPluginImpl
/
private
/
qffmpeg_p
.
h
>
25
26
#
include
<
array
>
27
#
include
<
optional
>
28
29
QT_BEGIN_NAMESPACE
30
31
namespace
QFFmpeg
{
32
33
struct
ICancelToken
34
{
35
virtual
~
ICancelToken
() =
default
;
36
virtual
bool
isCancelled
()
const
= 0;
37
};
38
39
class
MediaDataHolder
40
{
41
public
:
42
using
TrackType
=
QPlatformMediaPlayer
::
TrackType
;
43
struct
StreamInfo
44
{
45
int
avStreamIndex
= -1;
46
bool
isDefault
=
false
;
47
QMediaMetaData
metaData
;
48
};
49
50
struct
ContextError
51
{
52
QMediaPlayer
::
Error
code
{};
53
QString
description
;
54
};
55
56
using
StreamsMap
=
QPlatformMediaPlayer
::
TrackTypeMap
<
QList
<
StreamInfo
>>;
57
using
StreamIndexes
=
QPlatformMediaPlayer
::
TrackTypeMap
<
int
>;
58
59
MediaDataHolder
() =
default
;
60
MediaDataHolder
(AVDemuxerContextUPtr context,
const
std::shared_ptr<ICancelToken> &cancelToken);
61
62
static
std
::
optional
<
TrackType
>
trackTypeFromMediaType
(
int
mediaType);
63
64
int
activeTrack
(TrackType type)
const
;
65
66
const
QList
<
StreamInfo
> &
streamInfo
(TrackType trackType)
const
;
67
68
TrackDuration
duration
()
const
{
return
m_duration; }
69
70
const
QMediaMetaData
&
metaData
()
const
{
return
m_metaData; }
71
72
bool
isSeekable
()
const
{
return
m_isSeekable; }
73
74
VideoTransformation
transformation
()
const
;
75
76
AVFormatContext
*
avContext
();
77
78
int
currentStreamIndex
(TrackType trackType)
const
;
79
80
using
Maybe
=
q23
::
expected
<
std
::
shared_ptr
<
MediaDataHolder
>,
ContextError
>;
81
static
Maybe
create
(
const
QUrl &url, QIODevice *stream,
const
QPlaybackOptions &options,
82
const
std::shared_ptr<ICancelToken> &cancelToken);
83
84
bool
setActiveTrack
(TrackType type,
int
streamNumber);
85
86
private
:
87
void
updateMetaData();
88
89
std::shared_ptr<ICancelToken> m_cancelToken;
// NOTE: Cancel token may be accessed by
90
// AVFormatContext during destruction and
91
// must outlive the context object
92
AVDemuxerContextUPtr m_context;
93
94
bool
m_isSeekable =
false
;
95
96
StreamIndexes m_currentAVStreamIndex = { -1, -1, -1 };
97
StreamsMap m_streamMap;
98
StreamIndexes m_requestedStreams = { -1, -1, -1 };
99
TrackDuration m_duration =
TrackDuration
(0);
100
QMediaMetaData m_metaData;
101
std::optional<QImage> m_cachedThumbnail;
102
};
103
104
}
// namespace QFFmpeg
105
106
QT_END_NAMESPACE
107
108
#
endif
// QFFMPEGMEDIADATAHOLDER_P_H
QFFmpeg::MediaDataHolder
Definition
qffmpegmediadataholder_p.h:40
QFFmpeg::MediaDataHolder::currentStreamIndex
int currentStreamIndex(TrackType trackType) const
Definition
qffmpegmediadataholder.cpp:148
QFFmpeg::MediaDataHolder::trackTypeFromMediaType
static std::optional< TrackType > trackTypeFromMediaType(int mediaType)
Definition
qffmpegmediadataholder.cpp:182
QFFmpeg::MediaDataHolder::setActiveTrack
bool setActiveTrack(TrackType type, int streamNumber)
Definition
qffmpegmediadataholder.cpp:539
QFFmpeg::MediaDataHolder::activeTrack
int activeTrack(TrackType type) const
Definition
qffmpegmediadataholder.cpp:563
QFFmpeg::MediaDataHolder::duration
TrackDuration duration() const
Definition
qffmpegmediadataholder_p.h:68
QFFmpeg::MediaDataHolder::MediaDataHolder
MediaDataHolder()=default
QFFmpeg::MediaDataHolder::MediaDataHolder
MediaDataHolder(AVDemuxerContextUPtr context, const std::shared_ptr< ICancelToken > &cancelToken)
Definition
qffmpegmediadataholder.cpp:373
QFFmpeg::MediaDataHolder::transformation
VideoTransformation transformation() const
Definition
qffmpegmediadataholder.cpp:130
QFFmpeg::MediaDataHolder::avContext
AVFormatContext * avContext()
Definition
qffmpegmediadataholder.cpp:143
QFFmpeg::MediaDataHolder::metaData
const QMediaMetaData & metaData() const
Definition
qffmpegmediadataholder_p.h:70
QFFmpeg::MediaDataHolder::isSeekable
bool isSeekable() const
Definition
qffmpegmediadataholder_p.h:72
QFFmpeg::MediaDataHolder::streamInfo
const QList< StreamInfo > & streamInfo(TrackType trackType) const
Definition
qffmpegmediadataholder.cpp:568
QFFmpeg::MediaDataHolder::create
static Maybe create(const QUrl &url, QIODevice *stream, const QPlaybackOptions &options, const std::shared_ptr< ICancelToken > &cancelToken)
Definition
qffmpegmediadataholder.cpp:360
QList
Definition
qlist.h:82
QFFmpeg
Definition
qandroidcacertificates.cpp:26
QFFmpeg::streamTransformation
static VideoTransformation streamTransformation(const AVStream *stream)
Definition
qffmpegmediadataholder.cpp:91
QFFmpeg::colorTransferSupportsHdr
static bool colorTransferSupportsHdr(const AVStream *stream)
Definition
qffmpegmediadataholder.cpp:112
QFFmpeg::streamDuration
static std::optional< TrackDuration > streamDuration(const AVStream &stream)
Definition
qffmpegmediadataholder.cpp:31
QFFmpeg::insertMediaData
static void insertMediaData(QMediaMetaData &metaData, TrackType trackType, const AVStream *stream)
Definition
qffmpegmediadataholder.cpp:153
QFFmpeg::displayMatrixToTransform
static QTransform displayMatrixToTransform(const int32_t *displayMatrix)
Definition
qffmpegmediadataholder.cpp:61
QFFmpeg::streamStart
static std::optional< TrackPosition > streamStart(const AVStream &stream, const AVDemuxerContextUPtr &context)
Definition
qffmpegmediadataholder.cpp:52
QT_BEGIN_NAMESPACE
Combined button and popup list for selecting options.
Definition
qsequentialanimationgroup.cpp:47
std
[33]
Definition
src_corelib_tools_qhash.cpp:421
QFFmpeg::ICancelToken
Definition
qffmpegmediadataholder_p.h:34
QFFmpeg::ICancelToken::isCancelled
virtual bool isCancelled() const =0
QFFmpeg::ICancelToken::~ICancelToken
virtual ~ICancelToken()=default
QFFmpeg::MediaDataHolder::ContextError
Definition
qffmpegmediadataholder_p.h:51
QFFmpeg::MediaDataHolder::ContextError::description
QString description
Definition
qffmpegmediadataholder_p.h:53
QFFmpeg::MediaDataHolder::ContextError::code
QMediaPlayer::Error code
Definition
qffmpegmediadataholder_p.h:52
QFFmpeg::MediaDataHolder::StreamInfo
Definition
qffmpegmediadataholder_p.h:44
QFFmpeg::MediaDataHolder::StreamInfo::isDefault
bool isDefault
Definition
qffmpegmediadataholder_p.h:46
QFFmpeg::MediaDataHolder::StreamInfo::avStreamIndex
int avStreamIndex
Definition
qffmpegmediadataholder_p.h:45
QFFmpeg::MediaDataHolder::StreamInfo::metaData
QMediaMetaData metaData
Definition
qffmpegmediadataholder_p.h:47
qtmultimedia
src
plugins
multimedia
ffmpeg
playbackengine
qffmpegmediadataholder_p.h
Generated on
for Qt by
1.18.0