Home | History | Annotate | Download | only in audio

Lines Matching refs:adev

440 static int open_hdmi_driver(struct audio_device *adev)
442 if (adev->hdmi_drv_fd < 0) {
443 adev->hdmi_drv_fd = open("/dev/video16", O_RDWR);
444 if (adev->hdmi_drv_fd < 0)
445 ALOGE("%s cannot open video16 (%d)", __func__, adev->hdmi_drv_fd);
447 return adev->hdmi_drv_fd;
451 static int enable_hdmi_audio(struct audio_device *adev, int enable)
456 ret = open_hdmi_driver(adev);
462 ret = ioctl(adev->hdmi_drv_fd, VIDIOC_S_CTRL, &ctrl);
474 static int read_hdmi_channel_masks(struct audio_device *adev, struct stream_out *out) {
478 ret = open_hdmi_driver(adev);
483 ret = ioctl(adev->hdmi_drv_fd, VIDIOC_G_CTRL, &ctrl);
502 static int set_hdmi_channels(struct audio_device *adev, int channels) {
506 ret = open_hdmi_driver(adev);
512 ret = ioctl(adev->hdmi_drv_fd, VIDIOC_S_CTRL, &ctrl);
520 static void select_devices(struct audio_device *adev)
522 int output_device_id = get_output_device_id(adev->out_device);
523 int input_source_id = get_input_source_id(adev->input_source);
529 audio_route_reset(adev->ar);
531 enable_hdmi_audio(adev, adev->out_device & AUDIO_DEVICE_OUT_AUX_DIGITAL);
534 if ((new_route_id == adev->cur_route_id) && (adev->es305_mode == adev->es305_new_mode))
536 adev->cur_route_id = new_route_id;
537 adev->es305_mode = adev->es305_new_mode;
546 route_configs[input_source_id][output_device_id]->es305_preset[adev->es305_mode];
548 switch (adev->in_device) {
562 route_configs[input_source_id][output_device_id]->es305_preset[adev->es305_mode];
565 if ((adev->input_source == AUDIO_SOURCE_VOICE_RECOGNITION) &&
566 (adev->in_channel_mask == AUDIO_CHANNEL_IN_FRONT_BACK))
576 adev->out_device, adev->input_source,
581 audio_route_apply_path(adev->ar, output_route);
583 audio_route_apply_path(adev->ar, input_route);
586 (new_es305_preset != adev->es305_preset)) {
588 adev->es305_preset, new_es305_preset);
590 adev->es305_preset = new_es305_preset;
594 audio_route_update_mixer(adev->ar);
600 struct audio_device *adev = (struct audio_device *)user_data;
608 pthread_mutex_lock(&adev->lock);
609 if (es305_mode != adev->es305_mode) {
610 adev->es305_new_mode = es305_mode;
611 select_devices(adev);
614 pthread_mutex_unlock(&adev->lock);
618 bool get_bubblelevel(struct audio_device *adev)
620 if (!adev->bubble_level) {
621 adev->bubble_level = bubble_level_create();
622 if (adev->bubble_level)
623 adev->bubble_level->set_callback(adev->bubble_level, bubblelevel_callback, adev);
625 return (adev->bubble_level != NULL);
629 static void force_non_hdmi_out_standby(struct audio_device *adev)
635 out = adev->outputs[type];
644 static void start_bt_sco(struct audio_device *adev) {
645 if (adev->sco_on_count++ > 0)
648 adev->pcm_voice_out = pcm_open(PCM_CARD, PCM_DEVICE_VOICE, PCM_OUT | PCM_MONOTONIC,
650 if (adev->pcm_voice_out && !pcm_is_ready(adev->pcm_voice_out)) {
651 ALOGE("pcm_open(VOICE_OUT) failed: %s", pcm_get_error(adev->pcm_voice_out));
654 adev->pcm_sco_out = pcm_open(PCM_CARD, PCM_DEVICE_SCO, PCM_OUT | PCM_MONOTONIC,
656 if (adev->pcm_sco_out && !pcm_is_ready(adev->pcm_sco_out)) {
657 ALOGE("pcm_open(SCO_OUT) failed: %s", pcm_get_error(adev->pcm_sco_out));
660 adev->pcm_voice_in = pcm_open(PCM_CARD, PCM_DEVICE_VOICE, PCM_IN,
662 if (adev->pcm_voice_in && !pcm_is_ready(adev->pcm_voice_in)) {
663 ALOGE("pcm_open(VOICE_IN) failed: %s", pcm_get_error(adev->pcm_voice_in));
666 adev->pcm_sco_in = pcm_open(PCM_CARD, PCM_DEVICE_SCO, PCM_IN,
668 if (adev->pcm_sco_in && !pcm_is_ready(adev->pcm_sco_in)) {
669 ALOGE("pcm_open(SCO_IN) failed: %s", pcm_get_error(adev->pcm_sco_in));
673 pcm_start(adev->pcm_voice_out);
674 pcm_start(adev->pcm_sco_out);
675 pcm_start(adev->pcm_voice_in);
676 pcm_start(adev->pcm_sco_in);
681 pcm_close(adev->pcm_sco_in);
683 pcm_close(adev->pcm_voice_in);
685 pcm_close(adev->pcm_sco_out);
687 pcm_close(adev->pcm_voice_out);
691 static void stop_bt_sco(struct audio_device *adev) {
692 if (adev->sco_on_count == 0 || --adev->sco_on_count > 0)
695 pcm_stop(adev->pcm_voice_out);
696 pcm_stop(adev->pcm_sco_out);
697 pcm_stop(adev->pcm_voice_in);
698 pcm_stop(adev->pcm_sco_in);
700 pcm_close(adev->pcm_voice_out);
701 pcm_close(adev->pcm_sco_out);
702 pcm_close(adev->pcm_voice_in);
703 pcm_close(adev->pcm_sco_in);
709 struct audio_device *adev = out->dev;
712 if (out == adev->outputs[OUTPUT_HDMI]) {
713 force_non_hdmi_out_standby(adev);
714 } else if (adev->outputs[OUTPUT_HDMI] && !adev->outputs[OUTPUT_HDMI]->standby) {
751 adev->out_device |= out->device;
752 select_devices(adev);
755 start_bt_sco(adev);
758 set_hdmi_channels(adev, out->config.channels);
761 if (get_bubblelevel(adev))
762 adev->bubble_level->poll_once(adev->bubble_level);
770 struct audio_device *adev = in->dev;
785 adev->input_source = in->input_source;
786 adev->in_device = in->device;
787 adev->in_channel_mask = in->channel_mask;
790 select_devices(adev);
793 start_bt_sco(adev);
800 if (get_bubblelevel(adev)) {
801 adev->bubble_level->set_poll_interval(adev->bubble_level, BL_POLL_INTERVAL_MIN_SEC);
802 adev->bubble_level->start_polling(adev->bubble_level);
995 struct audio_device *adev = out->dev;
1007 if (out == adev->outputs[OUTPUT_HDMI]) {
1010 force_non_hdmi_out_standby(adev);
1014 stop_bt_sco(adev);
1017 adev->out_device = output_devices(out);
1020 if (adev->out_device)
1021 select_devices(adev);
1026 static void lock_all_outputs(struct audio_device *adev)
1029 pthread_mutex_lock(&adev->lock_outputs);
1031 struct stream_out *out = adev->outputs[type];
1035 pthread_mutex_lock(&adev->lock);
1039 static void unlock_all_outputs(struct audio_device *adev, struct stream_out *except)
1042 pthread_mutex_unlock(&adev->lock);
1045 struct stream_out *out = adev->outputs[--type];
1049 pthread_mutex_unlock(&adev->lock_outputs);
1055 struct audio_device *adev = out->dev;
1057 lock_all_outputs(adev);
1061 unlock_all_outputs(adev, NULL);
1074 struct audio_device *adev = out->dev;
1084 lock_all_outputs(adev);
1091 (adev->out_device & AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET)) ||
1092 (adev->out_device & AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET)) {
1102 if (!out->standby && (out == adev->outputs[OUTPUT_HDMI] ||
1103 !adev->outputs[OUTPUT_HDMI] ||
1104 adev->outputs[OUTPUT_HDMI]->standby)) {
1105 adev->out_device = output_devices(out) | val;
1106 select_devices(adev);
1111 unlock_all_outputs(adev, NULL);
1169 struct audio_device *adev = out->dev;
1173 * pthread_mutex_lock(&adev->lock_outputs);
1175 bool is_HDMI = out == adev->outputs[OUTPUT_HDMI];
1176 /* pthread_mutex_unlock(&adev->lock_outputs); */
1190 struct audio_device *adev = out->dev;
1202 lock_all_outputs(adev);
1204 unlock_all_outputs(adev, out);
1209 unlock_all_outputs(adev, NULL);
1213 unlock_all_outputs(adev, out);
1347 struct audio_device *adev = in->dev;
1354 stop_bt_sco(adev);
1359 select_devices(adev);
1362 if (get_bubblelevel(adev))
1363 in->dev->bubble_level->stop_polling(adev->bubble_level);
1392 struct audio_device *adev = in->dev;
1402 pthread_mutex_lock(&adev->lock);
1432 adev->input_source = in->input_source;
1433 adev->in_device = in->device;
1434 select_devices(adev);
1437 pthread_mutex_unlock(&adev->lock);
1487 struct audio_device *adev = in->dev;
1498 pthread_mutex_lock(&adev->lock);
1500 pthread_mutex_unlock(&adev->lock);
1521 if (ret == 0 && adev->mic_mute)
1584 struct audio_device *adev = (struct audio_device *)dev;
1601 pthread_mutex_lock(&adev->lock);
1602 ret = read_hdmi_channel_masks(adev, out);
1603 pthread_mutex_unlock(&adev->lock);
1645 out->dev = adev;
1655 pthread_mutex_lock(&adev->lock_outputs);
1656 if (adev->outputs[type]) {
1657 pthread_mutex_unlock(&adev->lock_outputs);
1661 adev->outputs[type] = out;
1662 pthread_mutex_unlock(&adev->lock_outputs);
1677 struct audio_device *adev;
1681 adev = (struct audio_device *)dev;
1682 pthread_mutex_lock(&adev->lock_outputs);
1684 if (adev->outputs[type] == (struct stream_out *) stream) {
1685 adev->outputs[type] = NULL;
1689 pthread_mutex_unlock(&adev->lock_outputs);
1701 struct audio_device *adev = (struct audio_device *)dev;
1739 struct audio_device *adev = (struct audio_device *)dev;
1741 adev->mic_mute = state;
1748 struct audio_device *adev = (struct audio_device *)dev;
1750 *state = adev->mic_mute;
1773 struct audio_device *adev = (struct audio_device *)dev;
1806 in->dev = adev;
1874 struct audio_device *adev = (struct audio_device *)device;
1876 audio_route_free(adev->ar);
1880 if (adev->hdmi_drv_fd >= 0)
1881 close(adev->hdmi_drv_fd);
1883 if (adev->bubble_level)
1884 bubble_level_release(adev->bubble_level);
1893 struct audio_device *adev;
1899 adev = calloc(1, sizeof(struct audio_device));
1900 if (!adev)
1903 adev->hw_device.common.tag = HARDWARE_DEVICE_TAG;
1904 adev->hw_device.common.version = AUDIO_DEVICE_API_VERSION_2_0;
1905 adev->hw_device.common.module = (struct hw_module_t *) module;
1906 adev->hw_device.common.close = adev_close;
1908 adev->hw_device.init_check = adev_init_check;
1909 adev->hw_device.set_voice_volume = adev_set_voice_volume;
1910 adev->hw_device.set_master_volume = adev_set_master_volume;
1911 adev->hw_device.set_mode = adev_set_mode;
1912 adev->hw_device.set_mic_mute = adev_set_mic_mute;
1913 adev->hw_device.get_mic_mute = adev_get_mic_mute;
1914 adev->hw_device.set_parameters = adev_set_parameters;
1915 adev->hw_device.get_parameters = adev_get_parameters;
1916 adev->hw_device.get_input_buffer_size = adev_get_input_buffer_size;
1917 adev->hw_device.open_output_stream = adev_open_output_stream;
1918 adev->hw_device.close_output_stream = adev_close_output_stream;
1919 adev->hw_device.open_input_stream = adev_open_input_stream;
1920 adev->hw_device.close_input_stream = adev_close_input_stream;
1921 adev->hw_device.dump = adev_dump;
1923 adev->ar = audio_route_init(MIXER_CARD, NULL);
1924 adev->input_source = AUDIO_SOURCE_DEFAULT;
1925 /* adev->cur_route_id initial value is 0 and such that first device
1928 adev->es305_preset = ES305_PRESET_INIT;
1929 adev->es305_new_mode = ES305_MODE_LEVEL;
1930 adev->es305_mode = ES305_MODE_LEVEL;
1931 adev->hdmi_drv_fd = -1;
1933 *device = &adev->hw_device.common;