aboutsummaryrefslogtreecommitdiffstats
path: root/libavformat
diff options
context:
space:
mode:
authorMarton Balint <cus@passwd.hu>2011-08-22 23:42:19 +0200
committerMichael Niedermayer <michaelni@gmx.at>2011-08-27 22:06:09 +0200
commitdacd827b81e442a3fbed0628a951c8f15f3591e3 (patch)
treeb2e4f820c34fc3a4d777e3ec9a68517c0f88eb90 /libavformat
parent941bb552c6e08b40eb7d7842df19285cd650edd0 (diff)
downloadffmpeg-dacd827b81e442a3fbed0628a951c8f15f3591e3.tar.gz
Rename find_program_from_stream to av_find_program_from_stream and add it to avformat.h
Also extend the functionality to use the last found program to start the search after that program. Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavformat')
-rw-r--r--libavformat/avformat.h12
-rw-r--r--libavformat/utils.c18
-rw-r--r--libavformat/version.h2
3 files changed, 25 insertions, 7 deletions
diff --git a/libavformat/avformat.h b/libavformat/avformat.h
index 5e73f8dc06..e435881264 100644
--- a/libavformat/avformat.h
+++ b/libavformat/avformat.h
@@ -1233,6 +1233,18 @@ int av_find_stream_info(AVFormatContext *ic);
int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options);
/**
+ * Find the programs which belong to a given stream.
+ *
+ * @param ic media file handle
+ * @param last the last found program, the search will start after this
+ * program, or from the beginning if it is NULL
+ * @param s stream index
+ * @return the next program which belongs to s, NULL if no program is found or
+ * the last program is not among the programs of ic.
+ */
+AVProgram *av_find_program_from_stream(AVFormatContext *ic, AVProgram *last, int s);
+
+/**
* Find the "best" stream in the file.
* The best stream is determined according to various heuristics as the most
* likely to be what the user expects.
diff --git a/libavformat/utils.c b/libavformat/utils.c
index a60fcd9706..b935e402b8 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -2574,14 +2574,20 @@ int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options)
return ret;
}
-static AVProgram *find_program_from_stream(AVFormatContext *ic, int s)
+AVProgram *av_find_program_from_stream(AVFormatContext *ic, AVProgram *last, int s)
{
int i, j;
- for (i = 0; i < ic->nb_programs; i++)
- for (j = 0; j < ic->programs[i]->nb_stream_indexes; j++)
- if (ic->programs[i]->stream_index[j] == s)
- return ic->programs[i];
+ for (i = 0; i < ic->nb_programs; i++) {
+ if (ic->programs[i] == last) {
+ last = NULL;
+ } else {
+ if (!last)
+ for (j = 0; j < ic->programs[i]->nb_stream_indexes; j++)
+ if (ic->programs[i]->stream_index[j] == s)
+ return ic->programs[i];
+ }
+ }
return NULL;
}
@@ -2598,7 +2604,7 @@ int av_find_best_stream(AVFormatContext *ic,
AVCodec *decoder = NULL, *best_decoder = NULL;
if (related_stream >= 0 && wanted_stream_nb < 0) {
- AVProgram *p = find_program_from_stream(ic, related_stream);
+ AVProgram *p = av_find_program_from_stream(ic, NULL, related_stream);
if (p) {
program = p->stream_index;
nb_streams = p->nb_stream_indexes;
diff --git a/libavformat/version.h b/libavformat/version.h
index a8e516b3b9..6d22be049e 100644
--- a/libavformat/version.h
+++ b/libavformat/version.h
@@ -24,7 +24,7 @@
#include "libavutil/avutil.h"
#define LIBAVFORMAT_VERSION_MAJOR 53
-#define LIBAVFORMAT_VERSION_MINOR 9
+#define LIBAVFORMAT_VERSION_MINOR 10
#define LIBAVFORMAT_VERSION_MICRO 0
#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \