Изменение голосового воспроизведения в режиме разговора в пользовательском ПЗУ Android

Я хотел бы изменить ОС Android (официальное изображение из AOSP), чтобы добавить предварительную обработку обычного звука воспроизведения телефонных звонков.

Я уже добился этой фильтрации для воспроизведения аудио в приложении (путем изменения HAL и аудиофрагментатора).

Я в порядке с таргетингом только на конкретное устройство (Nexus 5X). Кроме того, мне нужно только фильтровать воспроизведение - меня не волнует запись (восходящая линия связи).

UPDATE: Чтобы было ясно - я в порядке с модификацией определенных драйверов Qualcomm, или любая часть, которая работает на Nexus 5X, может помочь мне изменить воспроизведение в режиме "звонок".

ОБНОВЛЕНИЕ # 2:

Я пытаюсь создать приложение уровня Java, которое направляет воспроизведение телефона в музыкальный поток в режиме реального времени. Мне уже удалось установить его как системное приложение, получив разрешения для инициализации AudioRecord с помощью AudioSource.VOICE_DOWNLINK. Однако запись дает пустые выборки, она не записывает речевой вызов.

Код внутри моего рабочего потока:

// Start recording
int recBufferSize = AudioRecord.getMinBufferSize(44100, AudioFormat.CHANNEL_IN_STEREO, AudioFormat.ENCODING_PCM_16BIT);
mRecord = new AudioRecord(MediaRecorder.AudioSource.VOICE_DOWNLINK, 44100, AudioFormat.CHANNEL_IN_STEREO, AudioFormat.ENCODING_PCM_16BIT, recBufferSize);

// Start playback
int playBufferSize = AudioTrack.getMinBufferSize(44100, AudioFormat.CHANNEL_OUT_STEREO, AudioFormat.ENCODING_PCM_16BIT);
mTrack = new AudioTrack(AudioManager.STREAM_MUSIC, 44100, AudioFormat.CHANNEL_OUT_STEREO, AudioFormat.ENCODING_PCM_16BIT, playBufferSize, AudioTrack.MODE_STREAM);

mRecord.startRecording();;
mTrack.play();

int bufSize = 1024;
short[] buffer = new short[bufSize];
int res;
while (!interrupted())
{
    // Pull recording buffers and play back
    res = mRecord.read(buffer, 0, bufSize, AudioRecord.READ_NON_BLOCKING);
    mTrack.write(buffer, 0, res, AudioTrack.WRITE_BLOCKING);
}

// Stop recording
mRecord.stop();
mRecord.release();
mRecord = null;

// Stop playback
mTrack.stop();
mTrack.release();;
mTrack = null;

Я работаю на Nexus 5X, моем собственном AOSP-ROM, Android 7.1.1. Мне нужно найти место, которое позволит работать с записью звонков - возможно, где-то в hardware/qcom/audio/hal в коде платформы.

Также я смотрел: Функция voice_check_and_set_incall_rec_usecase при hardware/qcom/audio/hal/voice.c Но он не мог понять из этого или как заставить его работать.

ОБНОВЛЕНИЕ # 3: Я открыл более конкретный вопрос об использовании AudioSource.VOICE_DOWNLINK, который может привлечь внимание и в конечном итоге поможет мне решить этот вопрос. Запись звонков - сделайте его работающим на Nexus 5X (возможно rooting или пользовательский диск)