[FFmpeg-devel] [PATCH v2 1/6] lavc: add new API for iterating codecs and codec parsers

Rostislav Pehlivanov atomnuker at gmail.com
Wed Jan 3 21:59:33 EET 2018


On 3 January 2018 at 19:16, Muhammad Faiz <mfcc64 at gmail.com> wrote:

> On Wed, Jan 3, 2018 at 7:42 AM, Josh de Kock <josh at 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.



>
> > +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.


> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>


More information about the ffmpeg-devel mailing list