#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
/* 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;
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;
}
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;
}
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
}
}