[T-Mobile Galaxy Note 4 Android Development] Lessaj:
That's why I spent so much time digging around our kernel trying to find it, but unfortunately there's just nothing I could find. It's definitely not anything in mixer_path.xml, I scanned it up and down and nothing is relevant. It's all max level settings(?) and left+right channels basically.

I tried to follow it all the way up the chain, even down to the PhoneWindow and PhoneWindowManager.java, but I don't have anything else from a logging perspective to understand the exact path that it takes from button press to volume adjustment.

Really the only way that seems would work is decompiling the libcsd-client.so and making some changes in that but that's a scary route to say the least... But doable for just our device. As I was following the trail that's what led me to that file and the function inside it. It's interesting that the same structure would work fine on a nexus 6 but not on our device. Especially since it works fine throughout the rest of the system, it's only the dialer that was behaving this way, but I looked through the code for it and there's nothing there, it's handled outside the dialer. Is it even working properly on a nexus 6 with CM? I haven't been following the unofficial build for it so I don't know.

At this time it might be better to fork those files for our device. I really don't expect much in the way of changes to them but you never know. If I have time I'll try to keep digging for it but as a possibly temporary solution, it does work.

FWIW the files I changed (but again probably doesn't matter for some since they're not all for the apq8084):

hardware/qcom/audio-caf/msm8960/hal/audio_hw.c

hardware/qcom/audio-caf/msm8960/legacy/alsa_sound/AudioHardwareALSA.cpp

hardware/qcom/audio-caf/apq8084/hal/voice.c (this is probably the only one that matters)

hardware/qcom/audio-caf/apq8084/hal/voice_extn/compress_voip.c (and maybe this one too)

hardware/qcom/audio-caf/apq8084/legacy/alsa_sound/AudioHardwareALSA.cpp

---------- Post added at 06:42 PM ---------- Previous post was at 06:39 PM ----------

Also RE to your updates as I was typing, yes I looked at those files. Eventually led me to this file. I also determined that thhe STREAM_VOICE_CALL only allows you to route the audio, but doesn't quite control it. It's a high level hook basically.

http://www.stealthcopter.com/blog/2...ingtone-etc-should-be-controlled-by-your-app/

In fact, here are all the references to that function

michael@michael-ubuntu:~/android/system$ egrep -r "adev_set_voice_volume" . | more
./external/bluetooth/bluedroid/audio_a2dp_hw/audio_a2dp_hw.c:static int adev_set_voice_volume(struct audio_hw_device *dev, float volume)
./external/bluetooth/bluedroid/audio_a2dp_hw/audio_a2dp_hw.c: adev->device.set_voice_volume = adev_set_voice_volume;
./hardware/libhardware/modules/usbaudio/audio_hw.c:static int adev_set_voice_volume(struct audio_hw_device *dev, float volume)
./hardware/libhardware/modules/usbaudio/audio_hw.c: adev->hw_device.set_voice_volume = adev_set_voice_volume;
./hardware/libhardware/modules/audio/audio_hw.c:static int adev_set_voice_volume(struct audio_hw_device *dev, float volume)
./hardware/libhardware/modules/audio/audio_hw.c: adev->device.set_voice_volume = adev_set_voice_volume;
./hardware/libhardware/modules/audio_remote_submix/audio_hw.cpp:static int adev_set_voice_volume(struct audio_hw_device *dev, float volume)
./hardware/libhardware/modules/audio_remote_submix/audio_hw.cpp: rsxadev->device.set_voice_volume = adev_set_voice_volume;
./hardware/qcom/audio-caf/msm8960/hal/audio_hw.c~:static int adev_set_voice_volume(struct audio_hw_device *dev, float volume)
./hardware/qcom/audio-caf/msm8960/hal/audio_hw.c~: adev->device.set_voice_volume = adev_set_voice_volume;
./hardware/qcom/audio-caf/msm8960/hal/audio_hw.c:static int adev_set_voice_volume(struct audio_hw_device *dev, float volume)
./hardware/qcom/audio-caf/msm8960/hal/audio_hw.c: adev->device.set_voice_volume = adev_set_voice_volume;
./hardware/qcom/audio-caf/msm8960/legacy/alsa_sound/audio_hw_hal.cpp:static int adev_set_voice_volume(struct audio_hw_device *dev, float volume)
./hardware/qcom/audio-caf/msm8960/legacy/alsa_sound/audio_hw_hal.cpp: qadev->device.set_voice_volume = adev_set_voice_volume;
./hardware/qcom/audio-caf/apq8084/hal_mpq/audio_hw.c:static int adev_set_voice_volume(struct audio_hw_device *dev, float volume)
./hardware/qcom/audio-caf/apq8084/hal_mpq/audio_hw.c: adev->device.set_voice_volume = adev_set_voice_volume;
./hardware/qcom/audio-caf/apq8084/hal/audio_hw.c:static int adev_set_voice_volume(struct audio_hw_device *dev, float volume)
./hardware/qcom/audio-caf/apq8084/hal/audio_hw.c: adev->device.set_voice_volume = adev_set_voice_volume;
./hardware/qcom/audio-caf/apq8084/legacy/alsa_sound/audio_hw_hal.cpp:static int adev_set_voice_volume(struct audio_hw_device *dev, float volume)
./hardware/qcom/audio-caf/apq8084/legacy/alsa_sound/audio_hw_hal.cpp: qadev->device.set_voice_volume = adev_set_voice_volume;
./hardware/qcom/audio-caf/msm8974/hal_mpq/audio_hw.c:static int adev_set_voice_volume(struct audio_hw_device *dev, float volume)
./hardware/qcom/audio-caf/msm8974/hal_mpq/audio_hw.c: adev->device.set_voice_volume = adev_set_voice_volume;
./hardware/qcom/audio-caf/msm8974/hal/audio_hw.c:static int adev_set_voice_volume(struct audio_hw_device *dev, float volume)
./hardware/qcom/audio-caf/msm8974/hal/audio_hw.c: adev->device.set_voice_volume = adev_set_voice_volume;
./hardware/qcom/audio-caf/msm8974/legacy/alsa_sound/audio_hw_hal.cpp:static int adev_set_voice_volume(struct audio_hw_device *dev, float volume)
./hardware/qcom/audio-caf/msm8974/legacy/alsa_sound/audio_hw_hal.cpp: qadev->device.set_voice_volume = adev_set_voice_volume;
./hardware/qcom/audio/default/hal/audio_hw.c:static int adev_set_voice_volume(struct audio_hw_device *dev, float volume)
./hardware/qcom/audio/default/hal/audio_hw.c: adev->device.set_voice_volume = adev_set_voice_volume;
./hardware/qcom/audio/default/legacy/alsa_sound/audio_hw_hal.cpp:static int adev_set_voice_volume(struct audio_hw_device *dev, float volume)
./hardware/qcom/audio/default/legacy/alsa_sound/audio_hw_hal.cpp: qadev->device.set_voice_volume = adev_set_voice_volume;
./hardware/libhardware_legacy/audio/audio_hw_hal.cpp:static int adev_set_voice_volume(struct audio_hw_device *dev, float volume)
./hardware/libhardware_legacy/audio/audio_hw_hal.cpp: ladev->device.set_voice_volume = adev_set_voice_volume;
./device/generic/goldfish/audio/audio_hw.c:static int adev_set_voice_volume(struct audio_hw_device *dev, float volume)
./device/generic/goldfish/audio/audio_hw.c: // adev_set_voice_volume is a no op (simulates phones)
./device/generic/goldfish/audio/audio_hw.c: adev->device.set_voice_volume = adev_set_voice_volume;