diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2013-06-30 13:50:55 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2013-06-30 13:50:55 +0200 |
commit | e3fb8ac9564b6a3d86c5f60c940f2056a4faae56 (patch) | |
tree | f7766be5ec0dfbdf9f1d2bcd2371195a3905f6cb | |
parent | 06549cee42819c2bef58bd123cd0ac9d916244f2 (diff) | |
parent | 7520d9779c6d30b385df5a0a42da508238076192 (diff) | |
download | ffmpeg-e3fb8ac9564b6a3d86c5f60c940f2056a4faae56.tar.gz |
Merge commit '7520d9779c6d30b385df5a0a42da508238076192'
* commit '7520d9779c6d30b385df5a0a42da508238076192':
mjpeg: Move code out of else branch
Conflicts:
libavcodec/mjpegdec.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r-- | libavcodec/mjpegdec.c | 269 |
1 files changed, 134 insertions, 135 deletions
diff --git a/libavcodec/mjpegdec.c b/libavcodec/mjpegdec.c index 97a9ac996e..6de2bafc4b 100644 --- a/libavcodec/mjpegdec.c +++ b/libavcodec/mjpegdec.c @@ -1666,150 +1666,149 @@ int ff_mjpeg_decode_frame(AVCodecContext *avctx, void *data, int *got_frame, 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); + 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"); + 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: 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) 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(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 ((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; } + + /* 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"); |