Merge commit '7520d9779c6d30b385df5a0a42da508238076192'
authorMichael Niedermayer <michaelni@gmx.at>
Sun, 30 Jun 2013 11:50:55 +0000 (13:50 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Sun, 30 Jun 2013 11:50:55 +0000 (13:50 +0200)
* commit '7520d9779c6d30b385df5a0a42da508238076192':
  mjpeg: Move code out of else branch

Conflicts:
libavcodec/mjpegdec.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
libavcodec/mjpegdec.c

@@@ -1666,150 -1476,150 +1666,149 @@@ int ff_mjpeg_decode_frame(AVCodecContex
              av_log(avctx, AV_LOG_ERROR, "MJPEG packet 0x%x too big (0x%x/0x%x), corrupt data?\n",
                     start_code, unescaped_buf_size, buf_size);
              return AVERROR_INVALIDDATA;
-         } else {
-             av_log(avctx, AV_LOG_DEBUG, "marker=%x avail_size_in_buf=%td\n",
-                    start_code, buf_end - buf_ptr);
-             if ((ret = init_get_bits8(&s->gb, unescaped_buf_ptr, unescaped_buf_size)) < 0) {
-                 av_log(avctx, AV_LOG_ERROR, "invalid buffer\n");
-                 goto fail;
-             }
+         }
 -
+         av_log(avctx, AV_LOG_DEBUG, "marker=%x avail_size_in_buf=%td\n",
+                start_code, buf_end - buf_ptr);
 -
 -        init_get_bits(&s->gb, unescaped_buf_ptr, unescaped_buf_size * 8);
++        if ((ret = init_get_bits8(&s->gb, unescaped_buf_ptr, unescaped_buf_size)) < 0) {
++            av_log(avctx, AV_LOG_ERROR, "invalid buffer\n");
++            goto fail;
++        }
  
-             s->start_code = start_code;
-             if (s->avctx->debug & FF_DEBUG_STARTCODE)
-                 av_log(avctx, AV_LOG_DEBUG, "startcode: %X\n", start_code);
-             /* process markers */
-             if (start_code >= 0xd0 && start_code <= 0xd7)
-                 av_log(avctx, AV_LOG_DEBUG,
-                        "restart marker: %d\n", start_code & 0x0f);
-                 /* APP fields */
-             else if (start_code >= APP0 && start_code <= APP15)
-                 mjpeg_decode_app(s);
-                 /* Comment */
-             else if (start_code == COM)
-                 mjpeg_decode_com(s);
-             ret = -1;
-             if (!CONFIG_JPEGLS_DECODER &&
-                 (start_code == SOF48 || start_code == LSE)) {
-                 av_log(avctx, AV_LOG_ERROR, "JPEG-LS support not enabled.\n");
-                 return AVERROR(ENOSYS);
-             }
+         s->start_code = start_code;
+         if (s->avctx->debug & FF_DEBUG_STARTCODE)
+             av_log(avctx, AV_LOG_DEBUG, "startcode: %X\n", start_code);
  
-             switch (start_code) {
-             case SOI:
-                 s->restart_interval = 0;
-                 s->restart_count    = 0;
-                 /* nothing to do on SOI */
-                 break;
-             case DQT:
-                 ff_mjpeg_decode_dqt(s);
-                 break;
-             case DHT:
-                 if ((ret = ff_mjpeg_decode_dht(s)) < 0) {
-                     av_log(avctx, AV_LOG_ERROR, "huffman table decode error\n");
-                     goto fail;
-                 }
-                 break;
-             case SOF0:
-             case SOF1:
-                 s->lossless    = 0;
-                 s->ls          = 0;
-                 s->progressive = 0;
-                 if ((ret = ff_mjpeg_decode_sof(s)) < 0)
-                     goto fail;
-                 break;
-             case SOF2:
-                 s->lossless    = 0;
-                 s->ls          = 0;
-                 s->progressive = 1;
-                 if ((ret = ff_mjpeg_decode_sof(s)) < 0)
-                     goto fail;
-                 break;
-             case SOF3:
-                 s->lossless    = 1;
-                 s->ls          = 0;
-                 s->progressive = 0;
-                 if ((ret = ff_mjpeg_decode_sof(s)) < 0)
-                     goto fail;
-                 break;
-             case SOF48:
-                 s->lossless    = 1;
-                 s->ls          = 1;
-                 s->progressive = 0;
-                 if ((ret = ff_mjpeg_decode_sof(s)) < 0)
-                     goto fail;
-                 break;
-             case LSE:
-                 if (!CONFIG_JPEGLS_DECODER ||
-                     (ret = ff_jpegls_decode_lse(s)) < 0)
-                     goto fail;
-                 break;
-             case EOI:
+         /* process markers */
+         if (start_code >= 0xd0 && start_code <= 0xd7)
+             av_log(avctx, AV_LOG_DEBUG,
+                    "restart marker: %d\n", start_code & 0x0f);
+             /* APP fields */
+         else if (start_code >= APP0 && start_code <= APP15)
+             mjpeg_decode_app(s);
+             /* Comment */
+         else if (start_code == COM)
+             mjpeg_decode_com(s);
++        ret = -1;
++
+         if (!CONFIG_JPEGLS_DECODER &&
+             (start_code == SOF48 || start_code == LSE)) {
+             av_log(avctx, AV_LOG_ERROR, "JPEG-LS support not enabled.\n");
+             return AVERROR(ENOSYS);
+         }
+         switch (start_code) {
+         case SOI:
+             s->restart_interval = 0;
+             s->restart_count    = 0;
+             /* nothing to do on SOI */
+             break;
+         case DQT:
+             ff_mjpeg_decode_dqt(s);
+             break;
+         case DHT:
+             if ((ret = ff_mjpeg_decode_dht(s)) < 0) {
+                 av_log(avctx, AV_LOG_ERROR, "huffman table decode error\n");
 -                return ret;
++                goto fail;
+             }
+             break;
+         case SOF0:
+         case SOF1:
+             s->lossless    = 0;
+             s->ls          = 0;
+             s->progressive = 0;
+             if ((ret = ff_mjpeg_decode_sof(s)) < 0)
 -                return ret;
++                goto fail;
+             break;
+         case SOF2:
+             s->lossless    = 0;
+             s->ls          = 0;
+             s->progressive = 1;
+             if ((ret = ff_mjpeg_decode_sof(s)) < 0)
 -                return ret;
++                goto fail;
+             break;
+         case SOF3:
+             s->lossless    = 1;
+             s->ls          = 0;
+             s->progressive = 0;
+             if ((ret = ff_mjpeg_decode_sof(s)) < 0)
 -                return ret;
++                goto fail;
+             break;
+         case SOF48:
+             s->lossless    = 1;
+             s->ls          = 1;
+             s->progressive = 0;
+             if ((ret = ff_mjpeg_decode_sof(s)) < 0)
 -                return ret;
++                goto fail;
+             break;
+         case LSE:
+             if (!CONFIG_JPEGLS_DECODER ||
+                 (ret = ff_jpegls_decode_lse(s)) < 0)
 -                return ret;
++                goto fail;
+             break;
+         case EOI:
 -            s->cur_scan = 0;
 -            if ((s->buggy_avid && !s->interlaced) || s->restart_interval)
 -                break;
  eoi_parser:
-                 s->cur_scan = 0;
-                 if (!s->got_picture) {
-                     av_log(avctx, AV_LOG_WARNING,
-                            "Found EOI before any SOF, ignoring\n");
++            s->cur_scan = 0;
+             if (!s->got_picture) {
+                 av_log(avctx, AV_LOG_WARNING,
+                        "Found EOI before any SOF, ignoring\n");
+                 break;
+             }
+             if (s->interlaced) {
+                 s->bottom_field ^= 1;
+                 /* if not bottom field, do not output image yet */
+                 if (s->bottom_field == !s->interlace_polarity)
 -                    goto not_the_end;
 +                    break;
-                 }
-                 if (s->interlaced) {
-                     s->bottom_field ^= 1;
-                     /* if not bottom field, do not output image yet */
-                     if (s->bottom_field == !s->interlace_polarity)
-                         break;
-                 }
-                 if ((ret = av_frame_ref(data, s->picture_ptr)) < 0)
-                     return ret;
-                 *got_frame = 1;
-                 s->got_picture = 0;
-                 if (!s->lossless) {
-                     int qp = FFMAX3(s->qscale[0],
-                                     s->qscale[1],
-                                     s->qscale[2]);
-                     int qpw = (s->width + 15) / 16;
-                     AVBufferRef *qp_table_buf = av_buffer_alloc(qpw);
-                     if (qp_table_buf) {
-                         memset(qp_table_buf->data, qp, qpw);
-                         av_frame_set_qp_table(data, qp_table_buf, 0, FF_QSCALE_TYPE_MPEG1);
-                     }
-                     if(avctx->debug & FF_DEBUG_QP)
-                         av_log(avctx, AV_LOG_DEBUG, "QP: %d\n", qp);
+             }
+             if ((ret = av_frame_ref(data, s->picture_ptr)) < 0)
+                 return ret;
+             *got_frame = 1;
++            s->got_picture = 0;
++
++            if (!s->lossless) {
++                int qp = FFMAX3(s->qscale[0],
++                                s->qscale[1],
++                                s->qscale[2]);
++                int qpw = (s->width + 15) / 16;
++                AVBufferRef *qp_table_buf = av_buffer_alloc(qpw);
++                if (qp_table_buf) {
++                    memset(qp_table_buf->data, qp, qpw);
++                    av_frame_set_qp_table(data, qp_table_buf, 0, FF_QSCALE_TYPE_MPEG1);
 +                }
  
-                 goto the_end;
-             case SOS:
-                 if ((ret = ff_mjpeg_decode_sos(s, NULL, NULL)) < 0 &&
-                     (avctx->err_recognition & AV_EF_EXPLODE))
-                     goto fail;
-                 break;
-             case DRI:
-                 mjpeg_decode_dri(s);
-                 break;
-             case SOF5:
-             case SOF6:
-             case SOF7:
-             case SOF9:
-             case SOF10:
-             case SOF11:
-             case SOF13:
-             case SOF14:
-             case SOF15:
-             case JPG:
-                 av_log(avctx, AV_LOG_ERROR,
-                        "mjpeg: unsupported coding type (%x)\n", start_code);
-                 break;
 -            if (!s->lossless &&
 -                avctx->debug & FF_DEBUG_QP) {
 -                av_log(avctx, AV_LOG_DEBUG,
 -                       "QP: %d\n", FFMAX3(s->qscale[0],
 -                                          s->qscale[1],
 -                                          s->qscale[2]));
++                if(avctx->debug & FF_DEBUG_QP)
++                    av_log(avctx, AV_LOG_DEBUG, "QP: %d\n", qp);
              }
  
-             /* eof process start code */
-             buf_ptr += (get_bits_count(&s->gb) + 7) / 8;
-             av_log(avctx, AV_LOG_DEBUG,
-                    "marker parser used %d bytes (%d bits)\n",
-                    (get_bits_count(&s->gb) + 7) / 8, get_bits_count(&s->gb));
+             goto the_end;
+         case SOS:
 -            if (!s->got_picture) {
 -                av_log(avctx, AV_LOG_WARNING,
 -                       "Can not process SOS before SOF, skipping\n");
 -                break;
 -                }
+             if ((ret = ff_mjpeg_decode_sos(s, NULL, NULL)) < 0 &&
+                 (avctx->err_recognition & AV_EF_EXPLODE))
 -                return ret;
 -            /* buggy avid puts EOI every 10-20th frame */
 -            /* if restart period is over process EOI */
 -            if ((s->buggy_avid && !s->interlaced) || s->restart_interval)
 -                goto eoi_parser;
++                goto fail;
+             break;
+         case DRI:
+             mjpeg_decode_dri(s);
+             break;
+         case SOF5:
+         case SOF6:
+         case SOF7:
+         case SOF9:
+         case SOF10:
+         case SOF11:
+         case SOF13:
+         case SOF14:
+         case SOF15:
+         case JPG:
+             av_log(avctx, AV_LOG_ERROR,
+                    "mjpeg: unsupported coding type (%x)\n", start_code);
+             break;
          }
 -not_the_end:
+         /* eof process start code */
+         buf_ptr += (get_bits_count(&s->gb) + 7) / 8;
+         av_log(avctx, AV_LOG_DEBUG,
+                "marker parser used %d bytes (%d bits)\n",
+                (get_bits_count(&s->gb) + 7) / 8, get_bits_count(&s->gb));
      }
      if (s->got_picture) {
          av_log(avctx, AV_LOG_WARNING, "EOI missing, emulating\n");