Commit graph

108 commits

Author SHA1 Message Date
Diego Elio 'Flameeyes' Pettenò
ff5b7fb222 Add missing headers' include to build on FreeBSD 7.1. 2009-05-15 23:42:43 +02:00
Lennart Poettering
2c2713a72c make use of SO_TIMESTAMP timestamp for accuracy and leave smoother paused until we have data 2009-04-07 00:50:47 +02:00
Lennart Poettering
e976034063 send the source latency based on the MTU size 2009-04-07 00:47:13 +02:00
Lennart Poettering
886ddc33d8 make sure we don't apply sampling rate fixes that bring the sampling freq > PA_RATE_MAX
Fixes #525
2009-04-06 23:02:50 +02:00
Lennart Poettering
6ba3333030 Merge branch 'master' of ssh://rootserver/home/lennart/git/public/pulseaudio 2009-04-05 03:05:51 +02:00
Lennart Poettering
d035f4a3f3 Modify smoothing code to make cubic interpolation optional and allow 'quick 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.
2009-04-05 02:26:02 +02:00
Maarten Bosmans
8bcb9c6910 various spelling fixes 2009-04-04 02:27:13 +02:00
Lennart Poettering
373b5efe51 properly account for seeks in the requested_bytes counter 2009-04-01 23:05:09 +02:00
Finn Thain
0329edd179 revive solaris module
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
2009-03-03 22:27:00 +01:00
Colin Guthrie
86dee05aec Use LGPL 2.1 on all files previously using LGPL 2 2009-03-03 20:23:02 +00:00
Colin Guthrie
8a00c00943 raop: Handle the reponse header memory allocation more sensibly.
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.
2009-03-01 23:19:31 +00:00
Marc-André Lureau
4722fecb99 rtp: remove unused variable a 2009-02-19 04:58:16 +01:00
Marc-André Lureau
4512a2ce9c rtp-recv: remove unused variable assignment 2009-02-19 04:55:01 +01:00
Iain Hibbert
dc590c7d0a Optionally disable IPv6
Closes #79
2009-02-13 21:58:09 +01:00
Erich Boleyn
64926ff6b3 RTP segfault/uninitialized resampler
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.
2009-02-06 02:12:20 +01:00
Lennart Poettering
08800c35b0 make a couple of functions return proper error codes 2009-02-03 03:14:20 +01:00
Jared D. McNeill
75eeea65bd NetBSD needs to include sys/uio.h for some socket functions
Signed-off-by: Lennart Poettering <lennart@poettering.net>
2009-01-22 01:37:38 +01:00
Lennart Poettering
29c7a28817 kill autoload stuff as planned 2009-01-15 20:07:13 +01:00
Lennart Poettering
75119e91cd add new dont_rewind_render flag to allow quick starts of newly created streams 2009-01-15 00:40:06 +01:00
Tom Bamford
fe2b8c359b Multicast SDP packets sent with same IP TTL as RTP packets
Signed-off-by: Lennart Poettering <lennart@poettering.net>
2009-01-05 19:56:01 +01:00
Lennart Poettering
adc2973c8d Implement new flags DONT_INHIBIT_AUTO_SUSPEND and START_UNMUTED 2008-10-26 19:32:04 +01:00
Colin Guthrie
8715121755 Modularise the RAOP stuff that requires OpenSSL and make it optional at compile time 2008-10-08 20:37:43 +01:00
Colin Guthrie
c3d8bb5b34 Remove $Id$ lines left over from SVN 2008-10-08 20:36:24 +01:00
Colin Guthrie
e543e04ca7 Implement a set volume function to expose this capability to higher layers 2008-10-08 20:36:24 +01:00
Colin Guthrie
c49be7891f Add some new public API functions to connect and flush.
This allows us to reconnect upon disconnection but this has thus far proved unreliable.
We no longer close the socket. We leave this to the module thread to do the closing.
We can also flush the remote buffer now.
Refs #69

git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/coling@2503 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-10-08 20:32:09 +01:00
Colin Guthrie
d86fc75e0c Change the API of the RTSP client a bit.
* Store the mainloop, hostname and port internally on construction
* This should allow use to easily reconnect if disconnected although this has thus far proved unreliable.
The changes look like more than they are due to moving a function around.

git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/coling@2502 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-10-08 20:32:09 +01:00
Colin Guthrie
19dcb529ad Remove unneeded headers accidentially added in r2500.
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/coling@2501 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-10-08 20:32:09 +01:00
Colin Guthrie
5f527dc479 Add seq and rtptime params to record/flush with a view to using these for timing and device suspension
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/coling@2500 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-10-08 20:32:09 +01:00
Colin Guthrie
651da7d095 Minor update to copywrite (I still plan to replace this completely but in the mean time....)
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/coling@2499 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-10-08 20:32:09 +01:00
Colin Guthrie
13bc075875 A few related changes:
* Change the encode_sample routine to simply return normal memchunks allocated from the mempool.
* unref the memchunks returned from encode_sample when we are done with them.
* Create an encoded 'silence' sample and play this at all times to prevent hangup and to 'hog' the airtunes device

This now works and can be used as a regular sink albeit with a constant latency of about 8 seconds :s

git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/coling@2485 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-10-08 20:32:09 +01:00
Colin Guthrie
b93e9e80ec Keep track of the memblock pointer internally and do not rely on subsequent calls to pass it back in for unref'ing
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/coling@2484 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-10-08 20:32:08 +01:00
Colin Guthrie
6dc5e07977 Set the send buffer size to prevent rendering silence in amongst our good data (this should be more sophisticated but that can wait for a glitch-free port)
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/coling@2482 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-10-08 20:32:08 +01:00
Colin Guthrie
3767cdb6d1 Do tidy up on disconnection.
Only clear IO related stuff if this free() was triggered deliberatly (i.e. not by server side disconnect)

git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/coling@2411 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-10-08 20:32:08 +01:00
Colin Guthrie
9216684691 Do not prefix internal function rtsp_exec.
Change port to be 16 bits
Do not free stuff on closure as this happens further up the stack.

git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/coling@2410 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-10-08 20:32:08 +01:00
Colin Guthrie
eca94fee59 Don't try to free stack variables.
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/coling@2409 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-10-08 20:32:08 +01:00
Colin Guthrie
cb8c5a925f Some misc fixes. consts, base64 optimisation (not that it will be with us long anyway), and c comments
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/coling@2407 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-10-08 20:32:08 +01:00
Colin Guthrie
4b7b7b15d7 Fix up IPv6 address format to enclose it in []
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/coling@2406 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-10-08 20:32:08 +01:00
Colin Guthrie
d195d06da7 Change suggested by Lennart. Do not return a memchunk, instead pass in the pointer.
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/coling@2405 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-10-08 20:32:08 +01:00
Colin Guthrie
e00127fe24 Various changes suggested by Lennart.
Store the core* rather than just the mainloop as we can reuse the mempool without passing it in as an argument.
const'ify and deconst'ify some vars

git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/coling@2404 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-10-08 20:32:08 +01:00
Colin Guthrie
899492c315 Add a new callback structure to propigate when the RTSP connection dies
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/coling@2402 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-10-08 20:32:08 +01:00
Colin Guthrie
5eecfa2e3f Move the ownership of the encoded data memchunk into the raop_client.
This does not seem to fix the pool full messages so I'll have to try and suss that out.

git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/coling@2400 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-10-08 20:32:07 +01:00
Colin Guthrie
4dd318519f Do not assert on NULL values of s. This means the connection was closed. This change somehow kills the mainloop with an assert, so I need to sort that out.
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/coling@2399 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-10-08 20:32:07 +01:00
Colin Guthrie
f97c5debcc Properly duplicate the hostname passed in on connect.
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/coling@2396 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-10-08 20:32:07 +01:00
Colin Guthrie
1fb046536a Combine pa_raop_client_new and pa_raop_client_connect (no point in having them separate)
Convert the iochannel to an fd and do not call a pa_iochannel_cb_t callback but rather trigger the callback on connection and pass the fd.
Change pa_raop_client_send_sample to pa_raop_client_encode_sample and work with memchunks.
Fix a subtle size bug in the bit writer that techincally isn't triggered in normal operation.
Clean up the _free function to actually free stuff.
Do the actual ALAC encoding.

git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/coling@2394 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-10-08 20:32:07 +01:00
Colin Guthrie
41e31ab204 Rename rtsp.{c,h} to rtsp_client.{c,h}.
Renate pa_rtsp_context to pa_rtsp_client.

git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/coling@2376 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-10-08 20:32:07 +01:00
Colin Guthrie
e596f42f39 Wrap the io_callback to ensure that all data is written before asking for more.
Fix the length type for send_sample (restrict to 16bit value)

git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/coling@2374 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-10-08 20:32:07 +01:00
Colin Guthrie
6510d97315 Use a more stateful response parser.
This makes things fully asyncronous.
Some of the continuation headerlist stuff could be moved to headerlist for neatness, but this is OK for now.

git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/coling@2373 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-10-08 20:32:07 +01:00
Colin Guthrie
22e299ad3e Add a pa_iochannel callback for when the RAOP connection connects.
Properly handle the sequence of events that establish a connection.

git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/coling@2369 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-10-08 20:32:07 +01:00
Colin Guthrie
8fb58e3a90 Add a function for packing bits into a byte buffer. This will be needed when encoding the audio data in ALAC format.
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/coling@2368 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-10-08 20:32:07 +01:00
Colin Guthrie
20478a4544 Add a skeleton raop client which builds on the rtsp client.
It still requires a socket client and callback system to be added before it will be functional.

git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/coling@2366 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-10-08 20:32:06 +01:00