aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeter Ross <pross@xvid.org>2010-12-26 01:24:51 +0000
committerPeter Ross <pross@xvid.org>2010-12-26 01:24:51 +0000
commit141de5a9c141ab82ff453d4e9bb27fd4e25da1ea (patch)
tree8dae98ce91223df6b498e801551aa88a7402d4be
parent456a70aeb826b7b84d30cc3cc279fa7c65fc7d4e (diff)
downloadffmpeg-141de5a9c141ab82ff453d4e9bb27fd4e25da1ea.tar.gz
add ff_find_stream_index
Originally committed as revision 26092 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r--libavformat/gxf.c8
-rw-r--r--libavformat/internal.h6
-rw-r--r--libavformat/utils.c9
3 files changed, 19 insertions, 4 deletions
diff --git a/libavformat/gxf.c b/libavformat/gxf.c
index af2ee9dea8..d37a1d80a2 100644
--- a/libavformat/gxf.c
+++ b/libavformat/gxf.c
@@ -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);
diff --git a/libavformat/internal.h b/libavformat/internal.h
index d723f0958f..b401d352cf 100644
--- a/libavformat/internal.h
+++ b/libavformat/internal.h
@@ -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 */
diff --git a/libavformat/utils.c b/libavformat/utils.c
index 61aa7d45e7..58e06e8688 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -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;
+}