[SCM] libav/experimental: av_*_next() API for libavformat

siretart at users.alioth.debian.org siretart at users.alioth.debian.org
Sun Jun 30 16:10:21 UTC 2013


The following commit has been merged in the experimental branch:
commit 84be6e723930e540ee105949af1a7a498164560c
Author: Michael Niedermayer <michaelni at gmx.at>
Date:   Wed Dec 12 19:01:58 2007 +0000

    av_*_next() API for libavformat
    
    Originally committed as revision 11206 to svn://svn.ffmpeg.org/ffmpeg/trunk

diff --git a/ffmpeg.c b/ffmpeg.c
index 7c47ce8..7a8dcac 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 5ac2b23..9c8419a 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 234a99a..3447889 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 5a8d19f..95d4672 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 ae1659f..3cd0755 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;

-- 
Libav/FFmpeg packaging



More information about the pkg-multimedia-commits mailing list