On Thu, Jan 4, 2018 at 2:59 AM, Rostislav Pehlivanov <atomnu...@gmail.com> wrote: > On 3 January 2018 at 19:16, Muhammad Faiz <mfc...@gmail.com> wrote: > >> On Wed, Jan 3, 2018 at 7:42 AM, Josh de Kock <j...@itanimul.li> wrote: >> > Also replace linked list with an array. >> > --- >> > configure | 12 +- >> > doc/APIchanges | 4 + >> > libavcodec/allcodecs.c | 1473 ++++++++++++++++++++++++++++-- >> ------------------ >> > libavcodec/avcodec.h | 31 + >> > libavcodec/parser.c | 87 ++- >> > libavcodec/utils.c | 105 ---- >> > libavcodec/version.h | 3 + >> > 7 files changed, 974 insertions(+), 741 deletions(-) >> > >> >> > + >> > +#include "codec_list.c" >> >> Won't work when building outside source directory. Use >> "libavcodec/codec_list.c" >> > > It pretty much will, this is exactly how hwaccels and bitstream filters > currently work.
At bitstream_filters.c: #include "libavcodec/bsf_list.c" > > > >> >> > +static void av_codec_init_next(void) >> > +{ >> > + AVCodec *prev = NULL, *p; >> > + void *i = 0; >> > + while ((p = (AVCodec*)av_codec_iterate(&i))) { >> >> Better use: for (i = 0; codec_list[i]; i++) >> >> >> > diff --git a/libavcodec/parser.c b/libavcodec/parser.c >> > index 670680e..76532e2 100644 >> > --- a/libavcodec/parser.c >> > +++ b/libavcodec/parser.c >> > @@ -32,33 +32,104 @@ >> > #include "internal.h" >> > #include "parser.h" >> > >> > -static AVCodecParser *av_first_parser = NULL; >> > +#include "pthread.h" >> > + >> > +/* Parsers */ >> > +extern AVCodecParser ff_aac_parser; >> > +extern AVCodecParser ff_aac_latm_parser; >> > +extern AVCodecParser ff_ac3_parser; >> > +extern AVCodecParser ff_adx_parser; >> > +extern AVCodecParser ff_bmp_parser; >> > +extern AVCodecParser ff_cavsvideo_parser; >> > +extern AVCodecParser ff_cook_parser; >> > +extern AVCodecParser ff_dca_parser; >> > +extern AVCodecParser ff_dirac_parser; >> > +extern AVCodecParser ff_dnxhd_parser; >> > +extern AVCodecParser ff_dpx_parser; >> > +extern AVCodecParser ff_dvaudio_parser; >> > +extern AVCodecParser ff_dvbsub_parser; >> > +extern AVCodecParser ff_dvdsub_parser; >> > +extern AVCodecParser ff_dvd_nav_parser; >> > +extern AVCodecParser ff_flac_parser; >> > +extern AVCodecParser ff_g729_parser; >> > +extern AVCodecParser ff_gsm_parser; >> > +extern AVCodecParser ff_h261_parser; >> > +extern AVCodecParser ff_h263_parser; >> > +extern AVCodecParser ff_h264_parser; >> > +extern AVCodecParser ff_hevc_parser; >> > +extern AVCodecParser ff_mjpeg_parser; >> > +extern AVCodecParser ff_mlp_parser; >> > +extern AVCodecParser ff_mpeg4video_parser; >> > +extern AVCodecParser ff_mpegaudio_parser; >> > +extern AVCodecParser ff_mpegvideo_parser; >> > +extern AVCodecParser ff_opus_parser; >> > +extern AVCodecParser ff_png_parser; >> > +extern AVCodecParser ff_pnm_parser; >> > +extern AVCodecParser ff_rv30_parser; >> > +extern AVCodecParser ff_rv40_parser; >> > +extern AVCodecParser ff_sipr_parser; >> > +extern AVCodecParser ff_tak_parser; >> > +extern AVCodecParser ff_vc1_parser; >> > +extern AVCodecParser ff_vorbis_parser; >> > +extern AVCodecParser ff_vp3_parser; >> > +extern AVCodecParser ff_vp8_parser; >> > +extern AVCodecParser ff_vp9_parser; >> > +extern AVCodecParser ff_xma_parser; >> >> Why these are not in allcodecs.c? >> > > Because they're parsers. > They still need initialize next pointer. So better to initialize it on avcodec_register_all(). _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel