diff avidec.c @ 3983:38269a4cfe68 libavformat

Factorize stream id parsing.
author michael
date Sat, 04 Oct 2008 21:57:01 +0000
parents 549a09cf23fe
children 46fc6e792241
line wrap: on
line diff
--- a/avidec.c	Sat Oct 04 21:11:58 2008 +0000
+++ b/avidec.c	Sat Oct 04 21:57:01 2008 +0000
@@ -614,6 +614,15 @@
     return 0;
 }
 
+static int get_stream_idx(int *d){
+    if(    d[0] >= '0' && d[0] <= '9'
+        && d[1] >= '0' && d[1] <= '9'){
+        return (d[0] - '0') * 10 + (d[1] - '0');
+    }else{
+        return 100; //invalid stream ID
+    }
+}
+
 static int avi_read_packet(AVFormatContext *s, AVPacket *pkt)
 {
     AVIContext *avi = s->priv_data;
@@ -756,12 +765,7 @@
 
         size= d[4] + (d[5]<<8) + (d[6]<<16) + (d[7]<<24);
 
-        if(    d[2] >= '0' && d[2] <= '9'
-            && d[3] >= '0' && d[3] <= '9'){
-            n= (d[2] - '0') * 10 + (d[3] - '0');
-        }else{
-            n= 100; //invalid stream id
-        }
+        n= get_stream_idx(d+2);
 //av_log(NULL, AV_LOG_DEBUG, "%X %X %X %X %X %X %X %X %"PRId64" %d %d\n", d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7], i, size, n);
         if(i + size > avi->fsize || d[0]<0)
             continue;
@@ -776,12 +780,7 @@
             goto resync;
         }
 
-        if(    d[0] >= '0' && d[0] <= '9'
-            && d[1] >= '0' && d[1] <= '9'){
-            n= (d[0] - '0') * 10 + (d[1] - '0');
-        }else{
-            n= 100; //invalid stream ID
-        }
+        n= get_stream_idx(d);
 
         //parse ##dc/##wb
         if(n < s->nb_streams){