diff options
author | Chih-Wei Huang <cwhuang@linux.org.tw> | 2016-09-13 17:59:59 +0800 |
---|---|---|
committer | Chih-Wei Huang <cwhuang@linux.org.tw> | 2016-09-13 23:17:02 +0800 |
commit | 4f5006abcb66e923cabc4644b613db8d2c93a2bb (patch) | |
tree | 4359754482fa420209cfcccf49d20f1b073914fc | |
parent | a5bc8ec212b9f366d7f9da972a81caf153e8ff89 (diff) | |
download | platform_hardware_libaudio-4f5006abcb66e923cabc4644b613db8d2c93a2bb.tar.gz platform_hardware_libaudio-4f5006abcb66e923cabc4644b613db8d2c93a2bb.tar.bz2 platform_hardware_libaudio-4f5006abcb66e923cabc4644b613db8d2c93a2bb.zip |
audio_hw: select HDMI audio if notified by the frameworkandroid-x86-6.0-r3android-x86-6.0-r2android-x86-6.0-r1
-rw-r--r-- | audio_hw.c | 9 | ||||
-rw-r--r-- | audio_policy.conf | 2 |
2 files changed, 6 insertions, 5 deletions
@@ -45,6 +45,7 @@ #define PCM_CARD 0 #define PCM_DEVICE 0 #define PCM_DEVICE_SCO 2 +#define PCM_DEVICE_HDMI 3 #define OUT_PERIOD_SIZE 512 #define OUT_SHORT_PERIOD_COUNT 2 @@ -177,7 +178,7 @@ static void release_buffer(struct resampler_buffer_provider *buffer_provider, /* Helper functions */ -struct snd_pcm_info *select_card(unsigned int device __unused, unsigned int flags) +struct snd_pcm_info *select_card(unsigned int device, unsigned int flags) { static struct snd_pcm_info *cached_info[4]; struct snd_pcm_info *info; @@ -221,12 +222,12 @@ struct snd_pcm_info *select_card(unsigned int device __unused, unsigned int flag free(namelist); } } - if (property_get_bool("hal.audio.primary.hdmi", false) && cached_info[d + 2]) { + if (property_get_bool("hal.audio.primary.hdmi", device == PCM_DEVICE_HDMI) && cached_info[d + 2]) { info = cached_info[d + 2]; } else { info = cached_info[d] ? cached_info[d] : cached_info[d + 2]; } - ALOGI_IF(info, "choose pcmC%dD%d%c", info->card, info->device, d ? 'c' : 'p'); + ALOGI_IF(info, "choose pcmC%dD%d%c for %d", info->card, info->device, d ? 'c' : 'p', device); return info; } @@ -341,7 +342,7 @@ static int start_output_stream(struct stream_out *out) device = PCM_DEVICE_SCO; out->pcm_config = &pcm_config_sco; } else { - device = PCM_DEVICE; + device = (adev->out_device & AUDIO_DEVICE_OUT_AUX_DIGITAL) ? PCM_DEVICE_HDMI : PCM_DEVICE; out->pcm_config = &pcm_config_out; out->buffer_type = OUT_BUFFER_TYPE_UNKNOWN; } diff --git a/audio_policy.conf b/audio_policy.conf index 340b30f..39ce05a 100644 --- a/audio_policy.conf +++ b/audio_policy.conf @@ -26,7 +26,7 @@ audio_hw_modules { sampling_rates 48000 channel_masks AUDIO_CHANNEL_OUT_STEREO formats AUDIO_FORMAT_PCM_16_BIT - devices AUDIO_DEVICE_OUT_SPEAKER|AUDIO_DEVICE_OUT_WIRED_HEADSET|AUDIO_DEVICE_OUT_WIRED_HEADPHONE|AUDIO_DEVICE_OUT_ALL_SCO + devices AUDIO_DEVICE_OUT_SPEAKER|AUDIO_DEVICE_OUT_WIRED_HEADSET|AUDIO_DEVICE_OUT_WIRED_HEADPHONE|AUDIO_DEVICE_OUT_ALL_SCO|AUDIO_DEVICE_OUT_AUX_DIGITAL flags AUDIO_OUTPUT_FLAG_PRIMARY } } |