Получить аудио образцы из байтового массива - PullRequest
1 голос
/ 12 сентября 2011

Как получить образцы данных из QAudioInput

Я нашел в этом примере код из примера аудиовхода code

    void InputTest::readMore()
{
    if(!m_audioInput)
        return;
    qint64 len = m_audioInput->bytesReady();
    if(len > 4096)
        len = 4096;
    qint64 l = m_input->read(m_buffer.data(), len);
    if(l > 0) {
        m_audioInfo->write(m_buffer.constData(), l);
    }
}

Я понял, что m_buffer содержит образцы аудиоданных

но моя библиотека обработки аудио получает короткие сэмплы Как я могу преобразовать это в короткий указатель

Моя аудио библиотека работает следующим образом

putSample( short *Sample, int numberOfSample)

Я могу получить количество образцов от

Q_ASSERT(m_format.sampleSize() % 8 == 0);
        const int channelBytes = m_format.sampleSize() / 8;
        const int sampleBytes = m_format.channels() * channelBytes;
        Q_ASSERT(len % sampleBytes == 0);
        const int numSamples = len / sampleBytes;

1 Ответ

2 голосов
/ 12 сентября 2011

Эта страница указывает, что read () ожидает, что символ * сохранит данные. Если вы правильно настроили формат аудиоустройства, данные действительно будут «сегментированы» как шорты вмассив char, и вы можете просто привести char * к короткому * перед передачей его в свою библиотеку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...