cmdutils: allow to specify a stream by its ID.
authorNicolas George <nicolas.george@normalesup.org>
Sun, 20 May 2012 10:30:16 +0000 (12:30 +0200)
committerNicolas George <nicolas.george@normalesup.org>
Sun, 20 May 2012 10:47:27 +0000 (12:47 +0200)
The stream can be specified as "#129" or "#0x81".
It is especially useful for VOBs dumped from a DVD,
where the language-id mapping is available externally
and the probing can find the streams in a random order.

cmdutils.c
doc/avtools-common-opts.texi

index 2879a42..2c84394 100644 (file)
@@ -1109,6 +1109,12 @@ int check_stream_specifier(AVFormatContext *s, AVStream *st, const char *spec)
                     return 1;
         }
         return 0;
+    } else if (*spec == '#') {
+        int sid;
+        char *endptr;
+        sid = strtol(spec + 1, &endptr, 0);
+        if (!*endptr)
+            return st->id == sid;
     } else if (!*spec) /* empty specifier, matches everything */
         return 1;
 
index c25b535..8246a7c 100644 (file)
@@ -41,6 +41,8 @@ streams of this type.
 @item p:@var{program_id}[:@var{stream_index}]
 If @var{stream_index} is given, then matches stream number @var{stream_index} in
 program with id @var{program_id}. Otherwise matches all streams in this program.
+@item #@var{stream_id}
+Matches the stream by format-specific ID.
 @end table
 @section Generic options