Класс QAudioBuffer
Класс QAudioBuffer представляет собой коллекцию аудиосэмплов с определенным форматом и частотой дискретизации. Подробнее...
| Заголовок: | #include <QAudioBuffer> |
| CMake: | find_package(Qt6 COMPONENTS Multimedia REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Multimedia) |
| qmake: | QT += multimedia |
Типы public
| S16S |
Функции public
| QAudioBuffer(QAudioBuffer &&other) | |
| QAudioBuffer(int numFrames, const QAudioFormat &format, qint64 startTime = -1) | |
| QAudioBuffer(const QByteArray &data, const QAudioFormat &format, qint64 startTime = -1) | |
| QAudioBuffer(const QAudioBuffer &other) | |
| QAudioBuffer() | |
| QAudioBuffer & | operator=(QAudioBuffer &&other) |
| QAudioBuffer & | operator=(const QAudioBuffer &other) |
| ~QAudioBuffer() | |
| qsizetype | byteCount() const |
| const T * | constData() const |
| const T * | data() const |
| T * | data() |
| void | detach() |
| qint64 | duration() const |
| QAudioFormat | format() const |
| qsizetype | frameCount() const |
| bool | isValid() const |
| qsizetype | sampleCount() const |
| qint64 | startTime() const |
Подробное описание
QAudioBuffer используется классом QAudioDecoder для передачи декодированных аудиоданных в приложение. Буфер аудио содержит данные в определенном формате QAudioFormat, который можно запросить с помощью format(). Он также помечен информацией о времени и продолжительности.
Для доступа к данным, хранящимся в буфере, используйте методы data() или constData().
Аудиобуферы явно разделяются; в большинстве случаев вы должны вызвать detach() перед изменением данных.
Документация по типам членов
QAudioBuffer::S16S
Это предопределенная специализация для сэмплов стерео 16 бит со знаком. Каждый канал — это целое число со знаком короткой длины.
Документация по функциям членов
QAudioBuffer::QAudioBuffer(QAudioBuffer &&other)
Конструирует QAudioBuffer, перемещая данные из other.
QAudioBuffer::QAudioBuffer(int numFrames, const QAudioFormat &format, qint64 startTime = -1)
Создает новый аудиобуфер с местом для numFrames кадров указанного формата format. Отдельные сэмплы будут инициализированы значениями по умолчанию для формата.
startTime (в микросекундах) указывает, когда этот буфер начинается в потоке. Если этот буфер не является частью потока, установите его в -1.
QAudioBuffer::QAudioBuffer(const QByteArray &data, const QAudioFormat &format, qint64 startTime = -1)
Создает новый аудиобуфер из предоставленных данных data в указанном формате format. Формат определит, как будут интерпретироваться количество и размеры сэмплов из data.
Если предоставленные data не являются целым кратным рассчитанному размеру кадра, избыточные данные не будут использоваться.
Этот аудиобуфер скопирует содержимое data.
startTime (в микросекундах) указывает, когда этот буфер начинается в потоке. Если этот буфер не является частью потока, установите его в -1.
QAudioBuffer::QAudioBuffer(const QAudioBuffer &other)
Создает новый аудиобуфер из other. Аудиобуферы явно разделяются, вы должны вызвать detach() для буфера, чтобы создать копию, которую можно будет изменить.
QAudioBuffer::QAudioBuffer()
Создает новый пустой, недействительный буфер.
QAudioBuffer &QAudioBuffer::operator=(QAudioBuffer &&other)
Перемещает other в этот QAudioBuffer.
QAudioBuffer &QAudioBuffer::operator=(const QAudioBuffer &other)
Присваивает буфер other этому.
QAudioBuffer::~QAudioBuffer()
Уничтожает этот аудиобуфер.
qsizetype QAudioBuffer::byteCount() const
Возвращает размер этого буфера в байтах.
template <typename T> const T *QAudioBuffer::constData() const
Возвращает указатель на данные этого буфера. Вы можете только читать их.
Этот метод предпочтительнее константной версии data(), чтобы избежать ненужного копирования.
Также есть шаблонная версия этой функции constData(), которая позволяет получить указатель на данные конкретного типа только для чтения. Обратите внимание, что проверка формата аудиобуфера не выполняется — это просто удобная функция.
// With a 16bit sample buffer: const quint16 *data = buffer->constData<quint16>();
template <typename T> const T *QAudioBuffer::data() const
Возвращает указатель на данные этого буфера. Вы можете только читать их.
Вы должны использовать функцию constData() вместо этой, чтобы предотвратить случайное глубокое копирование.
Также есть шаблонная версия функции data(), которая позволяет получить указатель на данные конкретного типа только для чтения. Обратите внимание, что проверка формата аудиобуфера не выполняется — это просто удобная функция.
// With a 16bit sample const buffer: const quint16 *data = buffer->data<quint16>();
template <typename T> T *QAudioBuffer::data()
Возвращает указатель на данные этого буфера. Вы можете изменять данные через возвращенный указатель.
Поскольку объекты QAudioBuffer явно разделяются, вы обычно должны вызвать detach() перед изменением данных через эту функцию.
Также есть шаблонная версия data(), которая позволяет получить указатель на данные конкретного типа. Обратите внимание, что проверка формата аудиобуфера не выполняется — это просто удобная функция.
// With a 16bit sample buffer: quint16 *data = buffer->data<quint16>(); // May cause deep copy
void QAudioBuffer::detach()
Отсоединяет этот аудиобуфер от других копий, которые могут совместно использовать данные с ним.
qint64 QAudioBuffer::duration() const
Возвращает продолжительность аудио в этом буфере в микросекундах.
Это зависит от format() и frameCount().
QAudioFormat QAudioBuffer::format() const
Возвращает формат формата этого буфера.
Некоторые свойства этого формата влияют на то, как рассчитываются duration() или byteCount() из frameCount().
qsizetype QAudioBuffer::frameCount() const
Возвращает количество полных аудиокадров в этом буфере.
Аудиокадр — это интерлизованный набор по одному образцу на канал для одного и того же момента времени.
bool QAudioBuffer::isValid() const
Возвращает true, если это допустимый буфер. Допустимый буфер содержит более нуля кадров и имеет допустимый формат.
qsizetype QAudioBuffer::sampleCount() const
Возвращает количество образцов в этом буфере.
Если формат этого буфера имеет несколько каналов, то это количество включает все каналы. Это означает, что стерео буфер с 1000 образцами в общей сложности будет иметь 500 образцов слева и 500 образцов справа (интерлизованные), и эта функция вернёт 1000.
См. также frameCount().
qint64 QAudioBuffer::startTime() const
Возвращает время в потоке, с которого начинается этот буфер (в микросекундах).
Если этот буфер не является частью потока, возвращается -1.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qaudiobuffer.html