[FFmpeg-devel] [PATCH] avcodec/atrac3: use AVCodec.init_static_data() to initialize static data

Paul B Mahol onemda at gmail.com
Fri Jan 6 11:26:41 EET 2017


On 1/6/17, James Almer <jamrial at gmail.com> wrote:
> Signed-off-by: James Almer <jamrial at gmail.com>
> ---
>  libavcodec/atrac3.c | 8 ++------
>  1 file changed, 2 insertions(+), 6 deletions(-)
>
> diff --git a/libavcodec/atrac3.c b/libavcodec/atrac3.c
> index 256990b..208762d 100644
> --- a/libavcodec/atrac3.c
> +++ b/libavcodec/atrac3.c
> @@ -771,7 +771,7 @@ static int atrac3_decode_frame(AVCodecContext *avctx,
> void *data,
>      return avctx->block_align;
>  }
>
> -static av_cold void atrac3_init_static_data(void)
> +static av_cold void atrac3_decode_init_static_data(AVCodec *codec)
>  {
>      int i;
>
> @@ -791,7 +791,6 @@ static av_cold void atrac3_init_static_data(void)
>
>  static av_cold int atrac3_decode_init(AVCodecContext *avctx)
>  {
> -    static int static_init_done;
>      int i, ret;
>      int version, delay, samples_per_frame, frame_factor;
>      const uint8_t *edata_ptr = avctx->extradata;
> @@ -802,10 +801,6 @@ static av_cold int atrac3_decode_init(AVCodecContext
> *avctx)
>          return AVERROR(EINVAL);
>      }
>
> -    if (!static_init_done)
> -        atrac3_init_static_data();
> -    static_init_done = 1;
> -
>      /* Take care of the codec-specific extradata. */
>      if (avctx->extradata_size == 14) {
>          /* Parse the extradata, WAV format */
> @@ -932,6 +927,7 @@ AVCodec ff_atrac3_decoder = {
>      .id               = AV_CODEC_ID_ATRAC3,
>      .priv_data_size   = sizeof(ATRAC3Context),
>      .init             = atrac3_decode_init,
> +    .init_static_data = atrac3_decode_init_static_data,
>      .close            = atrac3_decode_close,
>      .decode           = atrac3_decode_frame,
>      .capabilities     = AV_CODEC_CAP_SUBFRAMES | AV_CODEC_CAP_DR1,
> --
> 2.10.2

The issue is that init_static_data is called even when codec is never
gonna be used.
And it is called for both encoder and decoder.

Do we really want such startup speed and memory overhead?


More information about the ffmpeg-devel mailing list