vlc | branch: master | Rémi Denis-Courmont <[email protected]> | Fri May 4 20:45:05 2018 +0300| [f1b244cd43c0c1cf9a18db612dc3445531694463] | committer: Rémi Denis-Courmont
aout: pass system play time to play callback > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=f1b244cd43c0c1cf9a18db612dc3445531694463 --- include/vlc_aout.h | 4 +++- modules/audio_output/adummy.c | 4 ++-- modules/audio_output/alsa.c | 5 +++-- modules/audio_output/amem.c | 5 ++--- modules/audio_output/audiotrack.c | 3 ++- modules/audio_output/audiounit_ios.m | 4 ++-- modules/audio_output/coreaudio_common.c | 4 +++- modules/audio_output/directsound.c | 3 ++- modules/audio_output/file.c | 5 +++-- modules/audio_output/jack.c | 5 +++-- modules/audio_output/kai.c | 5 +++-- modules/audio_output/mmdevice.c | 3 ++- modules/audio_output/opensles_android.c | 3 ++- modules/audio_output/oss.c | 5 +++-- modules/audio_output/pulse.c | 3 ++- modules/audio_output/sndio.c | 5 +++-- modules/audio_output/tizen_audio.c | 3 ++- modules/audio_output/waveout.c | 5 +++-- modules/audio_output/winstore.c | 3 ++- src/audio_output/aout_internal.h | 2 +- src/audio_output/dec.c | 6 +++--- src/audio_output/output.c | 4 ++-- 22 files changed, 53 insertions(+), 36 deletions(-) diff --git a/include/vlc_aout.h b/include/vlc_aout.h index e3153b8e25..a5c1c26a7d 100644 --- a/include/vlc_aout.h +++ b/include/vlc_aout.h @@ -146,8 +146,10 @@ struct audio_output * \return 0 on success, non-zero on failure or lack of data * \note A stream must have been started when called. */ - void (*play)(audio_output_t *, block_t *); + void (*play)(audio_output_t *, block_t *block, mtime_t date); /**< Queues a block of samples for playback (mandatory, cannot be NULL). + * \param block block of audio samples + * \param date intended system time to render the first sample * \note A stream must have been started when called. */ void (*pause)( audio_output_t *, bool pause, mtime_t date); diff --git a/modules/audio_output/adummy.c b/modules/audio_output/adummy.c index 8c40bdddde..fbec096b25 100644 --- a/modules/audio_output/adummy.c +++ b/modules/audio_output/adummy.c @@ -42,10 +42,10 @@ vlc_module_end () #define A52_FRAME_NB 1536 -static void Play(audio_output_t *aout, block_t *block) +static void Play(audio_output_t *aout, block_t *block, mtime_t date) { block_Release( block ); - (void) aout; + (void) aout; (void) date; } static void Flush(audio_output_t *aout, bool wait) diff --git a/modules/audio_output/alsa.c b/modules/audio_output/alsa.c index acf3ed590d..b9319debba 100644 --- a/modules/audio_output/alsa.c +++ b/modules/audio_output/alsa.c @@ -291,7 +291,7 @@ out: #endif static int TimeGet (audio_output_t *aout, mtime_t *); -static void Play (audio_output_t *, block_t *); +static void Play(audio_output_t *, block_t *, mtime_t); static void Pause (audio_output_t *, bool, mtime_t); static void PauseDummy (audio_output_t *, bool, mtime_t); static void Flush (audio_output_t *, bool); @@ -647,7 +647,7 @@ static int TimeGet (audio_output_t *aout, mtime_t *restrict delay) /** * Queues one audio buffer to the hardware. */ -static void Play (audio_output_t *aout, block_t *block) +static void Play(audio_output_t *aout, block_t *block, mtime_t date) { aout_sys_t *sys = aout->sys; @@ -687,6 +687,7 @@ static void Play (audio_output_t *aout, block_t *block) } } block_Release (block); + (void) date; } /** diff --git a/modules/audio_output/amem.c b/modules/audio_output/amem.c index 30535e1ab8..7e0829e001 100644 --- a/modules/audio_output/amem.c +++ b/modules/audio_output/amem.c @@ -80,12 +80,11 @@ typedef struct bool ready; } aout_sys_t; -static void Play (audio_output_t *aout, block_t *block) +static void Play(audio_output_t *aout, block_t *block, mtime_t date) { aout_sys_t *sys = aout->sys; - sys->play (sys->opaque, block->p_buffer, block->i_nb_samples, - block->i_pts); + sys->play(sys->opaque, block->p_buffer, block->i_nb_samples, date); block_Release (block); } diff --git a/modules/audio_output/audiotrack.c b/modules/audio_output/audiotrack.c index 934826d3c7..3b36e47308 100644 --- a/modules/audio_output/audiotrack.c +++ b/modules/audio_output/audiotrack.c @@ -1727,7 +1727,7 @@ AudioTrack_Thread( void *p_data ) } static void -Play( audio_output_t *p_aout, block_t *p_buffer ) +Play( audio_output_t *p_aout, block_t *p_buffer, mtime_t i_date ) { JNIEnv *env = NULL; size_t i_buffer_offset = 0; @@ -1803,6 +1803,7 @@ Play( audio_output_t *p_aout, block_t *p_buffer ) bailout: vlc_mutex_unlock( &p_sys->lock ); block_Release( p_buffer ); + (void) i_date; } static void diff --git a/modules/audio_output/audiounit_ios.m b/modules/audio_output/audiounit_ios.m index 682ac1e15e..db6e1224d8 100644 --- a/modules/audio_output/audiounit_ios.m +++ b/modules/audio_output/audiounit_ios.m @@ -376,14 +376,14 @@ MuteSet(audio_output_t *p_aout, bool mute) } static void -Play(audio_output_t * p_aout, block_t * p_block) +Play(audio_output_t * p_aout, block_t * p_block, mtime_t date) { aout_sys_t * p_sys = p_aout->sys; if (p_sys->b_muted) block_Release(p_block); else - ca_Play(p_aout, p_block); + ca_Play(p_aout, p_block, date); } #pragma mark initialization diff --git a/modules/audio_output/coreaudio_common.c b/modules/audio_output/coreaudio_common.c index da1ba1a8c9..e43fcf6602 100644 --- a/modules/audio_output/coreaudio_common.c +++ b/modules/audio_output/coreaudio_common.c @@ -281,7 +281,7 @@ ca_Pause(audio_output_t * p_aout, bool pause, mtime_t date) } void -ca_Play(audio_output_t * p_aout, block_t * p_block) +ca_Play(audio_output_t * p_aout, block_t * p_block, mtime_t date) { struct aout_sys_common *p_sys = (struct aout_sys_common *) p_aout->sys; @@ -350,6 +350,8 @@ ca_Play(audio_output_t * p_aout, block_t * p_block) if (i_underrun_size > 0) msg_Warn(p_aout, "underrun of %zu bytes", i_underrun_size); + + (void) date; } int diff --git a/modules/audio_output/directsound.c b/modules/audio_output/directsound.c index 707d2d9deb..df0bf5128b 100644 --- a/modules/audio_output/directsound.c +++ b/modules/audio_output/directsound.c @@ -303,10 +303,11 @@ static HRESULT StreamPlay( aout_stream_t *s, block_t *block ) return Play( VLC_OBJECT(s), s->sys, block ); } -static void OutputPlay( audio_output_t *aout, block_t *block ) +static void OutputPlay( audio_output_t *aout, block_t *block, mtime_t date ) { aout_sys_t *sys = aout->sys; Play( VLC_OBJECT(aout), &sys->s, block ); + (void) date; } static HRESULT Pause( aout_stream_sys_t *sys, bool pause ) diff --git a/modules/audio_output/file.c b/modules/audio_output/file.c index 6fe0083a26..77bca519f0 100644 --- a/modules/audio_output/file.c +++ b/modules/audio_output/file.c @@ -74,7 +74,7 @@ static const int pi_channels_maps[CHANNELS_MAX+1] = * Local prototypes. *****************************************************************************/ static int Open ( vlc_object_t * ); -static void Play ( audio_output_t *, block_t * ); +static void Play ( audio_output_t *, block_t *, mtime_t ); static void Flush ( audio_output_t *, bool ); /***************************************************************************** @@ -315,7 +315,7 @@ static void Stop( audio_output_t *p_aout ) /***************************************************************************** * Play: pretend to play a sound *****************************************************************************/ -static void Play( audio_output_t * p_aout, block_t *p_buffer ) +static void Play( audio_output_t * p_aout, block_t *p_buffer, mtime_t date ) { aout_sys_t *p_sys = p_aout->sys; if( fwrite( p_buffer->p_buffer, p_buffer->i_buffer, 1, @@ -331,6 +331,7 @@ static void Play( audio_output_t * p_aout, block_t *p_buffer ) } block_Release( p_buffer ); + (void) date; } static void Flush( audio_output_t *aout, bool wait ) diff --git a/modules/audio_output/jack.c b/modules/audio_output/jack.c index e995b10ff4..e7696e0978 100644 --- a/modules/audio_output/jack.c +++ b/modules/audio_output/jack.c @@ -70,7 +70,7 @@ typedef struct *****************************************************************************/ static int Open ( vlc_object_t * ); static void Close ( vlc_object_t * ); -static void Play ( audio_output_t * p_aout, block_t * p_block ); +static void Play ( audio_output_t * p_aout, block_t *, mtime_t ); static void Pause ( audio_output_t *aout, bool paused, mtime_t date ); static void Flush ( audio_output_t *p_aout, bool wait ); static int TimeGet ( audio_output_t *, mtime_t * ); @@ -283,7 +283,7 @@ error_out: return status; } -static void Play (audio_output_t * p_aout, block_t * p_block) +static void Play(audio_output_t * p_aout, block_t * p_block, mtime_t date) { aout_sys_t *p_sys = p_aout->sys; jack_ringbuffer_t *rb = p_sys->p_jack_ringbuffer; @@ -310,6 +310,7 @@ static void Play (audio_output_t * p_aout, block_t * p_block) } block_Release(p_block); + (void) date; } /** diff --git a/modules/audio_output/kai.c b/modules/audio_output/kai.c index 99ea583343..59706c1926 100644 --- a/modules/audio_output/kai.c +++ b/modules/audio_output/kai.c @@ -72,7 +72,7 @@ typedef struct *****************************************************************************/ static int Open ( vlc_object_t * ); static void Close ( vlc_object_t * ); -static void Play ( audio_output_t *_p_aout, block_t *block ); +static void Play ( audio_output_t *_p_aout, block_t *block, mtime_t ); static void Pause ( audio_output_t *, bool, mtime_t ); static void Flush ( audio_output_t *, bool ); static int TimeGet ( audio_output_t *, mtime_t *restrict ); @@ -233,7 +233,7 @@ exit_kai_done : /***************************************************************************** * Play: play a sound samples buffer *****************************************************************************/ -static void Play (audio_output_t *p_aout, block_t *block) +static void Play(audio_output_t *p_aout, block_t *block, mtime_t date) { aout_sys_t *p_sys = p_aout->sys; @@ -242,6 +242,7 @@ static void Play (audio_output_t *p_aout, block_t *block) WriteBuffer( p_aout, block->p_buffer, block->i_buffer ); block_Release( block ); + (void) date; } /***************************************************************************** diff --git a/modules/audio_output/mmdevice.c b/modules/audio_output/mmdevice.c index a4f99d3c5e..4a07403acb 100644 --- a/modules/audio_output/mmdevice.c +++ b/modules/audio_output/mmdevice.c @@ -136,7 +136,7 @@ static int TimeGet(audio_output_t *aout, mtime_t *restrict delay) return SUCCEEDED(hr) ? 0 : -1; } -static void Play(audio_output_t *aout, block_t *block) +static void Play(audio_output_t *aout, block_t *block, mtime_t date) { aout_sys_t *sys = aout->sys; HRESULT hr; @@ -146,6 +146,7 @@ static void Play(audio_output_t *aout, block_t *block) LeaveMTA(); vlc_FromHR(aout, hr); + (void) date; } static void Pause(audio_output_t *aout, bool paused, mtime_t date) diff --git a/modules/audio_output/opensles_android.c b/modules/audio_output/opensles_android.c index 475ac93e54..a9d451263d 100644 --- a/modules/audio_output/opensles_android.c +++ b/modules/audio_output/opensles_android.c @@ -321,7 +321,7 @@ static int WriteBuffer(audio_output_t *aout) /***************************************************************************** * Play: play a sound *****************************************************************************/ -static void Play(audio_output_t *aout, block_t *p_buffer) +static void Play(audio_output_t *aout, block_t *p_buffer, mtime_t date) { aout_sys_t *sys = aout->sys; @@ -338,6 +338,7 @@ static void Play(audio_output_t *aout, block_t *p_buffer) ; vlc_mutex_unlock(&sys->lock); + (void) date; } static void PlayedCallback (SLAndroidSimpleBufferQueueItf caller, void *pContext) diff --git a/modules/audio_output/oss.c b/modules/audio_output/oss.c index 1fb380eb62..7202e95992 100644 --- a/modules/audio_output/oss.c +++ b/modules/audio_output/oss.c @@ -88,7 +88,7 @@ vlc_module_begin () vlc_module_end () static int TimeGet (audio_output_t *, mtime_t *); -static void Play (audio_output_t *, block_t *); +static void Play(audio_output_t *, block_t *, mtime_t); static void Pause (audio_output_t *, bool, mtime_t); static void Flush (audio_output_t *, bool); @@ -269,7 +269,7 @@ static int TimeGet (audio_output_t *aout, mtime_t *restrict pts) /** * Queues one audio buffer to the hardware. */ -static void Play (audio_output_t *aout, block_t *block) +static void Play(audio_output_t *aout, block_t *block, mtime_t date) { aout_sys_t *sys = aout->sys; int fd = sys->fd; @@ -286,6 +286,7 @@ static void Play (audio_output_t *aout, block_t *block) msg_Err (aout, "cannot write samples: %s", vlc_strerror_c(errno)); } block_Release (block); + (void) date; } /** diff --git a/modules/audio_output/pulse.c b/modules/audio_output/pulse.c index e216975e00..798bf2a690 100644 --- a/modules/audio_output/pulse.c +++ b/modules/audio_output/pulse.c @@ -485,7 +485,7 @@ static void *data_convert(block_t **pp) /** * Queue one audio frame to the playback stream */ -static void Play(audio_output_t *aout, block_t *block) +static void Play(audio_output_t *aout, block_t *block, mtime_t date) { aout_sys_t *sys = aout->sys; pa_stream *s = sys->stream; @@ -523,6 +523,7 @@ static void Play(audio_output_t *aout, block_t *block) } pa_threaded_mainloop_unlock(sys->mainloop); + (void) date; } /** diff --git a/modules/audio_output/sndio.c b/modules/audio_output/sndio.c index 548b6e31ca..c240f505c4 100644 --- a/modules/audio_output/sndio.c +++ b/modules/audio_output/sndio.c @@ -44,7 +44,7 @@ vlc_module_begin () vlc_module_end () static int TimeGet (audio_output_t *, mtime_t *); -static void Play (audio_output_t *, block_t *); +static void Play(audio_output_t *, block_t *, mtime_t); static void Flush (audio_output_t *, bool); static int VolumeSet (audio_output_t *, float); static int MuteSet (audio_output_t *, bool); @@ -230,13 +230,14 @@ static int TimeGet (audio_output_t *aout, mtime_t *restrict delay) return 0; } -static void Play (audio_output_t *aout, block_t *block) +static void Play(audio_output_t *aout, block_t *block, mtime_t date) { aout_sys_t *sys = aout->sys; sio_write (sys->hdl, block->p_buffer, block->i_buffer); sys->delay += block->i_nb_samples; block_Release (block); + (void) date; } static void Flush (audio_output_t *aout, bool wait) diff --git a/modules/audio_output/tizen_audio.c b/modules/audio_output/tizen_audio.c index b10265b9d2..972bb667a7 100644 --- a/modules/audio_output/tizen_audio.c +++ b/modules/audio_output/tizen_audio.c @@ -265,7 +265,7 @@ Stop( audio_output_t *p_aout ) } static void -Play( audio_output_t *p_aout, block_t *p_block ) +Play( audio_output_t *p_aout, block_t *p_block, mtime_t date ) { aout_sys_t *p_sys = p_aout->sys; @@ -295,6 +295,7 @@ Play( audio_output_t *p_aout, block_t *p_block ) } } } + (void) date; } static void diff --git a/modules/audio_output/waveout.c b/modules/audio_output/waveout.c index 5b67ddb0b4..750bd7840a 100644 --- a/modules/audio_output/waveout.c +++ b/modules/audio_output/waveout.c @@ -49,7 +49,7 @@ *****************************************************************************/ static int Open ( vlc_object_t * ); static void Close ( vlc_object_t * ); -static void Play ( audio_output_t *, block_t * ); +static void Play ( audio_output_t *, block_t *, mtime_t ); /***************************************************************************** * notification_thread_t: waveOut event thread @@ -343,7 +343,7 @@ static int Start( audio_output_t *p_aout, audio_sample_format_t *restrict fmt ) * This doesn't actually play the buffer. This just stores the buffer so it * can be played by the callback thread. *****************************************************************************/ -static void Play( audio_output_t *p_aout, block_t *block ) +static void Play( audio_output_t *p_aout, block_t *block, mtime_t date ) { aout_sys_t *sys = p_aout->sys; @@ -380,6 +380,7 @@ static void Play( audio_output_t *p_aout, block_t *block ) sys->i_frames++; sys->i_played_length += block->i_length; vlc_mutex_unlock( &sys->lock ); + (void) date; } /***************************************************************************** diff --git a/modules/audio_output/winstore.c b/modules/audio_output/winstore.c index 1990b899e4..494f61d332 100644 --- a/modules/audio_output/winstore.c +++ b/modules/audio_output/winstore.c @@ -150,7 +150,7 @@ static int TimeGet(audio_output_t *aout, mtime_t *restrict delay) return SUCCEEDED(hr) ? 0 : -1; } -static void Play(audio_output_t *aout, block_t *block) +static void Play(audio_output_t *aout, block_t *block, mtime_t date) { aout_sys_t *sys = aout->sys; if( unlikely( sys->client == NULL ) ) @@ -161,6 +161,7 @@ static void Play(audio_output_t *aout, block_t *block) LeaveMTA(); vlc_FromHR(aout, hr); + (void) date; } static void Pause(audio_output_t *aout, bool paused, mtime_t date) diff --git a/src/audio_output/aout_internal.h b/src/audio_output/aout_internal.h index 2aad079b45..19ad579247 100644 --- a/src/audio_output/aout_internal.h +++ b/src/audio_output/aout_internal.h @@ -130,7 +130,7 @@ void aout_Destroy (audio_output_t *); int aout_OutputNew(audio_output_t *, audio_sample_format_t *, aout_filters_cfg_t *filters_cfg); int aout_OutputTimeGet(audio_output_t *, mtime_t *); -void aout_OutputPlay(audio_output_t *, block_t *); +void aout_OutputPlay(audio_output_t *, block_t *block, mtime_t date); void aout_OutputPause( audio_output_t * p_aout, bool, mtime_t ); void aout_OutputFlush( audio_output_t * p_aout, bool ); void aout_OutputDelete( audio_output_t * p_aout ); diff --git a/src/audio_output/dec.c b/src/audio_output/dec.c index 2d330c3348..135768381a 100644 --- a/src/audio_output/dec.c +++ b/src/audio_output/dec.c @@ -221,7 +221,7 @@ static void aout_DecSilence (audio_output_t *aout, mtime_t length, mtime_t pts) block->i_pts = pts; block->i_dts = pts; block->i_length = length; - aout_OutputPlay (aout, block); + aout_OutputPlay(aout, block, pts); } static void aout_DecSynchronize(audio_output_t *aout, mtime_t dec_pts) @@ -396,7 +396,7 @@ int aout_DecPlay(audio_output_t *aout, block_t *block) /* Output */ owner->sync.end = block->i_pts + block->i_length + 1; owner->sync.discontinuity = false; - aout_OutputPlay (aout, block); + aout_OutputPlay(aout, block, block->i_pts); atomic_fetch_add_explicit(&owner->buffers_played, 1, memory_order_relaxed); return ret; drop: @@ -451,7 +451,7 @@ void aout_DecFlush (audio_output_t *aout, bool wait) { block_t *block = aout_FiltersDrain (owner->filters); if (block) - aout_OutputPlay (aout, block); + aout_OutputPlay(aout, block, block->i_pts); } else aout_FiltersFlush (owner->filters); diff --git a/src/audio_output/output.c b/src/audio_output/output.c index 1bbbe9716e..6939b08301 100644 --- a/src/audio_output/output.c +++ b/src/audio_output/output.c @@ -627,7 +627,7 @@ int aout_OutputTimeGet (audio_output_t *aout, mtime_t *delay) * \note This can only be called after a successful aout_OutputNew(). * \warning The caller must NOT hold the audio output lock. */ -void aout_OutputPlay (audio_output_t *aout, block_t *block) +void aout_OutputPlay(audio_output_t *aout, block_t *block, mtime_t date) { #ifndef NDEBUG aout_owner_t *owner = aout_owner (aout); @@ -637,7 +637,7 @@ void aout_OutputPlay (audio_output_t *aout, block_t *block) owner->mixer_format.i_frame_length); #endif aout_OutputLock(aout); - aout->play (aout, block); + aout->play(aout, block, date); aout_OutputUnlock(aout); } _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
