Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 93f080ec authored by Vikram Panduranga's avatar Vikram Panduranga Committed by Shiv Maliyappanahalli
Browse files

audio: Add dedicated streams for VoIP call

Add dedicated streams for VoIP usecase. This includes adding
a new direct output and input types that use audio playback
and record paths respectively. It falls back to compress VoIP
wherever this feature is not applicable.

Change-Id: I9b7654819b9d8deb00f8888fbfc31f0fbbae5266
parent 798b00ab
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -25,6 +25,13 @@ outputs {
    bit_width 16
    app_type 69943
  }
  voip_rx {
    flags AUDIO_OUTPUT_FLAG_VOIP_RX|AUDIO_OUTPUT_FLAG_DIRECT
    formats AUDIO_FORMAT_PCM_16_BIT
    sampling_rates 8000|16000|32000|48000
    bit_width 16
    app_type 69946
  }
  deep_buffer {
    flags AUDIO_OUTPUT_FLAG_DEEP_BUFFER
    formats AUDIO_FORMAT_PCM_16_BIT
+2 −0
Original line number Diff line number Diff line
@@ -65,6 +65,8 @@
        <usecase name="USECASE_AUDIO_RECORD_LOW_LATENCY" type="in" id="17" />
        <usecase name="USECASE_AUDIO_PLAYBACK_ULL" type="out" id="17" />
        <usecase name="USECASE_AUDIO_PLAYBACK_EXT_DISP_SILENCE" type="out" id="27" />
        <usecase name="USECASE_AUDIO_PLAYBACK_VOIP" type="out" id="16" />
        <usecase name="USECASE_AUDIO_RECORD_VOIP" type="in" id="16" />
    </pcm_ids>
    <config_params>
        <param key="spkr_1_tz_name" value="wsatz.13"/>
+60 −0
Original line number Diff line number Diff line
@@ -72,6 +72,9 @@
    <ctl name="MultiMedia8 Mixer SLIM_0_TX" value="0" />
    <ctl name="MultiMedia8 Mixer SLIM_4_TX" value="0" />
    <ctl name="MultiMedia8 Mixer SLIM_7_TX" value="0" />
    <ctl name="MultiMedia10 Mixer SLIM_0_TX" value="0" />
    <ctl name="MultiMedia10 Mixer SLIM_7_TX" value="0" />
    <ctl name="MultiMedia10 Mixer AFE_PCM_TX" value="0" />
    <ctl name="DISPLAY_PORT Mixer MultiMedia1" value="0" />
    <ctl name="DISPLAY_PORT Mixer MultiMedia2" value="0" />
    <ctl name="DISPLAY_PORT Mixer MultiMedia3" value="0" />
@@ -153,6 +156,7 @@
    <ctl name="MultiMedia1 Mixer USB_AUDIO_TX" value="0" />
    <ctl name="MultiMedia5 Mixer USB_AUDIO_TX" value="0" />
    <ctl name="MultiMedia8 Mixer USB_AUDIO_TX" value="0" />
    <ctl name="MultiMedia10 Mixer USB_AUDIO_TX" value="0" />
    <ctl name="MultiMedia6 Mixer SLIM_0_TX" value="0" />
    <ctl name="SLIM_2_RX Format" value="UNPACKED" />
    <ctl name="SLIM_2_RX SampleRate" value="KHZ_48" />
@@ -1517,6 +1521,62 @@
        <ctl name="VoiceMMode2_Tx Mixer USB_AUDIO_TX_MMode2" value="1" />
    </path>

    <!-- VoIP Rx settings -->
    <path name="audio-playback-voip">
        <ctl name="SLIMBUS_0_RX Audio Mixer MultiMedia10" value="1" />
    </path>

    <path name="audio-playback-voip headphones">
        <ctl name="SLIMBUS_6_RX Audio Mixer MultiMedia10" value="1" />
    </path>

    <path name="audio-playback-voip bt-sco">
        <ctl name="SLIMBUS_7_RX Mixer MultiMedia10" value="1" />
    </path>

    <path name="audio-playback-voip bt-sco-wb">
        <ctl name="BT SampleRate" value="KHZ_16" />
        <path name="audio-playback-voip bt-sco" />
    </path>

    <path name="audio-playback-voip afe-proxy">
        <ctl name="AFE_PCM_RX Mixer MultiMedia10" value="1" />
    </path>

    <path name="audio-playback-voip usb-headphones">
        <ctl name="USB_AUDIO_RX Mixer MultiMedia10" value="1" />
    </path>

    <path name="audio-playback-voip usb-headset">
        <ctl name="USB_AUDIO_RX Mixer MultiMedia10" value="1" />
    </path>

    <path name="audio-playback-voip display-port">
        <ctl name="DISPLAY_PORT Mixer MultiMedia10" value="1" />
    </path>

    <path name="audio-playback-voip speaker-and-display-port">
        <path name="audio-playback-voip display-port" />
        <path name="audio-playback-voip" />
    </path>

    <!-- VoIP Tx settings -->
    <path name="audio-record-voip">
        <ctl name="MultiMedia10 Mixer SLIM_0_TX" value="1" />
    </path>

    <path name="audio-record-voip usb-headset-mic">
        <ctl name="MultiMedia10 Mixer USB_AUDIO_TX" value="1" />
    </path>

    <path name="audio-record-voip bt-sco">
        <ctl name="MultiMedia10 Mixer SLIM_7_TX" value="1" />
    </path>

    <path name="audio-record-voip bt-sco-wb">
        <ctl name="BT SampleRate" value="KHZ_16" />
        <path name="audio-record-voip bt-sco" />
    </path>
   <path name="spkr-rx-calib">
        <ctl name="SLIMBUS_DL_HL Switch"  value="1" />
    </path>
+1 −1
Original line number Diff line number Diff line
@@ -6,7 +6,7 @@ BOARD_USES_ALSA_AUDIO := true
ifneq ($(TARGET_USES_AOSP_FOR_AUDIO), true)
USE_CUSTOM_AUDIO_POLICY := 1
AUDIO_FEATURE_ENABLED_COMPRESS_CAPTURE := false
AUDIO_FEATURE_ENABLED_COMPRESS_VOIP := true
AUDIO_FEATURE_ENABLED_COMPRESS_VOIP := false
AUDIO_FEATURE_ENABLED_EXTN_FORMATS := true
AUDIO_FEATURE_ENABLED_EXTN_FLAC_DECODER := true
AUDIO_FEATURE_ENABLED_EXTN_RESAMPLER := true
+8 −1
Original line number Diff line number Diff line
@@ -81,6 +81,8 @@
#define SND_AUDIOCODEC_TRUEHD 0x00000023
#endif

#define APP_TYPE_VOIP_AUDIO 0x1113A

#ifdef AUDIO_EXTERNAL_HDMI_ENABLED
#define PROFESSIONAL        (1<<0)      /* 0 = consumer, 1 = professional */
#define NON_LPCM            (1<<1)      /* 0 = audio, 1 = non-audio */
@@ -119,6 +121,7 @@ const struct string_to_enum s_flag_name_to_enum_table[] = {
#endif
    STRING_TO_ENUM(AUDIO_OUTPUT_FLAG_COMPRESS_PASSTHROUGH),
    STRING_TO_ENUM(AUDIO_OUTPUT_FLAG_TIMESTAMP),
    STRING_TO_ENUM(AUDIO_OUTPUT_FLAG_VOIP_RX),
    STRING_TO_ENUM(AUDIO_INPUT_FLAG_NONE),
    STRING_TO_ENUM(AUDIO_INPUT_FLAG_FAST),
    STRING_TO_ENUM(AUDIO_INPUT_FLAG_HW_HOTWORD),
@@ -786,6 +789,9 @@ void audio_extn_utils_update_stream_app_type_cfg_for_usecase(
        ALOGV("%s Selected apptype: %d", __func__, usecase->stream.out->app_type_cfg.app_type);
        break;
    case PCM_CAPTURE:
        if (usecase->id == USECASE_AUDIO_RECORD_VOIP)
            usecase->stream.in->app_type_cfg.app_type = APP_TYPE_VOIP_AUDIO;
        else
            audio_extn_utils_update_stream_input_app_type_cfg(adev->platform,
                                                &adev->streams_input_cfg_list,
                                                usecase->stream.in->device,
@@ -830,6 +836,7 @@ static int send_app_type_cfg_for_device(struct audio_device *adev,
        (usecase->id != USECASE_AUDIO_PLAYBACK_LOW_LATENCY) &&
        (usecase->id != USECASE_AUDIO_PLAYBACK_MULTI_CH) &&
        (usecase->id != USECASE_AUDIO_PLAYBACK_ULL) &&
        (usecase->id != USECASE_AUDIO_PLAYBACK_VOIP) &&
        (!is_offload_usecase(usecase->id)) &&
        (usecase->type != PCM_CAPTURE)) {
        ALOGV("%s: a rx/tx/loopback path where app type cfg is not required %d", __func__, usecase->id);
Loading