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
qandroidaudiodecoder_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
QANDROIDAUDIODECODER_P_H
5
#
define
QANDROIDAUDIODECODER_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
#
include
<
QtMultimedia
/
private
/
qplatformaudiodecoder_p
.
h
>
18
19
#
include
<
QtCore
/
qurl
.
h
>
20
#
include
<
QThread
>
21
22
#
include
"media/NdkMediaCodec.h"
23
#
include
"media/NdkMediaExtractor.h"
24
#
include
"media/NdkMediaFormat.h"
25
#
include
"media/NdkMediaError.h"
26
27
QT_BEGIN_NAMESPACE
28
29
class
Decoder :
public
QObject
30
{
31
Q_OBJECT
32
public
:
33
Decoder();
34
~Decoder();
35
36
public
Q_SLOTS:
37
void
setSource(
const
QUrl &source);
38
void
doDecode();
39
void
stop();
40
41
Q_SIGNALS:
42
void
positionChanged(
const
QAudioBuffer &buffer, std::chrono::milliseconds position);
43
void
durationChanged(std::chrono::milliseconds duration);
44
void
error(
const
QAudioDecoder::Error error,
const
QString &errorString);
45
void
finished();
46
void
decodingChanged(
bool
decoding);
47
48
private
:
49
void
createDecoder();
50
51
AMediaCodec *m_codec =
nullptr
;
52
AMediaExtractor *m_extractor =
nullptr
;
53
AMediaFormat *m_format =
nullptr
;
54
55
QAudioFormat m_outputFormat;
56
QString m_formatError;
57
bool
m_inputEOS;
58
};
59
60
61
class
QAndroidAudioDecoder
:
public
QPlatformAudioDecoder
62
{
63
Q_OBJECT
64
public
:
65
QAndroidAudioDecoder
(
QAudioDecoder
*
parent
);
66
virtual
~
QAndroidAudioDecoder
();
67
68
QUrl
source
()
const
override
{
return
m_source; }
69
void
setSource
(
const
QUrl &fileName)
override
;
70
71
QIODevice
*
sourceDevice
()
const
override
{
return
m_device; }
72
void
setSourceDevice
(QIODevice *device)
override
;
73
74
void
start
()
override
;
75
void
stop
()
override
;
76
77
QAudioFormat
audioFormat
()
const
override
{
return
{}; }
78
void
setAudioFormat
(
const
QAudioFormat &
/*format*/
)
override
{}
79
80
QAudioBuffer
read
()
override
;
81
bool
bufferAvailable
()
const
override
;
82
83
Q_SIGNALS
:
84
void
setSourceUrl
(
const
QUrl
&
source
);
85
86
private
Q_SLOTS
:
87
void
positionChanged
(
QAudioBuffer
audioBuffer
,
std
::
chrono
::
milliseconds
position
);
88
void
durationChanged(std::chrono::milliseconds duration);
89
void
error(
const
QAudioDecoder::Error error,
const
QString &errorString);
90
void
readDevice();
91
void
finished();
92
93
private
:
94
bool
requestPermissions();
95
bool
createTempFile();
96
void
decode();
97
98
QIODevice *m_device =
nullptr
;
99
Decoder *m_decoder =
nullptr
;
100
101
QList
<
std
::
pair
<
QAudioBuffer
,
std
::
chrono
::
milliseconds
>>
m_audioBuffer
;
102
QUrl m_source;
103
104
QByteArray m_deviceBuffer;
105
106
QThread *m_threadDecoder =
nullptr
;
107
};
108
109
QT_END_NAMESPACE
110
111
#
endif
// QANDROIDAUDIODECODER_P_H
QAndroidAudioDecoder
Definition
qandroidaudiodecoder_p.h:62
QAndroidAudioDecoder::stop
void stop() override
Definition
qandroidaudiodecoder.cpp:315
QAndroidAudioDecoder::bufferAvailable
bool bufferAvailable() const override
Definition
qandroidaudiodecoder.cpp:340
QAndroidAudioDecoder::audioFormat
QAudioFormat audioFormat() const override
Definition
qandroidaudiodecoder_p.h:77
QAndroidAudioDecoder::source
QUrl source() const override
Definition
qandroidaudiodecoder_p.h:68
QAndroidAudioDecoder::~QAndroidAudioDecoder
virtual ~QAndroidAudioDecoder()
Definition
qandroidaudiodecoder.cpp:253
QAndroidAudioDecoder::read
QAudioBuffer read() override
Definition
qandroidaudiodecoder.cpp:329
QAndroidAudioDecoder::sourceDevice
QIODevice * sourceDevice() const override
Definition
qandroidaudiodecoder_p.h:71
QAndroidAudioDecoder::setSourceDevice
void setSourceDevice(QIODevice *device) override
Definition
qandroidaudiodecoder.cpp:279
QAndroidAudioDecoder::setSource
void setSource(const QUrl &fileName) override
Definition
qandroidaudiodecoder.cpp:261
QAndroidAudioDecoder::start
void start() override
Definition
qandroidaudiodecoder.cpp:295
QAndroidAudioDecoder::setAudioFormat
void setAudioFormat(const QAudioFormat &) override
Definition
qandroidaudiodecoder_p.h:78
QSvgAbstractAnimation::finished
bool finished() const
Definition
qsvgabstractanimation.cpp:26
std
[33]
Definition
src_corelib_tools_qhash.cpp:421
tempFile
static QT_BEGIN_NAMESPACE const char tempFile[]
Definition
qandroidaudiodecoder.cpp:22
dequeueTimeout
constexpr int dequeueTimeout
Definition
qandroidaudiodecoder.cpp:23
qCWarning
#define qCWarning(category,...)
Definition
qloggingcategory.h:164
Q_STATIC_LOGGING_CATEGORY
#define Q_STATIC_LOGGING_CATEGORY(name,...)
Definition
qloggingcategory.h:154
qtmultimedia
src
plugins
multimedia
android
audio
qandroidaudiodecoder_p.h
Generated on
for Qt by
1.18.0