QAudioBuffer 类

QAudioBuffer 类表示具有特定格式和采样率的音频样本的集合。更多...

头文件 #include <QAudioBuffer>
CMakefind_package(Qt6 REQUIRED COMPONENTS Multimedia)
target_link_libraries(mytarget PRIVATE Qt6::Multimedia)
qmakeQT += multimedia

公共类型

公共函数

QAudioBuffer()
QAudioBuffer(const QByteArray &data, const QAudioFormat &format, qint64 startTime = -1)
QAudioBuffer(int numFrames, const QAudioFormat &format, qint64 startTime = -1)
QAudioBuffer(const QAudioBuffer &other)
QAudioBuffer(QAudioBuffer &&other)
~QAudioBuffer()
qsizetypebyteCount() const
const T *constData() const
const T *data() const
T *data()
voiddetach()
qint64duration() const
QAudioFormatformat() const
qsizetypeframeCount() const
boolisValid() const
qsizetypesampleCount() const
qint64startTime() const
voidswap(QAudioBuffer &other)
QAudioBuffer &operator=(const QAudioBuffer &other)
QAudioBuffer &operator=(QAudioBuffer &&other)

详细描述

QAudioBuffer 由 QAudioDecoder 类使用,将解码的音频数据传递给应用程序。音频缓冲区包含可以在 format() 中查询的 QAudioFormat 的数据。它还标记有时间和持续时间信息。

要访问缓冲区中存储的数据,请使用 data() 或 constData() 方法。

音频缓冲区是显式共享的,在大多数情况下,在修改数据之前,你应该调用 detach()。

成员类型文档

QAudioBuffer::F32M

这是一个32位浮点单声道样本的预定义特殊化。

QAudioBuffer::F32S

这是一个32位浮点立体声音样的预定义特殊化。

QAudioBuffer::S16M

这是一个预定义的特殊化,针对有符号的16位单声道样本。

QAudioBuffer::S16S

这是一个预定义的特殊化,针对有符号的立体声16位样本。每个通道都是有符号短整型

QAudioBuffer::S32M

这是一个预定义的特殊化,针对有符号的32位单声道样本。

QAudioBuffer::S32S

这是一个预定义的特殊化,针对有符号的32位立体声音样。

QAudioBuffer::U8M

这是一个预定义的特殊化,针对无符号的8位单声道样本。

QAudioBuffer::U8S

这是一个预定义的特殊化,针对无符号的8位立体声音样。

成员函数文档

[noexcept] QAudioBuffer::QAudioBuffer()

创建一个新的、空的、无效的缓冲区。

QAudioBuffer::QAudioBuffer(const QByteArray &数据, const QAudioFormat &格式, qint64 startTime = -1)

从提供的数据和指定的格式创建一个新的音频缓冲区。格式将决定如何从数据中解释样本的数量和大小。

如果提供的数据不是计算出的帧大小的整数倍,则额外的数据将不会使用。

此音频缓冲区将复制数据的内容。

startTime(以微秒为单位)表示此缓冲区在流中的开始时间。如果不属于流的一部分,则将其设置为-1。

QAudioBuffer::QAudioBuffer(int numFrames, const QAudioFormat &格式, qint64 startTime = -1)

创建一个新的音频缓冲区,用于存储给定格式的numFrames帧。单个样本将初始化为格式的默认值。

startTime(以微秒为单位)表示此缓冲区在流中的开始时间。如果不属于流的一部分,则将其设置为-1。

[noexcept] QAudioBuffer::QAudioBuffer(const QAudioBuffer &other)

other创建一个新音频缓冲区。音频缓冲区是显式共享的,您应该在缓冲区上调用detach()以创建一个可以修改的副本。

[noexcept] QAudioBuffer::QAudioBuffer(QAudioBuffer &&other)

通过从other移动来构建一个QAudioBuffer。

[noexcept] QAudioBuffer::~QAudioBuffer()

销毁此音频缓冲区。

[noexcept] qsizetype QAudioBuffer::byteCount() const

返回缓冲区的尺寸,以字节为单位。

模板 <typename T> const T *QAudioBuffer::constData() const

返回对缓冲区数据的指针。您可以只读取它。

data() 的常量版本相比,此方法更受欢迎,可以防止不必要的复制。

请注意,不对音频缓冲区的格式进行检查 - 这是一个辅助函数。

// With a 16bit sample buffer:
const quint16 *data = buffer->constData<quint16>();

模板 <typename T> const T *QAudioBuffer::data() const

返回对缓冲区数据的指针。您可以只读取它。

应使用 constData() 函数而不是此函数,以防止意外深复制。

请注意,不对音频缓冲区的格式进行检查 - 这是一个辅助函数。

// With a 16bit sample const buffer:
const quint16 *data = buffer->data<quint16>();

模板 <typename T> T *QAudioBuffer::data()

返回对缓冲区数据的指针。您可以通过返回的指针修改数据。

由于 QAudioBuffer 对象是显式共享的,因此通常在通过此函数修改数据之前调用 detach()。

请注意,不对音频缓冲区的格式进行检查 - 这是一个辅助函数。

// With a 16bit sample buffer:
quint16 *data = buffer->data<quint16>(); // May cause deep copy

void QAudioBuffer::detach()

将此音频缓冲区从可能与其共享数据的其他副本中分离出来。

[noexcept] qint64 QAudioBuffer::duration() const

返回此缓冲区中音频的持续时间,以微秒为单位。

这取决于 format() 和 frameCount()。

[noexcept] QAudioFormat QAudioBuffer::format() const

返回此缓冲区的 格式

此格式的几个属性影响如何从 frameCount() 计算出 duration() 或 byteCount()。

[noexcept] qsizetype QAudioBuffer::frameCount() const

返回此缓冲区中完整音频帧的数量。

一个音频帧是同一时间间隔内每个通道的一个样本的交织集。

[noexcept] bool QAudioBuffer::isValid() const

如果这是一个有效缓冲区,则返回 true。一个有效缓冲区在其内部有多于零的帧和一个有效格式。

[noexcept] qsizetype QAudioBuffer::sampleCount() const

返回此缓冲区中样本的数量。

如果此缓冲区的格式包含多个通道,则此计数包括所有通道。这意味着一个包含1000个总样本的立体声缓冲区将有500个左样本和500个右样本(交错),此函数将返回1000。

另请参阅frameCount()。

[noexcept] qint64 QAudioBuffer::startTime() const

返回此缓冲区在流中的起始时间(以微秒为单位)。

如果此缓冲区不属于流的一部分,则将返回-1。

[noexcept] void QAudioBuffer::swap(QAudioBuffer &other)

other交换音频缓冲区。

QAudioBuffer &QAudioBuffer::operator=(const QAudioBuffer &other)

other缓冲区赋值给此。

[noexcept] QAudioBuffer &QAudioBuffer::operator=(QAudioBuffer &&other)

将其他other移动到这个QAudioBuffer

© 2024 Qt公司有限公司。此处包含的文档贡献享有其各自的版权。本文件所述的文档是根据自由软件基金会发布的GNU自由文档许可证版本1.3的条款许可的。Qt及相应的标志是芬兰及/或其他国家Qt公司有限公司的商标。所有其他商标均为其各自所有者的财产。