[vlc-devel] [PATCH 11/12] mosaic_bridge: implement the hold_device for filters
Steve Lhomme
robux4 at ycbcr.xyz
Mon Dec 2 14:26:18 CET 2019
Factorize the code with the get_device for the decoder.
---
modules/stream_out/mosaic_bridge.c | 20 ++++++++++++++++----
1 file changed, 16 insertions(+), 4 deletions(-)
diff --git a/modules/stream_out/mosaic_bridge.c b/modules/stream_out/mosaic_bridge.c
index b7255344cd1..f41a3f9b406 100644
--- a/modules/stream_out/mosaic_bridge.c
+++ b/modules/stream_out/mosaic_bridge.c
@@ -252,16 +252,21 @@ static int Open( vlc_object_t *p_this )
return VLC_SUCCESS;
}
-static vlc_decoder_device * video_get_decoder_device( decoder_t *p_dec )
+static vlc_decoder_device * MosaicHoldDecoderDevice( struct decoder_owner *p_owner )
{
- struct decoder_owner *p_owner = dec_get_owner( p_dec );
if ( p_owner->dec_dev == NULL )
{
- p_owner->dec_dev = vlc_decoder_device_Create(p_dec, NULL);
+ p_owner->dec_dev = vlc_decoder_device_Create(&p_owner->dec, NULL);
}
return p_owner->dec_dev ? vlc_decoder_device_Hold(p_owner->dec_dev) : NULL;
}
+static vlc_decoder_device * video_get_decoder_device( decoder_t *p_dec )
+{
+ struct decoder_owner *p_owner = dec_get_owner( p_dec );
+ return MosaicHoldDecoderDevice(p_owner);
+}
+
/*****************************************************************************
* Close
*****************************************************************************/
@@ -293,6 +298,13 @@ static void ReleaseDecoder( decoder_t *p_dec )
decoder_Destroy( p_dec );
}
+static vlc_decoder_device * video_filter_hold_device(vlc_object_t *o, void *sys)
+{
+ VLC_UNUSED(o);
+ struct decoder_owner *p_owner = sys;
+ return MosaicHoldDecoderDevice(p_owner);
+}
+
static void *Add( sout_stream_t *p_stream, const es_format_t *p_fmt )
{
sout_stream_sys_t *p_sys = p_stream->p_sys;
@@ -320,7 +332,7 @@ static void *Add( sout_stream_t *p_stream, const es_format_t *p_fmt )
/* Create user specified video filters */
static const struct filter_video_callbacks cbs =
{
- video_new_buffer_filter, NULL/*TODO*/,
+ video_new_buffer_filter, video_filter_hold_device,
};
psz_chain = var_GetNonEmptyString( p_stream, CFG_PREFIX "vfilter" );
--
2.17.1
More information about the vlc-devel
mailing list