Re: [pulseaudio-discuss] [PATCH] tests: make 'check' optional
Thanks a lot for the follow-ups. 2012/10/4 Tanu Kaskinen ta...@iki.fi: On Mon, 2012-08-20 at 16:24 +0800, rong deng wrote: ping. Sorry to keep you waiting. I've pushed the patch now (I needed it in my own packaging work). Thanks for the contribution! -- Tanu ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] PulseAudio on OSX
Hi, 2012/9/13 Jared Sohn jared.s...@gmail.com: I want to use PulseAudio to separately control the volume of processes on OSX. Is this possible, and if so what is the best way for doing this? I have found some instructions at http://www.freedesktop.org/wiki/Software/PulseAudio/Ports/OSX and also have found an OSX-specific port at https://github.com/zonque/PulseAudioOSX along with an accompanying PDF and presentation describing the work. My impression is that if I follow the instructions at the first link, it will allow me to play sounds created on other computers, but because I don't think it includes a HAL plug-in and other OSX-specific code, I don't think it will let me control the volumes for OSX processes. Is this an accurate state of affairs? If so, is development continuing for OSX integration? (the github project hasn't been updated in 11 months), how does integrating in the OSX-specific port fit into the roadmap?, and is there further information about how well the existing PulseAudioOSX works? Last time I tried it, it can't even run through the configure part, it needs a separate patch (I've submitted it to this mailing list before, but it hasn't been accepted.) Thanks, Jared ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
[pulseaudio-discuss] thank you all for a nice summer of code
Hi PulseAudio community, It's a great honour for me to be selected as this year's google summer of code on PulseAudio project and now GSoC is nearing the end. I would say it's a nice experience for me. I'm involved in the mailing list discussion, get used to talk on IRC room, I've never done this before :) Everyone here is quite nice, whenever I got a question, I can ask and also everyone is sharing his/her tips, e.g. I once asked how to use the git related tools and many people respond. I'll still be around, looking for things that i'm capable of to fix or to improve. Thank you guys! I had a great summer, and hope you had too. :) Thanks! ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [PATCH] resampler: Fix crash if 'auto' resampler chooses ffmpeg with variable rate
2012/8/24 Tanu Kaskinen ta...@iki.fi: On Wed, 2012-08-22 at 19:31 +0530, Arun Raghavan wrote: On Wed, 2012-08-22 at 15:42 +0200, Frédéric Dalleau wrote: [...] diff --git a/src/pulsecore/resampler.c b/src/pulsecore/resampler.c index 17f1783..8199bc4 100644 --- a/src/pulsecore/resampler.c +++ b/src/pulsecore/resampler.c @@ -237,7 +237,10 @@ pa_resampler* pa_resampler_new( #ifdef HAVE_SPEEX method = PA_RESAMPLER_SPEEX_FLOAT_BASE + 3; #else -method = PA_RESAMPLER_FFMPEG; +if (flags PA_RESAMPLER_VARIABLE_RATE) +method = PA_RESAMPLER_TRIVIAL; +else +method = PA_RESAMPLER_FFMPEG; #endif } The trivial resampler is not a good fallback. I'd rather make speex a mandatory dep again. Whether or not the trivial resampler is a good fallback depends on the use case. If someone thinks that it's a good idea to compile pulseaudio without speex support, then I would expect him to be fine with the trivial resampler (otherwise he wouldn't have disabled speex support). Besides, I once profiled and it showed the trivial resampler is much faster, esp on resource limited embedded boards. Hmm, the output sound is not so much bad... ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [PATCH] resampler: Fix crash if 'auto' resampler chooses ffmpeg with variable rate
2012/8/25 rong deng dzro...@gmail.com: Besides, I once profiled and it showed the trivial resampler is much faster, esp on resource limited embedded boards. Hmm, the output sound is not so much bad... to be correct, i shouldn't have said faster, actually the cpu usage is lower. ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [PATCH 0/2] change pa_bool_t to bool
2012/8/23 Thomas Martitz ku...@rockbox.org: Am 22.08.2012 06:56, schrieb Tanu Kaskinen: David said: I don't think there is any reason to not do s/pa_bool_t/bool/g. Probably the reason for this might be historical, as some compilers may have supported some C99 features but not all of them (Microsoft compilers come to mind). I don't know if MSVC supports stdbool.h or not, but AFAIK you can compile PulseAudio for Windows also with GCC, so you don't have to put up with MSVC's silly limitations. Is it even possible to use MSVC (or even Visual Studio)? I thought gcc (mingw32/mingw-w64) was mandatory. If gcc (mingw series) was mandatory, then I think this patch is OK. ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] running in high priority
2012/8/22 Tanu Kaskinen ta...@iki.fi: On Thu, 2012-08-16 at 04:55 +0200, Sladjan Ri wrote: Hi, is it beneficial to run in high priority at all? I tested and found stuttering with the src-high-quality resampling, with nice level -11 and CPU went up to 70% on one core (gnome-system-monitor). Without high-priority, it hadn't stuttered and CPU only went to about 40%. I think we had some problems with the pulseaudio nice level in Maemo too. I don't fully (or at all...) understand what causes the problems, but it indeed looks like having a low nice level can actually make performance worse. Is it possible that it's the issue of the kernel that malfunctioning on scheduling? If your system works better without the high-priority option, then feel free not to use it. -- Tanu ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [PATCH 0/2] change pa_bool_t to bool
2012/8/22 Tanu Kaskinen ta...@iki.fi: On Wed, 2012-08-22 at 08:01 +0800, rong deng wrote: 2012/8/22 Tanu Kaskinen ta...@iki.fi: Hi Deng, On Sat, 2012-07-07 at 22:49 +0800, Deng Zhengrong wrote: As discussed, this might not handle the microsoft compilers well. But let me post this series of patches and think out a better way to handle it. Or... we don't change it at all. The patches didn't reach the list. (I thought they were stuck in the moderation queue, but that's not the case.) Hi Tanu, Thanks for reminding, I can resend it later, but how's others take on this change? IIRC, someone is objecting this idea... David said: I don't think there is any reason to not do s/pa_bool_t/bool/g. Probably the reason for this might be historical, as some compilers may have supported some C99 features but not all of them (Microsoft compilers come to mind). I don't know if MSVC supports stdbool.h or not, but AFAIK you can compile PulseAudio for Windows also with GCC, so you don't have to put up with MSVC's silly limitations. Thanks for your support. If that's the case, we should push the patch forward. :) Hmm, I've seen on the mailing list that someone is sending patches on Windows platform, we might contact them to try this patch first to see if it can pass the compilation. Sorry that I don't have a developer environment ready Windows to use. ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [PATCH 0/2] change pa_bool_t to bool
2012/8/22 Tanu Kaskinen ta...@iki.fi: Hi Deng, On Sat, 2012-07-07 at 22:49 +0800, Deng Zhengrong wrote: As discussed, this might not handle the microsoft compilers well. But let me post this series of patches and think out a better way to handle it. Or... we don't change it at all. The patches didn't reach the list. (I thought they were stuck in the moderation queue, but that's not the case.) Hi Tanu, Thanks for reminding, I can resend it later, but how's others take on this change? IIRC, someone is objecting this idea... ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [PATCH] card-restore: Add the ability to save and restore the maximum volume
2012/8/13 Tanu Kaskinen ta...@iki.fi: On Fri, 2012-08-03 at 15:12 +0800, Deng Zhengrong wrote: module-card-restore now saves the maximum volume. This change includes a entry version bump. --- src/modules/module-card-restore.c | 26 +++--- 1 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/modules/module-card-restore.c b/src/modules/module-card-restore.c index 7d101c5..689381d 100644 --- a/src/modules/module-card-restore.c +++ b/src/modules/module-card-restore.c @@ -68,11 +68,12 @@ struct userdata { pa_database *database; }; -#define ENTRY_VERSION 2 +#define ENTRY_VERSION 3 struct port_info { char *name; int64_t offset; +pa_volume_t max_volume; }; struct entry { @@ -145,6 +146,7 @@ static pa_bool_t entry_write(struct userdata *u, const char *name, const struct PA_HASHMAP_FOREACH(p_info, e-ports, state) { pa_tagstruct_puts(t, p_info-name); pa_tagstruct_puts64(t, p_info-offset); +pa_tagstruct_put_volume(t, p_info-max_volume); } key.data = (char *) name; @@ -249,6 +251,18 @@ static struct entry* entry_read(struct userdata *u, const char *name) { p_info-name = pa_xstrdup(port_name); p_info-offset = port_offset; +if (e-version = 3) { +pa_volume_t max_volume = PA_VOLUME_INVALID; + +if (pa_tagstruct_get_volume(t, max_volume) 0) { +pa_xfree(p_info-name); +pa_xfree(p_info); +goto fail; +} + +p_info-max_volume = max_volume; +} p_info-max_volume needs to be initialized even when e-version is less than 3. Also, the local max_volume variable is redundant: you can give p_info-max_volume directly to pa_tagstruct_get_volume(). + pa_assert_se(pa_hashmap_put(e-ports, p_info-name, p_info) = 0); } } @@ -313,6 +327,7 @@ static void subscribe_callback(pa_core *c, pa_subscription_event_type_t t, uint3 p_info = pa_xnew(struct port_info, 1); p_info-name = pa_xstrdup(p-name); p_info-offset = p-latency_offset; +p_info-max_volume = p-maximum_volume; pa_assert_se(pa_hashmap_put(entry-ports, p_info-name, p_info) = 0); } @@ -336,7 +351,10 @@ static void subscribe_callback(pa_core *c, pa_subscription_event_type_t t, uint3 dirty = true; break; } - +if (p_info-max_volume != old_p_info-max_volume) { +dirty = true; +break; +} } else { dirty = true; break; Later in the function there's this: if (card-save_profile) pa_log_info(Storing profile and port latency offsets for card %s., card-name); else pa_log_info(Storing port latency offsets for card %s., card-name); That code is now out of date. Hi Tanu, Thanks for your review, I've updated and sent out another patch. However, I've checked that the above code is still in pulseaudio's master repository. Why it's out dated? So I don't add the message max volume into the messages. @@ -391,8 +409,10 @@ static pa_hook_result_t card_new_hook_callback(pa_core *c, pa_card_new_data *new pa_log_info(Restoring port latency offsets for card %s., new_data-name); There should be a mention of restoring the maximum volume too. PA_HASHMAP_FOREACH(p_info, e-ports, state) -if ((p = pa_hashmap_get(new_data-ports, p_info-name))) +if ((p = pa_hashmap_get(new_data-ports, p_info-name))) { p-latency_offset = p_info-offset; +p-maximum_volume = p_info-max_volume; +} entry_free(e); -- Tanu ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [PATCH] tests: make 'check' optional
2012/8/13 Deng Zhengrong dzro...@gmail.com: --- configure.ac| 17 +++-- src/Makefile.am | 14 ++ 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index ffb2a35..43ccf44 100644 --- a/configure.ac +++ b/configure.ac @@ -579,12 +579,23 @@ fi AC_CHECK_HEADERS_ONCE([valgrind/memcheck.h]) - check test framework + check unit tests + +AC_ARG_ENABLE([tests], +AS_HELP_STRING([--disable-tests],[Disable unit tests])) + +AS_IF([test x$enable_tests != xno], +[PKG_CHECK_MODULES(LIBCHECK, [ check ], HAVE_LIBCHECK=1, HAVE_LIBCHECK=0)], +HAVE_LIBCHECK=0) -PKG_CHECK_MODULES(LIBCHECK, [ check ]) AC_SUBST(LIBCHECK_CFLAGS) AC_SUBST(LIBCHECK_LIBS) +AS_IF([test x$enable_tests = xyes test x$HAVE_LIBCHECK = x0], +[AC_MSG_ERROR([*** check library not found])]) + +AM_CONDITIONAL([HAVE_TESTS], [test x$HAVE_LIBCHECK = x1]) Note the above code that when HAVE_LIBCHECK is therer, HAVE_TESTS is 1, I don't want to use HAVE_TESTS in PKG_CHECK_MODULES() because I try to differentiate. and LIBCHECK_LIBS and LIBCHECK_CFLAGS are more clear than TESTS_LIBS and TESTS_CFLAGS. + json parsing PKG_CHECK_MODULES(LIBJSON, [ json = 0.9 ]) @@ -1393,6 +1404,7 @@ AS_IF([test x$HAVE_SIMPLEDB = x1], ENABLE_SIMPLEDB=yes, ENABLE_SIMPLEDB=no) AS_IF([test x$HAVE_ESOUND = x1], ENABLE_ESOUND=yes, ENABLE_ESOUND=no) AS_IF([test x$HAVE_ESOUND = x1 -a x$USE_PER_USER_ESOUND_SOCKET = x1], ENABLE_PER_USER_ESOUND_SOCKET=yes, ENABLE_PER_USER_ESOUND_SOCKET=no) AS_IF([test x$HAVE_GCOV = x1], ENABLE_GCOV=yes, ENABLE_GCOV=no) +AS_IF([test x$HAVE_LIBCHECK = x1], ENABLE_TESTS=yes, ENABLE_TESTS=no) AS_IF([test x$enable_legacy_database_entry_format != xno], ENABLE_LEGACY_DATABASE_ENTRY_FORMAT=yes, ENABLE_LEGACY_DATABASE_ENTRY_FORMAT=no) echo @@ -1440,6 +1452,7 @@ echo Enable speex (resampler, AEC): ${ENABLE_SPEEX} Enable WebRTC echo canceller: ${ENABLE_WEBRTC} Enable gcov coverage: ${ENABLE_GCOV} +Enable unit tests: ${ENABLE_TESTS} Database tdb: ${ENABLE_TDB} gdbm:${ENABLE_GDBM} diff --git a/src/Makefile.am b/src/Makefile.am index 2f20df2..f7f8333 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -297,6 +297,7 @@ TESTS_norun += \ alsa-time-test endif +if HAVE_TESTS TESTS_ENVIRONMENT=MAKE_CHECK=1 TESTS = $(TESTS_default) @@ -309,6 +310,19 @@ endif check-daemon: $(TESTS_daemon) PATH=$(builddir):${PATH} $(top_srcdir)/src/tests/test-daemon.sh $(TESTS_daemon) +else +TESTS_ENVIRONMENT= +TESTS = +noinst_PROGRAMS = +check_PROGRAMS = + +check-daemon: + @echo Tests are disabled! + @echo Pass option \--enable-tests\ to configure and install \check\ library properly! + false + +endif + mainloop_test_SOURCES = tests/mainloop-test.c mainloop_test_CFLAGS = $(AM_CFLAGS) $(LIBCHECK_CFLAGS) mainloop_test_LDADD = $(AM_LDADD) libpulse.la libpulsecommon-@PA_MAJORMINOR@.la -- 1.7.7.6 ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
[pulseaudio-discuss] introduce the new feature of ring buffer log and ask for comments
Hi list, What it is == This is a new feature which plugs into the current logging system to enhance the debugging experiences for users and developers. It would log all level's messages in a separate place, therefore it have the following benefits: - The most important of this feature is that we don't need to restart PulseAudio with a verbose output to view what's wrong under the hood when there's something wrong. It's not only useful for developers but also very useful for end users to report issues. In this case, we don't need to ask the end users to kill PulseAudio and restart PulseAudio which is too advanced for them. Instead, we can just ask them to send the ring buffer log to us, which is only one command away. Easy for them to follow. - It doesn't clobber your normal log output. The normal log output is where you specified it as log target. However this log's info is totally in another place. - It collects all level's messages. It makes the process of peeking into the internals in a quick and easy way. We don't need to change the log level dynamically to more verbose one and then change it back. - The buffer runs in a circular buffer, which means that it wouldn't take too much spaces from your whole system. And if you runs PulseAudio in a really memory tight system, we provide an option to disable this feature totally. How to use it = Unless you compile PulseAudio from source with `--disable-ring-buffer` option, this feature should be enabled by default. We don't need anything to enable, it just runs under the hood. The only interface right now to use it is to call the following commands: pactl get-log Just as anything `pactl` sub-commands, we can even specify another machine. So we can get the log information from a remote server. However, it's subject to `pactl`'s normal authentication and configuration. The implementation details == Note that the best solution is to have a lock-free implementation, but at the current stage, we still have a little bit locking, it's still for experimental purposes, we'd like to resolve this issue. Due to the fact that PulseAudio takes the thread model. We have each smaller buffer for each thread. Therefore, for each logging, each thread runs at its own, there's no locking at all from 'thread1' to 'buffer1' as illustrated in the following chart. +-+ +-+ +-+ | thread1 | | thread2 | ... | thread3 | +-+ +-+ +-+ | || v vv +-+ +-+ +-+ | buffer1 | | buffer2 | ... | buffer3 | +-+ +-+ +-+ | || `---+---' | v ++ | all output | ++ When a user wants to introspect what's going on under the neath, and invokes the `get-log` command, PulseAudio would reassemble the log messages from each thread buffer into a large one and would return it back to users. There is a small compensation for locking here, but as the freqency of `get-log` command is rather low, the cost for locking is at its minimal. Ask for comments We design this feature to try to be useful for users and developers. We'd like to hear from you how do you think. Please don't hesitate to give your valuable feedback! Thanks! Deng Zhengrong ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [PATCH] tests: make 'check' optional
2012/8/9, David Henningsson david.hennings...@canonical.com: Seems to do what it should. Sorry if I was a little harsh on you yesterday, it's just that bringing in new dependencies is nothing to take lightly. It brings work upon others, e g packagers. Most dependencies also means that size increases, which means that on an ever-overflowing Live-CD we have to throw something else out. (Check being the exception I assume, as it is just a build-time and not a run-time dependency.) So, Thanks for this patch, and Acked-by: David Henningsson david.hennings...@canonical.com Thanks for your quick review. This is what this mailing list is aimed to do. We argue, we learn, we improve. :) deng ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [PATCH] build-sys: Link utf8-test to libpulsecommon.
2012/8/8, Chan-yeol Park chanyeol.p...@gmail.com: Hi Tanu, On 08/06/2012 09:07 PM, Tanu Kaskinen wrote: Fixes this: /usr/bin/ld: utf8_test-utf8-test.o: undefined reference to symbol 'pa_log_set_level' /usr/bin/ld: note: 'pa_log_set_level' is defined in DSO /home/takaskin/dev/pulseaudio/src/.libs/libpulsecommon-2.98.so so try adding it to the linker command line /home/takaskin/dev/pulseaudio/src/.libs/libpulsecommon-2.98.so: could not read symbols: Invalid operation --- src/Makefile.am |2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Makefile.am b/src/Makefile.am index 7f947bd..faebe2a 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -321,7 +321,7 @@ thread_mainloop_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) utf8_test_SOURCES = tests/utf8-test.c utf8_test_CFLAGS = $(AM_CFLAGS) $(LIBCHECK_CFLAGS) -utf8_test_LDADD = $(AM_LDADD) libpulse.la +utf8_test_LDADD = $(AM_LDADD) libpulse.la libpulsecommon-@PA_MAJORMINOR@.la utf8_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) $(LIBCHECK_LIBS) format_test_SOURCES = tests/format-test.c Before LIBCHECK_[CFLAGS,LIBS] are introduced, it was built fine to me. I am using ubuntu 12.04, gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3 I'm the one who added the libcheck, but from here, I've no errors compiling this test case... If you have any other problem regarding this, feel free to ask me. :) ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [PATCH v2 1/6] build-sys: add `check` test framework
2012/8/8, David Henningsson david.hennings...@canonical.com: On 07/17/2012 08:45 AM, Deng Zhengrong wrote: + check test framework + +PKG_CHECK_MODULES(LIBCHECK, [ check ]) +AC_SUBST(LIBCHECK_CFLAGS) +AC_SUBST(LIBCHECK_LIBS) + Is it possible to make this build dependency optional? If so, please do, because 1) if you just want to compile PulseAudio and not the tests, you should be able to, and 2) I have to go through some administrative work if I have to bring in yet another build dependency to PulseAudio. :-/ Hi David, Thanks for the review, I have a little different opinion: 1. when we're in the process of development, we should always run the tests all the time to track any possible regressions. It's not a good idea to bypass the tests, because that's the value of all these tests, otherwise we could just delete them all. :) 2. it's sad to bring in yet another build dependency, but you know life is not perfect... We've already added e.g. json lib before. Besides, this check framework is already widely used in other programs, e.g. gstreamer. and I've checked with several major linux distribution that this can be easily installed. mostly install check or check-devel or something similar. One command and it's all set. :) deng ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [PATCH] build-sys: Link utf8-test to libpulsecommon.
2012/8/8, Chan-yeol Park chanyeol.p...@gmail.com: Hi On 08/08/2012 09:44 PM, rong deng wrote: 2012/8/8, Chan-yeol Park chanyeol.p...@gmail.com: Hi Tanu, On 08/06/2012 09:07 PM, Tanu Kaskinen wrote: Fixes this: /usr/bin/ld: utf8_test-utf8-test.o: undefined reference to symbol 'pa_log_set_level' /usr/bin/ld: note: 'pa_log_set_level' is defined in DSO /home/takaskin/dev/pulseaudio/src/.libs/libpulsecommon-2.98.so so try adding it to the linker command line /home/takaskin/dev/pulseaudio/src/.libs/libpulsecommon-2.98.so: could not read symbols: Invalid operation --- src/Makefile.am |2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Makefile.am b/src/Makefile.am index 7f947bd..faebe2a 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -321,7 +321,7 @@ thread_mainloop_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) utf8_test_SOURCES = tests/utf8-test.c utf8_test_CFLAGS = $(AM_CFLAGS) $(LIBCHECK_CFLAGS) -utf8_test_LDADD = $(AM_LDADD) libpulse.la +utf8_test_LDADD = $(AM_LDADD) libpulse.la libpulsecommon-@PA_MAJORMINOR@.la utf8_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) $(LIBCHECK_LIBS) format_test_SOURCES = tests/format-test.c Before LIBCHECK_[CFLAGS,LIBS] are introduced, it was built fine to me. I am using ubuntu 12.04, gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3 I'm the one who added the libcheck, but from here, I've no errors compiling this test case... If you have any other problem regarding this, feel free to ask me. :) Yes I think so. This could be gcc or another environment issue. Could you introduce your environment? I'm using Fedora Core 16, nothing special, the normal gcc bundled with it... For shell, I'm using zsh, but I don't it would cause this problem. ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [PATCH v2 1/6] build-sys: add `check` test framework
2012/8/9, Tanu Kaskinen ta...@iki.fi: On Wed, 2012-08-08 at 22:16 +0800, rong deng wrote: 2012/8/8, David Henningsson david.hennings...@canonical.com: But what about a user of e g Linux From Scratch or other minimalist distros, who just wants to set up and build PulseAudio as quick as possible? Why should (s)he be required to also bring in the check package just for building it? Other packages would already require the check package. From the webpage of check framework: http://check.sourceforge.net/ there's a section called Projects Using Check, there are several common projects using it. e.g. XCB and gstreamer. So if the user wants to install X environment he/she would already install XCB and the check dependency is there. Note that check is only an optional dependency in gstreamer (I didn't check whether this is also the case with XCB, but I'd be surprised if it wasn't): http://cgit.freedesktop.org/gstreamer/gstreamer/tree/configure.ac#n557 Hi Tanu, Thanks for your reminder, OK. Now I think it's a valid point. So I've sent out a patch to make check optional. But by default it's enabled, I think running tests is a good practice that should be encouraged. From my last time trying LFS, it was years ago, it runs tests for each package to make sure the installation from LFS isn't misbehaved. But I haven't checked the current status for LFS lately. If you have time, or David has the time, please help to review that patch. I've done some simple configurations it works for me. Thanks! ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [PATCH] card-restore: Add the ability to save and restore the maximum volume
2012/8/3 poljar (Damir Jelić) poljari...@gmail.com: On Fri, Aug 03, 2012 at 08:25:18PM +0800, rong deng wrote: Hi Poljar, Sorry for top posting. This patch is based on your github's commit. Of course, it doesn't work yet because not everything is weaved together... However I'd like to give others a chance to see what i'm doing and whether i'm on the right track. Hi. I've changed the variable from maximum_volume to max_volume (for consistency sake). I've update it accordingly here: https://github.com/dzrongg/pulseaudio-1/tree/volume I've gave the patch a glimpse and for now it looks fine to me. Thanks for your quick review! ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [PATCH] card-restore: Add the ability to save and restore the maximum volume
Hi Poljar, Sorry for top posting. This patch is based on your github's commit. Of course, it doesn't work yet because not everything is weaved together... However I'd like to give others a chance to see what i'm doing and whether i'm on the right track. 2012/8/3 Deng Zhengrong dzro...@gmail.com: module-card-restore now saves the maximum volume. This change includes a entry version bump. --- src/modules/module-card-restore.c | 26 +++--- 1 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/modules/module-card-restore.c b/src/modules/module-card-restore.c index 7d101c5..689381d 100644 --- a/src/modules/module-card-restore.c +++ b/src/modules/module-card-restore.c @@ -68,11 +68,12 @@ struct userdata { pa_database *database; }; -#define ENTRY_VERSION 2 +#define ENTRY_VERSION 3 struct port_info { char *name; int64_t offset; +pa_volume_t max_volume; }; struct entry { @@ -145,6 +146,7 @@ static pa_bool_t entry_write(struct userdata *u, const char *name, const struct PA_HASHMAP_FOREACH(p_info, e-ports, state) { pa_tagstruct_puts(t, p_info-name); pa_tagstruct_puts64(t, p_info-offset); +pa_tagstruct_put_volume(t, p_info-max_volume); } key.data = (char *) name; @@ -249,6 +251,18 @@ static struct entry* entry_read(struct userdata *u, const char *name) { p_info-name = pa_xstrdup(port_name); p_info-offset = port_offset; +if (e-version = 3) { +pa_volume_t max_volume = PA_VOLUME_INVALID; + +if (pa_tagstruct_get_volume(t, max_volume) 0) { +pa_xfree(p_info-name); +pa_xfree(p_info); +goto fail; +} + +p_info-max_volume = max_volume; +} + pa_assert_se(pa_hashmap_put(e-ports, p_info-name, p_info) = 0); } } @@ -313,6 +327,7 @@ static void subscribe_callback(pa_core *c, pa_subscription_event_type_t t, uint3 p_info = pa_xnew(struct port_info, 1); p_info-name = pa_xstrdup(p-name); p_info-offset = p-latency_offset; +p_info-max_volume = p-maximum_volume; pa_assert_se(pa_hashmap_put(entry-ports, p_info-name, p_info) = 0); } @@ -336,7 +351,10 @@ static void subscribe_callback(pa_core *c, pa_subscription_event_type_t t, uint3 dirty = true; break; } - +if (p_info-max_volume != old_p_info-max_volume) { +dirty = true; +break; +} } else { dirty = true; break; @@ -391,8 +409,10 @@ static pa_hook_result_t card_new_hook_callback(pa_core *c, pa_card_new_data *new pa_log_info(Restoring port latency offsets for card %s., new_data-name); PA_HASHMAP_FOREACH(p_info, e-ports, state) -if ((p = pa_hashmap_get(new_data-ports, p_info-name))) +if ((p = pa_hashmap_get(new_data-ports, p_info-name))) { p-latency_offset = p_info-offset; +p-maximum_volume = p_info-max_volume; +} entry_free(e); -- 1.7.7.6 ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [PATCH v2] tests: enable to test standalone pulseaudio daemon
Hi Arun, 2012/7/24, Arun Raghavan arun.ragha...@collabora.co.uk: Hi Deng, On Mon, 2012-07-23 at 13:12 +0800, Deng Zhengrong wrote: With this fix, `check-daemon` doesn't need a system-wide running pulseaudio anymore. The method to use is to invoke `make check-daemon` under `src/` and it just works! :) The tests seem to be connecting to my session PulseAudio, and not the temporary one you're spawning in the script. Please take a look and see what's missing. I finally set things up and reproduced this issue. Now the problem is that the pulseaudio client would try to connect the DISPLAY's PULSE_SERVER by default at first. So even I set the PULSE_RUNTIME_PATH, it still use the first config server. Therefore it results to the original running pulseaudio daemon, now the workaround is simple I unset the DISPLAY env variable, and it works locally now. You can unset the DISPLAY and take a try again. The commit is placed at the top of the branch https://github.com/dzrongg/pulseaudio/tree/more-tests-converted Thanks! ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] I want to know about how to communication one module with another module
Hi Zhen, 2012/7/24 Zhen Fu f...@marvell.com: Hi all developer, I want to know about how to communication one module with another module. Is it use asyncmg? Thank you! I'm not the expert here, but here's my two cents. :) In theory, two modules should not communicate directly with each other. For a module, the only thing it should care about is the core, and it should communicate with the core, handling the messages from the core etc. As you might know already, pulseaudio takes the thread model, for most of the modules, they would reside in a separate thread, e.g. ALSA. Communicating directly with two methods could be a mess, and even worse, one module is totally unaware when the another module is loaded or not. So the current way, in my humble opinion, is to use the core as a bridge to direct the communication between two modules. That said, the intrinsic question is why you should do this at your first place? :) Maybe there's a chance to skip this ugliness in your design. Thanks! ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [PATCH] build: fix Mac OS X configure process
2012/7/23 Arun Raghavan arun.ragha...@collabora.co.uk: On Thu, 2012-07-19 at 16:41 +0800, Deng Zhengrong wrote: The original header file doesn't exist on Lion (10.7.4). --- configure.ac |5 - 1 files changed, 4 insertions(+), 1 deletions(-) diff --git a/configure.ac b/configure.ac index 0290fa0..e600fba 100644 --- a/configure.ac +++ b/configure.ac @@ -473,7 +473,10 @@ if test x$os_is_darwin = x1 ; then # How do I check a framework library - AC_CHECK_LIB prob. won't work??, just assign LIBS hope AC_CHECK_HEADER([/Developer/Headers/FlatCarbon/CoreServices.h], [LIBS=$LIBS -framework CoreServices], -[AC_MSG_ERROR([CoreServices.h header file not found])] + [AC_CHECK_HEADERS([/System/Library/Frameworks/CoreServices.framework/Headers/CoreServices.h], +[LIBS=$LIBS -framework CoreServices], +[AC_MSG_ERROR([CoreServices.h header file not found])] +)] ) AC_MSG_RESULT([ok]) Wil this will work fine on previous versions of OS X? Yes, it should, as in older versions, the current header file place is still in the configure file and would be checked. ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [PATCH] tests: enable to test standalone pulseaudio daemon
2012/7/23 Arun Raghavan arun.ragha...@collabora.co.uk: On Thu, 2012-07-19 at 16:50 +0800, Deng Zhengrong wrote: With this fix, `check-daemon` doesn't need a system-wide running pulseaudio anymore. The method to use is to invoke `make check-daemon` under `src/` and it just works! :) --- src/Makefile.am |4 +- src/tests/test-daemon.sh | 61 ++ 2 files changed, 63 insertions(+), 2 deletions(-) create mode 100755 src/tests/test-daemon.sh diff --git a/src/Makefile.am b/src/Makefile.am index 4f6bd4f..39e1373 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -302,11 +302,11 @@ TESTS = $(TESTS_default) if BUILD_TESTS_DEFAULT noinst_PROGRAMS = $(TESTS_default) $(TESTS_norun) $(TESTS_daemon) else -check_PROGRAMS = $(TESTS_default) $(TESTS_norun) $(TESTS_daemon) +check_PROGRAMS = $(TESTS_default) $(TESTS_norun) endif check-daemon: - $(MAKE) check TESTS=$(TESTS_daemon) + $(top_builddir)/src/tests/test-daemon.sh I'd like to pass the list of tests kept in the Makefile with the script just executing them all (maybe you could just pass them in on the command line and iterate over $@). The rationale is that the rest of the test lists are in Makefile.am, so keeping it all in the same place makes tracking things later simpler. Yes, you're right, I'll pass these tests as the parameter for the script. ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] GSOC: bluetooth latency - status report [7/?]
2012/7/21 poljar (Damir Jelić) poljari...@gmail.com: Hi mailing list. After the midterm break I've started extending pavucontrol for the GUI part of my GSOC project. A very bad implementation is on my github page. A better version is on the way and should land by the end of the week. After that I'm planing on working on the Configurable maximum volume for sinks and sources project as described on the GSoC2012 wiki page. [1] Hey, I was planning on this as well. :D deng ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [PATCH] core: add more verbose error info
2012/7/17, Arun Raghavan arun.ragha...@collabora.co.uk: On Tue, 2012-07-10 at 08:32 +0800, Deng Zhengrong wrote: I'm debugging an issue, and find that it's more useful for users to know which directory hasn't been created instead of just knowing error code. --- Pulled, with a minor whitespace addition to satisfy my OCD. BTW, could you please line-wrap your commit messages at 80 characters? Not too important, just for consistency. Ah, thanks for the tips. I have to say sorry that I just sent a series of test related patches and their commit messages are a bit larger than 80 characters... ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
[pulseaudio-discuss] GSoC weekly report logging and test framework
Hi list, This week, I've sent several small patches, during the review process, I've also learnt the way to add version number to patches. :) However, these patches are still in review, I'll ask committers to commit these patches later. For the test framework, according to Arun's suggestion, I've changed the self written test framework to 'check' framework which is used in streamer as well. To see how this test framework should be integrated, I've sent a test case of 'cpu-test' to the mailing list. The usage is quite simple. A simple call of 'fail_unless()' is everything. Today, I've also changed mix-test to leverage this new test framework, the patch is sent out yet, but you can take a peek at this place. https://github.com/dzrongg/pulseaudio/tree/test-framework-try-2 I'll do more conversion, so expect more tests are translated to use this new test framework in next weeks. :D Thanks. ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
[pulseaudio-discuss] [PATCH] bluetooth: add a parenthesis around pa_streq()
From 6df0bd0e06c6dd35b66d7ffe03001c0d9e9b8b5d Mon Sep 17 00:00:00 2001 From: Deng Zhengrong dzro...@gmail.com Date: Wed, 11 Jul 2012 15:28:34 +0800 Subject: [PATCH] bluetooth: add a parenthesis around pa_streq() I know that pa_streq() is defined with an extra parenthesis, but everytime I look at it, it makes me nervous. :D So it's better to add the parenthesis here. --- src/modules/bluetooth/module-bluetooth-policy.c |2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/src/modules/bluetooth/module-bluetooth-policy.c b/src/modules/bluetooth/module-bluetooth-policy.c index 665185d..7f19447 100644 --- a/src/modules/bluetooth/module-bluetooth-policy.c +++ b/src/modules/bluetooth/module-bluetooth-policy.c @@ -65,7 +65,7 @@ static pa_hook_result_t source_put_hook_callback(pa_core *c, pa_source *source, if (!s) return PA_HOOK_OK; -if pa_streq(s, a2dp_source) +if (pa_streq(s, a2dp_source)) role = music; else { pa_log_debug(Profile %s cannot be selected for loopback, s); -- 1.7.7.6 ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [PATCH] bluetooth: add a parenthesis around pa_streq()
Hi Frederic, I should have CC-ed you for this patch. Please review! Thanks! 2012/7/11 Deng Zhengrong dzro...@gmail.com: I know that pa_streq() is defined with an extra parenthesis, but everytime I look at it, it makes me nervous. :D So it's better to add the parenthesis here. --- src/modules/bluetooth/module-bluetooth-policy.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/bluetooth/module-bluetooth-policy.c b/src/modules/bluetooth/module-bluetooth-policy.c index 665185d..7f19447 100644 --- a/src/modules/bluetooth/module-bluetooth-policy.c +++ b/src/modules/bluetooth/module-bluetooth-policy.c @@ -65,7 +65,7 @@ static pa_hook_result_t source_put_hook_callback(pa_core *c, pa_source *source, if (!s) return PA_HOOK_OK; -if pa_streq(s, a2dp_source) +if (pa_streq(s, a2dp_source)) role = music; else { pa_log_debug(Profile %s cannot be selected for loopback, s); -- 1.7.11.1 ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [PATCH] man/pulse-cli-syntax: document option `set-log-target`
2012/7/10 David Henningsson david.hennings...@canonical.com: On 07/09/2012 07:01 PM, rong deng wrote: How to add the nicely v2 just before the email subject? :) You edit the patch file with your favorite editor right before you send it with git send-email. Oh, thanks for the tips. 2012/7/10 Deng Zhengrong dzro...@gmail.com: --- man/pulse-cli-syntax.5.xml.in | 5 + 1 file changed, 5 insertions(+) diff --git a/man/pulse-cli-syntax.5.xml.in b/man/pulse-cli-syntax.5.xml.in index 9d3f278..d7f3f11 100644 --- a/man/pulse-cli-syntax.5.xml.in +++ b/man/pulse-cli-syntax.5.xml.in @@ -258,6 +258,11 @@ USA. /option option + poptset-log-target/opt argtarget/arg/p + optdescpChange the log target(null,auto,syslog,stderr,file:PATH)./p/optdesc +/option What about the newfile: thing? The new file thing is not implemented for pacmd set-log-target yet. Because I don't see the usage for this tool to use newfile. When we want to use this pacmd, we can just set file to another new file by ourselves. If you think it's useful, I can help port that part of implementation to pacmd set-log-target as well. Just say it and I'll do the rest of the porting. ;) ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] OT: Adapting the subject tag `PATCH` in Git (was: [PATCH] man/pulse-cli-syntax: document option `set-log-target`)
2012/7/10 Paul Menzel paulepan...@users.sourceforge.net: Am Dienstag, den 10.07.2012, 22:17 +0800 schrieb rong deng: 2012/7/10 David Henningsson david.hennings...@canonical.com: On 07/09/2012 07:01 PM, rong deng wrote: How to add the nicely v2 just before the email subject? :) You edit the patch file with your favorite editor right before you send it with git send-email. Oh, thanks for the tips. `git format-patch` has the option `--subject-prefix=PATCH v2`. The option is explained in the manual: `git help format-patch`. I thought there was such an option in `git send-email`, but I haven't found it. Well, it is in `git format-patch` :D Thanks! Thanks, Paul ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [PATCH] core: add ring buffer for log
Hi Peter, 2012/7/9 Peter Meerwald pme...@pmeerw.net: Hello Deng Zhengrong, The usage model for this ring buffer is that we can peek into what's going on under the hood without restarting pulseaudio daemon, we enable this via logging all level's messages. what is the expected memory usage? 512*200 bytes + 200 timestamps? is this per thread? can this be made compile-time configurable? Thanks for your interests in this usage. Yes. It's per thread and the memory usage is quite low right now. It's a good idea to make it compile time configurable. I'll add that support. :) -deng ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [PATCH] core: add ring buffer for log
2012/7/9 Peter Meerwald pme...@pmeerw.net: The usage model for this ring buffer is that we can peek into what's going on under the hood without restarting pulseaudio daemon, we enable this via logging all level's messages. what is the expected memory usage? 512*200 bytes + 200 timestamps? is this per thread? can this be made compile-time configurable? Thanks for your interests in this usage. Yes. It's per thread and the memory usage is quite low right now. It's a good idea to make it compile time configurable. I'll add that support. :) 100KB times ?? threads... there are probably better ways to waste memory on an embedded device :) Ah, you're concerned of embedded devices. Sorry that I haven't thought about it yet. I'm developing on desktop devices. :) So making it configurable seems to be a must. hope the patch doesn't get too ugly with tons of #ifdefs My new code doesn't add any #ifdef. They're brought into this patch via the diff tool... -deng ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [PATCH] man: add man documents to set-log-target
Hi Paul, 2012/7/10 Paul Menzel paulepan...@users.sourceforge.net: Dear Rong, thank you for the patch. Am Montag, den 09.07.2012, 23:52 +0800 schrieb dzrongg: Please set up Git with your first and last name. $ git config --global user.name Rong Deng I hope I spelled that correctly. You can also some other transcription in brackets after that. Also please use the following commit summary (`git commit --amend`). man/pulse-cli-syntax: document option `set-log-target` Thanks for suggesting the title. --- man/pulse-cli-syntax.5.xml.in | 5 + 1 file changed, 5 insertions(+) diff --git a/man/pulse-cli-syntax.5.xml.in b/man/pulse-cli-syntax.5.xml.in index 9d3f278..db93b96 100644 --- a/man/pulse-cli-syntax.5.xml.in +++ b/man/pulse-cli-syntax.5.xml.in @@ -248,6 +248,11 @@ USA. section name=Log Commands option + poptset-log-target/opt argtarget/arg/p + optdescpChange the log target./p/optdesc +/option + 1. Should that be sorted alphabetically? Hmm, some of the current one are not sorted. But anyway, I'll change it between set-log-meta and set-log-time. 2. What log targets are there? Maybe add some information about how to find out. Will add it. Thanks! ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [PATCH] man/pulse-cli-syntax: document option `set-log-target`
The new version is sent. BTW: How to add the nicely v2 just before the email subject? :) 2012/7/10 Deng Zhengrong dzro...@gmail.com: --- man/pulse-cli-syntax.5.xml.in | 5 + 1 file changed, 5 insertions(+) diff --git a/man/pulse-cli-syntax.5.xml.in b/man/pulse-cli-syntax.5.xml.in index 9d3f278..d7f3f11 100644 --- a/man/pulse-cli-syntax.5.xml.in +++ b/man/pulse-cli-syntax.5.xml.in @@ -258,6 +258,11 @@ USA. /option option + poptset-log-target/opt argtarget/arg/p + optdescpChange the log target(null,auto,syslog,stderr,file:PATH)./p/optdesc +/option + +option poptset-log-time/opt argboolean/arg/p optdescpShow timestamps in log messages./p/optdesc /option -- 1.7.11.1 ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
[pulseaudio-discuss] GSoC weekly status report logging and testing facilities (Deng Zhengrong)
Hi list, This week, I've crafted the basic test framework and use it to implement a cpu test for intel x86 architecture, I've uploaded this patch to this mailing list. So hopefully I'll translate more and more test cases using this new test framework. I've also helped Tanu to change pa_bool_t to bool type. Patches are sent to the mailing list for review. But it seems that some people have some concerns about this change and thinks that it might break Microsoft compilers as its compiler doesn't support C99 features. I've also changed my original ring buffer log to log all level's data. Because the usage for this ring log is to help developers or users to know what's going on under the hood without restarting the pulseaudio daemon again. So with this change it would log all level's data, even debug's. Hopefully it would ease developers' and users' debugging a lot. In this week, I also spent 3~4 days for vacation. :) Here's my this week's status report. Thanks, any comments are welcome. -deng ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] change pa_bool_t to bool
2012/7/4 rong deng dzro...@gmail.com: Hi Tanu, 2012/7/2 Tanu Kaskinen ta...@iki.fi: On Sun, 2012-07-01 at 23:46 +0800, Deng Zhengrong wrote: According to Tanu's suggestion, we should change pa_bool_t to bool. And here are my patches. Now when you do git grep pa_bool_t, here's nothing... Please help to review. :) Thanks a lot! Assuming that you didn't do the changes by hand, could you put the command line that was used to generate the changes to the commit message? Also, could you change TRUE to true and FALSE to false at the same time? And remove the now-unused definitions from src/pulsecore/macro.h. OK. I'll change the TRUE and FALSE value accordingly. However, I'm on vacation today, I'll do this tomorrow afternoon :) Hi Tanu, During the translation, I find that there's also a similar type called dbus_bool_t, should we change it as well? -deng ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] Transitioning from pa_bool_t to C99 bool
2012/7/5 Arun Raghavan arun.ragha...@collabora.co.uk: On Thu, 2012-07-05 at 15:19 +0800, rong deng wrote: 2012/7/2 David Henningsson david.hennings...@canonical.com: I don't think there is any reason to not do s/pa_bool_t/bool/g. Probably the reason for this might be historical, as some compilers may have supported some C99 features but not all of them (Microsoft compilers come to mind). Does pulseaudio work on Windows? If it doesn't work at all, why should we bother ;) It does. :) People use it for streaming, and there's also a waveout sink/source. Great. It's good to know. ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] change pa_bool_t to bool
Hi Tanu, 2012/7/2 Tanu Kaskinen ta...@iki.fi: On Sun, 2012-07-01 at 23:46 +0800, Deng Zhengrong wrote: According to Tanu's suggestion, we should change pa_bool_t to bool. And here are my patches. Now when you do git grep pa_bool_t, here's nothing... Please help to review. :) Thanks a lot! Assuming that you didn't do the changes by hand, could you put the command line that was used to generate the changes to the commit message? Also, could you change TRUE to true and FALSE to false at the same time? And remove the now-unused definitions from src/pulsecore/macro.h. OK. I'll change the TRUE and FALSE value accordingly. However, I'm on vacation today, I'll do this tomorrow afternoon :) ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
[pulseaudio-discuss] about the size of the mail (Was Your message to pulseaudio-discuss awaits moderator approval)
Hi list, Can we make the limit a little bigger? When we do some overall refactoring, we often hit the limit of the patch size... Thanks! 2012/7/1 pulseaudio-discuss-boun...@lists.freedesktop.org: Your mail to 'pulseaudio-discuss' with the subject [PATCH 6/8] modules: change pa_bool_t to bool Is being held until the list moderator can review it for approval. The reason it is being held: Message body is too big: 139870 bytes with a limit of 100 KB Either the message will get posted to the list, or you will receive notification of the moderator's decision. If you would like to cancel this posting, please visit the following URL: http://lists.freedesktop.org/mailman/confirm/pulseaudio-discuss/0517f36be83047c3d96a81c1e124027ac91a767d ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [PATCH 1/8] utils: change pa_bool_t to bool
Hi list, According to Tanu's suggestion, I've changed pa_bool_t to bool. Now, when we do git grep pa_bool_t, here's nothing. :) Please help to review. Thanks! 2012/7/1 Deng Zhengrong dzro...@gmail.com: --- src/utils/pacat.c | 10 +- src/utils/pacmd.c | 2 +- src/utils/pactl.c | 10 +- src/utils/padsp.c | 2 +- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/utils/pacat.c b/src/utils/pacat.c index ec360f7..0f564c8 100644 --- a/src/utils/pacat.c +++ b/src/utils/pacat.c @@ -66,19 +66,19 @@ static char *device = NULL; static SNDFILE* sndfile = NULL; -static pa_bool_t verbose = FALSE; +static bool verbose = FALSE; static pa_volume_t volume = PA_VOLUME_NORM; -static pa_bool_t volume_is_set = FALSE; +static bool volume_is_set = FALSE; static pa_sample_spec sample_spec = { .format = PA_SAMPLE_S16LE, .rate = 44100, .channels = 2 }; -static pa_bool_t sample_spec_set = FALSE; +static bool sample_spec_set = FALSE; static pa_channel_map channel_map; -static pa_bool_t channel_map_set = FALSE; +static bool channel_map_set = FALSE; static sf_count_t (*readf_function)(SNDFILE *_sndfile, void *ptr, sf_count_t frames) = NULL; static sf_count_t (*writef_function)(SNDFILE *_sndfile, const void *ptr, sf_count_t frames) = NULL; @@ -88,7 +88,7 @@ static pa_stream_flags_t flags = 0; static size_t latency = 0, process_time = 0; static int32_t latency_msec = 0, process_time_msec = 0; -static pa_bool_t raw = TRUE; +static bool raw = TRUE; static int file_format = -1; static uint32_t cork_requests = 0; diff --git a/src/utils/pacmd.c b/src/utils/pacmd.c index a2492fd..421de08 100644 --- a/src/utils/pacmd.c +++ b/src/utils/pacmd.c @@ -99,7 +99,7 @@ int main(int argc, char*argv[]) { char *obuf = NULL; size_t buf_size, ibuf_size, ibuf_index, ibuf_length, obuf_size, obuf_index, obuf_length; char *cli; - pa_bool_t ibuf_eof, obuf_eof, ibuf_closed, obuf_closed; + bool ibuf_eof, obuf_eof, ibuf_closed, obuf_closed; struct pollfd pollfd[3]; struct pollfd *watch_socket, *watch_stdin, *watch_stdout; diff --git a/src/utils/pactl.c b/src/utils/pactl.c index 3a5066c..93b16ef 100644 --- a/src/utils/pactl.c +++ b/src/utils/pactl.c @@ -65,10 +65,10 @@ static uint32_t source_output_idx = PA_INVALID_INDEX, sink_idx = PA_INVALID_INDEX; -static pa_bool_t short_list_format = FALSE; +static bool short_list_format = FALSE; static uint32_t module_index; -static pa_bool_t suspend; -static pa_bool_t mute; +static bool suspend; +static bool mute; static pa_volume_t volume; static enum volume_flags { VOL_UINT = 0, @@ -88,7 +88,7 @@ static pa_channel_map channel_map; static size_t sample_length = 0; static int actions = 1; -static pa_bool_t nl = FALSE; +static bool nl = FALSE; static enum { NONE, @@ -850,7 +850,7 @@ static void volume_relative_adjust(pa_cvolume *cv) { } static void unload_module_by_name_callback(pa_context *c, const pa_module_info *i, int is_last, void *userdata) { - static pa_bool_t unloaded = FALSE; + static bool unloaded = FALSE; if (is_last 0) { pa_log(_(Failed to get module information: %s), pa_strerror(pa_context_errno(c))); diff --git a/src/utils/padsp.c b/src/utils/padsp.c index f6a3520..0be5ede 100644 --- a/src/utils/padsp.c +++ b/src/utils/padsp.c @@ -1513,7 +1513,7 @@ int open(const char *filename, int flags, ...) { return real_open(filename, flags, mode); } -static pa_bool_t is_audio_device_node(const char *path) { +static bool is_audio_device_node(const char *path) { return pa_streq(path, /dev/dsp) || pa_streq(path, /dev/adsp) || -- 1.7.7.6 ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [PATCH] add a new log target that enables to create new log file if it exists
Hi David, Could you help to review this patch? Does this patch solve your feature request about logging? If this patch is OK for you, could you please help to commit this patch for me? :D Thanks! 2012/7/1 Deng Zhengrong dzro...@gmail.com: --- src/daemon/cmdline.c | 4 ++-- src/daemon/daemon-conf.c | 33 + 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/src/daemon/cmdline.c b/src/daemon/cmdline.c index 2c4c4b5..8fffda1 100644 --- a/src/daemon/cmdline.c +++ b/src/daemon/cmdline.c @@ -141,7 +141,7 @@ void pa_cmdline_help(const char *argv0) { this time passed\n --log-level[=LEVEL] Increase or set verbosity level\n -v Increase the verbosity level\n - --log-target={auto,syslog,stderr,file:PATH}\n + --log-target={auto,syslog,stderr,file:PATH,newfile:PATH}\n Specify the log target\n --log-meta[=BOOL] Include code location in log messages\n --log-time[=BOOL] Include timestamps in log messages\n @@ -315,7 +315,7 @@ int pa_cmdline_parse(pa_daemon_conf *conf, int argc, char *const argv [], int *d case ARG_LOG_TARGET: if (pa_daemon_conf_set_log_target(conf, optarg) 0) { - pa_log(_(Invalid log target: use either 'syslog', 'stderr' or 'auto' or a valid file name 'file:path'.)); + pa_log(_(Invalid log target: use either 'syslog', 'stderr' or 'auto' or a valid file name 'file:path', 'newfile:path'.)); goto fail; } break; diff --git a/src/daemon/daemon-conf.c b/src/daemon/daemon-conf.c index dd2e7b6..74ae26d 100644 --- a/src/daemon/daemon-conf.c +++ b/src/daemon/daemon-conf.c @@ -176,6 +176,8 @@ void pa_daemon_conf_free(pa_daemon_conf *c) { pa_xfree(c); } +#define PA_LOG_MAX_SUFFIX_NUMBER 100 + int pa_daemon_conf_set_log_target(pa_daemon_conf *c, const char *string) { pa_assert(c); pa_assert(string); @@ -203,6 +205,37 @@ int pa_daemon_conf_set_log_target(pa_daemon_conf *c, const char *string) { printf(Failed to open target file %s, error : %s\n, file_path, pa_cstrerror(errno)); return -1; } + } else if (pa_startswith(string, newfile:)) { + char file_path[512]; + int log_fd; + int version = 0; + int left_size; + char *p; + + pa_strlcpy(file_path, string + 8, sizeof(file_path)); + + left_size = sizeof(file_path) - strlen(file_path); + p = file_path + strlen(file_path); + + do { + memset(p, 0, left_size); + + if (version 0) + pa_snprintf(p, left_size, .%d, version); + } while (++version = PA_LOG_MAX_SUFFIX_NUMBER + (log_fd = open(file_path, O_RDWR|O_TRUNC|O_CREAT|O_EXCL, S_IRUSR | S_IWUSR)) 0); + + if (version PA_LOG_MAX_SUFFIX_NUMBER) { + memset(p, 0, left_size); + printf(Tried to open target files '%s', '%s.1', '%s.2' ... '%s.%d', but all failed.\n, + file_path, file_path, file_path, file_path, PA_LOG_MAX_SUFFIX_NUMBER - 1); + return -1; + } else { + printf(Opened target file %s\n, file_path); + c-auto_log_target = 0; + c-log_target = PA_LOG_FD; + pa_log_set_fd(log_fd); + } } else return -1; -- 1.7.7.6 ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] Logging startup of the first instance...
2012/6/29 David Henningsson david.hennings...@canonical.com: On 06/29/2012 07:48 AM, rong deng wrote: Hi David, Sorry for the top posting, I've added the O_EXCL flag and please review again. Thanks! I meant that if opening with O_EXCL fails, you should redo the test to see if the file has now showed up, and if so, pick the next number, then try again with O_EXCL, and so on. Thanks for your suggestion, please review it again. Much cleaner, I think. :) 0001-add-a-new-log-target-that-enables-to-create-new-log-.patch Description: Binary data ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
[pulseaudio-discuss] GSoC: status report: logging and testing facilities
Hi list, This week, I've been investigating existing test frameworks such as check, cmockery, gtests etc. Some of quite powerful, but they're implemented in C++ language, some are simple enough for our projects. However, after some investigation, I decided to write our own test framework, which would fits our needs much more. I've already come up with the framework and I'm in the process of translating one old test case into my new test framework. I'll post the patch in the next two days hopefully. In the meantime, I've started looking around for HDMI displays, trying to do some other interesting stuff for pulse audio community. Some other time are spent for implementing David's feature request for logging, which is not to override the current existing log file. The approach I come up with is to add some suffix number into the user specified log file. e.g. if user specifies pa-log. Then it would try use the pa-log file first, and then pa-log.1, pa-log.2 ... until it finds a non-existent file name. I think this method is simple and useful. This patch is still in the process of review. If anyone has some ideas for it. Speak it out. :) Thanks! -deng ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
[pulseaudio-discuss] status report from Deng Zhengrong Jun 15th
Hi list, This week, I've mainly done two things: 1. integrate the coverage test tool 'gcov' into our pulseaudio compiling system and make it work. With my hack into Makefile and configure.ac, if we use './configure --enable-gcov' and then make and make install, the pulseaudio program would create additional coverage data file to be processed further. I have an idea to visualize our coverage metrics through these generated coverage data files. But according to Arun's suggestion, it can be put into low priority. 2. write a first version of ring buffer log support. Now we have a per thread log pool. So therefore different threads would not be blocked for a long time. However, as in the current (first) implementation, the log reading has to block other log writing. But remember, the log reading doesn't happen much often, so I think we can bear with it. Besides, in order to make it an advanced option to use, I've also added another log target called ring. The default log target is to send the logs to stderr, but after we call pacmd set-log-target ring we can make it log all the logs into the new ring buffer. and to read the log, we can use pactl log to get the all the logs. Nice? :) Oh, I've created a profile on github and the pulseaudio project page is here: https://github.com/dzrongg/pulseaudio Generally I create a new feature in each branch, so don't look into master branch. :) Nice weekend for all! ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] Logging startup of the first instance...
2012/6/4 David Henningsson david.hennings...@canonical.com: Sometimes I have users who complain about some problem, but after a pulseaudio -k the problem is gone. Therefore asking them to restart pulseaudio with - switch will not give any information about the error. * I could log to syslog (the default), but once I enable debug level log, the syslog daemon can start to ratelimit, especially during the startup phase of pulseaudio. * I could log to file, but then that file would quickly get overwritten, as soon as pulseaudio restarts. Is there a trick I'm missing here? Or would it be possible to add some kind of expansion to the log file name to make the files unique? Hi David, I'm doing the GSoC to enhance the logging functionality in pulseaudio, I could take a look at this issue and try to improve it a little bit. :) ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [PATCH] fix the wrong parameter sequence in pax11publish
2012/6/8 Arun Raghavan arun.ragha...@collabora.co.uk On Tue, 2012-06-05 at 20:30 +0800, rong deng wrote: Hi Arun, Could you help review this patch? Done, thanks. BTW, please avoid top-posting and HTML email (GMail allows you to compose plain-text messages as well). -- Arun OK. Thanks. I'll get used to the rules in open source community. :) ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
[pulseaudio-discuss] gsoc 2012 status report about logging and testing
Hi list, This week I've finished the implementation of log category support. The core part incorporate changes in log.c and log.h, but the most part of this patch is to add the category definition to each c file. The interface is quite simple, we just need to add one line similar to this #define PA_LOG_CATEGORY_DEFAULT module-loopback at the first line of the implementation file. During the implementation, I've also spotted a simple error which mixed the wrong parameters, and so a patch is cooked and set out for review. The next step I would do is to refine the categories' name, and start using 'gcov' tool to get the coverage of pulseaudio. How to implement the ring buffer is still undergoing. -deng ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [PATCH 1/2] add log category
diff --git a/src/daemon/caps.c b/src/daemon/caps.c index 3759388..49a0690 100644 --- a/src/daemon/caps.c +++ b/src/daemon/caps.c @@ -20,6 +20,8 @@ USA. ***/ +#define PA_LOG_CATEGORY_DEFAULT daemon + The above #define is duplicated below in various files. Will it be better to have it #define'ed in a header file and inclued that wherever required ? [deng] Yes, I'll make damon a macro in log.h and then use something similar to the below: #DEFINE PA_LOG_CATEGORY_DEFAULT PA_LOG_CATEGORY_DAEMON See previous comment, applies to above #define as well. Please check all such occurrences below. [deng] About the granularity of the category, I'm afraid I'm still in the first stage which is to make it as simple as possible. e.g. bluetooth module has different c files, and in the current implementation I make different files into different categories, but yes, we can make it one big category. We just need to reach a consensus on this one. ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [PATCH] fix the wrong parameter sequence in pax11publish
Hi Arun, Could you help review this patch? 2012/6/3 Deng Zhengrong dzro...@gmail.com --- src/utils/pax11publish.c |2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/src/utils/pax11publish.c b/src/utils/pax11publish.c index 0f9a030..16cf866 100644 --- a/src/utils/pax11publish.c +++ b/src/utils/pax11publish.c @@ -195,7 +195,7 @@ int main(int argc, char *argv[]) { pa_client_conf_free(conf); -if (pa_authkey_load_auto(cookie_file, cookie, TRUE, sizeof(cookie)) 0) { +if (pa_authkey_load_auto(cookie_file, TRUE, cookie, sizeof(cookie)) 0) { fprintf(stderr, _(Failed to load cookie data\n)); goto finish; } -- 1.7.7.6 ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
[pulseaudio-discuss] fix wrong parameter sequence
Please review. Thanks! 0001-fix-the-wrong-parameter-sequence-in-pax11publish.patch Description: Binary data ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
[pulseaudio-discuss] status report of gsoc
Hi PulseAudio community, This is Deng Zhengrong, a member of this year's GSoC. I'll send the status report every Friday, as this is my first status report, I'll write about what I've done till now. I've mainly focused on enhancement of logging facilities lately. One part is about adding a category support just as gstreamer does. I've done a first version, and the draft is sent to this mailing list. What it does is to register the category upfront and then specify the category in pa_log() related functions. However with the detailed discussion with my mentor Arun, he suggests we should do it in a dynamica way which checks whether the currect category specified exists or not, if it doesn't exist, we created it on the fly. This advice is good and it could simplify the implementation in some degree. Then the user could use 'pacmd' or 'pactl' tool to change the category's log level correspondingly. One massive part of my code is to add one line to each C file to specify what the current category this file wants to be in. Overall, this feature could ease the debugging of developers and make users focuses on what they care about. Another part of my work is to add the circular buffer to pulseaudio. A patch is already sent to this mailing list for review. But one drawback it has is that it uses a mutex lock. So the recent work is to remove the lock. Discussion with Arun on IRC (also the reply on my proposal from Colin) suggests we could leverage some work from systemd journal. Therefore, I've tried to install systemd journal on my old Fedora Core distribution, the journal is not happy though, after I intalled it and rebooted my linux machine, it hangs... So some work has been done to recover my Linux system, quite sad. However, the idea of using one log for each slot is good and I'd investigate more to see if we can borrow it into pulseaudio. Other simple contribution include a) replacing strcmp with pa_streq and b) adding the feature of dynamically changing the log target. The second one is a simple feature, but its nice to have, at least for me. Sometimes I don't like the current log target of the running pulseaudio, if we don't have this feature, we have to kill pulseaudio and restart it again with the correct log target we want. So that's all for my status report, my next report would be next Friday, stay tuned. :D PS: If someone is interested in each part and has some comments, feel free to contact me. ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [PATCH] add set-log-target command for pacmd
Hi, Can someone review this? Is it OK to be accepted? 2012/5/25 rong deng dzro...@gmail.com 2012/5/25 Dalleau, Frederic frederic.dall...@intel.com Hi Rong Deng, This helps to change log target on the fly. You don't need to copy and truncate file_path as a truncated file path is useless ! Instead you can use directly m+5. If the path is too long, open() will simply fail. Nice catch! I missed this one. new path attached. ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
[pulseaudio-discuss] [PATCH] use pa_streq instead of plain strcmp in daemon-conf.c
Please review and hopefully got accepted. :) I did a simple grep and saw there are lots of other usages of strcmp, but let's translate it bit by bit... --deng 0001-use-pa_streq-instead-of-plain-strcmp.patch Description: Binary data ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
[pulseaudio-discuss] About My Blog Space
Hi Col, According to your advice, I'm setting my blog up, to track my status and some thoughts during this GSoC project. The URL is http://zhengrong.wordpress.com I'll make everything related to PulseAudio into the category PulseAudio, so hopefully it would only output the correct RSS. There's already one post there. :D --deng ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
[pulseaudio-discuss] about log level configuration
Hi list, I'm implementing 'category' feature in pulseaudio, the 'category' feature mimics the feature in gstreamer, i.e. we can use something like 'ENV_LOG_DEBUG=loopback:5 pulseaudio' to setup the level of module loopback to 5. During my implementation, I found there's already an environment variable called 'ENV_LOG_LEVEL' used, then my question is how to setup the log level when both 'ENV_LOG_LEVEL' is set and 'ENV_LOG_DEBUG=*:4' is set? I'm afraid we can deprecate the usage of the original 'ENV_LOG_DEBUG' and advocate users to use the new one. How's the community's take on this one? Any thoughts are welcome. --deng ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
[pulseaudio-discuss] My Blog URL for GSoC 2012
Hi Colin, I've setup one blog space here: http://pulseaudio.blog.com and later I'll use this blog to publish my status report and my current work. Please help add this url into pulseaudio's planet. As long as it's added to pulseaudio's planet, the blog's content would automatically be sent to this mailing list, right? deng ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
[pulseaudio-discuss] thank you letter
Hi PulseAudio community, It's my first close contact with this community and it's quite positive, it's a great honor for me to join this year's Google Summer of Code. I'll start coding these days. To keep you informed of my status, I would write a biweekly (if it's too long a time, I can write weekly) status report to this mailing list. Thanks a lot! --deng ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
[pulseaudio-discuss] Fwd: [PATCH] proof of concept: use pactl log to get the buffer log
I clicked Reply instead of Reply to All, So I forward my reply mail to mailing list again. Sorry for the noises. -- 已转发邮件 -- 发件人: rong deng dzro...@gmail.com 日期: 2012年4月3日 上午10:41 主题: Re: [pulseaudio-discuss] [PATCH] proof of concept: use pactl log to get the buffer log 收件人: Tanu Kaskinen ta...@iki.fi Hi Tanu, Thanks for your detailed comments, my reply is inline: 在 2012年4月3日 上午1:07,Tanu Kaskinen ta...@iki.fi写道: Hi Deng[1], About the chinese name, it's OK to call me either Deng or Zhenrong. :) Generally speaking, the family name is often matched with Mr/Miss. Very nice patch, I'm impressed! If it weren't for the threading issues, it's almost merge-quality; I found only minor things to complain about. Or well, there seems to be a quite bad bug in get_log_buffer(), but that should be easy to fix. Have you tried if it works with a full buffer? One megabyte sounds like something that the tagstruct system might reject. I didn't find any code that would limit the tag size, though, except for proplists, so probably it will work just fine. (Sidenote: if there are no string size limitations in the protocol, I think that's a bug, because clients can fool the server, and vice versa, into allocating unlimited amounts of memory.) To be honest, I haven't tried a full buffer yet, I waited a few minutes and hoped there's enough stuff in the log buffer, and then I did 'pactl log' to check what's in it. I'm so thrilled when I see some correct output from this command, so I sent this patch out. :D As you say, the code isn't really safe to be used from multiple threads. It's not obvious to me how this should be solved, because logging from realtime threads should be lock-free. Needs some thinking... I'm thinking about it: how about this? 1. we add another thread called log thread, and this thread solely handles the operations of putting stuff into log buffer and getting data out of it. 2. the interface between this log thread and other thread is maintained like some message systems. Other thread simply sends the log message to log thread and go on with its own work. Do you think it makes some senses? Please read [2], it contains documentation about the coding style rules. Thanks for your references, I'll follow the coding styles in my later patches. [1] Do you prefer to be called Deng or Zhengrong (or something else)? AFAIK Chinese names have different conventions than western names, so I don't know if it's correct to just pick the first name... [2] http://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/Developer/CodingStyle -- Tanu [...] +memcpy(result, log_buffer[log_start_index], log_used_length); +result[log_used_length] = '\0'; + +return result; +} Shouldn't this copy the buffer in two parts: from log_start_index to the end of the buffer, and then from the beginning of the buffer to log_end_index? Nice catch! It should be corrected. + +static void write_to_circular_buffer(const char *p, size_t len) { +const char *base = p; + +while (len 0) { Instead of looping, wouldn't it make sense to just write the tail of the log message if it can't fully fit in the buffer? The end result would anyway be the same. You're right, we could do some optimization here to only write the last part of log message when the overall length is bigger than log buffer. +size_t first_chunk; I'd prefer first_chunk_len. +size_t min = len; I don't quite get this variable name. But if you get rid of the looping, this shouldn't be needed anyway. In this version, it's intended to ensure the length copied is not bigger than the buffer's length. When we do the optimization above, this could be eliminated. +char *get_log_buffer(); Should have pa_log prefix, i.e. pa_log_get_buffer(). Oh, another thing came to my mind: I believe it's not a good idea to declare functions with an empty argument list, because that gets translated (for legacy reasons) to ..., i.e. any number of arguments. The declaration should be pa_log_get_buffer(void); I've never thought of the translation issue, good to know. Also, pa_log_get_buffer_copy(void) would make it more obvious that the function is returning a new string that the caller has to free. Thanks for your suggestion and gives me the idea of how a function name should be in pulseaudio. ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] [PATCH] use CLOCK_MONOTONIC_COARSE to reduce the system call
在 2012年3月30日 下午12:48,Arun Raghavan arun.ragha...@collabora.co.uk写道: Hi, On Thu, 2012-03-29 at 21:31 +0800, Deng Zhenrong wrote: According to the description below: http://lkml.org/lkml/2009/7/17/258 There are two benefits: a) it doesn't need to access the hardware. b) avoid the syscall by using vdso clock_gettime(). The cons is the CLOCK_MONOTONIC_COARSE returns the time at the last tick. As Pierre mentions, we actually _want_ high resolution time sources for our uses. We use these timers to predict when the audio buffer will be nearing being empty so that we can wake up and fill the buffer again. Having a coarse timer for this purpose would mean that we can be woken up late, causing the device to underrun and users to hear glitches. Maybe I'm testing this patch in an idle state, so there's no underrun seen, I'll take that into account. Thanks for your clarification here. It helps me understand pulseaudio better. ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
[pulseaudio-discuss] more thoughts about my GSoC plan
Hi all, I would like to apply for logging/testing project. Here's my attempt to write more about my thoughts on how this should be done: First about logging: 1. pulseaudio has already had some support for log level, but it may need some improvements. 2. the category support is not yet. for this aspect, gstreamer does a much better job. So I would add similar mechanisms for pulseaudio. For every plugin, we can advocate developers declare a separate category. And then, we can something familiar as mymodule:4 to log what we want. 3. the idea of a circle buffer is good. therefore, we can create a new interface pactl log to display the log. The same as dmesg, that would be great. However, about the details, Lennart has the idea of using compression for logging for the whole system, we could do the same if want to put more stuff in the circular buffer. 4. filtering the logs and display the output with colors are nice features. color output is available right now in pulseaudio, but we may need to adapt it into different situations, e.g. circular buffer. Then about testing: 1. gcov is all about coverage testing. I'm reading more documents about this tool. 2. As I skim through the code of pulseaudio, it seems it lacks the support for a testing framework. Many unit tests are made by developers themselves, and are ad hoc. E.g. the testing and benching program for resampling. 3. I'm not quite sure about what kind of test framework do we want? unit test framework? Overall functional framework? For unit testing, googletest seems to be an option. Or we could write our own? Any thoughts would be welcome. As Arun pointed out, this project might not be enough for GSoC, I'm also looking for another project. ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] express my interests in applying GSoC 2012
Thanks all for replying and giving suggestions. I've sent two patches in another thread, and I've already setup git send-email, cool! It's way easy to send patches on command lines. Personally, I'd like to use PRI-prefix, because it looks more standard. But casting and stick it with %llx should be OK for all platforms. Thanks! 在 2012年3月22日 下午8:08,John Haxby j...@thehaxbys.co.uk写道: On 22/03/12 08:58, Tanu Kaskinen wrote: On Wed, 2012-03-21 at 16:21 +0100, David Henningsson wrote: A quick grep through the code shows that this is how we've been doing it up till now, so we should probably keep it that way for consistency. So, just for education, would you mind resending the patch with git send-email, and using %llx ? Thanks! At the risk of turning this into prolonged bikeshedding, IMO the PRI constants would be the better solution (with a small margin). I have myself used the casting solution in the past to get rid of compiler warnings, but that has been because I didn't know about the PRI constants. Just sticking my oar in here :) The PRI constants are the right way to do it. You can get away with casts and %llx (or whatever) almost all the time. The trouble is the almost all. Sooner or later you're going to get something breaking either because %llx turns out to be wrong or because the cast turns out to be wrong and the compiler has explicitly been told not to notice. Change it to PRI and let the compiler do its job; you won't regret it in the long run. jch ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
Re: [pulseaudio-discuss] express my interests in applying GSoC 2012
在 2012年3月21日 下午3:21,David Henningsson david.hennings...@canonical.com写道: On 03/20/2012 03:48 PM, rong deng wrote: Hi all, This is Deng Zhenrong from Shanghai China, I've already used Linux as my main desktop for several years. Now I would like to express my interests in applying pulseaudio's projects for this year's GSoC in this mail. Hi Deng and welcome to PulseAudio! :-) Hi David, Thanks for replying this message. More contributors are always welcome. As for GSoC, I have never mentored anyone and won't be able to do so this summer either, so I'll let somebody else answer to that. No problem. :-) Glancing through the ideas, I find I'm interested in several few already. :) But I'd like to focus on one thing which is test/log facilities for now. I'm still doing my homework on this topic and I'll come up with more detailed info in later days. So to get my hands dirty, I've already downloaded pulseaudio source code and compile it and set it up. Now I find there's a compilation warning, and here's my patch to fix it, cool :) I'm attaching the patch generated from git format-patch, I'm not sure whether it's OK, as I see it from the mailing list, other developers send patches directly in mails. This patch is my first one to get familiar with the workflow, if there's anything wrong, please tell me. :) As for the patch, I believe you did most things right. :-) Some people prefer you send the patch using git send-email, but for me, it does not matter much. OK. I'll try to use git send-email for later patches. I haven't set up this mail system yet, I'll try to figure it out... As for using the PRI-prefixes, it seems we do not use this anywhere else in the code. Therefore I have two questions: 1) Do you think there is a risk that some compiler that we want to build PulseAudio under, does not support these prefixes (remember, this is not only used in Linux, but in Windows, Mac OS, OS/2 IIRC and others)? No, I don't think it's a risk, as this PRI-prefix is defined in inttypes.h header file, and according to manual, it is a standard. 2) Would %llx solve this warning equally well? On 32-bit system, yes, but then, it's not portable. To print uin64_t on 32 bit system, we should use %llx, but to print it on 64 bit system, we should use %lx instead. PRI-prefix help us handle this. Yes, there IS another way to handle, we can explicitly cast 'pa_channel_position_mask_t' to 'unsigned long long' and use %llx. It's up to you guys whether it should use PRI-prefix or use this cast. I'm OK with these both methods. :) --rong ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
[pulseaudio-discuss] express my interests in applying GSoC 2012
Hi all, This is Deng Zhenrong from Shanghai China, I've already used Linux as my main desktop for several years. Now I would like to express my interests in applying pulseaudio's projects for this year's GSoC in this mail. Glancing through the ideas, I find I'm interested in several few already. :) But I'd like to focus on one thing which is test/log facilities for now. I'm still doing my homework on this topic and I'll come up with more detailed info in later days. So to get my hands dirty, I've already downloaded pulseaudio source code and compile it and set it up. Now I find there's a compilation warning, and here's my patch to fix it, cool :) I'm attaching the patch generated from git format-patch, I'm not sure whether it's OK, as I see it from the mailing list, other developers send patches directly in mails. This patch is my first one to get familiar with the workflow, if there's anything wrong, please tell me. :) --rong From 9ee64a319b43f493730d320038fa7f87108fa5e0 Mon Sep 17 00:00:00 2001 From: Deng Zhenrong dzro...@gmail.com Date: Tue, 20 Mar 2012 22:35:19 +0800 Subject: [PATCH] fix compilation warning modules/alsa/alsa-mixer.c:3110:21: warning: format '%lx' expects argument of type 'long unsigned int', but argument 7 has type 'pa_channel_position_mask_t' [-Wformat] modules/alsa/alsa-mixer.c:3110:21: warning: format '%lx' expects argument of type 'long unsigned int', but argument 8 has type 'pa_channel_position_mask_t' [-Wformat] pa_channel_position_mask_t is type defined to uint64_t, and to display uint64_t, it's better to use PRIx64 primitives. --- src/modules/alsa/alsa-mixer.c |2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/src/modules/alsa/alsa-mixer.c b/src/modules/alsa/alsa-mixer.c index 102ec82..2e768e9 100644 --- a/src/modules/alsa/alsa-mixer.c +++ b/src/modules/alsa/alsa-mixer.c @@ -3107,7 +3107,7 @@ static pa_bool_t element_is_subset(pa_alsa_element *a, pa_alsa_element *b, snd_m return FALSE; for (s = 0; s SND_MIXER_SCHN_LAST; s++) if (a-masks[s][a-n_channels-1] != b-masks[s][b-n_channels-1]) { -pa_log_debug(Element %s is not a subset - mask a: 0x%lx, mask b: 0x%lx, at channel %d, +pa_log_debug(Element %s is not a subset - mask a: 0x% PRIx64 , mask b: 0x% PRIx64 , at channel %d, a-alsa_name, a-masks[s][a-n_channels-1], b-masks[s][b-n_channels-1], s); return FALSE; } -- 1.7.6.5 ___ pulseaudio-discuss mailing list pulseaudio-discuss@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss