add ff_find_stream_index
authorPeter Ross <pross@xvid.org>
Sun, 26 Dec 2010 01:24:51 +0000 (01:24 +0000)
committerPeter Ross <pross@xvid.org>
Sun, 26 Dec 2010 01:24:51 +0000 (01:24 +0000)
Originally committed as revision 26092 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavformat/gxf.c
libavformat/internal.h
libavformat/utils.c

index af2ee9d..d37a1d8 100644 (file)
@@ -21,6 +21,7 @@
 
 #include "libavutil/common.h"
 #include "avformat.h"
+#include "internal.h"
 #include "gxf.h"
 
 struct gxf_stream_info {
@@ -77,10 +78,9 @@ static int gxf_probe(AVProbeData *p) {
 static int get_sindex(AVFormatContext *s, int id, int format) {
     int i;
     AVStream *st = NULL;
-    for (i = 0; i < s->nb_streams; i++) {
-        if (s->streams[i]->id == id)
-            return i;
-    }
+    i = ff_find_stream_index(s, id);
+    if (i >= 0)
+        return i;
     st = av_new_stream(s, id);
     if (!st)
         return AVERROR(ENOMEM);
index d723f09..b401d35 100644 (file)
@@ -220,4 +220,10 @@ typedef void (*ff_parse_key_val_cb)(void *context, const char *key,
 void ff_parse_key_value(const char *str, ff_parse_key_val_cb callback_get_buf,
                         void *context);
 
+/**
+ * Find stream index based on format-specific stream ID
+ * @return stream index, or < 0 on error
+ */
+int ff_find_stream_index(AVFormatContext *s, int id);
+
 #endif /* AVFORMAT_INTERNAL_H */
index 61aa7d4..58e06e8 100644 (file)
@@ -3806,3 +3806,12 @@ void ff_parse_key_value(const char *str, ff_parse_key_val_cb callback_get_buf,
     }
 }
 
+int ff_find_stream_index(AVFormatContext *s, int id)
+{
+    int i;
+    for (i = 0; i < s->nb_streams; i++) {
+        if (s->streams[i]->id == id)
+            return i;
+    }
+    return -1;
+}