Использование Java Queues в аудио приложении в реальном времени

Я пишу аудио приложение в Android, которое записывает аудио с использованием AudioRecord и в настоящее время я сохраняю записанный звук в виде файла WAV. Теперь я хочу закодировать эти аудиоданные, чтобы сохранить их в сжатом виде. Для сжатия я использую MediaCodec сжать необработанные биты в AAC (с контейнером ADST). Сейчас я сначала сохраняю записанные данные в .wav файл, а затем считывание всего в реализованный класс кодировщика и его кодирование. Я хочу пропустить этот шаг первого сохранения файла как .wav, Итак, я думаю о том, чтобы реализовать какую-то очередь для хранения записанных сэмплов в моем классе, которая записывает аудио и продолжает опрашивать эту очередь из моего класса кодировщика. Вопрос в том, что я должен использовать Queue предоставляется SDK или я должен реализовать свою собственную очередь с использованием массивов? Проблема, с которой я могу столкнуться, заключается в том, что Queue предоставляемый SDK может привести к возможным издержкам и может привести к потере некоторых семплов во время записи, поскольку метод, в котором я читаю аудиоданные и сохраняю их для дальнейшего использования, находится в synchronized блок:

synchronized (lock) {
        while (mIsRecording) {
            // reading the audio buffer from the audio recording object
            mAudioRecord.read(mBuffer, 0, mBufferSize / SHORT_SIZE);

            // adding the audio buffer to the recording data ...
            System.arraycopy(mBuffer, 0, mRecAudioData, mRecAudioDataIndex, mBuffer.length);

            // increment the starting index for next copy..
            mRecAudioDataIndex += mBuffer.length;

            processBuffer(mBuffer);
        }
    }

Прямо сейчас я сохраняю аудиоданные в виде массива для последующего сохранения в файл wav. Как объяснено выше, теперь я хочу поставить в очередь прочитанные данные (mBuffer) в очередь и использовать его в кодировщике. Как мне реализовать очередь? Какие-либо предложения?

0 ответов

Другие вопросы по тегам