av_*_next() API for libavcodec
authorMichael Niedermayer <michaelni@gmx.at>
Wed, 12 Dec 2007 18:40:11 +0000 (18:40 +0000)
committerMichael Niedermayer <michaelni@gmx.at>
Wed, 12 Dec 2007 18:40:11 +0000 (18:40 +0000)
Originally committed as revision 11204 to svn://svn.ffmpeg.org/ffmpeg/trunk

ffmpeg.c
libavcodec/avcodec.h
libavcodec/bitstream_filter.c
libavcodec/parser.c
libavcodec/utils.c

index c656663..7c47ce8 100644 (file)
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -3321,8 +3321,8 @@ static void opt_show_formats(void)
     AVInputFormat *ifmt;
     AVOutputFormat *ofmt;
     URLProtocol *up;
-    AVCodec *p, *p2;
-    AVBitStreamFilter *bsf;
+    AVCodec *p=NULL, *p2;
+    AVBitStreamFilter *bsf=NULL;
     const char *last_name;
 
     printf("File formats:\n");
@@ -3373,7 +3373,7 @@ static void opt_show_formats(void)
         const char *type_str;
 
         p2=NULL;
-        for(p = first_avcodec; p != NULL; p = p->next) {
+        while(p= av_codec_next(p)) {
             if((p2==NULL || strcmp(p->name, p2->name)<0) &&
                 strcmp(p->name, last_name)>0){
                 p2= p;
@@ -3419,7 +3419,7 @@ static void opt_show_formats(void)
     printf("\n");
 
     printf("Bitstream filters:\n");
-    for(bsf = first_bitstream_filter; bsf != NULL; bsf = bsf->next)
+    while(bsf = av_bitstream_filter_next(bsf))
         printf(" %s", bsf->name);
     printf("\n");
 
index 59f04f8..e802522 100644 (file)
@@ -33,8 +33,8 @@
 #define AV_STRINGIFY(s)         AV_TOSTRING(s)
 #define AV_TOSTRING(s) #s
 
-#define LIBAVCODEC_VERSION_INT  ((51<<16)+(48<<8)+0)
-#define LIBAVCODEC_VERSION      51.48.0
+#define LIBAVCODEC_VERSION_INT  ((51<<16)+(49<<8)+0)
+#define LIBAVCODEC_VERSION      51.49.0
 #define LIBAVCODEC_BUILD        LIBAVCODEC_VERSION_INT
 
 #define LIBAVCODEC_IDENT        "Lavc" AV_STRINGIFY(LIBAVCODEC_VERSION)
@@ -2428,7 +2428,10 @@ int avpicture_deinterlace(AVPicture *dst, const AVPicture *src,
 
 /* external high level API */
 
+#if LIBAVCODEC_VERSION_INT < ((52<<16)+(0<<8)+0)
 extern AVCodec *first_avcodec;
+#endif
+AVCodec *av_codec_next(AVCodec *c);
 
 /* returns LIBAVCODEC_VERSION_INT constant */
 unsigned avcodec_version(void);
@@ -2784,7 +2787,10 @@ typedef struct AVCodecParser {
     struct AVCodecParser *next;
 } AVCodecParser;
 
+#if LIBAVCODEC_VERSION_INT < ((52<<16)+(0<<8)+0)
 extern AVCodecParser *av_first_parser;
+#endif
+AVCodecParser *av_parser_next(AVCodecParser *c);
 
 void av_register_codec_parser(AVCodecParser *parser);
 AVCodecParserContext *av_parser_init(int codec_id);
@@ -2827,7 +2833,7 @@ int av_bitstream_filter_filter(AVBitStreamFilterContext *bsfc,
                                const uint8_t *buf, int buf_size, int keyframe);
 void av_bitstream_filter_close(AVBitStreamFilterContext *bsf);
 
-extern AVBitStreamFilter *first_bitstream_filter;
+AVBitStreamFilter *av_bitstream_filter_next(AVBitStreamFilter *f);
 
 /* memory */
 
index 97fbd77..aeafd7d 100644 (file)
 
 AVBitStreamFilter *first_bitstream_filter= NULL;
 
+AVBitStreamFilter *av_bitstream_filter_next(AVBitStreamFilter *f){
+    if(f) return f->next;
+    else  return first_bitstream_filter;
+}
+
 void av_register_bitstream_filter(AVBitStreamFilter *bsf){
     bsf->next = first_bitstream_filter;
     first_bitstream_filter= bsf;
index 1922419..b0a6a2a 100644 (file)
 
 AVCodecParser *av_first_parser = NULL;
 
+AVCodecParser* av_parser_next(AVCodecParser *p){
+    if(p) return p->next;
+    else  return av_first_parser;
+}
+
 void av_register_codec_parser(AVCodecParser *parser)
 {
     parser->next = av_first_parser;
index be2aa38..fdfa7bd 100644 (file)
@@ -126,6 +126,11 @@ static void do_free(void)
 /* encoder management */
 AVCodec *first_avcodec = NULL;
 
+AVCodec *av_codec_next(AVCodec *c){
+    if(c) return c->next;
+    else  return first_avcodec;
+}
+
 void register_avcodec(AVCodec *format)
 {
     AVCodec **p;