summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2012-11-03build-sys: Document libpulsecommon vs. libpulse duplicationv2.99.1Arun Raghavan1-0/+5
2012-11-03i18n: Fix POTFILES for poll changesArun Raghavan1-1/+2
poll.c was moved to poll-posix.c and poll-win32.c was added for the Windows port.
2012-11-03build-sys: Bump sonameArun Raghavan1-1/+1
2012-11-03Revert "core: adjust playing_for and underrun_for at rewind"Arun Raghavan1-22/+4
This reverts commit 5bc6cadcb2e7255fd333ed88cc80b61a7673ddd9. I wasn't meaning to push this out - just merged for review / testing.
2012-10-31core: adjust playing_for and underrun_for at rewindUoti Urpala1-4/+22
A rewind may erase data that sink_input counted in playing_for or underrun_for earlier. Add code adjusting those values after a rewind. One visible symptom of this bug was problems recovering from an underrun. When a client calls pa_stream_write() with a large block of memory, the function can split that into smaller pieces before sending it to the server. When receiving new data for a stream that had silence queued due to underrun, the server would do a rewind to replace the queued-but-not-played silence with the new data. Because of the bug, this rewind itself would not change underrun_for. It's possible for multiple rewinds to be done without filling the sink buffer in between (which is what would eventually reset underrun_for). In this case, the server rapidly processing the split packets would rewind the stream for _each_ of them (as underrun_for would stay set), erasing valid audio as a result.
2012-10-30svolume: Fix ARM alignment issuesArun Raghavan1-41/+60
As Peter Meerwald <p.meerwald@bct-electronic.com> discovered, our ARM svolume code performance is quite terrible when the incoming samples are not word-aligned. This can very easily be the case, since the architecture only requires that the samples be 16-bit aligned, and we might end up running the innermost loop after processing modulo-4 samples. The performance degradation was ~50x on a Cortex A9 (Pandaboard). This reworks the svolume logic to first consume enough samples to make sure the rest is word aligned, and reordering the processing to work with 4 samples at a time first, and then finally deal with the remainder. With this, performance is comparable for arbitrary alignments (~3x faster than the C code).
2012-10-30tests: Minor alignment adjustment fix for cpu-testArun Raghavan1-1/+2
2012-10-30match: Use the SINK_INPUT_FIXATE hook instead of NEW.Tanu Kaskinen1-5/+5
The callback relies on the sample spec being finalized, which is not true with the NEW hook. In case you're wondering about the "hook EARLY - 1, to match before stream-restore" comment that was not changed even though the code that the comment concerned was changed: the comment was apparently written at a time when module-stream-restore used the NEW hook too, and later stream-restore has been changed to use the FIXATE hook. So, the comment was wrong/nonsensical before this patch. Since these two modules now use the same hook again, the comment makes sense again. BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=55135
2012-10-30combine: Keep the timer active in the null mode only when running.Tanu Kaskinen1-5/+3
Previously thread_func() used PA_SINK_IS_OPENED() to check whether some data should be rendered. process_render_null() used a different check: it would return immediately if the sink was not in the RUNNING state. This caused a busy loop when the sink was in the IDLE state, because process_render_null() didn't update the timestamp, and thread_func() still kept the timer active using the old timestamp. pa_rtpoll_run() would return immediately because of the old timestamp. This is fixed by using the same check in both thread_func() and process_render_null(). Since the checks are the same, it's actually redundant to have the check in process_render_null(), so it is now an assertion. BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=54779
2012-10-30virtual-surround-sink: Fix setting max_request and max_rewind.Tanu Kaskinen1-2/+2
The sink has different frame size than the sink input, so the max_request and max_rewind values of the sink input need to be converted when setting the sink max_request and max_rewind values. The conversion is already done correctly in sink_input_update_max_request_cb() and sink_input_update_max_rewind_cb().
2012-10-30loopback: Don't fix the source output format/rate/channels.Tanu Kaskinen1-9/+0
Once the sink input has been routed in pa_sink_input_new(), the sample spec and channel map have already become fixed. The sink input and source output must use the same stream format, because the data is copied as-is.
2012-10-30loopback: Use the real sample spec once it's known.Tanu Kaskinen1-0/+5
When module-loopback is loaded without arguments, the ss and map variables are initialized with dummy values. This caused a problem, because also pa_memblockq_new() was called with the dummy values, making it work incorrectly. The base was set to 1 instead of the real frame size, which in turn caused alignment related crashes.
2012-10-30resampler: Make sure that there are no overflows when multiplying ↵Tanu Kaskinen1-6/+6
potentially big numbers. This fixes at least one crash that has been observed. The multiplication in trivial_resample() overflowed when resampling from 96 kHz to 48 kHz, causing an assertion error: Assertion 'o_index * fz < pa_memblock_get_length(output->memblock)' failed at pulsecore/resampler.c:1521, function trivial_resample(). Aborting. Without the assertion, the memcpy() after the assertion would have overwritten some random heap memory.
2012-10-30memblockq: Fix the order of setting minreq and prebuf.Tanu Kaskinen2-3/+3
2012-10-30core-util: Don't error out on existing runtime directory.Thomas Martitz1-2/+3
When compiling without HAVE_SYMLINK the runtime dir is a real directory, which is attempted to be created. In the case it already exists we shouldn't error out. The HAVE_SYMLINK-enabled code already does this.
2012-10-30core: Proper poll() emulation to fix pacat and friends on WindowsThomas Martitz4-19/+645
Currently, Windows versions of pacat and friends fail because the current poll emulation is not sufficient (it only works for socket fds). Luckily Gnulib has a much better emulation that seems to work good enough. The implementation has been largely copied (except a few bug fix regarding timeout handling, to be pushed upstream) and works on pipes and files as well. The copy has been obtained through their gnulib-tool utility, which gives a LGPLv2.1+ licensed file. This fixes the "Assertion (!e->dead) failed" error coming and lets pacat and friends stream happily to/from a server (I didn't actually test parec).
2012-10-30build-sys: Drop -Wvla from compiler flagsArun Raghavan1-1/+1
Since we mandate C99 support, not reason to keep this around.
2012-10-30tests: Fix a cpu-test debug messageArun Raghavan1-3/+3
We align at sample granularity and not byte granularity (which might violate arch alignment requirements).
2012-10-30tests: Run svolume on different channel countsArun Raghavan1-46/+43
This adds checks to run svolume tests with 1, 2 and 3 channels (we don't run Orc with 3 channels since only 1/2-ch are implemented there).
2012-10-30tests: Make cpu-test less verboseArun Raghavan1-7/+4
Drops the correctness debug output since we want to run this several times, and the output becomes much more verbose than required.
2012-10-30tests: Run svolume test for various sample alignmentsArun Raghavan1-29/+77
Allows us to make sure that svolume works independently of sample alignment, and that performance doesn't degrade based on this.
2012-10-29core: Fix warning on non-win32 buildsArun Raghavan1-0/+2
2012-10-29build: Add a2dp-codecs.h to libbluetooth-util sources.Tanu Kaskinen1-1/+4
2012-10-29tests: Minor cpu-test fixes for non-NEON buildsArun Raghavan1-0/+7
The s16->float test is only run on ARM with NEOn at the moment, so we don't define that code in other cases.
2012-10-29tests: Print average outer-loop iteration time in cpu-testArun Raghavan1-2/+6
2012-10-29tests: Increase sconv cpu-test timeoutArun Raghavan1-0/+1
This takes longer on ARM CPUs, especially older ones.
2012-10-29tests: Allow off-by-one error in sconv testArun Raghavan1-8/+4
With some optimised sconv implementations (read NEON), rounding inaccuracy might lead to a difference of 1 with the reference implementation. The inaccuracy is worth the performance gain. Also increases floating-point accuracy while printing errors to make errors easier to analyse.
2012-10-29sconv: Fix NEON sconv rounding codeArun Raghavan1-7/+3
Rounding with 0.5 causes us to always round up for any value of the form x.5. IEEE754 specifies round-to-nearest-even as the behaviour in this case. This might not always be possible with NEON code, but this change gets us much closer to it.
2012-10-29tests: Implement test code for ARM NEON sconv s16_to_floatPeter Meerwald1-11/+70
Signed-off-by: Peter Meerwald <p.meerwald@bct-electronic.com>
2012-10-29tests: Fix test description in cpu-testPeter Meerwald1-2/+2
Signed-off-by: Peter Meerwald <p.meerwald@bct-electronic.com>
2012-10-29core: Add ARM NEON optimized sample conversion codePeter Meerwald6-1/+193
final: * includes some minor style fixes and build-time changes to allow building a single binary for neon and non-neon systems v4: * fix for sample length < 4 v3: * convert from intrinsics to inline assembly v2: * load and store data with vld1/vld1q and vst1/vst1q, resp., to work around alignment issues of compiler-generated vldmia instruction * remove redundant check for NEON flags Ubuntu/Linaro gcc 4.6.3 arm-linux-gnueabi-gcc -O2 -mcpu=cortex-a8 -mfloat-abi=softfp -mfpu=neon runtime on beagle-xm: D: [pulseaudio] sconv_neon.c: checking NEON sconv_s16le_from_float I: [pulseaudio] sconv_neon.c: NEON: 3754 usec. I: [pulseaudio] sconv_neon.c: ref: 58594 usec. D: [pulseaudio] sconv_neon.c: checking NEON sconv_s16le_to_float I: [pulseaudio] sconv_neon.c: NEON: 1831 usec. I: [pulseaudio] sconv_neon.c: ref: 10528 usec. I: [pulseaudio] sconv_neon.c: Initialising ARM NEON optimized conversions. conversion may be off by one for some samples due to rounding issues
2012-10-26build-sys: Add volume code to libpulsecommonArun Raghavan1-0/+1
Commit dd31d652a ("utils: Adding a function to get volume from string") uses pa_sw_volume_from_dB(), which is part of libpulse, in libpulsecore. This breaks as-needed builds. We fix this by also building the volume code in libpulsecommon.
2012-10-25card: Store a pa_card pointer in pa_card_profile.Tanu Kaskinen2-7/+17
2012-10-25bluetooth: Add hook to announce late UUIDsMikel Astiz2-0/+9
UUIDs might be announced at any time, so a hook is needed to notify any interested module. In practice, the UUIDs are quite stable with the exception of the pairing procedure, where the UUIDs are reported by BlueZ as soon as they are discovered.
2012-10-25card: Support adding ports dynamicallyMikel Astiz3-0/+19
Card profiles -specially the ones registered with pa_card_add_profile()- might need to create new ports during the lifetime of the card.
2012-10-25card: Support adding profiles dynamicallyMikel Astiz3-0/+15
Some cards might need to add profiles during their lifetime, that is, after the card has been created.
2012-10-25utils: Adding a function to get volume from stringFlavio Ceolin2-0/+45
The allowed volume formats are dB, % or integer. For example: 10% or 10db or 10.
2012-10-25tests: Run sconv tests with multiple alignmentsArun Raghavan1-26/+46
This allows us to test the sconv code with the incoming samples at various byte alignments. The test is also now split into correctness and performance checks.
2012-10-24alsa-mixer: Don't let "Mic Jack Mode" alone create a "Line In" pathDavid Henningsson1-1/+0
The IDT/Sigmatel codec driver often creates a "Mic Jack Mode" for every mic jack, so it can change functionality between Mic and Line In. However, as the "Mic Jack" is the standard naming, our current solution does not make the Line In port unavailable when nothing is plugged in. This patch makes the "Line In" port not to be created just because there is a "Mic Jack Mode" that could be set to "Line". This makes the behaviour consistent with e g "Dock Mic Jack Mode", "Front Mic Jack Mode" etc, where we don't create a "Dock Line" or "Dock Mic" port either. Signed-off-by: David Henningsson <david.henningsson@canonical.com>
2012-10-24rtp: Fix warning using pa_assert_not_reached()Peter Meerwald1-2/+3
modules/rtp/module-rtp-recv.c:462:8: warning: 'r' may be used uninitialized in this function [-Wuninitialized] Signed-off-by: Peter Meerwald <p.meerwald@bct-electronic.com>
2012-10-24virtual-surround: Limit the number of hrir samples.Niels Ole Salscheider1-0/+5
v2: better log message
2012-10-24virtual-surround: Add silence to hrir if necessary.Niels Ole Salscheider1-9/+38
Otherwise, the hrir might be too short to get completely resampled v2: take different sample rates into account
2012-10-24pulse: Fix for volume documentationFlavio Ceolin1-1/+1
Fixing the documentation for the function pa_cvolume_dec().
2012-10-24tests: Add a basic sanity test to sconv cpu-testArun Raghavan1-0/+2
This seems redundant with the previous check in that function, but it makes sure that the result of the speed comparison is what we think it is.
2012-10-24tests: Reorganise cpu-test to reuse codeArun Raghavan1-50/+40
This factors out the basic measurement code for each test into a separate block so that each test can be broken down into a basic correctness test, and a performance comparison with minimum effort.
2012-10-24tests: Factor out core sconv test code in cpu-testArun Raghavan1-24/+28
This will let us add tests for non-SSE sconv tests.
2012-10-24tests: Add a copyright header to cpu-testArun Raghavan1-0/+19
2012-10-23rtp: Fix rtp_port reading.Tanu Kaskinen1-2/+10
pa_atou() return value was not checked, and the cast of a 16-bit variable pointer to a 32-bit variable pointer could corrupt cseq.
2012-10-23gccmacro: Disable printf-like format checking on mingw32 compilers.Thomas Martitz1-1/+8
Am 23.10.2012 08:25, schrieb Arun Raghavan: > On Tue, 2012-08-21 at 13:32 +0200, Thomas Martitz wrote: >> Am 21.08.2012 08:51, schrieb Rémi Denis-Courmont: >>> Le mardi 21 août 2012 00:50:34 Thomas Martitz, vous avez écrit : >>>> There are tons of warnings, most of them because the function is not >>>> recognized as printf-like. >>> Removing checks looks very fishy. >>> >>> To use C99 and/or GNU format specifiers on MingW, you need to use the >>> gnuprintf attribute instead of printf. With printf, the format string is >>> validated according to the antiquated MSVC rules. >>> >> Interesting, I didn't know about gnuprintf. FWIW, what are those >> antiquated MSVC rules? I assumed the return value which isn't int for >> some affected functions? > Is this one going to be respun? > Yes, here you go. >From c5f15eec69bf95c9a1261e0d82abbd039156e75e Mon Sep 17 00:00:00 2001 From: Thomas Martitz <kuge@rockbox.org> Date: Wed, 8 Aug 2012 17:38:04 +0200 Subject: [PATCH 1/3] gccmacro: Work around warnings due to printf redirection by libintl. Libintl defines printf as libintl_printf, which breaks the format attribue. Unfortunately the workaround around provided by libintl is only enabled for cygwin, but not for mingw builds. Therefore install the workaround manually.
2012-10-23bluetooth: Refactor code to create profile portsMikel Astiz1-8/+8
Put the created ports in a hashmap, but not necessarily inside a struct pa_card_new_data.