add ff_find_stream_index

Originally committed as revision 26092 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
Peter Ross 2010-12-26 01:24:51 +00:00
parent 456a70aeb8
commit 141de5a9c1
3 changed files with 19 additions and 4 deletions

View File

@ -21,6 +21,7 @@
#include "libavutil/common.h" #include "libavutil/common.h"
#include "avformat.h" #include "avformat.h"
#include "internal.h"
#include "gxf.h" #include "gxf.h"
struct gxf_stream_info { struct gxf_stream_info {
@ -77,10 +78,9 @@ static int gxf_probe(AVProbeData *p) {
static int get_sindex(AVFormatContext *s, int id, int format) { static int get_sindex(AVFormatContext *s, int id, int format) {
int i; int i;
AVStream *st = NULL; AVStream *st = NULL;
for (i = 0; i < s->nb_streams; i++) { i = ff_find_stream_index(s, id);
if (s->streams[i]->id == id) if (i >= 0)
return i; return i;
}
st = av_new_stream(s, id); st = av_new_stream(s, id);
if (!st) if (!st)
return AVERROR(ENOMEM); return AVERROR(ENOMEM);

View 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 ff_parse_key_value(const char *str, ff_parse_key_val_cb callback_get_buf,
void *context); 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 */ #endif /* AVFORMAT_INTERNAL_H */

View 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;
}