Due to an influx of spam, we have had to impose restrictions on new accounts. Please see this wiki page for instructions on how to get full permissions. Sorry for the inconvenience.
Admin message
The migration is almost done, at least the rest should happen in the background. There are still a few technical difference between the old cluster and the new ones, and they are summarized in this issue. Please pay attention to the TL:DR at the end of the comment.
audiosink: expose more audioringbuffer vmethods to child sinks
The existing reset vmethod is deprecated.
The audio sink will fallback to calling reset if pause or stop are not provided and will fallback to calling start if resume is not provided.
Existing audio sinks continue to work as before.
This change is needed for sinks that need to distinguish between a pause and a stop (currently both are handled by a reset).
Version: 1.12.3
Designs
Child items
...
Show closed items
Linked items
0
Link issues together to show that they're related.
Learn more.
Final patch for now. Has minor cleanups compared to previous one.
I kept the new clean_all vmethod. Does not hurt.
To summarize this patch: it exposes a bunch of missing ringbuffer vmethods to child classes. Care has been taken to not affect existing audio sinks and to preserve ABI.
I took use of your patch to expose the vmethods to child sinks, in my case to alsasink. The vmethods I wanted to expose was the following; pause, resume and stop.
Pause worked as expected, however when using resume, I noticed that the audioringbuffer never receives a start signal and is therefore stuck in a waiting state. To solve this I changed in gst_audio_sink_ring_buffer_resume() to always call gst_audio_sink_ring_buffer_start() and thereby a start signal is sent to the audioringbuffer.
Not sure your change is correct.
Looks like now, resume will call the resume vmethod (if it exists) and start vmethod (always).
This will probably break other audio sinks.
You probably want to call start() from the alsasink resume (if that is what alsasink requires/needs).
From my understanding when paused is triggered, the audioringbuffer is signaled to paused (see gst_audio_ring_buffer_pause_unlocked()). To resume the audioringbuffer gst_audio_sink_ring_buffer_start() have to be called to signal the buffer.
The alsasink can not signal the audioringbuffer to start(), due to that it is a child class and have no information about the audioringbuffer. That is why audiosink signals the audioringbuffer to resume/start.