From: Lennart Poettering Date: Fri, 20 Feb 2009 02:21:46 +0000 (+0100) Subject: Merge branch 'master' of ssh://rootserver/home/lennart/git/public/pulseaudio X-Git-Url: https://code.delx.au/pulseaudio/commitdiff_plain/7bc1847596bdedea6a06c8c0a019da773476a965?hp=-c Merge branch 'master' of ssh://rootserver/home/lennart/git/public/pulseaudio --- 7bc1847596bdedea6a06c8c0a019da773476a965 diff --combined src/modules/alsa/alsa-util.c index 8607e469,a0907c4d..d00a80f1 --- a/src/modules/alsa/alsa-util.c +++ b/src/modules/alsa/alsa-util.c @@@ -1,7 -1,7 +1,7 @@@ /*** This file is part of PulseAudio. - Copyright 2004-2006 Lennart Poettering + Copyright 2004-2009 Lennart Poettering Copyright 2006 Pierre Ossman for Cendio AB PulseAudio is free software; you can redistribute it and/or modify @@@ -32,7 -32,6 +32,7 @@@ #include #include #include +#include #include #include @@@ -114,7 -113,7 +114,7 @@@ static void io_cb(pa_mainloop_api*a, pa static void defer_cb(pa_mainloop_api*a, pa_defer_event* e, void *userdata) { struct pa_alsa_fdlist *fdl = userdata; unsigned num_fds, i; - int err; + int err, n; struct pollfd *temp; pa_assert(a); @@@ -123,7 -122,11 +123,11 @@@ a->defer_enable(fdl->defer, 0); - num_fds = (unsigned) snd_mixer_poll_descriptors_count(fdl->mixer); + if ((n = snd_mixer_poll_descriptors_count(fdl->mixer)) < 0) { + pa_log("snd_mixer_poll_descriptors_count() failed: %s", snd_strerror(n)); + return; + } + num_fds = (unsigned) n; if (num_fds != fdl->num_fds) { if (fdl->fds) @@@ -465,7 -468,6 +469,7 @@@ finish int pa_alsa_set_sw_params(snd_pcm_t *pcm, snd_pcm_uframes_t avail_min) { snd_pcm_sw_params_t *swparams; + snd_pcm_uframes_t boundary; int err; pa_assert(pcm); @@@ -477,22 -479,7 +481,22 @@@ return err; } - if ((err = snd_pcm_sw_params_set_stop_threshold(pcm, swparams, (snd_pcm_uframes_t) -1)) < 0) { + if ((err = snd_pcm_sw_params_set_period_event(pcm, swparams, 0)) < 0) { + pa_log_warn("Unable to disable period event: %s\n", snd_strerror(err)); + return err; + } + + if ((err = snd_pcm_sw_params_set_tstamp_mode(pcm, swparams, SND_PCM_TSTAMP_ENABLE)) < 0) { + pa_log_warn("Unable to enable time stamping: %s\n", snd_strerror(err)); + return err; + } + + if ((err = snd_pcm_sw_params_get_boundary(swparams, &boundary)) < 0) { + pa_log_warn("Unable to get boundary: %s\n", snd_strerror(err)); + return err; + } + + if ((err = snd_pcm_sw_params_set_stop_threshold(pcm, swparams, boundary)) < 0) { pa_log_warn("Unable to set stop threshold: %s\n", snd_strerror(err)); return err; } @@@ -518,39 -505,39 +522,39 @@@ static const struct pa_alsa_profile_info device_table[] = { {{ 1, { PA_CHANNEL_POSITION_MONO }}, "hw", - "Analog Mono", + N_("Analog Mono"), "analog-mono", 1 }, {{ 2, { PA_CHANNEL_POSITION_LEFT, PA_CHANNEL_POSITION_RIGHT }}, "front", - "Analog Stereo", + N_("Analog Stereo"), "analog-stereo", 10 }, {{ 2, { PA_CHANNEL_POSITION_LEFT, PA_CHANNEL_POSITION_RIGHT }}, "iec958", - "IEC958 Digital Stereo", + N_("Digital Stereo (IEC958)"), "iec958-stereo", 5 }, {{ 2, { PA_CHANNEL_POSITION_LEFT, PA_CHANNEL_POSITION_RIGHT }}, "hdmi", - "HDMI Digital Stereo", + N_("Digital Stereo (HDMI)"), "hdmi-stereo", 4 }, {{ 4, { PA_CHANNEL_POSITION_FRONT_LEFT, PA_CHANNEL_POSITION_FRONT_RIGHT, PA_CHANNEL_POSITION_REAR_LEFT, PA_CHANNEL_POSITION_REAR_RIGHT }}, "surround40", - "Analog Surround 4.0", + N_("Analog Surround 4.0"), "analog-surround-40", 7 }, {{ 4, { PA_CHANNEL_POSITION_FRONT_LEFT, PA_CHANNEL_POSITION_FRONT_RIGHT, PA_CHANNEL_POSITION_REAR_LEFT, PA_CHANNEL_POSITION_REAR_RIGHT }}, "a52", - "IEC958/AC3 Digital Surround 4.0", + N_("Digital Surround 4.0 (IEC958/AC3)"), "iec958-ac3-surround-40", 2 }, @@@ -558,7 -545,7 +562,7 @@@ PA_CHANNEL_POSITION_REAR_LEFT, PA_CHANNEL_POSITION_REAR_RIGHT, PA_CHANNEL_POSITION_LFE }}, "surround41", - "Analog Surround 4.1", + N_("Analog Surround 4.1"), "analog-surround-41", 7 }, @@@ -566,7 -553,7 +570,7 @@@ PA_CHANNEL_POSITION_REAR_LEFT, PA_CHANNEL_POSITION_REAR_RIGHT, PA_CHANNEL_POSITION_CENTER }}, "surround50", - "Analog Surround 5.0", + N_("Analog Surround 5.0"), "analog-surround-50", 7 }, @@@ -574,7 -561,7 +578,7 @@@ PA_CHANNEL_POSITION_REAR_LEFT, PA_CHANNEL_POSITION_REAR_RIGHT, PA_CHANNEL_POSITION_CENTER, PA_CHANNEL_POSITION_LFE }}, "surround51", - "Analog Surround 5.1", + N_("Analog Surround 5.1"), "analog-surround-51", 8 }, @@@ -582,7 -569,7 +586,7 @@@ PA_CHANNEL_POSITION_FRONT_RIGHT, PA_CHANNEL_POSITION_REAR_LEFT, PA_CHANNEL_POSITION_REAR_RIGHT, PA_CHANNEL_POSITION_LFE}}, "a52", - "IEC958/AC3 Digital Surround 5.1", + N_("Digital Surround 5.1 (IEC958/AC3)"), "iec958-ac3-surround-51", 3 }, @@@ -591,7 -578,7 +595,7 @@@ PA_CHANNEL_POSITION_CENTER, PA_CHANNEL_POSITION_LFE, PA_CHANNEL_POSITION_SIDE_LEFT, PA_CHANNEL_POSITION_SIDE_RIGHT }}, "surround71", - "Analog Surround 7.1", + N_("Analog Surround 7.1"), "analog-surround-71", 7 }, @@@ -1405,7 -1392,7 +1409,7 @@@ void pa_alsa_init_proplist_pcm_info(pa_ snd_pcm_class_t class; snd_pcm_subclass_t subclass; - const char *n, *id, *sdn, *cn; + const char *n, *id, *sdn, *cn = NULL; int card; pa_assert(p); @@@ -1550,7 -1537,7 +1554,7 @@@ pa_rtpoll_item* pa_alsa_build_pollfd(sn return item; } -snd_pcm_sframes_t pa_alsa_safe_avail_update(snd_pcm_t *pcm, size_t hwbuf_size, const pa_sample_spec *ss) { +snd_pcm_sframes_t pa_alsa_safe_avail(snd_pcm_t *pcm, size_t hwbuf_size, const pa_sample_spec *ss) { snd_pcm_sframes_t n; size_t k; @@@ -1561,7 -1548,7 +1565,7 @@@ /* Some ALSA driver expose weird bugs, let's inform the user about * what is going on */ - n = snd_pcm_avail_update(pcm); + n = snd_pcm_avail(pcm); if (n <= 0) return n; @@@ -1570,8 -1557,8 +1574,8 @@@ if (k >= hwbuf_size * 3 || k >= pa_bytes_per_second(ss)*10) - pa_log("snd_pcm_avail_update() returned a value that is exceptionally large: %lu bytes (%lu ms). " - "Most likely this is an ALSA driver bug. Please report this issue to the ALSA developers.", + pa_log(_("snd_pcm_avail_update() returned a value that is exceptionally large: %lu bytes (%lu ms). " + "Most likely this is an ALSA driver bug. Please report this issue to the ALSA developers."), (unsigned long) k, (unsigned long) (pa_bytes_to_usec(k, ss) / PA_USEC_PER_MSEC)); return n; @@@ -1602,8 -1589,8 +1606,8 @@@ int pa_alsa_safe_mmap_begin(snd_pcm_t * k >= hwbuf_size * 3 || k >= pa_bytes_per_second(ss)*10) - pa_log("snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes (%lu ms). " - "Most likely this is an ALSA driver bug. Please report this issue to the ALSA developers.", + pa_log(_("snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes (%lu ms). " + "Most likely this is an ALSA driver bug. Please report this issue to the ALSA developers."), (unsigned long) k, (unsigned long) (pa_bytes_to_usec(k, ss) / PA_USEC_PER_MSEC)); return r; diff --combined src/modules/bluetooth/module-bluetooth-device.c index 27f9e7c2,b8f67299..ac8344f0 --- a/src/modules/bluetooth/module-bluetooth-device.c +++ b/src/modules/bluetooth/module-bluetooth-device.c @@@ -33,8 -33,6 +33,8 @@@ #include #include #include +#include + #include #include #include @@@ -906,6 -904,11 +906,11 @@@ static int a2dp_process_render(struct u (void*) p, u->write_memchunk.length, d, left, &written); + + PA_ONCE_BEGIN { + pa_log_debug("Using SBC encoder implementation: %s", pa_strnull(sbc_get_implementation_info(&a2dp->sbc))); + } PA_ONCE_END; + pa_memblock_release(u->write_memchunk.memblock); if (encoded <= 0) { @@@ -1351,9 -1354,6 +1356,6 @@@ static int add_sink(struct userdata *u u->sink->userdata = u; u->sink->parent.process_msg = sink_process_msg; - - pa_sink_set_asyncmsgq(u->sink, u->thread_mq.inq); - pa_sink_set_rtpoll(u->sink, u->rtpoll); } /* u->sink->get_volume = sink_get_volume_cb; */ @@@ -1398,9 -1398,6 +1400,6 @@@ static int add_source(struct userdata * u->source->userdata = u; u->source->parent.process_msg = source_process_msg; - - pa_source_set_asyncmsgq(u->source, u->thread_mq.inq); - pa_source_set_rtpoll(u->source, u->rtpoll); } /* u->source->get_volume = source_get_volume_cb; */ @@@ -1525,9 -1522,9 +1524,9 @@@ static void stop_thread(struct userdat u->source = NULL; } - pa_thread_mq_done(&u->thread_mq); - if (u->rtpoll) { + pa_thread_mq_done(&u->thread_mq); + pa_rtpoll_free(u->rtpoll); u->rtpoll = NULL; } @@@ -1561,11 -1558,17 +1560,17 @@@ static int start_thread(struct userdat return -1; } - if (u->sink) + if (u->sink) { + pa_sink_set_asyncmsgq(u->sink, u->thread_mq.inq); + pa_sink_set_rtpoll(u->sink, u->rtpoll); pa_sink_put(u->sink); + } - if (u->source) + if (u->source) { + pa_source_set_asyncmsgq(u->source, u->thread_mq.inq); + pa_source_set_rtpoll(u->source, u->rtpoll); pa_source_put(u->source); + } return 0; } @@@ -1657,7 -1660,7 +1662,7 @@@ static int add_card(struct userdata *u data.profiles = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func); if (u->device->audio_sink_info_valid > 0) { - p = pa_card_profile_new("a2dp", "A2DP Advanced Audio Distribution Profile", sizeof(enum profile)); + p = pa_card_profile_new("a2dp", _("High Fidelity Playback (A2DP)"), sizeof(enum profile)); p->priority = 10; p->n_sinks = 1; p->n_sources = 0; @@@ -1671,7 -1674,7 +1676,7 @@@ } if (u->device->headset_info_valid > 0) { - p = pa_card_profile_new("hsp", "HSP/HFP Headset/Hands-Free Profile", sizeof(enum profile)); + p = pa_card_profile_new("hsp", _("Telephony Duplex (HSP/HFP)"), sizeof(enum profile)); p->priority = 20; p->n_sinks = 1; p->n_sources = 1; @@@ -1686,7 -1689,7 +1691,7 @@@ pa_assert(!pa_hashmap_isempty(data.profiles)); - p = pa_card_profile_new("off", "Off", sizeof(enum profile)); + p = pa_card_profile_new("off", _("Off"), sizeof(enum profile)); d = PA_CARD_PROFILE_DATA(p); *d = PROFILE_OFF; pa_hashmap_put(data.profiles, p->name, p);