Commit graph

78 commits

Author SHA1 Message Date
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
Colin Guthrie
d423605bd9 Move closer to an asynchronous structure (still some parsing code to be converted).
Move type definition into .c file to keep it private
Add more utility functions to add/remove headers and return the serverport now the structure is private.
This commit will break the test application but I will fix that in due course

git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/coling@2365 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-10-08 20:32:06 +01:00
Colin Guthrie
a0d3582fb1 Trivial change to allocate memory using pulse methods.
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/coling@2364 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-10-08 20:32:06 +01:00
Colin Guthrie
a08d733fd1 Fix svn properties and some minor indentation
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/coling@2363 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-10-08 20:32:06 +01:00
Colin Guthrie
27ed970adf Convert the return values to fit with the rest of pulse 0 == success, < 0 == failure
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/coling@2362 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-10-08 20:32:06 +01:00
Colin Guthrie
405cf720dc Convert to using pa_socket_client rather than using blocking IO.
This change requires a reference to the mainloop api be passed during initial connection.
In addition, the passing in of the session id during connect has been deprecated. A new function pa_rtsp_set_url has been added to allow the URL to be set by external code. The concept of sid is something specific to raop, not to the rtsp client.

git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/coling@2360 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-10-08 20:32:06 +01:00
Colin Guthrie
ce9a41ef06 Use _free rather than _destroy so as not to mix naming conventions.
Convert C++ comments to C.

git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/coling@2349 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-10-08 20:32:06 +01:00
Colin Guthrie
91edf9eaca Use pa_sprintf_malloc to do simple concatenation rather than using the higher overhead of pa_strbuf
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/coling@2348 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-10-08 20:32:06 +01:00
Colin Guthrie
fef102e35a Add a simple base64 library that will be used by the sink
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/coling@2334 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-10-08 20:32:06 +01:00
Colin Guthrie
48477067ee Add a RTSP client impelmentation.
I still need to adapt the header reading to move the concatenation code to the headerlist lib

git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/coling@2333 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-10-08 20:32:06 +01:00
Colin Guthrie
8c1c565c86 Add a small lib to interpret and produce headers as used in http style requests.
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/coling@2332 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-10-08 20:32:06 +01:00
Lennart Poettering
5d18b62033 remove useless log message 2008-10-01 03:54:01 +02:00
Lennart Poettering
d68c2c9f43 replace Makefile stub copies by symlinks 2008-09-11 01:41:08 +03:00
Lennart Poettering
b7026bf248 add a few more gcc warning flags and fix quite a few problems found by doing so 2008-08-19 22:39:54 +02:00
Lennart Poettering
67858c6e46 fix type error 2008-08-18 17:36:59 +02:00
Lennart Poettering
8d596a9bc5 Make Multicast TTL for RTP configurable, patch from 'dfort'
Signed-off-by: Lennart Poettering <lennart@poettering.net>
2008-08-15 14:40:08 +02:00
Lennart Poettering
34dd4a20f2 fix shutdown when --disallow-module-loading=1 is passed 2008-08-05 23:56:25 +02:00
Lennart Poettering
c26be0d762 modernize hashmap implementation a bit, reduce memory consumption a bit 2008-06-27 20:12:24 +02:00
Lennart Poettering
8ae83d618e get rid of svn $ keywords 2008-06-18 23:23:21 +03:00
Lennart Poettering
045c1d602d merge glitch-free branch back into trunk
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@2445 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-05-15 23:34:41 +00:00
Lennart Poettering
d17bb53d3e Completely rework ALSA device selection code: choose the device to open depending on the requested number of channels and channel map. In most cases it will now suffice to set default-channels=6 to enable 5.1 sound for all devices that support it
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@2050 fefdeb5f-60dc-0310-8127-8f9354f1896f
2007-11-13 17:37:44 +00:00
Lennart Poettering
e313fe1b3d tag modules that may only be loaded once at most especially, and enforce that in the module loader
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@2043 fefdeb5f-60dc-0310-8127-8f9354f1896f
2007-11-09 18:25:40 +00:00
Lennart Poettering
a67c21f093 merge 'lennart' branch back into trunk.
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1971 fefdeb5f-60dc-0310-8127-8f9354f1896f
2007-10-28 19:13:50 +00:00
Lennart Poettering
1e12e0ee8d Kill spaces on EOL
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1465 fefdeb5f-60dc-0310-8127-8f9354f1896f
2007-05-29 17:24:48 +00:00
Lennart Poettering
79c94db7a6 Fix another DoS vulnerability that has been identified by Luigi Auriemma. (Finally closes #67)
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1452 fefdeb5f-60dc-0310-8127-8f9354f1896f
2007-05-23 17:24:06 +00:00
Pierre Ossman
06211b7c8f Add copyright notices to all relevant files. (based on svn log)
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1426 fefdeb5f-60dc-0310-8127-8f9354f1896f
2007-02-13 15:35:19 +00:00
Pierre Ossman
8dc6214276 Revert r1404 and keep it on a development branch until it is fully tested.
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1409 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-11-06 13:06:01 +00:00
Lennart Poettering
d210ebbb09 rework memory block management to be thread-safe and mostly lock-free.
pa_memblock is now an opaque structure. Access to its fields is now done
through various accessor functions in a thread-safe manner.

pa_memblock_acquire() and pa_memblock_release() are now used to access the
attached audio data. Why? To allow safe manipulation of the memory pointer
maintained by the memory block. Internally _acquire() and _release() maintain a
reference counter. Please do not confuse this reference counter whith the one
maintained by pa_memblock_ref()/_unref()!

As a side effect this patch removes all direct usages of AO_t and replaces it
with pa_atomic_xxx based code.

This stuff needs some serious testing love. Especially if threads are actively
used.



git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1404 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-09-26 23:50:56 +00:00
Lennart Poettering
8f5b86b77d fix handling of "mtu" module argument (patch by "theBear")
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1329 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-23 22:28:53 +00:00
Lennart Poettering
e385d93e5a remove all occurences of
pa_logXXX(__FILE__":  
   
and replace them by 
  
   pa_logXXX("



git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1272 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-18 21:38:40 +00:00
Lennart Poettering
0e436a6926 Rework memory management to allow shared memory data transfer. The central idea
is to allocate all audio memory blocks from a per-process memory pool which is
available as read-only SHM segment to other local processes. Then, instead of
writing the actual audio data to the socket just write references to this
shared memory pool.

To work optimally all memory blocks should now be of type PA_MEMBLOCK_POOL or
PA_MEMBLOCK_POOL_EXTERNAL. The function pa_memblock_new() now generates memory
blocks of this type by default.



git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1266 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-18 19:55:18 +00:00