vlc | branch: master | Rémi Denis-Courmont <[email protected]> | Fri Jan 18 20:53:21 2019 +0200| [16fb2fea1623e6b00244737b0d209446ebf3165b] | committer: Rémi Denis-Courmont
visualization: split RequestVout in GetVout and PutVout > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=16fb2fea1623e6b00244737b0d209446ebf3165b --- include/vlc_aout.h | 3 ++- modules/visualization/goom.c | 9 ++++----- modules/visualization/visual/visual.c | 8 ++++---- src/audio_output/filters.c | 12 +++++++++--- src/input/decoder.c | 2 ++ src/libvlccore.sym | 3 ++- 6 files changed, 23 insertions(+), 14 deletions(-) diff --git a/include/vlc_aout.h b/include/vlc_aout.h index aa49884001..056d3b9b3e 100644 --- a/include/vlc_aout.h +++ b/include/vlc_aout.h @@ -509,7 +509,8 @@ VLC_API block_t *aout_FiltersDrain(aout_filters_t *); VLC_API void aout_FiltersFlush(aout_filters_t *); VLC_API void aout_FiltersChangeViewpoint(aout_filters_t *, const vlc_viewpoint_t *vp); -VLC_API vout_thread_t * aout_filter_RequestVout( filter_t *, vout_thread_t *p_vout, const video_format_t *p_fmt ); +VLC_API vout_thread_t *aout_filter_GetVout(filter_t *, const video_format_t *); +VLC_API void aout_filter_PutVout(filter_t *, vout_thread_t *p_vout); /** @} */ diff --git a/modules/visualization/goom.c b/modules/visualization/goom.c index c1ee4c1899..2bb042633b 100644 --- a/modules/visualization/goom.c +++ b/modules/visualization/goom.c @@ -32,7 +32,7 @@ #include <vlc_common.h> #include <vlc_plugin.h> #include <vlc_aout.h> /* aout_FormatNbChannels, AOUT_FMTS_SIMILAR */ -#include <vlc_vout.h> /* vout_*Picture, aout_filter_RequestVout */ +#include <vlc_vout.h> /* vout_*Picture, aout_filter_..tVout */ #include <vlc_filter.h> #include <goom/goom.h> @@ -122,8 +122,7 @@ static int Open( vlc_object_t *p_this ) p_thread->fmt.i_chroma = VLC_CODEC_RGB32; p_thread->fmt.i_sar_num = p_thread->fmt.i_sar_den = 1; - p_thread->p_vout = aout_filter_RequestVout( p_filter, NULL, - &p_thread->fmt ); + p_thread->p_vout = aout_filter_GetVout( p_filter, &p_thread->fmt ); if( p_thread->p_vout == NULL ) { msg_Err( p_filter, "no suitable vout module" ); @@ -149,7 +148,7 @@ static int Open( vlc_object_t *p_this ) msg_Err( p_filter, "cannot launch goom thread" ); vlc_mutex_destroy( &p_thread->lock ); vlc_cond_destroy( &p_thread->wait ); - aout_filter_RequestVout( p_filter, p_thread->p_vout, NULL ); + aout_filter_PutVout( p_filter, p_thread->p_vout ); free( p_thread ); return VLC_EGENERIC; } @@ -345,7 +344,7 @@ static void Close( vlc_object_t *p_this ) vlc_join( p_thread->thread, NULL ); /* Free data */ - aout_filter_RequestVout( p_filter, p_thread->p_vout, NULL ); + aout_filter_PutVout( p_filter, p_thread->p_vout ); vlc_mutex_destroy( &p_thread->lock ); vlc_cond_destroy( &p_thread->wait ); diff --git a/modules/visualization/visual/visual.c b/modules/visualization/visual/visual.c index 9c9da45e7a..9458da3be4 100644 --- a/modules/visualization/visual/visual.c +++ b/modules/visualization/visual/visual.c @@ -301,7 +301,7 @@ static int Open( vlc_object_t *p_this ) .primaries = COLOR_PRIMARIES_SRGB, .space = COLOR_SPACE_SRGB, }; - p_sys->p_vout = aout_filter_RequestVout( p_filter, NULL, &fmt ); + p_sys->p_vout = aout_filter_GetVout( p_filter, &fmt ); if( p_sys->p_vout == NULL ) { msg_Err( p_filter, "no suitable vout module" ); @@ -311,7 +311,7 @@ static int Open( vlc_object_t *p_this ) p_sys->fifo = block_FifoNew(); if( unlikely( p_sys->fifo == NULL ) ) { - aout_filter_RequestVout( p_filter, p_sys->p_vout, NULL ); + aout_filter_PutVout( p_filter, p_sys->p_vout ); goto error; } @@ -319,7 +319,7 @@ static int Open( vlc_object_t *p_this ) VLC_THREAD_PRIORITY_VIDEO ) ) { block_FifoRelease( p_sys->fifo ); - aout_filter_RequestVout( p_filter, p_sys->p_vout, NULL ); + aout_filter_PutVout( p_filter, p_sys->p_vout ); goto error; } @@ -407,7 +407,7 @@ static void Close( vlc_object_t *p_this ) vlc_cancel( p_sys->thread ); vlc_join( p_sys->thread, NULL ); block_FifoRelease( p_sys->fifo ); - aout_filter_RequestVout( p_filter, p_sys->p_vout, NULL ); + aout_filter_PutVout( p_filter, p_sys->p_vout ); /* Free the list */ for( int i = 0; i < p_sys->i_effect; i++ ) diff --git a/src/audio_output/filters.c b/src/audio_output/filters.c index 463c6fccf7..1b8f82bc72 100644 --- a/src/audio_output/filters.c +++ b/src/audio_output/filters.c @@ -382,8 +382,7 @@ static int VisualizationCallback (vlc_object_t *obj, const char *var, return VLC_SUCCESS; } -vout_thread_t *aout_filter_RequestVout (filter_t *filter, vout_thread_t *vout, - const video_format_t *fmt) +vout_thread_t *aout_filter_GetVout(filter_t *filter, const video_format_t *fmt) { /* NOTE: This only works from aout_filters_t. * If you want to use visualization filters from another place, you will @@ -391,7 +390,14 @@ vout_thread_t *aout_filter_RequestVout (filter_t *filter, vout_thread_t *vout, * to aout_request_vout_t inside filter_t (i.e. a level of indirection). */ const aout_request_vout_t *req = filter->owner.sys; - return req->pf_request_vout(req->p_private, vout, fmt); + return req->pf_request_vout(req->p_private, NULL, fmt); +} + +void aout_filter_PutVout(filter_t *filter, vout_thread_t *vout) +{ + const aout_request_vout_t *req = filter->owner.sys; + + req->pf_request_vout(req->p_private, vout, NULL); } static int AppendFilter(vlc_object_t *obj, const char *type, const char *name, diff --git a/src/input/decoder.c b/src/input/decoder.c index d4a6ce2ad5..5923c42421 100644 --- a/src/input/decoder.c +++ b/src/input/decoder.c @@ -309,6 +309,8 @@ static vout_thread_t *aout_request_vout( void *p_private, struct decoder_owner *p_owner = dec_get_owner( p_dec ); video_format_t fmt; + assert((p_fmt == NULL) != (p_vout == NULL)); + if (p_fmt != NULL) { fmt = *p_fmt; diff --git a/src/libvlccore.sym b/src/libvlccore.sym index fe69d7b5eb..9a38d310fc 100644 --- a/src/libvlccore.sym +++ b/src/libvlccore.sym @@ -9,7 +9,8 @@ aout_CheckChannelReorder aout_EnableFilter aout_Interleave aout_Deinterleave -aout_filter_RequestVout +aout_filter_GetVout +aout_filter_PutVout aout_FormatPrepare aout_FormatPrint aout_FormatPrintChannels _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
