Simplify klv_decode_ber_length
authorReimar Döffinger <Reimar.Doeffinger@gmx.de>
Sun, 14 Jan 2007 16:02:22 +0000 (16:02 +0000)
committerReimar Döffinger <Reimar.Doeffinger@gmx.de>
Sun, 14 Jan 2007 16:02:22 +0000 (16:02 +0000)
Originally committed as revision 7475 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavformat/mxf.c

index 5a047b3a7c24aadbf058b59a43719987f25e90c4..d105af26ce90cf32d5e2bea8ec549df934633981 100644 (file)
@@ -182,19 +182,15 @@ static const uint8_t mxf_essence_element_key[]             = { 0x06,0x0e,0x2b,0x
 
 static int64_t klv_decode_ber_length(ByteIOContext *pb)
 {
-    int64_t size = 0;
-    uint8_t length = get_byte(pb);
-    int type = length >> 7;
-
-    if (type) { /* long form */
-        int bytes_num = length & 0x7f;
+    uint64_t size = get_byte(pb);
+    if (size & 0x80) { /* long form */
+        int bytes_num = size & 0x7f;
         /* SMPTE 379M 5.3.4 guarantee that bytes_num must not exceed 8 bytes */
         if (bytes_num > 8)
             return -1;
+        size = 0;
         while (bytes_num--)
             size = size << 8 | get_byte(pb);
-    } else {
-        size = length & 0x7f;
     }
     return size;
 }