[FFmpeg-devel] [PATCH] avcodec/atrac3: use AVCodec.init_static_data() to initialize static data
Michael Niedermayer
michael at niedermayer.cc
Fri Jan 6 16:39:39 EET 2017
On Fri, Jan 06, 2017 at 02:54:42PM +0100, Paul B Mahol wrote:
> On 1/6/17, James Almer <jamrial at gmail.com> wrote:
> > On 1/6/2017 6:26 AM, Paul B Mahol wrote:
> >> 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?
> >
> > Supposedly hardcoded tables builds were added to counter that, at least
> > partially.
> >
> > In any case it's not important for me, so this can be dropped if it has
> > no real advantages. I remember more than one email from people loathing
> > global state, so I assumed it would be proper to do it this way.
>
> I have no real opinion on this, but maybe others do have?
>
> We could add smarter init_static_data...
+1
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
Frequently ignored answer#1 FFmpeg bugs should be sent to our bugtracker. User
questions about the command line tools should be sent to the ffmpeg-user ML.
And questions about how to use libav* should be sent to the libav-user ML.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20170106/004d8f35/attachment.sig>
More information about the ffmpeg-devel
mailing list