SuperpoweredAndroidAudioIO loopback, только вывод на левое ухо - PullRequest
0 голосов
/ 27 октября 2018

После реализации звуковой петли (от входа микрофона до стандартного выхода) в Android с помощью Superpowered SDK я обнаружил, что вывод слышен только через одну сторону гарнитуры.

Так я инициализировал SuperpoweredAndroidAudioIO:

    audioIO = new SuperpoweredAndroidAudioIO (
        samplerate,                     // sampling rate
        buffersize,                     // buffer size
        true,                           // enableInput
        true,                           // enableOutput
        liveAudioProcessing,            // process callback function
        process,                        // clientData
        -1   ,                          // inputStreamType (-1 = default)
        -1,                             // outputStreamType (-1 = default)
        buffersize * 2                  // latencySamples
);

Переключение inputStreamType или outputStreamType на другие параметры в SLES / OpenSLES_AndroidConfiguration.h не помогло решить проблему.

Моя функция обратного вызова liveAudioProcessing выглядит следующим образом:

static bool liveAudioProcessing (
        void * clientdata,          // custom pointer to processing bool
        short int *audio,           // buffer of interleaved samples
        int numberOfFrames,         // number of frames to process
        int __unused samplerate     // sampling rate
) {
    SuperpoweredShortIntToFloat(audio, floatBuffer, (unsigned int)numberOfFrames);
    if (*(bool *) clientdata and eq != nullptr) {
        eq->process(floatBuffer, floatBuffer, (unsigned int) numberOfFrames);
    }
    SuperpoweredFloatToShortInt(floatBuffer, audio, (unsigned int)numberOfFrames);
    return true;
}

Проблема возникает, когда оба clientdata имеют значение false и true, поэтому они не имеют ничего общего с эквалайзером.

1 Ответ

0 голосов
/ 02 ноября 2018

Может быть, ваше устройство Android предоставляет данные с микрофона только на левой стороне? Что произойдет, если внутри функции обратного вызова находится только «return true» и ничего больше?

...