[vlc-devel] [PATCH] RFC: clock/aout: audio preroll discussion

Denis Charmet typx at dinauz.org
Tue Jun 19 20:35:05 CEST 2018


Hi,

I'm afraid my lack of knowledge/understanding of the aout might have 
spawned this thread. Let me ask you a few clarification so we can wrap 
our heads around that.

On 2018-06-19 19:37, RĂ©mi Denis-Courmont wrote:
> Err no. Start() does not have any audio data. Most audio outputs start 
> on the
> first Play(). And that first Play() actually conveys zero padding 
> generated by
> the core to time the playback correctly.
> 
> The problem is that this does not generally work well. It requires 
> that the
> latency is known correctly up-front. Not all audio drivers/hardware 
> can
> support this.

Couldn't we separate the feeding of the buffer from it's playback state 
(in the limits of the buffer)?
Is it what corking does? If not could you explain it? I don't know 
really know how pulseaudio works...

Just to be sure the date field of Play is the date when the audio frame 
passed as parameter should be played?

<thinking out loud>
If so, if the time_get is inaccurate it could cause the buffer to 
underrun. Could we theoretically use that to somehow correct the TimeGet 
errors?
</thinking out loud>

> This is exactly what is already being done if TimeGet() succeeds 
> before
> playback starts.

I agree that if TimeGet is accurate it should work since the delay is 
applied before calling clock_update.

But I need to retry because some of my early tests using alsa showed 
crazy values which kinda spawned my concerns about timing the aout play 
thread. But I've made so many changes that it might end-up better than I 
expected.

>>  2/ Modify the aout API to handle 2 type of aout modules: one like
>> pulseaudio (that handle a play date), and all the others one.
> 
> And this is the only way to get things working somewhat properly 
> within the
> current system, where the playback time is determined ahead.

Just to be sure, can you confirm that the playback time is determined 
ahead so we can start playing the audio after the dejitter delay or are 
there any more complex reasons?

> I prefer solution 2 and the proper API is what we have right now.

So no "timing" notifications that we could use to call clock_update?

Could we somehow write a generic corking wrapper which could be used in 
less evolved aout or is it too specific?

Regards,
-- 
Denis Charmet - TypX
Le mauvais esprit est un art de vivre


More information about the vlc-devel mailing list