diff options
author | Anton Khirnov <anton@khirnov.net> | 2011-08-31 22:24:06 +0200 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2011-09-11 17:30:01 +0200 |
commit | 2c474ddbc5b90541ea4a65961490b6469d12529f (patch) | |
tree | a2e7ace7cf4ee1c6897a698ffb7af9e71d6ed590 /cmdutils.c | |
parent | 05bffc12c4faff47aabe08bafe44ee3b31ed5b47 (diff) | |
download | ffmpeg-2c474ddbc5b90541ea4a65961490b6469d12529f.tar.gz |
cmdutils: add support for programs in check_stream_specifier()
Remove now redundant (and broken/undocumented) opt_programid.
Diffstat (limited to 'cmdutils.c')
-rw-r--r-- | cmdutils.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/cmdutils.c b/cmdutils.c index 2aab395a96..16b64aff23 100644 --- a/cmdutils.c +++ b/cmdutils.c @@ -841,6 +841,26 @@ int check_stream_specifier(AVFormatContext *s, AVStream *st, const char *spec) return 0; } return 1; + } else if (*spec == 'p' && *(spec + 1) == ':') { + int prog_id, i, j; + char *endptr; + spec += 2; + prog_id = strtol(spec, &endptr, 0); + for (i = 0; i < s->nb_programs; i++) { + if (s->programs[i]->id != prog_id) + continue; + + if (*endptr++ == ':') { + int stream_idx = strtol(endptr, NULL, 0); + return (stream_idx >= 0 && stream_idx < s->programs[i]->nb_stream_indexes && + st->index == s->programs[i]->stream_index[stream_idx]); + } + + for (j = 0; j < s->programs[i]->nb_stream_indexes; j++) + if (st->index == s->programs[i]->stream_index[j]) + return 1; + } + return 0; } else if (!*spec) /* empty specifier, matches everything */ return 1; |