Lennart Poettering
76c8ca4b00
pulse: when constructing a stream title from tag data make sure it is translatable
2009-10-17 08:48:23 +02:00
Lennart Poettering
d64200f46b
pulse: make a few things smaller by making them bitfields
2009-10-17 08:48:21 +02:00
René Stadler
f9274226e8
pulsesink: set desired minreq value to segsize/latency-time
...
If we let the daemon decide freely by passing -1, we end up always getting 20ms.
We want to set this value because in some cases we want to select a higher
latency-time in order to save power.
Fixes #597601
2009-10-14 12:05:14 +02:00
René Stadler
ccddf0643d
pulse: rename pa_buffer_attr variables
...
Makes it much easier to see what is going on and is a lot less error prone.
2009-10-02 23:21:02 +03:00
David Henningsson
bb787f1030
pulsesink: Don't dereference NULL pointers
...
pa_stream_get_timing_info() can return NULL.
Fixes bug #595220 .
2009-09-15 10:05:51 +02:00
Wim Taymans
ccda761562
pulsesink: handle stream events
...
Handle stream events and request a PAUSE/PLAY state change from the application
when we receive a CORK/UNCORK event.
2009-09-14 16:05:30 +02:00
Sebastian Dröge
0c50816aaa
pulsesink: Implement GstStreamVolume interface
2009-09-11 16:38:03 +02:00
Sebastian Dröge
7fb6ad6d4c
pulsesink: Implement mute property
2009-09-11 16:38:03 +02:00
Wim Taymans
42ee5e22a2
pulsesink: remove ringbuffer reset compensation
...
Remove the code to deal with a ringbuffer reset as this code is now in the base
class.
Bump the -base requirement as we need the new baseaudiosink code to function
properly.
2009-09-09 16:25:06 +02:00
Stefan Kost
e82e16480d
pulsesink: also guard reseting subscribe callback with ifdefs
...
It is conditionaly set, so do the same when unsetting.
2009-09-02 23:14:20 +03:00
Wim Taymans
abee4f1d64
pulsesink: don't use relative seeks
...
Don't use relative seeks, it's too hard to track where we are after a flush
etc.
fixes #593015
2009-08-25 17:33:04 +02:00
Tim-Philipp Müller
a3c393248a
pulsesink: don't do logic within g_assert() statements
...
Otherwise that code will just be expanded to nothing when compiled
-DG_DISABLE_ASSERT (PS: why is mainloop_start() called in the init
function and not when changing state to READY?)
2009-08-02 11:49:17 +01:00
Wim Taymans
9c341347ba
pulse: conditionally compile newer stuff
...
configured_sink/source_usec in the timing_info is only since 0.9.11 so
conditionally compile this information.
fixes #590038
2009-07-29 12:13:20 +02:00
Wim Taymans
2308999849
pulsesink: avoid using ivalid stream indexes
...
when we get an invalid stream index from pulse because we were just starting,
avoid using it for getting and setting the volume.
Fixes #589365
2009-07-27 11:51:39 +02:00
Colin Guthrie
4efca7b68e
pulsesink: Fix a couple error messages that mentioned incorrect function names.
...
Fixes #589459 .
2009-07-23 10:54:45 +01:00
Wim Taymans
b3c55f5ce5
pulsesink: set some values to their defaults
...
Set the minreq and maxlength buffer attributes to -1 to let puleseaudio select a
sensible value.
2009-07-20 19:09:19 +02:00
Wim Taymans
8bfd80e5a2
pulsesink: don't wait for posted message
...
We can't wait for the ENTER/LEAVE messages to be be posted because the base
class sometimes calls the start method with the object lock, which would block
the message posting.
Instead, just assume that the message will be posted soon and continue. We'll
have to fix this in the base class.
2009-07-20 19:07:19 +02:00
Wim Taymans
e914f5254a
pulsesink: use relative seeks
...
Use relative seeks because I was told that absolute seeks don't work.
2009-07-20 19:07:19 +02:00
Olivier Crête
dbb8a331de
pulsesink: Emit stream-status leave message
...
Fixes #587695
2009-07-14 18:52:15 +02:00
Olivier Crête
b2e9f0a7c9
pulsesink: Emit stream-status enter message
...
Emit stream-status messages for the pulse thread.
Don't use our own GCond for signaling but simply use the pulse mainloop
mechanisms for synchronisation.
See #587695
2009-07-14 18:44:21 +02:00
Wim Taymans
b0643b745a
pulsesink: debug the latency update values
2009-07-14 18:15:59 +02:00
Wim Taymans
ab3bed81a5
pulsesink: add 24bit sample formats
...
Add check for pulseaudio 0.9.15 and enable 24bits samples in that case.
2009-07-14 16:14:34 +02:00
Stefan Kost
6d0007372b
pulsesink: include "1.0=100%" in volume and change upper limit
...
Upper volume limmit was 1000. That appear unneceasrily high. It would also cause
sever distortion if accidentialy used. Now its 10 (~ +15db) which is also in
sync with volume and playbin2.
2009-06-30 14:53:25 +03:00
Wim Taymans
1e98580204
pulsesink: clear ringbuffer when asked to
...
Since we map the ringbuffer to the pulseaudio internal ringbuffer, flush the
pulseaudio buffer when we are asked to clear the ringbuffer.
This avoids some leftover audio after a seek.
2009-06-29 15:21:37 +02:00
Wim Taymans
b8e88710e1
pulseink: don't leak device_description
...
don't leak the device_description.
some cleanups.
2009-06-19 16:00:51 +02:00
Tim-Philipp Müller
dea67f3d96
pulsesink: ref custom ring buffer class and type in class_init
...
Hack around thread-safety issues in GObject and our racy _get_type()
functions (we could easily fix the _get_type() functions, but we still
need to hack around the GObject class races until we require a newer
GLib version, I think).
2009-06-15 15:51:32 +01:00
Wim Taymans
0bd984c52f
pulsesink: handle border cases in resampler
2009-06-11 19:18:52 +02:00
Stefan Kost
85ba1b3e6a
pulsesink: only notify if all checks passed
...
Replace goto done: with return, as those are checks when we don't want to flag a
pending notify.
2009-06-04 17:43:15 +03:00
Stefan Kost
44956f98d7
pulsesink: check pointer before accessing
...
Move existing check a few lines up, so that we check before accessing fields.
2009-06-03 18:23:53 +03:00
Stefan Kost
f77650c024
pulsesink: rename gst_pulse_sink_get_time to gst_pulsesink_get_time
...
Rename internal method for consistency.
2009-06-03 18:21:12 +03:00
Stefan Kost
2af7977e1d
pulsesink: use values from pa_stream_get_buffer_attr()
...
We were putting the requested values back into ringbuffer spec, instead of
using the queried values.
2009-06-03 18:19:22 +03:00
Jan Schmidt
cf584105c6
pulsesink: Convert an erroneous assertion
...
Occasionally, we get a change callback for an old stream, triggering
the assertion unnecessarily. Just ignore such callbacks.
2009-05-21 21:16:14 +01:00
Olivier Crête
ca25de8f77
pulse: Print a warning on under/overflows
2009-05-21 22:05:11 +02:00
Wim Taymans
28afc6e591
pulsesink: make sure we always signal waiters
...
Always signal the waiters in the async callbacks. Especially for the volume
callbacks since this might cause deadlocks.
2009-04-30 10:32:39 +02:00
Edward Hervey
4a9e80720a
Remove unused variables in _class_init
...
Detected by LLVM's CLang static analyzer
2009-04-18 18:51:27 +02:00
Wim Taymans
c052906590
pulsesink: fix sample offset calculation again
2009-04-16 22:51:54 +02:00
Wim Taymans
776b0ae8cb
pulsesink: handle NULL timing info
...
Don't crash when the timing info is not yet available.
2009-04-10 21:32:54 +02:00
Stefan Kost
b3d66d5e8d
pulse: make it work on 0.9.12
...
First we ignore request to fill the ringbuffer which are less then a segment.
The small request where causing stutter.
Then we disable flushing the stream when running against pa 0.9.12 as this
triggers an assertiong in the sound server and terminates it. It does not happen
with 0.9.10 and 0.9.14.
2009-04-10 21:42:13 +03:00
Wim Taymans
963b343548
pulsesink: handle server disconnect in get_time
...
When the server is disconnected or when we are shut down, make our clock return
an invalid time instead of erroring out.
2009-04-10 14:18:48 +02:00
Wim Taymans
20a6908dfd
pulsesink: bps is signed int to avoid overflow
...
Keep bps as gint instead of guint because we will be doing signed math with it
later on and we don't want weird results.
2009-04-10 12:01:27 +02:00
Wim Taymans
7d438518fb
pulsesink: check for a stream
...
Don't try to change the stream volume (and other things) when we don't have a
stream yet. Just store the values for later.
2009-04-09 23:43:58 +02:00
Wim Taymans
ae83945349
pulsesink: fix compilation for newer pulseaudio
2009-04-09 18:07:38 +02:00
Wim Taymans
8d58de128d
pulsesink: uncork fixes and use prebuf = 0
...
We can use prebuf = 0 to instruct pulse to not pause the stream on underflows.
This way we can remove the underflow callback. We however have to manually
uncork the stream now when we have no available space in the buffer or when we
are writing too far away from the current read_index.
2009-04-09 17:26:21 +02:00
Wim Taymans
d849340e64
pulsesink: handle write errors
2009-04-09 17:26:20 +02:00
Wim Taymans
81c5fb9e48
pulsesink: write silence on underflow
...
Start filling up the buffer with empty samples when an underflow happens. We
need to do this to keep pulseaudio reporting the right time for us.
2009-04-09 17:26:20 +02:00
Wim Taymans
2e2f1d73ca
pulsesink: handle pull-based scheduling
...
Use the default basesink methods for implementing pull based scheduling, it
works fine for us.
2009-04-09 17:26:20 +02:00
Wim Taymans
8855ed90c0
pulsesink: add beginnings of pull-based scheduling
2009-04-09 17:26:20 +02:00
Wim Taymans
236baa5a13
pulsesink: keep track of clock reset
...
when we switch streams, the clock will reset to 0. Make sure that the provided
clock doesn't get stuck when this happens by keeping an initial offset. We also
need to make sure that we subtract this offset in samples when writing to the
ringbuffer.
2009-04-09 17:26:20 +02:00
Wim Taymans
6bc6cafcc6
pulsesink: rewrite pulsesink
...
Derive from BaseAudioSink and implement our custom ringbuffer that maps to the
internal pulseaudio ringbuffer.
2009-04-09 17:26:20 +02:00
Wim Taymans
39f59ea456
pulsesink: clean up the state change function
...
Make the state change function a bit more readable and only pause after the
parent had a change to pause first.
2009-03-23 11:22:08 +01:00