summaryrefslogtreecommitdiffstats
path: root/src/modules/rtp
Commit message (Collapse)AuthorAgeFilesLines
* core: Add extended stream API to support compressed formatsArun Raghavan2011-05-021-1/+1
| | | | | | | | | | | | | | | This is the beginning of work to support compressed formats natively in PulseAudio. This adds a pa_stream_new_extended() that takes a format structure, sends it to the server (=> protocol extension) and has the server negotiate with the appropropriate sink to figure out what format it should use. This is work in progress, and works only with PCM streams. Actual compressed format support in some sink needs to be implemented, and extensive testing is required. More details on how this is supposed to work is available at: http://pulseaudio.org/wiki/PassthroughSupport
* Merge remote-tracking branch 'mkbosmans/mingw32-build'Colin Guthrie2011-03-206-6/+6
|\
| * Use pulsecore/arpa-inet.h to make arpa/inet.h functionality availableMaarten Bosmans2011-03-196-6/+6
| | | | | | | | Automatically use replacement function on platforms (win32) where not all arpa/inet.h is available natively.
* | Fix up according to Coding StyleMaarten Bosmans2011-03-111-4/+2
| | | | | | | | Only whitespace changes in here
* | virtual-sink: Fix a crash when moving the sink to a new master right after ↵Tanu Kaskinen2011-02-261-0/+3
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | setup. If the virtual sink is moved to a new master right after it has been created, then the virtual sink input's memblockq can be rewound to a negative read index. The data written prior to the move starts from index zero, so after the rewind there's a bit of silence. If the memblockq doesn't have a silence memchunk set, then pa_memblockq_peek() will return zero in such case, and the returned memchunk's memblock pointer will be NULL. That scenario wasn't taken into account in the implementation of sink_input_pop_cb. Setting a silence memchunk for the memblockq solves this problem, because pa_memblock_peek() will now return a valid memblock if the read index happens to point to a hole in the memblockq. I believe this isn't the best possible solution, though. It doesn't really make sense to rewind the sink input's memblockq beyond index 0 in the first place, because now when the stream starts to play to the new master sink, there's some unnecessary silence before the actual data starts. This is a small problem, though, and I don't grok the rewinding system well enough to know how to fix this issue properly. I went through all files that call pa_memblockq_peek() to see if there are more similar bugs. play-memblockq.c was the only one that looked to me like it might be broken in the same way. I didn't try reproducing the bug with play-memblockq.c, though, so I just added a FIXME comment there.
* Clean up <poll.h> includesMaarten Bosmans2011-02-171-1/+1
| | | | | | Instead <pulsecore/poll.h> should be included. That file includes poll.h on platform where it is appropriate. Also remove some unnecessary <ioctl.h> includes.
* build: Don't include empty Makefile.am in subdirsMaarten Bosmans2011-01-311-20/+0
|
* module-rtp-recv: Request proper rewind after underrunMaarten Bosmans2011-01-161-1/+3
|
* module-rtp-recv: Remove smoother from write indexMaarten Bosmans2011-01-161-21/+3
| | | | | It isn't necessary anymore with the new algorithm. The slow adjust of the smoother was even detrimental to the accuracy of the rate estimate.
* module-rtp-recv: Average the estimated real sample rateMaarten Bosmans2011-01-161-4/+22
|
* module-rtp-recv: Use new algorithm for adjusting sample rateMaarten Bosmans2011-01-161-15/+29
|
* Limit rate adjustments to small, inaudible jumpsMaarten Bosmans2011-01-161-13/+21
| | | | | | | | | | | | | | | The same logic is applied to the sample rate adjustments in module-rtp-recv, module-loopback and module-combine: - Each time an adjustment is made, the new rate can differ at most 2‰ from the old rate. Such a step is equal to 3.5 cents (a cent is 1/100th of a semitone) and as 5 cents is generally considered the smallest observable difference in pitch, this results in inaudible adjustments. - The sample rate of the stream can only differ from the rate of the corresponding sink by 25%. As these adjustments are meant to account for very small clock drifts, any large deviation from the base rate suggests something is seriously wrong. - If the calculated rate is within 20Hz of the base rate, set it to the base rate. This saves CPU because no resampling is necessary.
* build-sys: Replace dummy Makefiles with proper Makefile.am'sColin Guthrie2010-12-052-1/+20
| | | | | | | | | | | | | | | | | | | | | | | | This is needed to better support out of tree builds (including distcheck) and to ensure the necessary folders are created in the build tree on configure and also works around an intl-tools bug (https://bugs.launchpad.net/intltool/+bug/605826) The Makefile.am's used are minimal (and in some cases completely blank). At present they do not include anything interesting with the majority of the real work still done by the monolitic src/Makefile.am It may make sense to start splitting out src/Makefile.am into smaller chunks but this commit makes the minimum changes to address the issues that result from using make distcheck and other out of tree builds. Note: This 'breaks' the ability to type make in e.g. the src/modules folder and have all of PA rebuilt accordingly (this is because the static Makefiles previously present just did a "make -C ..") which was purportedly for use in emacs. But I'm sure there will be a better and more robust way to configure emacs to do your builds properly if this behaviour is still desirable.
* rtp: Fix bracketing in pa_rtp_recv.Colin Guthrie2010-05-081-2/+2
| | | | | | | | | | The syntactically correct error meant that the timestamp was always marked as found and only the first header was checked. In the case where the timestamp was the first header, things would have worked as expected. Thanks to pino for reporting via bug refs #818
* poll() is totally broken on Mac OS XDaniel Mack2009-12-161-5/+0
| | | | | | Even on 10.5.8, poll() does not do the right thing. Haven't checked on newer versions. Hence, wrap all occurences of poll() to pa_poll and emulate that call with select() on OSX. This is totally embarassing.
* use cloexec wrappers wherever applicableLennart Poettering2009-10-302-5/+3
|
* rtp: Remove 'fix me' comment after it was actually fixed in [56b6e1]Colin Guthrie2009-09-181-2/+0
| | | | That's what you get for applying your stash without fully checking if anything else was committed in the mean time :p
* rtp: Factor out direct io writing and use ioline instead.Colin Guthrie2009-09-181-16/+6
| | | | | This is how things should have worked orinally, but I obviously misunderstood things a bit. This seems to prevent the random hangups that were happening previously :)
* rtsp: document that rtsp_exec() needs fixing (llvm-clang-analyzer)Lennart Poettering2009-09-081-0/+2
|
* core: move 'flags' field into 'pa_sink_input_new_data' structure so that ↵Lennart Poettering2009-08-282-2/+4
| | | | hooks can access it
* raop: Fix memory leakAndy Shevchenko2009-08-281-3/+7
| | | | | The return memory of the pa_strbuf_tostring_free() should be freed. pa_headerlist_puts() saves its own copy.
* core: move rtpoll to thread_info sub structureLennart Poettering2009-08-151-1/+1
|
* Base mainloop on pa_rtclock_now()Marc-André Lureau2009-06-203-21/+10
| | | | | | | | | | | | | | | | Move the mainloop to monotonic based time events. Introduces 4 helper functions: pa_{context,core}_rttime_{new,restart}(), that fill correctly a timeval with the rtclock flag set if the mainloop supports it. Both mainloop-test and mainloop-test-glib works with rt and timeval based time events. PulseAudio and clients should be fully functional. This patch has received several iterations, and this one as been largely untested. Signed-off-by: Marc-André Lureau <marca-andre.lureau@nokia.com>
* pulse: move pa_rtclock_now in pulsecommonMarc-André Lureau2009-06-201-1/+2
|
* perl -p -i -e 's/pa_rtclock_usec/pa_rtclock_now/g' `find . -name '*.[ch]'`Marc-André Lureau2009-06-191-1/+1
|
* rtp: fix s/recieve/receive/ typoLennart Poettering2009-06-171-1/+1
|
* rtp: remove gcc warningLennart Poettering2009-06-051-2/+2
|
* Add missing headers' include to build on FreeBSD 7.1.Diego Elio 'Flameeyes' Pettenò2009-05-151-0/+1
|
* make use of SO_TIMESTAMP timestamp for accuracy and leave smoother paused ↵Lennart Poettering2009-04-073-11/+62
| | | | until we have data
* send the source latency based on the MTU sizeLennart Poettering2009-04-071-3/+3
|
* make sure we don't apply sampling rate fixes that bring the sampling freq > ↵Lennart Poettering2009-04-061-11/+14
| | | | | | PA_RATE_MAX Fixes #525
* Merge branch 'master' of ssh://rootserver/home/lennart/git/public/pulseaudioLennart Poettering2009-04-052-3/+3
|\
| * various spelling fixesMaarten Bosmans2009-04-042-3/+3
| |
* | Modify smoothing code to make cubic interpolation optional and allow 'quick ↵Lennart Poettering2009-04-051-2/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | fixups' on resuming The primary reason for this change is to allow time graphs that do not go through the origin and hence smoothing starting from the origin is not desired. This change will allow passing time data into the smoother while paused and then abruptly use that data without smoothing using the 'quick fixup' flag when resuming. Primary use case is allowing recording time graphs where the data recorded originates from a time before the stream was created. The resulting graft will be shifted and should not be smoothened to go through the origin.
* | properly account for seeks in the requested_bytes counterLennart Poettering2009-04-011-2/+2
|/
* revive solaris moduleFinn Thain2009-03-031-1/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | Hi All, This patch fixes the solaris audio device source and sink, and fixes some portability issues that break the build on solaris. Questions and comments welcomed. I've tested this patch only with OpenSolaris Express snv 103. Eventually I hope to be able to test a few older releases and older hardware (though it is hard to say whether there is much interest in those). This is my first brush with pulseaudio and so I read the wiki docs and some of the source code but I'm still unsure of a few things. In particular I'm wondering about rewind processing, corking and what (if anything) the module needs for those. I'm also unclear on the implications of thread_info.buffer_size, .fragment_size and .max_request, and whether my code is correct or not. This patch disables link map/library versioning unless ld is GNU ld. Another approach for solaris would be to use that linker's -M option, but I couldn't make that work (due to undefined mainloop, browse and simple symbols when linking pacat. I can post the errors if anyone is intested.) Thanks, Finn Thain
* Use LGPL 2.1 on all files previously using LGPL 2Colin Guthrie2009-03-0310-10/+10
|
* raop: Handle the reponse header memory allocation more sensibly.Colin Guthrie2009-03-011-29/+27
| | | | | In theory the callback called after reading headers could free our whole object, so we should not take it upon ourselves to free the headers after the call to the callback.
* rtp: remove unused variable aMarc-André Lureau2009-02-191-3/+3
|
* rtp-recv: remove unused variable assignmentMarc-André Lureau2009-02-191-1/+1
|
* Optionally disable IPv6Iain Hibbert2009-02-134-19/+68
| | | | Closes #79
* RTP segfault/uninitialized resamplerErich Boleyn2009-02-061-1/+1
| | | | | | | | | | | | | | | | | | | | | | Erich Boleyn <erich@uruk.org> wrote: > Using RTP for multi-room music streaming, updated to Pulse 0.9.14 from > 0.9.9, RTP reception new crashes with a segfault on all machines at > the first "Updating sample rate" log message. > > Source of the segfault appears to be null pointer for > "impl_update_rates" function in resampler routine, perhaps > uninitialized resamplers in general? A fresh look after work made the resampler initialization code pop out. The problem is in the sink connection being made from "module-rtp-recv.c", the "PA_SINK_INPUT_VARIABLE_RATE" flag should be passed into "pa_sink_input_new", but is not there. Made the change and tested it, fixes the problem. Checked and head-of- tree off of the pulseaudio.org source browsing link does not have this fix either. One-liner patch attached.
* make a couple of functions return proper error codesLennart Poettering2009-02-032-2/+2
|
* NetBSD needs to include sys/uio.h for some socket functionsJared D. McNeill2009-01-222-0/+8
| | | | Signed-off-by: Lennart Poettering <lennart@poettering.net>
* kill autoload stuff as plannedLennart Poettering2009-01-152-2/+2
|
* add new dont_rewind_render flag to allow quick starts of newly created streamsLennart Poettering2009-01-151-1/+1
|
* Multicast SDP packets sent with same IP TTL as RTP packetsTom Bamford2009-01-051-0/+5
| | | | Signed-off-by: Lennart Poettering <lennart@poettering.net>
* Implement new flags DONT_INHIBIT_AUTO_SUSPEND and START_UNMUTEDLennart Poettering2008-10-261-1/+1
|
* Modularise the RAOP stuff that requires OpenSSL and make it optional at ↵Colin Guthrie2008-10-084-767/+0
| | | | compile time
* Remove $Id$ lines left over from SVNColin Guthrie2008-10-088-16/+0
|