summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChih-Wei Huang <cwhuang@linux.org.tw>2016-09-13 17:59:59 +0800
committerChih-Wei Huang <cwhuang@linux.org.tw>2016-09-13 23:17:02 +0800
commit4f5006abcb66e923cabc4644b613db8d2c93a2bb (patch)
tree4359754482fa420209cfcccf49d20f1b073914fc
parenta5bc8ec212b9f366d7f9da972a81caf153e8ff89 (diff)
downloadplatform_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.c9
-rw-r--r--audio_policy.conf2
2 files changed, 6 insertions, 5 deletions
diff --git a/audio_hw.c b/audio_hw.c
index 7ca3e6c..7c2406f 100644
--- a/audio_hw.c
+++ b/audio_hw.c
@@ -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
}
}