[vlc-devel] [PATCH 21/26] decoder: allow decoders to set their output vlc_video_context
Thomas Guillem
thomas at gllm.fr
Mon Sep 23 15:53:20 CEST 2019
On Fri, Sep 20, 2019, at 16:28, Steve Lhomme wrote:
> ---
> include/vlc_codec.h | 3 +++
> src/input/decoder_helpers.c | 14 ++++++++++++++
> 2 files changed, 17 insertions(+)
>
> diff --git a/include/vlc_codec.h b/include/vlc_codec.h
> index bd13a024207..098ffb21760 100644
> --- a/include/vlc_codec.h
> +++ b/include/vlc_codec.h
> @@ -111,6 +111,9 @@ struct decoder_t
> /* Output format of decoder/packetizer */
> es_format_t fmt_out;
>
> + /* Video context used by picture coming out of the decoder */
> + struct vlc_video_context *vctx_out;
Why not passing this video context as a decoder_UpdateVideoOutput() argument ?
> +
> /* Tell the decoder if it is allowed to drop frames */
> bool b_frame_drop_allowed;
>
> diff --git a/src/input/decoder_helpers.c b/src/input/decoder_helpers.c
> index e12fd836a3d..0e23f11fd6b 100644
> --- a/src/input/decoder_helpers.c
> +++ b/src/input/decoder_helpers.c
> @@ -51,6 +51,12 @@ void decoder_Init( decoder_t *p_dec, const
> es_format_t *restrict p_fmt )
>
> void decoder_Clean( decoder_t *p_dec )
> {
> + if ( p_dec->vctx_out )
> + {
> + vlc_video_context_Release( p_dec->vctx_out );
> + p_dec->vctx_out = NULL;
> + }
> +
> if ( p_dec->p_module != NULL )
> {
> module_unneed(p_dec, p_dec->p_module);
> @@ -106,6 +112,14 @@ int decoder_UpdateVideoOutput( decoder_t *dec )
> dec->cbs->video.format_update == NULL) )
> return -1;
>
> +#ifndef NDEBUG
> + if (dec->vctx_out == NULL)
> + {
> + const vlc_chroma_description_t *dsc =
> + vlc_fourcc_GetChromaDescription( dec->fmt_out.video.i_chroma );
> + assert( dsc != NULL && dsc->plane_count != 0 );
> + }
> +#endif
> return dec->cbs->video.format_update( dec );
> }
>
> --
> 2.17.1
>
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel
More information about the vlc-devel
mailing list