On Mon, Jan 4, 2016 at 1:04 AM, Kieran Kunhya <kie...@kunhya.com> wrote: > Decodes YUV422P10 samples in AVI and MOV (Gopro Studio) > Older files with more subbands, skips, Bayer not supported > ---
> +static av_cold int cfhd_init_decoder(AVCodecContext *avctx) > +{ > + CFHDContext *s = avctx->priv_data; > + > + ff_cfhd_init_vlcs(s); > + > + avctx->pix_fmt = AV_PIX_FMT_YUV422P10; > + avctx->bits_per_raw_sample = 16; > + s->avctx = avctx; > + > + return 0; here could be return ff_cfhd_init_vlcs(s); (see below) > +static av_cold int cfhd_close_decoder(AVCodecContext *avctx) > +{ > + CFHDContext *s = avctx->priv_data; > + > + ff_free_vlc(&s->vlc_9); > + ff_free_vlc(&s->vlc_18); > + > + return 0; > +} <snip> > +AVCodec ff_cfhd_decoder = { > + .name = "cfhdvideo", > + .long_name = NULL_IF_CONFIG_SMALL("cfhd video"), > + .type = AVMEDIA_TYPE_VIDEO, > + .id = AV_CODEC_ID_CFHD, > + .priv_data_size = sizeof(CFHDContext), > + .init = cfhd_init_decoder, > + .close = cfhd_close_decoder, > + .decode = cfhd_decode, > + .capabilities = AV_CODEC_CAP_EXPERIMENTAL, also DR1 I believe > +}; <snip> > +av_cold int ff_cfhd_init_vlcs(CFHDContext *s) > +{ > + init_vlc(&s->vlc_9, VLC_BITS, j, new_cfhd_vlc_len, > + 1, 1, new_cfhd_vlc_bits, 4, 4, 0); <snip> > + init_vlc(&s->vlc_18, VLC_BITS, j, new_cfhd_vlc_len, > + 1, 1, new_cfhd_vlc_bits, 4, 4, 0); > + assert(s->vlc_18.table_size == 4572); my only suggestion here is that since this isn't using static vars you should add FF_CODEC_CAP_INIT_THREADSAFE to the internal capabilities, and since allocating memory you should check the init_vlc return value, return it and add the proper FF_CODEC_CAP_INIT_CLEANUP to do the cleanup work for you if you feel like it you could use avpriv_report_missing_feature instead of av_log where you return AVERROR_PATCHWELCOME -- Vittorio _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel