Commit graph

1166 commits

Author SHA1 Message Date
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
Lennart Poettering
ff48681aae add abstracted shared memory API
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1265 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-18 19:46:20 +00:00
Lennart Poettering
20d0823e35 fix a bad type cast
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1264 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-18 19:45:19 +00:00
Lennart Poettering
dfa17b9f36 cleanup hashmap.[ch] a little: use hash/compare func prototypes defined in idxset.h, add pa_hashmpa_{get,steal}_first
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1263 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-18 19:43:46 +00:00
Lennart Poettering
8be0cf6007 cleanup idxset.[ch] a little: define proper types for the hash/compare funcs, do ptr->int/int->ptr conversions with clean macros
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1262 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-18 19:42:14 +00:00
Lennart Poettering
c3df1ceb38 fix a PA_LLIST_HEAD_INIT invocation
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1261 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-17 20:03:38 +00:00
Lennart Poettering
a847f74ed0 add missing #include
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1260 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-17 20:03:09 +00:00
Lennart Poettering
d89066036b modify pa_bytes_snprint() to return the string we just wrote to. This should be binary compat with older versions which returned void
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1259 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-17 20:02:46 +00:00
Lennart Poettering
99db0672c7 make PA_LLIST_HEAD_INIT thread safe
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1258 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-17 20:01:04 +00:00
Lennart Poettering
1c3bfc44dc use the description field of sinks/sources to name the zeroconf services, instead of the logical name
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1257 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-15 18:15:00 +00:00
Pierre Ossman
6c39af7ad3 update todo
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1256 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-14 08:38:07 +00:00
Lennart Poettering
5d8d916474 update todo
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1255 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-13 20:45:54 +00:00
Lennart Poettering
2bf4653713 extend module-rescue-streams to move also source outputs when a source dies
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1254 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-13 20:45:19 +00:00
Lennart Poettering
3334814ebb fix a segfault when registering a service with avahi fails
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1253 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-13 20:44:32 +00:00
Lennart Poettering
cdb173f6ab create rtp source output on correct source
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1252 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-13 20:44:00 +00:00
Lennart Poettering
d182a0b1cb minor optimization
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1251 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-13 20:43:22 +00:00
Lennart Poettering
a75e1ed9ef implement hook_source_ouput_new. For this I modified the pa_source_output_new constructor to take a struct similar to what I already did for pa_sink_input_new()
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1250 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-13 19:55:17 +00:00
Lennart Poettering
e0f7e8614c split a validity check into two
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1249 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-13 19:53:35 +00:00
Lennart Poettering
79cb80c574 implement hook_source_disconnect
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1248 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-13 19:53:18 +00:00
Lennart Poettering
8f91b1f4c4 define new hooks: hook_source_output_new, hook_source_disconnect
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1247 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-13 19:52:43 +00:00
Lennart Poettering
a09a49e41b update todo
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1246 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-13 17:39:19 +00:00
Lennart Poettering
a7b9a7d599 Load module-rescue-streams by default
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1245 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-13 17:35:46 +00:00
Lennart Poettering
dd87061153 implement new module "module-rescue-streams" which moves sink inputs away when their sink is removed.
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1244 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-13 17:34:36 +00:00
Lennart Poettering
8180832898 properly implement a pa_sink_disconnect() hook
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1243 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-13 17:33:32 +00:00
Lennart Poettering
87e64d5845 Clean up module description a little
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1242 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-13 17:32:35 +00:00
Lennart Poettering
abbabd848a ignore if we recieved a memory block for an invalid stream, since this might happen unwillingly due to the asychnronous nature of the protocol
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1241 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-13 17:31:58 +00:00
Lennart Poettering
72cf2118df remove pa_sink_input::variable_rate field since it has been folded into pa_sink_input::flags
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1240 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-13 17:30:51 +00:00
Lennart Poettering
3beef50639 hide hook-list-test
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1239 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-13 16:22:20 +00:00
Lennart Poettering
b37ad1ffd3 modify module-volume-restore to change the initial volume of a sink input from a hook instead of an asyncronous subscription event.
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1238 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-13 16:21:20 +00:00
Lennart Poettering
a621d90285 allow hooking into the process of creating playback streams. To implement this I modified the pa_sink_input_new() signature to take a pa_sink_input_new_data structure instead of direct arguments.
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1237 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-13 16:19:56 +00:00
Lennart Poettering
b5cbea940e fix bad printf()
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1236 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-13 16:14:06 +00:00
Lennart Poettering
db3f561ec4 rework hook list stuff once again: change the callback prototype to recieve three data pointers: one to the data for the hook, once for the slot and once for the call
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1235 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-13 16:13:36 +00:00
Lennart Poettering
281125c727 rework hook list stuff again, and replace macros with real functins. We loose type safety but things are much cleaner now
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1234 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-13 01:43:34 +00:00
Lennart Poettering
2622b0ca9e update hook list test
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1233 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-12 23:55:48 +00:00
Lennart Poettering
82a913d73e reall add type safe hook list
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1232 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-12 23:55:22 +00:00
Lennart Poettering
80d73dd21b implement typeafe hook chain
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1231 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-12 23:35:44 +00:00
Lennart Poettering
7f70ca31a1 extend maximum sink/source name length, because HAL UDIs can get ridiculously long
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1230 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-12 17:59:10 +00:00
Lennart Poettering
17964dda37 update todo
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1229 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-12 17:07:49 +00:00
Lennart Poettering
02e083cbc4 test if sink->monitor_source is set before making use of it
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1228 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-12 17:06:39 +00:00
Lennart Poettering
dbe6bdd2bc make use of pa_sink_used_by()/pa_source_used_by() wherever applicable
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1227 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-12 17:06:05 +00:00
Lennart Poettering
b5207fc9ca add pa_sink_used_by()/pa_source_used_by()
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1226 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-12 16:50:58 +00:00
Lennart Poettering
b45c39269f categorize todo file
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1225 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-12 16:40:59 +00:00
Lennart Poettering
28f86ea698 name the sink/source after the device file, just like we already do for the non-mmaped driver
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1224 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-12 16:33:31 +00:00
Lennart Poettering
bf79e97591 generate default sink/source names from the device files they belong to
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1223 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-12 16:26:59 +00:00
Lennart Poettering
005017647b update todo
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1222 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-12 16:02:52 +00:00
Lennart Poettering
4c9c4269bb handle hot-remeving of OSS devices properly
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1221 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-12 16:02:26 +00:00
Lennart Poettering
3cfed301d9 print the device capabilities after opening the device
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1220 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-12 16:01:40 +00:00
Lennart Poettering
fbeeb8b70d when the requested sample format is not available for OSS devices, print a nice warning and take what we can get instead
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1219 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-12 15:09:49 +00:00
Lennart Poettering
0547b0fd4a there's no need to queue subscription events if noone is listening, hence don't do it!
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1218 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-12 15:08:53 +00:00
Lennart Poettering
c86890d5e7 * only load an OSS driver for the first device of a sound card, similar to what is done for ALSA.
* fix a mem leak


git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1217 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-12 13:18:34 +00:00