| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| |
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
Use the default basesink methods for implementing pull based scheduling, it
works fine for us.
|
| |
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
Derive from BaseAudioSink and implement our custom ringbuffer that maps to the
internal pulseaudio ringbuffer.
|
| |
|
|
|
|
|
| |
Should work at least a tad better if the decoder can't keep up, and
should also spread dropped frames a bit more evenly over time.
|
|
|
|
| |
sending the samples
|
| |
|
| |
|
| |
|
|
|
|
| |
And log decoder object.
|
|
|
|
| |
Don't decode frames that are going to be too late anyway.
|
| |
|
|
|
|
| |
separately
|
|
|
|
|
| |
Make the state change function a bit more readable and only pause after the
parent had a change to pause first.
|
|
|
|
|
| |
Use an instance variable to track whether the stream is corked or not,
instead of using PA API that was only introduced in 0.9.11
|
|
|
|
|
|
|
| |
If the caps changes, the sink is reset without transitioning through
a PAUSED->PLAYING state change, resulting in a corked stream. This avoids
the problem by checking that the stream is uncorked when writing samples
to it.
|
|
|
|
|
| |
Don't send queries back to the element they just came from by sending
them to the peer of the wrong pad.
|
|
|
|
|
|
|
|
| |
When trying to write out a segment, wait until there is enough free space
for the entire segment. This helps to reduce ripple in the clock reporting,
where the app might query the playback position while only half a segment
has been written (and is therefore reported by _delay(), even though
the ring buffer has not yet been advanced)
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In the event handler, gst_flac_dec_sink_event(), two functions are called on
the FLAC stream without checking if it has been initialized:
FLAC__stream_decoder_flush()
FLAC__stream_decoder_process_until_end_of_stream()
Both these FLAC__*() functions modify the internal state of the FLAC stream.
Later, when the buffers start flowing, gst_flac_dec_chain() tries to initialize
the stream. the FLAC__stream_decoder_init_stream() call will fail because the
previous calls to FLAC__*() changed the stream state so it is no longer in the
initialized state.
|
|
|
|
|
|
| |
Make some code more readable.
Fix a leak when pull range returns a shot buffer.
Push EOS after posting the error.
|
|
|
|
|
|
|
| |
The flacdec API calls the write callback when performing a seek. We cannot yet
push out a buffer at that time so we must keep it and push it out later.
Flush out the upstream part of the pipeline when doing a seek.
Fixes #574275.
|
| |
|
|\
| |
| |
| | |
ssh://thomasvs@git.freedesktop.org/git/gstreamer/gst-plugins-good
|
| |
| |
| |
| |
| | |
PAL is TFF, NTSC is BFF. Some day I will learn to keep this
straight.
|
| | |
|
| |
| |
| |
| | |
Don't crash if we receive a buffer without caps. Fixes #572413.
|
| | |
|
| |
| |
| |
| |
| |
| | |
Remove some unused variables.
Avoid a useless _resync call.
Correctly use a gboolean.
|
| |
| |
| |
| | |
Fixes bug #571321.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
g_atomic_int_(get|set) only work on ints and the flags are
an enum (which on most architectures is stored as an int).
Also the way the flags were accessed atomically would still
leave a possible race condition and we don't do it in any
other mixer track implementation, let alone at any other
place where an integer could be changed from different
threads. Removing the g_atomic_int_(get|set) will only
introduce a new race condition on architectures where
integers could be half-written while reading them
which shouldn't be the case for any modern architecture
and if we really care about this we need to use
g_atomic_int_(get|set) at many other places too.
Apart from that g_atomic_int_(set|get) will result in
aliasing warnings if their argument is explicitely
casted to an int *. Fixes bug #571153.
|
| | |
|
|/ |
|
| |
|
|
|
|
|
| |
Cast (enum *) to (int *), not necessarily technically right,
but plugs #571153.
|
|
|
|
|
|
|
|
|
| |
rather than PA thread.
pa_threaded_mainloop_lock() (a.o.) and by extension get_property should
not be done from a PA thread, but the latter may occur as a result of a
property change notification. Fixes #571204 (though current situation
not ideal, e.g. post message rather than signal).
|
|
|
|
|
| |
If our read callback ran out of data, so had to abort reading, we return
GST_FLOW_ERROR instead of going into an infinite loop.
|
| |
|
|
|
|
| |
Fixes bug #552140.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
newer pulseaudio.
Fixes: #567794
* Hook pulsesink's volume property up with the stream volume -- not the
sink volume in PA.
* Read the device description directly from the sink instead of going
via the mixer.
* Properly implement _reset() methods for both sink and source to avoid
deadlocks when shutting down a pipeline.
* Replace all simple pa_threaded_mainloop_wait() by proper loops to
guarantee that we wait for the right event in case multiple events are
fired. While this is not strictly necessary in many cases it
certainly is more correct and makes me sleep better at night.
* Replace CHECK_DEAD_GOTO macros with proper functions
* Extend the number of supported channels to 32 since that is the actual
limit in PA.
* Get rid of _dispose() methods since we don't need them.
* Increase the volume property upper limit of the sink to 1000.
* Reset function pointers after we disconnect a stream/context. Better
fix for bug 556986.
* Reset the state of the element properly if open/prepare fails
* Cork the PA stream when the pipeline is paused. This allows the PA
* daemon to
close audio device on pause and thus save a bit of power.
* Set PA stream properties based on GST tags such as GST_TAG_TITLE,
GST_TAG_ARTIST, and so on.
Signed-off-by: Lennart Poettering <lennart@poettering.net>
|
|
|
|
| |
Link to properties. Correct titles for examples. Document a few trivial cases. Keep lists in section file and docs/plugins/Makefile.am alphabetically ordered. Fix warnings that gtk-doc points out.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If libsoup-gnome is found use this as it will give us
the GNOME proxy configuration. Otherwise use normal
libsoup.
The GNOME proxy configuration will only be used if
the proxy properties are not set on souphttpsrc
and if the http_proxy environment variable is not
set.
Fixes bug #552140.
|
| |
|
| |
|