From 84be6e723930e540ee105949af1a7a498164560c Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Wed, 12 Dec 2007 19:01:58 +0000 Subject: [PATCH] av_*_next() API for libavformat Originally committed as revision 11206 to svn://svn.ffmpeg.org/ffmpeg/trunk --- ffmpeg.c | 12 ++++++------ libavformat/avformat.h | 9 +++++++-- libavformat/avio.c | 6 ++++++ libavformat/avio.h | 2 ++ libavformat/utils.c | 12 ++++++++++++ 5 files changed, 33 insertions(+), 8 deletions(-) diff --git a/ffmpeg.c b/ffmpeg.c index 7c47ce807c..7a8dcac385 100644 --- a/ffmpeg.c +++ b/ffmpeg.c @@ -3318,9 +3318,9 @@ static int64_t getutime(void) static void opt_show_formats(void) { - AVInputFormat *ifmt; - AVOutputFormat *ofmt; - URLProtocol *up; + AVInputFormat *ifmt=NULL; + AVOutputFormat *ofmt=NULL; + URLProtocol *up=NULL; AVCodec *p=NULL, *p2; AVBitStreamFilter *bsf=NULL; const char *last_name; @@ -3333,7 +3333,7 @@ static void opt_show_formats(void) const char *name=NULL; const char *long_name=NULL; - for(ofmt = first_oformat; ofmt != NULL; ofmt = ofmt->next) { + while(ofmt= av_oformat_next(ofmt)) { if((name == NULL || strcmp(ofmt->name, name)<0) && strcmp(ofmt->name, last_name)>0){ name= ofmt->name; @@ -3341,7 +3341,7 @@ static void opt_show_formats(void) encode=1; } } - for(ifmt = first_iformat; ifmt != NULL; ifmt = ifmt->next) { + while(ifmt= av_iformat_next(ifmt)) { if((name == NULL || strcmp(ifmt->name, name)<0) && strcmp(ifmt->name, last_name)>0){ name= ifmt->name; @@ -3424,7 +3424,7 @@ static void opt_show_formats(void) printf("\n"); printf("Supported file protocols:\n"); - for(up = first_protocol; up != NULL; up = up->next) + while(up = av_protocol_next(up)) printf(" %s:", up->name); printf("\n"); diff --git a/libavformat/avformat.h b/libavformat/avformat.h index 5ac2b23441..9c8419a6a9 100644 --- a/libavformat/avformat.h +++ b/libavformat/avformat.h @@ -21,8 +21,8 @@ #ifndef FFMPEG_AVFORMAT_H #define FFMPEG_AVFORMAT_H -#define LIBAVFORMAT_VERSION_INT ((52<<16)+(1<<8)+0) -#define LIBAVFORMAT_VERSION 52.1.0 +#define LIBAVFORMAT_VERSION_INT ((52<<16)+(2<<8)+0) +#define LIBAVFORMAT_VERSION 52.2.0 #define LIBAVFORMAT_BUILD LIBAVFORMAT_VERSION_INT #define LIBAVFORMAT_IDENT "Lavf" AV_STRINGIFY(LIBAVFORMAT_VERSION) @@ -452,8 +452,13 @@ typedef struct AVPacketList { struct AVPacketList *next; } AVPacketList; +#if LIBAVFORMAT_VERSION_INT < (53<<16) extern AVInputFormat *first_iformat; extern AVOutputFormat *first_oformat; +#endif + +AVInputFormat *av_iformat_next(AVInputFormat *f); +AVOutputFormat *av_oformat_next(AVOutputFormat *f); enum CodecID av_guess_image2_codec(const char *filename); diff --git a/libavformat/avio.c b/libavformat/avio.c index 234a99a15d..3447889988 100644 --- a/libavformat/avio.c +++ b/libavformat/avio.c @@ -26,6 +26,12 @@ static int default_interrupt_cb(void); URLProtocol *first_protocol = NULL; URLInterruptCB *url_interrupt_cb = default_interrupt_cb; +URLProtocol *av_protocol_next(URLProtocol *p) +{ + if(p) return p->next; + else return first_protocol; +} + int register_protocol(URLProtocol *protocol) { URLProtocol **p; diff --git a/libavformat/avio.h b/libavformat/avio.h index 5a8d19f354..95d4672d08 100644 --- a/libavformat/avio.h +++ b/libavformat/avio.h @@ -136,6 +136,8 @@ typedef struct URLProtocol { extern URLProtocol *first_protocol; extern URLInterruptCB *url_interrupt_cb; +URLProtocol *av_protocol_next(URLProtocol *p); + int register_protocol(URLProtocol *protocol); typedef struct { diff --git a/libavformat/utils.c b/libavformat/utils.c index ae1659f4c8..3cd07552c5 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -41,6 +41,18 @@ AVInputFormat *first_iformat = NULL; /** head of registered output format linked list. */ AVOutputFormat *first_oformat = NULL; +AVInputFormat *av_iformat_next(AVInputFormat *f) +{ + if(f) return f->next; + else return first_iformat; +} + +AVOutputFormat *av_oformat_next(AVOutputFormat *f) +{ + if(f) return f->next; + else return first_oformat; +} + void av_register_input_format(AVInputFormat *format) { AVInputFormat **p;