[FFmpeg-cvslog] rtpdec_jpeg: Merge two if statements

Martin Storsjö git at videolan.org
Thu Sep 13 15:29:00 CEST 2012


ffmpeg | branch: master | Martin Storsjö <martin at martin.st> | Tue Sep 11 12:07:56 2012 +0300| [932d8300d38587ebc223e3bacc3c33ed68bf3cf6] | committer: Martin Storsjö

rtpdec_jpeg: Merge two if statements

This makes the code more readable and robust.

Signed-off-by: Martin Storsjö <martin at martin.st>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=932d8300d38587ebc223e3bacc3c33ed68bf3cf6
---

 libavformat/rtpdec_jpeg.c |   61 ++++++++++++++++++++++-----------------------
 1 file changed, 30 insertions(+), 31 deletions(-)

diff --git a/libavformat/rtpdec_jpeg.c b/libavformat/rtpdec_jpeg.c
index 19ecbf4..0513b09 100644
--- a/libavformat/rtpdec_jpeg.c
+++ b/libavformat/rtpdec_jpeg.c
@@ -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. */



More information about the ffmpeg-cvslog mailing list