Android - открытое - инвертированный звук - анти-шум
Я очень плохо знаком с обработкой аудио и системой opensl es. В настоящее время я разрабатываю приложение, которое генерирует анти-шум. Моя идея - инвертировать значения в очереди аудио-буфера, однако все методы, которые я пробовал, не работают. Я использую opensles, так как мое приложение требует низкой задержки.
Конфигурация:
uint8_t *buffer; //buffer size is 384
engine.bitsPerSample_ = SL_PCMSAMPLEFORMAT_FIXED_16;
engine.sampleChannels_ = 1;
Методы пробовал:
- Побитовое отрицание: например
bufffer[i] = ~buffer[i];
- стандартная математика: например, если buffer [i] равен 200, то buffer[i] = 127–73(разница между 127 и 200);
- Различные другие методы, которые были более или менее методом проб и ошибок
Цель:
Все значения в буфере корректно инвертированы, и при постановке в очередь в SLAndroidSimpleBufferQueueItf звук воспроизведения является обратным к источнику.
Кто-нибудь знает, как лучше это решить?
Любая помощь будет принята с благодарностью:)