diff --git a/libavcodec/atrac3.c b/libavcodec/atrac3.c index b14fd466e3..052bef0e1c 100644 --- a/libavcodec/atrac3.c +++ b/libavcodec/atrac3.c @@ -837,7 +837,7 @@ static int atrac3_decode_frame(AVCodecContext *avctx, void *data, return avctx->block_align; } -static void atrac3_init_static_data(AVCodec *codec) +static void atrac3_init_static_data(void) { int i; @@ -864,6 +864,7 @@ static void atrac3_init_static_data(AVCodec *codec) 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; @@ -874,6 +875,10 @@ 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 */ @@ -1003,7 +1008,6 @@ AVCodec ff_atrac3_decoder = { .id = AV_CODEC_ID_ATRAC3, .priv_data_size = sizeof(ATRAC3Context), .init = atrac3_decode_init, - .init_static_data = atrac3_init_static_data, .close = atrac3_decode_close, .decode = atrac3_decode_frame, .capabilities = CODEC_CAP_SUBFRAMES | CODEC_CAP_DR1,