rtpdec_jpeg: Merge two if statements
authorMartin Storsjö <martin@martin.st>
Tue, 11 Sep 2012 09:07:56 +0000 (12:07 +0300)
committerMartin Storsjö <martin@martin.st>
Wed, 12 Sep 2012 09:07:57 +0000 (12:07 +0300)
This makes the code more readable and robust.

Signed-off-by: Martin Storsjö <martin@martin.st>
libavformat/rtpdec_jpeg.c

index 19ecbf47fa4cb8d54a2de90e61278c2274a74392..0513b09b3d346856bb3a13865758476a54e123b2 100644 (file)
@@ -252,44 +252,43 @@ static int jpeg_parse_packet(AVFormatContext *ctx, PayloadContext *jpeg,
     }
 
     /* Parse the quantization table header. */
-    if (q > 127 && off == 0) {
-        uint8_t precision;
-
-        if (len < 4) {
-            av_log(ctx, AV_LOG_ERROR, "Too short RTP/JPEG packet.\n");
-            return AVERROR_INVALIDDATA;
-        }
+    if (off == 0) {
+        /* Start of JPEG data packet. */
+        uint8_t new_qtables[128];
+        uint8_t hdr[1024];
 
-        /* The first byte is reserved for future use. */
-        precision  = AV_RB8(buf + 1);    /* size of coefficients */
-        qtable_len = AV_RB16(buf + 2);   /* length in bytes */
-        buf += 4;
-        len -= 4;
+        if (q > 127) {
+            uint8_t precision;
+            if (len < 4) {
+                av_log(ctx, AV_LOG_ERROR, "Too short RTP/JPEG packet.\n");
+                return AVERROR_INVALIDDATA;
+            }
 
-        if (precision)
-            av_log(ctx, AV_LOG_WARNING, "Only 8-bit precision is supported.\n");
+            /* The first byte is reserved for future use. */
+            precision  = AV_RB8(buf + 1);    /* size of coefficients */
+            qtable_len = AV_RB16(buf + 2);   /* length in bytes */
+            buf += 4;
+            len -= 4;
 
-        if (q == 255 && qtable_len == 0) {
-            av_log(ctx, AV_LOG_ERROR,
-                   "Invalid RTP/JPEG packet. Quantization tables not found.\n");
-            return AVERROR_INVALIDDATA;
-        }
+            if (precision)
+                av_log(ctx, AV_LOG_WARNING, "Only 8-bit precision is supported.\n");
 
-        if (qtable_len > 0) {
-            if (len < qtable_len) {
-                av_log(ctx, AV_LOG_ERROR, "Too short RTP/JPEG packet.\n");
+            if (q == 255 && qtable_len == 0) {
+                av_log(ctx, AV_LOG_ERROR,
+                       "Invalid RTP/JPEG packet. Quantization tables not found.\n");
                 return AVERROR_INVALIDDATA;
             }
-            qtables = buf;
-            buf += qtable_len;
-            len -= qtable_len;
-        }
-    }
 
-    if (off == 0) {
-        /* Start of JPEG data packet. */
-        uint8_t new_qtables[128];
-        uint8_t hdr[1024];
+            if (qtable_len > 0) {
+                if (len < qtable_len) {
+                    av_log(ctx, AV_LOG_ERROR, "Too short RTP/JPEG packet.\n");
+                    return AVERROR_INVALIDDATA;
+                }
+                qtables = buf;
+                buf += qtable_len;
+                len -= qtable_len;
+            }
+        }
 
         /* Skip the current frame in case of the end packet
          * has been lost somewhere. */