[vlc-devel] [PATCH] packetizer: initialize all callback fields and reorder some initialization
Zhao Zhili
quinkblack at foxmail.com
Tue Jun 5 10:49:40 CEST 2018
Please review, thanks!
On 2018年06月01日 14:19, Zhao Zhili wrote:
> A failed module probe may set the callback fileds point to that module.
> ---
> modules/packetizer/a52.c | 2 ++
> modules/packetizer/avparser.c | 2 ++
> modules/packetizer/copy.c | 14 ++++++++------
> modules/packetizer/dts.c | 2 ++
> modules/packetizer/flac.c | 1 +
> modules/packetizer/h264.c | 1 +
> modules/packetizer/hevc.c | 1 +
> modules/packetizer/mlp.c | 2 ++
> modules/packetizer/mpeg4audio.c | 2 ++
> modules/packetizer/mpeg4video.c | 2 ++
> modules/packetizer/mpegaudio.c | 2 ++
> modules/packetizer/mpegvideo.c | 1 +
> modules/packetizer/vc1.c | 9 +++++----
> 13 files changed, 31 insertions(+), 10 deletions(-)
>
> diff --git a/modules/packetizer/a52.c b/modules/packetizer/a52.c
> index 269a291..dea3dc0 100644
> --- a/modules/packetizer/a52.c
> +++ b/modules/packetizer/a52.c
> @@ -353,7 +353,9 @@ static int Open( vlc_object_t *p_this )
> p_dec->fmt_out.audio.i_rate = 0;
>
> /* Set callback */
> + p_dec->pf_decode = NULL;
> p_dec->pf_packetize = PacketizeBlock;
> p_dec->pf_flush = PacketizeFlush;
> + p_dec->pf_get_cc = NULL;
> return VLC_SUCCESS;
> }
> diff --git a/modules/packetizer/avparser.c b/modules/packetizer/avparser.c
> index 5ec26f4..8fc0e73 100644
> --- a/modules/packetizer/avparser.c
> +++ b/modules/packetizer/avparser.c
> @@ -126,8 +126,10 @@ int avparser_OpenPacketizer( vlc_object_t *p_this )
> av_parser_close( p_ctx );
> return VLC_ENOMEM;
> }
> + p_dec->pf_decode = NULL;
> p_dec->pf_packetize = Packetize;
> p_dec->pf_flush = FlushPacketizer;
> + p_dec->pf_get_cc = NULL;
> p_sys->p_parser_ctx = p_ctx;
> p_sys->p_codec_ctx = p_codec_ctx;
> p_sys->i_offset = 0;
> diff --git a/modules/packetizer/copy.c b/modules/packetizer/copy.c
> index b66a4b7..6253d6a 100644
> --- a/modules/packetizer/copy.c
> +++ b/modules/packetizer/copy.c
> @@ -84,12 +84,6 @@ static int Open( vlc_object_t *p_this )
> return VLC_EGENERIC;
> }
>
> - if( p_dec->fmt_in.i_cat == SPU_ES )
> - p_dec->pf_packetize = PacketizeSub;
> - else
> - p_dec->pf_packetize = Packetize;
> - p_dec->pf_flush = Flush;
> -
> p_dec->p_sys = p_sys = malloc( sizeof(*p_sys) );
> if (unlikely(p_sys == NULL))
> return VLC_ENOMEM;
> @@ -119,6 +113,14 @@ static int Open( vlc_object_t *p_this )
> }
> }
>
> + p_dec->pf_decode = NULL;
> + if( p_dec->fmt_in.i_cat == SPU_ES )
> + p_dec->pf_packetize = PacketizeSub;
> + else
> + p_dec->pf_packetize = Packetize;
> + p_dec->pf_flush = Flush;
> + p_dec->pf_get_cc = NULL;
> +
> /* Create the output format */
> es_format_Copy( &p_dec->fmt_out, &p_dec->fmt_in );
> p_dec->fmt_out.i_codec = fcc;
> diff --git a/modules/packetizer/dts.c b/modules/packetizer/dts.c
> index 12245c2..de7894c 100644
> --- a/modules/packetizer/dts.c
> +++ b/modules/packetizer/dts.c
> @@ -364,7 +364,9 @@ static int Open( vlc_object_t *p_this )
> p_dec->fmt_out.audio = p_dec->fmt_in.audio;
>
> /* Set callback */
> + p_dec->pf_decode = NULL;
> p_dec->pf_packetize = PacketizeBlock;
> p_dec->pf_flush = PacketizeFlush;
> + p_dec->pf_get_cc = NULL;
> return VLC_SUCCESS;
> }
> diff --git a/modules/packetizer/flac.c b/modules/packetizer/flac.c
> index bc9ab04..4f316f7 100644
> --- a/modules/packetizer/flac.c
> +++ b/modules/packetizer/flac.c
> @@ -562,6 +562,7 @@ static int Open(vlc_object_t *p_this)
> p_dec->pf_decode = NULL;
> p_dec->pf_packetize = Packetize;
> p_dec->pf_flush = Flush;
> + p_dec->pf_get_cc = NULL;
>
> return VLC_SUCCESS;
> }
> diff --git a/modules/packetizer/h264.c b/modules/packetizer/h264.c
> index 4f8a97d..8f5761e 100644
> --- a/modules/packetizer/h264.c
> +++ b/modules/packetizer/h264.c
> @@ -453,6 +453,7 @@ static int Open( vlc_object_t *p_this )
> }
>
> /* CC are the same for H264/AVC in T35 sections (ETSI TS 101 154) */
> + p_dec->pf_decode = NULL;
> p_dec->pf_get_cc = GetCc;
> p_dec->pf_flush = PacketizeFlush;
>
> diff --git a/modules/packetizer/hevc.c b/modules/packetizer/hevc.c
> index d71a0bf..1e596cd 100644
> --- a/modules/packetizer/hevc.c
> +++ b/modules/packetizer/hevc.c
> @@ -230,6 +230,7 @@ static int Open(vlc_object_t *p_this)
> {
> p_dec->pf_packetize = PacketizeAnnexB;
> }
> + p_dec->pf_decode = NULL;
> p_dec->pf_flush = PacketizeFlush;
> p_dec->pf_get_cc = GetCc;
>
> diff --git a/modules/packetizer/mlp.c b/modules/packetizer/mlp.c
> index 6f16e6c..829f2cc 100644
> --- a/modules/packetizer/mlp.c
> +++ b/modules/packetizer/mlp.c
> @@ -492,8 +492,10 @@ static int Open( vlc_object_t *p_this )
> p_dec->fmt_out.audio.i_rate = 0;
>
> /* Set callback */
> + p_dec->pf_decode = NULL;
> p_dec->pf_packetize = Packetize;
> p_dec->pf_flush = Flush;
> + p_dec->pf_get_cc = NULL;
> return VLC_SUCCESS;
> }
>
> diff --git a/modules/packetizer/mpeg4audio.c b/modules/packetizer/mpeg4audio.c
> index 9237853..6ece823 100644
> --- a/modules/packetizer/mpeg4audio.c
> +++ b/modules/packetizer/mpeg4audio.c
> @@ -295,8 +295,10 @@ static int OpenPacketizer(vlc_object_t *p_this)
> p_dec->fmt_out.audio.i_rate : 48000, 1);
>
> /* Set callbacks */
> + p_dec->pf_decode = NULL;
> p_dec->pf_packetize = Packetize;
> p_dec->pf_flush = Flush;
> + p_dec->pf_get_cc = NULL;
>
> return VLC_SUCCESS;
> }
> diff --git a/modules/packetizer/mpeg4video.c b/modules/packetizer/mpeg4video.c
> index c95e913..0772d7d 100644
> --- a/modules/packetizer/mpeg4video.c
> +++ b/modules/packetizer/mpeg4video.c
> @@ -166,8 +166,10 @@ static int Open( vlc_object_t *p_this )
> }
>
> /* Set callback */
> + p_dec->pf_decode = NULL;
> p_dec->pf_packetize = Packetize;
> p_dec->pf_flush = PacketizeFlush;
> + p_dec->pf_get_cc = NULL;
>
> return VLC_SUCCESS;
> }
> diff --git a/modules/packetizer/mpegaudio.c b/modules/packetizer/mpegaudio.c
> index ab01b5b..01dd493 100644
> --- a/modules/packetizer/mpegaudio.c
> +++ b/modules/packetizer/mpegaudio.c
> @@ -644,8 +644,10 @@ static int Open( vlc_object_t *p_this )
> p_dec->fmt_out.audio.i_rate = 0; /* So end_date gets initialized */
>
> /* Set callback */
> + p_dec->pf_decode = NULL;
> p_dec->pf_packetize = DecodeBlock;
> p_dec->pf_flush = Flush;
> + p_dec->pf_get_cc = NULL;
>
> /* Start with the minimum size for a free bitrate frame */
> p_sys->i_free_frame_size = MPGA_HEADER_SIZE;
> diff --git a/modules/packetizer/mpegvideo.c b/modules/packetizer/mpegvideo.c
> index 318b3f7..fd4fdcc 100644
> --- a/modules/packetizer/mpegvideo.c
> +++ b/modules/packetizer/mpegvideo.c
> @@ -257,6 +257,7 @@ static int Open( vlc_object_t *p_this )
> p_sys->i_cc_flags = 0;
> cc_Init( &p_sys->cc );
>
> + p_dec->pf_decode = NULL;
> p_dec->pf_packetize = Packetize;
> p_dec->pf_flush = PacketizeFlush;
> p_dec->pf_get_cc = GetCc;
> diff --git a/modules/packetizer/vc1.c b/modules/packetizer/vc1.c
> index 7ca438f..6e48162 100644
> --- a/modules/packetizer/vc1.c
> +++ b/modules/packetizer/vc1.c
> @@ -146,10 +146,6 @@ static int Open( vlc_object_t *p_this )
> if( p_dec->fmt_in.i_codec != VLC_CODEC_VC1 )
> return VLC_EGENERIC;
>
> - p_dec->pf_packetize = Packetize;
> - p_dec->pf_flush = Flush;
> - p_dec->pf_get_cc = GetCc;
> -
> /* Create the output format */
> es_format_Copy( &p_dec->fmt_out, &p_dec->fmt_in );
> p_dec->p_sys = p_sys = malloc( sizeof( decoder_sys_t ) );
> @@ -200,6 +196,11 @@ static int Open( vlc_object_t *p_this )
> cc_Init( &p_sys->cc );
> cc_Init( &p_sys->cc_next );
>
> + p_dec->pf_decode = NULL;
> + p_dec->pf_packetize = Packetize;
> + p_dec->pf_flush = Flush;
> + p_dec->pf_get_cc = GetCc;
> +
> return VLC_SUCCESS;
> }
>
More information about the vlc-devel
mailing list