[vlc-devel] [PATCH 12/12] transcode: implement the hold_device for filters
Steve Lhomme
robux4 at ycbcr.xyz
Mon Dec 2 14:26:19 CET 2019
Factorize the code with the get_device for the decoder.
---
modules/stream_out/transcode/video.c | 21 +++++++++++++++------
1 file changed, 15 insertions(+), 6 deletions(-)
diff --git a/modules/stream_out/transcode/video.c b/modules/stream_out/transcode/video.c
index 6e79817d3b4..d8984e86fa2 100644
--- a/modules/stream_out/transcode/video.c
+++ b/modules/stream_out/transcode/video.c
@@ -60,14 +60,17 @@ static const video_format_t* filtered_video_format( sout_stream_id_sys_t *id,
return &p_pic->format;
}
+static vlc_decoder_device *TranscodeHoldDecoderDevice(vlc_object_t *o, sout_stream_id_sys_t *id)
+{
+ if (id->dec_dev == NULL)
+ id->dec_dev = vlc_decoder_device_Create( o, NULL );
+ return id->dec_dev ? vlc_decoder_device_Hold(id->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 );
- if (p_owner->id->dec_dev == NULL)
- {
- p_owner->id->dec_dev = vlc_decoder_device_Create( p_dec, NULL );
- }
- return p_owner->id->dec_dev ? vlc_decoder_device_Hold(p_owner->id->dec_dev) : NULL;
+ return TranscodeHoldDecoderDevice(VLC_OBJECT(p_dec), p_owner->id);
}
static void debug_format( sout_stream_t *p_stream, const es_format_t *fmt )
@@ -80,6 +83,12 @@ static void debug_format( sout_stream_t *p_stream, const es_format_t *fmt )
fmt->video.orientation );
}
+static vlc_decoder_device * transcode_video_filter_hold_device(vlc_object_t *o, void *sys)
+{
+ sout_stream_id_sys_t *id = sys;
+ return TranscodeHoldDecoderDevice(o, id);
+}
+
static int video_update_format_decoder( decoder_t *p_dec, vlc_video_context *vctx )
{
struct decoder_owner *p_owner = dec_get_owner( p_dec );
@@ -245,7 +254,7 @@ int transcode_video_init( sout_stream_t *p_stream, const es_format_t *p_fmt,
static const struct filter_video_callbacks transcode_filter_video_cbs =
{
- transcode_video_filter_buffer_new, NULL/*TODO*/,
+ transcode_video_filter_buffer_new, transcode_video_filter_hold_device,
};
/* Take care of the scaling and chroma conversions. */
--
2.17.1
More information about the vlc-devel
mailing list