---
 libavcodec/eamad.c         |  82 +++++----
 libavcodec/mdec.c          |  74 ++++----
 libavcodec/mjpegdec.c      |  56 +++---
 libavcodec/mpeg12.c        |  78 +++++----
 libavcodec/mpeg12dec.c     | 417 ++++++++++++++++++++++-----------------------
 libavcodec/mpeg4videodec.c | 202 +++++++++++-----------
 libavcodec/msmpeg4dec.c    |   2 -
 libavcodec/mxpegdec.c      | 184 ++++++++++----------
 8 files changed, 534 insertions(+), 561 deletions(-)

diff --git a/libavcodec/eamad.c b/libavcodec/eamad.c
index c174ffd..3e43326 100644
--- a/libavcodec/eamad.c
+++ b/libavcodec/eamad.c
@@ -135,51 +135,49 @@ static inline void decode_block_intra(MadContext *s, 
int16_t * block)
     /* The RL decoder is derived from mpeg1_decode_block_intra;
        Escaped level and run values a decoded differently */
     i = 0;
-    {
-        /* now quantify & encode AC coefficients */
-        for (;;) {
-            BITSTREAM_RL_VLC(level, run, &s->bc, rl->rl_vlc[0], TEX_VLC_BITS, 
2);
-
-            if (level == 127) {
-                break;
-            } else if (level != 0) {
-                i += run;
-                if (i > 63) {
-                    av_log(s->avctx, AV_LOG_ERROR,
-                           "ac-tex damaged at %d %d\n", s->mb_x, s->mb_y);
-                    return;
-                }
-                j = scantable[i];
-                level = (level*quant_matrix[j]) >> 4;
-                level = (level-1)|1;
-                level = (level ^ bitstream_peek_signed(&s->bc, 1)) - 
bitstream_peek_signed(&s->bc, 1);
-                bitstream_skip(&s->bc, 1);
-            } else {
-                /* escape */
-                level = bitstream_read_signed(&s->bc, 10);
-
-                run = bitstream_read(&s->bc, 6) + 1;
-
-                i += run;
-                if (i > 63) {
-                    av_log(s->avctx, AV_LOG_ERROR,
-                           "ac-tex damaged at %d %d\n", s->mb_x, s->mb_y);
-                    return;
-                }
-                j = scantable[i];
-                if (level < 0) {
-                    level = -level;
-                    level = (level*quant_matrix[j]) >> 4;
-                    level = (level-1)|1;
-                    level = -level;
-                } else {
-                    level = (level*quant_matrix[j]) >> 4;
-                    level = (level-1)|1;
-                }
+    /* now quantify & encode AC coefficients */
+    for (;;) {
+        BITSTREAM_RL_VLC(level, run, &s->bc, rl->rl_vlc[0], TEX_VLC_BITS, 2);
+
+        if (level == 127) {
+            break;
+        } else if (level != 0) {
+            i += run;
+            if (i > 63) {
+                av_log(s->avctx, AV_LOG_ERROR,
+                       "ac-tex damaged at %d %d\n", s->mb_x, s->mb_y);
+                return;
             }
+            j = scantable[i];
+            level = (level * quant_matrix[j]) >> 4;
+            level = (level - 1) | 1;
+            level = (level ^ bitstream_peek_signed(&s->bc, 1)) - 
bitstream_peek_signed(&s->bc, 1);
+            bitstream_skip(&s->bc, 1);
+        } else {
+            /* escape */
+            level = bitstream_read_signed(&s->bc, 10);
 
-            block[j] = level;
+            run = bitstream_read(&s->bc, 6) + 1;
+
+            i += run;
+            if (i > 63) {
+                av_log(s->avctx, AV_LOG_ERROR,
+                       "ac-tex damaged at %d %d\n", s->mb_x, s->mb_y);
+                return;
+            }
+            j = scantable[i];
+            if (level < 0) {
+                level = -level;
+                level = (level * quant_matrix[j]) >> 4;
+                level = (level - 1) | 1;
+                level = -level;
+            } else {
+                level = (level * quant_matrix[j]) >> 4;
+                level = (level - 1) | 1;
+            }
         }
+
+        block[j] = level;
     }
 }
 
diff --git a/libavcodec/mdec.c b/libavcodec/mdec.c
index 51c0e57..81f5879 100644
--- a/libavcodec/mdec.c
+++ b/libavcodec/mdec.c
@@ -77,48 +77,46 @@ static inline int mdec_decode_block_intra(MDECContext *a, 
int16_t *block, int n)
     }
 
     i = 0;
-    {
-        /* now quantify & encode AC coefficients */
-        for (;;) {
-            BITSTREAM_RL_VLC(level, run, &a->bc, rl->rl_vlc[0], TEX_VLC_BITS, 
2);
-
-            if (level == 127) {
-                break;
-            } else if (level != 0) {
-                i += run;
-                if (i > 63) {
-                    av_log(a->avctx, AV_LOG_ERROR,
-                           "ac-tex damaged at %d %d\n", a->mb_x, a->mb_y);
-                    return AVERROR_INVALIDDATA;
-                }
-                j     = scantable[i];
+    /* now quantify & encode AC coefficients */
+    for (;;) {
+        BITSTREAM_RL_VLC(level, run, &a->bc, rl->rl_vlc[0], TEX_VLC_BITS, 2);
+
+        if (level == 127) {
+            break;
+        } else if (level != 0) {
+            i += run;
+            if (i > 63) {
+                av_log(a->avctx, AV_LOG_ERROR,
+                       "ac-tex damaged at %d %d\n", a->mb_x, a->mb_y);
+                return AVERROR_INVALIDDATA;
+            }
+            j     = scantable[i];
+            level = (level * qscale * quant_matrix[j]) >> 3;
+            level = (level ^ bitstream_peek_signed(&a->bc, 1)) - 
bitstream_peek_signed(&a->bc, 1);
+            bitstream_skip(&a->bc, 1);
+        } else {
+            /* escape */
+            run = bitstream_read(&a->bc, 6) + 1;
+            level = bitstream_read_signed(&a->bc, 10);
+            i += run;
+            if (i > 63) {
+                av_log(a->avctx, AV_LOG_ERROR,
+                       "ac-tex damaged at %d %d\n", a->mb_x, a->mb_y);
+                return AVERROR_INVALIDDATA;
+            }
+            j = scantable[i];
+            if (level < 0) {
+                level = -level;
                 level = (level * qscale * quant_matrix[j]) >> 3;
-                level = (level ^ bitstream_peek_signed(&a->bc, 1)) - 
bitstream_peek_signed(&a->bc, 1);
-                bitstream_skip(&a->bc, 1);
+                level = (level - 1) | 1;
+                level = -level;
             } else {
-                /* escape */
-                run = bitstream_read(&a->bc, 6) + 1;
-                level = bitstream_read_signed(&a->bc, 10);
-                i += run;
-                if (i > 63) {
-                    av_log(a->avctx, AV_LOG_ERROR,
-                           "ac-tex damaged at %d %d\n", a->mb_x, a->mb_y);
-                    return AVERROR_INVALIDDATA;
-                }
-                j = scantable[i];
-                if (level < 0) {
-                    level = -level;
-                    level = (level * qscale * quant_matrix[j]) >> 3;
-                    level = (level - 1) | 1;
-                    level = -level;
-                } else {
-                    level = (level * qscale * quant_matrix[j]) >> 3;
-                    level = (level - 1) | 1;
-                }
+                level = (level * qscale * quant_matrix[j]) >> 3;
+                level = (level - 1) | 1;
             }
-
-            block[j] = level;
         }
+
+        block[j] = level;
     }
     a->block_last_index[n] = i;
     return 0;
diff --git a/libavcodec/mjpegdec.c b/libavcodec/mjpegdec.c
index 98d4734..c29da70 100644
--- a/libavcodec/mjpegdec.c
+++ b/libavcodec/mjpegdec.c
@@ -515,43 +515,43 @@ static int decode_block_progressive(MJpegDecodeContext 
*s, int16_t *block,
         return 0;
     }
 
-        for (i = ss; ; i++) {
-            code = bitstream_read_vlc(&s->bc, s->vlcs[2][ac_index].table, 9, 
2);
+    for (i = ss; ; i++) {
+        code = bitstream_read_vlc(&s->bc, s->vlcs[2][ac_index].table, 9, 2);
 
-            run = ((unsigned) code) >> 4;
-            code &= 0xF;
-            if (code) {
-                i += run;
-                level = bitstream_read_xbits(&s->bc, code);
+        run = ((unsigned) code) >> 4;
+        code &= 0xF;
+        if (code) {
+            i += run;
+            level = bitstream_read_xbits(&s->bc, code);
 
+            if (i >= se) {
+                if (i == se) {
+                    j = s->scantable.permutated[se];
+                    block[j] = level * quant_matrix[j] << Al;
+                    break;
+                }
+                av_log(s->avctx, AV_LOG_ERROR, "error count: %d\n", i);
+                return AVERROR_INVALIDDATA;
+            }
+            j = s->scantable.permutated[i];
+            block[j] = level * quant_matrix[j] << Al;
+        } else {
+            if (run == 0xF) { // ZRL - skip 15 coefficients
+                i += 15;
                 if (i >= se) {
-                    if (i == se) {
-                        j = s->scantable.permutated[se];
-                        block[j] = level * quant_matrix[j] << Al;
-                        break;
-                    }
-                    av_log(s->avctx, AV_LOG_ERROR, "error count: %d\n", i);
+                    av_log(s->avctx, AV_LOG_ERROR, "ZRL overflow: %d\n", i);
                     return AVERROR_INVALIDDATA;
                 }
-                j = s->scantable.permutated[i];
-                block[j] = level * quant_matrix[j] << Al;
             } else {
-                if (run == 0xF) {// ZRL - skip 15 coefficients
-                    i += 15;
-                    if (i >= se) {
-                        av_log(s->avctx, AV_LOG_ERROR, "ZRL overflow: %d\n", 
i);
-                        return AVERROR_INVALIDDATA;
-                    }
-                } else {
-                    val = (1 << run);
-                    if (run) {
-                        val += NEG_USR32(bitstream_read(&s->bc, 32), run);
-                    }
-                    *EOBRUN = val - 1;
-                    break;
+                val = (1 << run);
+                if (run) {
+                    val += NEG_USR32(bitstream_read(&s->bc, 32), run);
                 }
+                *EOBRUN = val - 1;
+                break;
             }
         }
+    }
 
     if (i > *last_nnz)
         *last_nnz = i;
diff --git a/libavcodec/mpeg12.c b/libavcodec/mpeg12.c
index c3f5f32..74c975e 100644
--- a/libavcodec/mpeg12.c
+++ b/libavcodec/mpeg12.c
@@ -263,55 +263,53 @@ int ff_mpeg1_decode_block_intra(BitstreamContext *bc,
 
     block[0] = dc * quant_matrix[0];
 
-    {
-        /* now quantify & encode AC coefficients */
-        while (1) {
-            int level, run, j;
+    /* now quantify & encode AC coefficients */
+    while (1) {
+        int level, run, j;
 
-            BITSTREAM_RL_VLC(level, run, bc, rl->rl_vlc[0], TEX_VLC_BITS, 2);
+        BITSTREAM_RL_VLC(level, run, bc, rl->rl_vlc[0], TEX_VLC_BITS, 2);
 
-            if (level == 127) {
+        if (level == 127) {
+            break;
+        } else if (level != 0) {
+            i += run;
+            if (i > MAX_INDEX)
                 break;
-            } else if (level != 0) {
-                i += run;
-                if (i > MAX_INDEX)
-                    break;
 
-                j = scantable[i];
+            j = scantable[i];
+            level = (level * qscale * quant_matrix[j]) >> 4;
+            level = (level - 1) | 1;
+            level = (level ^ bitstream_peek_signed(bc, 1)) -
+                    bitstream_peek_signed(bc, 1);
+            bitstream_skip(bc, 1);
+        } else {
+            /* escape */
+            run = bitstream_read(bc, 6) + 1;
+            level = bitstream_read_signed(bc, 8);
+
+            if (level == -128) {
+                level = bitstream_read(bc, 8) - 256;
+            } else if (level == 0) {
+                level = bitstream_read(bc, 8);
+            }
+
+            i += run;
+            if (i > MAX_INDEX)
+                break;
+
+            j = scantable[i];
+            if (level < 0) {
+                level = -level;
                 level = (level * qscale * quant_matrix[j]) >> 4;
                 level = (level - 1) | 1;
-                level = (level ^ bitstream_peek_signed(bc, 1)) -
-                        bitstream_peek_signed(bc, 1);
-                bitstream_skip(bc, 1);
+                level = -level;
             } else {
-                /* escape */
-                run = bitstream_read(bc, 6) + 1;
-                level = bitstream_read_signed(bc, 8);
-
-                if (level == -128) {
-                    level = bitstream_read(bc, 8) - 256;
-                } else if (level == 0) {
-                    level = bitstream_read(bc, 8);
-                }
-
-                i += run;
-                if (i > MAX_INDEX)
-                    break;
-
-                j = scantable[i];
-                if (level < 0) {
-                    level = -level;
-                    level = (level * qscale * quant_matrix[j]) >> 4;
-                    level = (level - 1) | 1;
-                    level = -level;
-                } else {
-                    level = (level * qscale * quant_matrix[j]) >> 4;
-                    level = (level - 1) | 1;
-                }
+                level = (level * qscale * quant_matrix[j]) >> 4;
+                level = (level - 1) | 1;
             }
-
-            block[j] = level;
         }
+
+        block[j] = level;
     }
 
     if (i > MAX_INDEX)
diff --git a/libavcodec/mpeg12dec.c b/libavcodec/mpeg12dec.c
index c8a3dda..bf9acf3 100644
--- a/libavcodec/mpeg12dec.c
+++ b/libavcodec/mpeg12dec.c
@@ -149,65 +149,63 @@ static inline int mpeg1_decode_block_inter(MpegEncContext 
*s,
     const uint16_t *quant_matrix = s->inter_matrix;
     const int qscale             = s->qscale;
 
-    {
-        i = -1;
-        // special case for first coefficient, no need to add second VLC table
-        if (((int32_t) bitstream_peek(&s->bc, 32)) < 0) {
-            level = (3 * qscale * quant_matrix[0]) >> 5;
+    i = -1;
+    // special case for first coefficient, no need to add second VLC table
+    if (((int32_t) bitstream_peek(&s->bc, 32)) < 0) {
+        level = (3 * qscale * quant_matrix[0]) >> 5;
+        level = (level - 1) | 1;
+        if (bitstream_peek(&s->bc, 32) & 0x40000000)
+            level = -level;
+        block[0] = level;
+        i++;
+        bitstream_skip(&s->bc, 2);
+        if (((int32_t) bitstream_peek(&s->bc, 32)) <= (int32_t) 0xBFFFFFFF)
+            goto end;
+    }
+    /* now quantify & encode AC coefficients */
+    for (;;) {
+        BITSTREAM_RL_VLC(level, run, &s->bc, rl->rl_vlc[0], TEX_VLC_BITS, 2);
+
+        if (level != 0) {
+            i += run;
+            if (i > MAX_INDEX)
+                break;
+            j = scantable[i];
+            level = ((level * 2 + 1) * qscale * quant_matrix[j]) >> 5;
             level = (level - 1) | 1;
-            if (bitstream_peek(&s->bc, 32) & 0x40000000)
+            level = (level ^ bitstream_peek_signed(&s->bc, 1)) -
+                    bitstream_peek_signed(&s->bc, 1);
+            bitstream_skip(&s->bc, 1);
+        } else {
+            /* escape */
+            run = bitstream_read(&s->bc, 6) + 1;
+            level = bitstream_read_signed(&s->bc, 8);
+            if (level == -128) {
+                level = bitstream_read(&s->bc, 8) - 256;
+            } else if (level == 0) {
+                level = bitstream_read(&s->bc, 8);
+            }
+            i += run;
+            if (i > MAX_INDEX)
+                break;
+            j = scantable[i];
+            if (level < 0) {
                 level = -level;
-            block[0] = level;
-            i++;
-            bitstream_skip(&s->bc, 2);
-            if (((int32_t) bitstream_peek(&s->bc, 32)) <= (int32_t) 0xBFFFFFFF)
-                goto end;
-        }
-        /* now quantify & encode AC coefficients */
-        for (;;) {
-            BITSTREAM_RL_VLC(level, run, &s->bc, rl->rl_vlc[0], TEX_VLC_BITS, 
2);
-
-            if (level != 0) {
-                i += run;
-                if (i > MAX_INDEX)
-                    break;
-                j = scantable[i];
                 level = ((level * 2 + 1) * qscale * quant_matrix[j]) >> 5;
                 level = (level - 1) | 1;
-                level = (level ^ bitstream_peek_signed(&s->bc, 1)) -
-                         bitstream_peek_signed(&s->bc, 1);
-                bitstream_skip(&s->bc, 1);
+                level = -level;
             } else {
-                /* escape */
-                run   = bitstream_read(&s->bc, 6) + 1;
-                level = bitstream_read_signed(&s->bc, 8);
-                if (level == -128) {
-                    level = bitstream_read(&s->bc, 8) - 256;
-                } else if (level == 0) {
-                    level = bitstream_read(&s->bc, 8);
-                }
-                i += run;
-                if (i > MAX_INDEX)
-                    break;
-                j = scantable[i];
-                if (level < 0) {
-                    level = -level;
-                    level = ((level * 2 + 1) * qscale * quant_matrix[j]) >> 5;
-                    level = (level - 1) | 1;
-                    level = -level;
-                } else {
-                    level = ((level * 2 + 1) * qscale * quant_matrix[j]) >> 5;
-                    level = (level - 1) | 1;
-                }
+                level = ((level * 2 + 1) * qscale * quant_matrix[j]) >> 5;
+                level = (level - 1) | 1;
             }
-
-            block[j] = level;
-            if (((int32_t) bitstream_peek(&s->bc, 32)) <= (int32_t) 0xBFFFFFFF)
-                break;
         }
-end:
-        bitstream_skip(&s->bc, 2);
+
+        block[j] = level;
+        if (((int32_t) bitstream_peek(&s->bc, 32)) <= (int32_t) 0xBFFFFFFF)
+            break;
     }
+end:
+    bitstream_skip(&s->bc, 2);
 
     check_scantable_index(s, i);
 
@@ -223,66 +221,64 @@ static inline int 
mpeg1_fast_decode_block_inter(MpegEncContext *s,
     uint8_t *const scantable = s->intra_scantable.permutated;
     const int qscale         = s->qscale;
 
-    {
-        i = -1;
-        // Special case for first coefficient, no need to add second VLC table.
-        if (((int32_t) bitstream_peek(&s->bc, 32)) < 0) {
-            level = (3 * qscale) >> 1;
-            level = (level - 1) | 1;
-            if (bitstream_peek(&s->bc, 32) & 0x40000000)
-                level = -level;
-            block[0] = level;
-            i++;
-            bitstream_skip(&s->bc, 2);
-            if (((int32_t) bitstream_peek(&s->bc, 32)) <= (int32_t) 0xBFFFFFFF)
-                goto end;
-        }
+    i = -1;
+    // Special case for first coefficient, no need to add second VLC table.
+    if (((int32_t) bitstream_peek(&s->bc, 32)) < 0) {
+        level = (3 * qscale) >> 1;
+        level = (level - 1) | 1;
+        if (bitstream_peek(&s->bc, 32) & 0x40000000)
+            level = -level;
+        block[0] = level;
+        i++;
+        bitstream_skip(&s->bc, 2);
+        if (((int32_t) bitstream_peek(&s->bc, 32)) <= (int32_t) 0xBFFFFFFF)
+            goto end;
+    }
 
-        /* now quantify & encode AC coefficients */
-        for (;;) {
-            BITSTREAM_RL_VLC(level, run, &s->bc, rl->rl_vlc[0], TEX_VLC_BITS, 
2);
+    /* now quantify & encode AC coefficients */
+    for (;;) {
+        BITSTREAM_RL_VLC(level, run, &s->bc, rl->rl_vlc[0], TEX_VLC_BITS, 2);
 
-            if (level != 0) {
-                i += run;
-                if (i > MAX_INDEX)
-                    break;
-                j = scantable[i];
+        if (level != 0) {
+            i += run;
+            if (i > MAX_INDEX)
+                break;
+            j = scantable[i];
+            level = ((level * 2 + 1) * qscale) >> 1;
+            level = (level - 1) | 1;
+            level = (level ^ bitstream_peek_signed(&s->bc, 1)) -
+                    bitstream_peek_signed(&s->bc, 1);
+            bitstream_skip(&s->bc, 1);
+        } else {
+            /* escape */
+            run = bitstream_read(&s->bc, 6) + 1;
+            level = bitstream_read_signed(&s->bc, 8);
+            if (level == -128) {
+                level = bitstream_read(&s->bc, 8) - 256;
+            } else if (level == 0) {
+                level = bitstream_read(&s->bc, 8);
+            }
+            i += run;
+            if (i > MAX_INDEX)
+                break;
+            j = scantable[i];
+            if (level < 0) {
+                level = -level;
                 level = ((level * 2 + 1) * qscale) >> 1;
                 level = (level - 1) | 1;
-                level = (level ^ bitstream_peek_signed(&s->bc, 1)) -
-                         bitstream_peek_signed(&s->bc, 1);
-                bitstream_skip(&s->bc, 1);
+                level = -level;
             } else {
-                /* escape */
-                run   = bitstream_read(&s->bc, 6) + 1;
-                level = bitstream_read_signed(&s->bc, 8);
-                if (level == -128) {
-                    level = bitstream_read(&s->bc, 8) - 256;
-                } else if (level == 0) {
-                    level = bitstream_read(&s->bc, 8);
-                }
-                i += run;
-                if (i > MAX_INDEX)
-                    break;
-                j = scantable[i];
-                if (level < 0) {
-                    level = -level;
-                    level = ((level * 2 + 1) * qscale) >> 1;
-                    level = (level - 1) | 1;
-                    level = -level;
-                } else {
-                    level = ((level * 2 + 1) * qscale) >> 1;
-                    level = (level - 1) | 1;
-                }
+                level = ((level * 2 + 1) * qscale) >> 1;
+                level = (level - 1) | 1;
             }
-
-            block[j] = level;
-            if (((int32_t) bitstream_peek(&s->bc, 32)) <= (int32_t) 0xBFFFFFFF)
-                break;
         }
-end:
-        bitstream_skip(&s->bc, 2);
+
+        block[j] = level;
+        if (((int32_t) bitstream_peek(&s->bc, 32)) <= (int32_t) 0xBFFFFFFF)
+            break;
     }
+end:
+    bitstream_skip(&s->bc, 2);
 
     check_scantable_index(s, i);
 
@@ -301,65 +297,62 @@ static inline int 
mpeg2_decode_block_non_intra(MpegEncContext *s,
     int mismatch;
 
     mismatch = 1;
+    i = -1;
+    if (n < 4)
+        quant_matrix = s->inter_matrix;
+    else
+        quant_matrix = s->chroma_inter_matrix;
 
-    {
-        i = -1;
-        if (n < 4)
-            quant_matrix = s->inter_matrix;
-        else
-            quant_matrix = s->chroma_inter_matrix;
-
-        // Special case for first coefficient, no need to add second VLC table.
-        if (((int32_t) bitstream_peek(&s->bc, 32)) < 0) {
-            level = (3 * qscale * quant_matrix[0]) >> 5;
-            if (bitstream_peek(&s->bc, 32) & 0x40000000)
-                level = -level;
-            block[0]  = level;
-            mismatch ^= level;
-            i++;
-            bitstream_skip(&s->bc, 2);
-            if (((int32_t) bitstream_peek(&s->bc, 32)) <= (int32_t) 0xBFFFFFFF)
-                goto end;
-        }
-
-        /* now quantify & encode AC coefficients */
-        for (;;) {
-            BITSTREAM_RL_VLC(level, run, &s->bc, rl->rl_vlc[0], TEX_VLC_BITS, 
2);
+    // Special case for first coefficient, no need to add second VLC table.
+    if (((int32_t) bitstream_peek(&s->bc, 32)) < 0) {
+        level = (3 * qscale * quant_matrix[0]) >> 5;
+        if (bitstream_peek(&s->bc, 32) & 0x40000000)
+            level = -level;
+        block[0]  = level;
+        mismatch ^= level;
+        i++;
+        bitstream_skip(&s->bc, 2);
+        if (((int32_t) bitstream_peek(&s->bc, 32)) <= (int32_t) 0xBFFFFFFF)
+            goto end;
+    }
 
-            if (level != 0) {
-                i += run;
-                if (i > MAX_INDEX)
-                    break;
-                j = scantable[i];
-                level = ((level * 2 + 1) * qscale * quant_matrix[j]) >> 5;
-                level = (level ^ bitstream_peek_signed(&s->bc, 1)) -
-                         bitstream_peek_signed(&s->bc, 1);
-                bitstream_skip(&s->bc, 1);
-            } else {
-                /* escape */
-                run   = bitstream_read(&s->bc, 6) + 1;
-                level = bitstream_read_signed(&s->bc, 12);
+    /* now quantify & encode AC coefficients */
+    for (;;) {
+        BITSTREAM_RL_VLC(level, run, &s->bc, rl->rl_vlc[0], TEX_VLC_BITS, 2);
 
-                i += run;
-                if (i > MAX_INDEX)
-                    break;
-                j = scantable[i];
-                if (level < 0) {
-                    level = ((-level * 2 + 1) * qscale * quant_matrix[j]) >> 5;
-                    level = -level;
-                } else {
-                    level = ((level * 2 + 1) * qscale * quant_matrix[j]) >> 5;
-                }
-            }
+        if (level != 0) {
+            i += run;
+            if (i > MAX_INDEX)
+                break;
+            j = scantable[i];
+            level = ((level * 2 + 1) * qscale * quant_matrix[j]) >> 5;
+            level = (level ^ bitstream_peek_signed(&s->bc, 1)) -
+                    bitstream_peek_signed(&s->bc, 1);
+            bitstream_skip(&s->bc, 1);
+        } else {
+            /* escape */
+            run = bitstream_read(&s->bc, 6) + 1;
+            level = bitstream_read_signed(&s->bc, 12);
 
-            mismatch ^= level;
-            block[j]  = level;
-            if (((int32_t) bitstream_peek(&s->bc, 32)) <= (int32_t) 0xBFFFFFFF)
+            i += run;
+            if (i > MAX_INDEX)
                 break;
+            j = scantable[i];
+            if (level < 0) {
+                level = ((-level * 2 + 1) * qscale * quant_matrix[j]) >> 5;
+                level = -level;
+            } else {
+                level = ((level * 2 + 1) * qscale * quant_matrix[j]) >> 5;
+            }
         }
-end:
-        bitstream_skip(&s->bc, 2);
+
+        mismatch ^= level;
+        block[j]  = level;
+        if (((int32_t) bitstream_peek(&s->bc, 32)) <= (int32_t) 0xBFFFFFFF)
+            break;
     }
+end:
+    bitstream_skip(&s->bc, 2);
     block[63] ^= (mismatch & 1);
 
     check_scantable_index(s, i);
@@ -466,41 +459,39 @@ static inline int mpeg2_decode_block_intra(MpegEncContext 
*s,
     else
         rl = &ff_rl_mpeg1;
 
-    {
-        /* now quantify & encode AC coefficients */
-        for (;;) {
-            BITSTREAM_RL_VLC(level, run, &s->bc, rl->rl_vlc[0], TEX_VLC_BITS, 
2);
+    /* now quantify & encode AC coefficients */
+    for (;;) {
+        BITSTREAM_RL_VLC(level, run, &s->bc, rl->rl_vlc[0], TEX_VLC_BITS, 2);
 
-            if (level == 127) {
+        if (level == 127) {
+            break;
+        } else if (level != 0) {
+            i += run;
+            if (i > MAX_INDEX)
                 break;
-            } else if (level != 0) {
-                i += run;
-                if (i > MAX_INDEX)
-                    break;
-                j = scantable[i];
-                level = (level * qscale * quant_matrix[j]) >> 4;
-                level = (level ^ bitstream_peek_signed(&s->bc, 1)) -
-                         bitstream_peek_signed(&s->bc, 1);
-                bitstream_skip(&s->bc, 1);
+            j = scantable[i];
+            level = (level * qscale * quant_matrix[j]) >> 4;
+            level = (level ^ bitstream_peek_signed(&s->bc, 1)) -
+                    bitstream_peek_signed(&s->bc, 1);
+            bitstream_skip(&s->bc, 1);
+        } else {
+            /* escape */
+            run = bitstream_read(&s->bc, 6) + 1;
+            level = bitstream_read_signed(&s->bc, 12);
+            i += run;
+            if (i > MAX_INDEX)
+                break;
+            j = scantable[i];
+            if (level < 0) {
+                level = (-level * qscale * quant_matrix[j]) >> 4;
+                level = -level;
             } else {
-                /* escape */
-                run   = bitstream_read(&s->bc, 6) + 1;
-                level = bitstream_read_signed(&s->bc, 12);
-                i += run;
-                if (i > MAX_INDEX)
-                    break;
-                j = scantable[i];
-                if (level < 0) {
-                    level = (-level * qscale * quant_matrix[j]) >> 4;
-                    level = -level;
-                } else {
-                    level = (level * qscale * quant_matrix[j]) >> 4;
-                }
+                level = (level * qscale * quant_matrix[j]) >> 4;
             }
-
-            mismatch ^= level;
-            block[j]  = level;
         }
+
+        mismatch ^= level;
+        block[j]  = level;
     }
     block[63] ^= mismatch & 1;
 
@@ -541,40 +532,38 @@ static inline int 
mpeg2_fast_decode_block_intra(MpegEncContext *s,
     else
         rl = &ff_rl_mpeg1;
 
-    {
-        /* now quantify & encode AC coefficients */
-        for (;;) {
-            BITSTREAM_RL_VLC(level, run, &s->bc, rl->rl_vlc[0], TEX_VLC_BITS, 
2);
+    /* now quantify & encode AC coefficients */
+    for (;;) {
+        BITSTREAM_RL_VLC(level, run, &s->bc, rl->rl_vlc[0], TEX_VLC_BITS, 2);
 
-            if (level == 127) {
+        if (level == 127) {
+            break;
+        } else if (level != 0) {
+            i += run;
+            if (i > MAX_INDEX)
                 break;
-            } else if (level != 0) {
-                i += run;
-                if (i > MAX_INDEX)
-                    break;
-                j = scantable[i];
-                level = (level * qscale * quant_matrix[j]) >> 4;
-                level = (level ^ bitstream_peek_signed(&s->bc, 1)) -
-                         bitstream_peek_signed(&s->bc, 1);
-                bitstream_skip(&s->bc, 1);
+            j = scantable[i];
+            level = (level * qscale * quant_matrix[j]) >> 4;
+            level = (level ^ bitstream_peek_signed(&s->bc, 1)) -
+                     bitstream_peek_signed(&s->bc, 1);
+            bitstream_skip(&s->bc, 1);
+        } else {
+            /* escape */
+            run = bitstream_read(&s->bc, 6) + 1;
+            level = bitstream_read_signed(&s->bc, 12);
+            i += run;
+            if (i > MAX_INDEX)
+                break;
+            j = scantable[i];
+            if (level < 0) {
+                level = (-level * qscale * quant_matrix[j]) >> 4;
+                level = -level;
             } else {
-                /* escape */
-                run   = bitstream_read(&s->bc, 6) + 1;
-                level = bitstream_read_signed(&s->bc, 12);
-                i += run;
-                if (i > MAX_INDEX)
-                    break;
-                j = scantable[i];
-                if (level < 0) {
-                    level = (-level * qscale * quant_matrix[j]) >> 4;
-                    level = -level;
-                } else {
-                    level = (level * qscale * quant_matrix[j]) >> 4;
-                }
+                level = (level * qscale * quant_matrix[j]) >> 4;
             }
-
-            block[j] = level;
         }
+
+        block[j] = level;
     }
 
     check_scantable_index(s, i);
diff --git a/libavcodec/mpeg4videodec.c b/libavcodec/mpeg4videodec.c
index ab0a178..5ac8989 100644
--- a/libavcodec/mpeg4videodec.c
+++ b/libavcodec/mpeg4videodec.c
@@ -1026,133 +1026,131 @@ static inline int mpeg4_decode_block(Mpeg4DecContext 
*ctx, int16_t *block,
                 rl_vlc = ff_h263_rl_inter.rl_vlc[s->qscale];
         }
     }
-    {
-        for (;;) {
-            BITSTREAM_RL_VLC(level, run, &s->bc, rl_vlc, TEX_VLC_BITS, 2);
-            if (level == 0) {
-                /* escape */
-                if (rvlc) {
-                    if (bitstream_read_bit(&s->bc) == 0) {
-                        av_log(s->avctx, AV_LOG_ERROR,
-                               "1. marker bit missing in rvlc esc\n");
-                        return -1;
-                    }
+    for (;;) {
+        BITSTREAM_RL_VLC(level, run, &s->bc, rl_vlc, TEX_VLC_BITS, 2);
+        if (level == 0) {
+            /* escape */
+            if (rvlc) {
+                if (bitstream_read_bit(&s->bc) == 0) {
+                    av_log(s->avctx, AV_LOG_ERROR,
+                           "1. marker bit missing in rvlc esc\n");
+                    return -1;
+                }
 
-                    last = bitstream_read_bit(&s->bc);
-                    run  = bitstream_read(&s->bc, 6);
+                last = bitstream_read_bit(&s->bc);
+                run  = bitstream_read(&s->bc, 6);
 
-                    if (bitstream_read_bit(&s->bc) == 0) {
-                        av_log(s->avctx, AV_LOG_ERROR,
-                               "2. marker bit missing in rvlc esc\n");
-                        return -1;
-                    }
+                if (bitstream_read_bit(&s->bc) == 0) {
+                    av_log(s->avctx, AV_LOG_ERROR,
+                           "2. marker bit missing in rvlc esc\n");
+                    return -1;
+                }
 
-                    level = bitstream_read(&s->bc, 11);
+                level = bitstream_read(&s->bc, 11);
 
-                    if (bitstream_read(&s->bc, 5) != 0x10) {
-                        av_log(s->avctx, AV_LOG_ERROR, "reverse esc 
missing\n");
-                        return -1;
-                    }
+                if (bitstream_read(&s->bc, 5) != 0x10) {
+                    av_log(s->avctx, AV_LOG_ERROR, "reverse esc missing\n");
+                    return -1;
+                }
 
-                    level = level * qmul + qadd;
-                    level = (level ^ bitstream_peek_signed(&s->bc, 1)) -
-                             bitstream_peek_signed(&s->bc, 1);
-                    bitstream_skip(&s->bc, 1);
+                level = level * qmul + qadd;
+                level = (level ^ bitstream_peek_signed(&s->bc, 1)) -
+                         bitstream_peek_signed(&s->bc, 1);
+                bitstream_skip(&s->bc, 1);
 
-                    i += run + 1;
-                    if (last)
-                        i += 192;
-                } else {
-                    int cache = bitstream_peek(&s->bc, 32);
-
-                    if (IS_3IV1)
-                        cache ^= 0xC0000000;
-
-                    if (cache & 0x80000000) {
-                        if (cache & 0x40000000) {
-                            /* third escape */
-                            bitstream_skip(&s->bc, 2);
-                            last = bitstream_read_bit(&s->bc);
-                            run  = bitstream_read(&s->bc, 6);
-
-                            if (IS_3IV1) {
-                                level = bitstream_read_signed(&s->bc, 12);
-                            } else {
-                                if (bitstream_read(&s->bc, 1) == 0) {
-                                    av_log(s->avctx, AV_LOG_ERROR,
-                                           "1. marker bit missing in 3. 
esc\n");
-                                    return -1;
-                                }
+                i += run + 1;
+                if (last)
+                    i += 192;
+            } else {
+                int cache = bitstream_peek(&s->bc, 32);
 
-                                level = bitstream_read_signed(&s->bc, 12);
+                if (IS_3IV1)
+                    cache ^= 0xC0000000;
 
-                                if (bitstream_read(&s->bc, 1) == 0) {
-                                    av_log(s->avctx, AV_LOG_ERROR,
-                                           "2. marker bit missing in 3. 
esc\n");
-                                    return -1;
-                                }
+                if (cache & 0x80000000) {
+                    if (cache & 0x40000000) {
+                        /* third escape */
+                        bitstream_skip(&s->bc, 2);
+                        last = bitstream_read_bit(&s->bc);
+                        run = bitstream_read(&s->bc, 6);
+
+                        if (IS_3IV1) {
+                            level = bitstream_read_signed(&s->bc, 12);
+                        } else {
+                            if (bitstream_read(&s->bc, 1) == 0) {
+                                av_log(s->avctx, AV_LOG_ERROR,
+                                       "1. marker bit missing in 3. esc\n");
+                                return -1;
                             }
 
-                            if (level > 0)
-                                level = level * qmul + qadd;
-                            else
-                                level = level * qmul - qadd;
-
-                            if ((unsigned)(level + 2048) > 4095) {
-                                if (s->avctx->err_recognition & 
AV_EF_BITSTREAM) {
-                                    if (level > 2560 || level < -2560) {
-                                        av_log(s->avctx, AV_LOG_ERROR,
-                                               "|level| overflow in 3. esc, 
qp=%d\n",
-                                               s->qscale);
-                                        return -1;
-                                    }
-                                }
-                                level = level < 0 ? -2048 : 2047;
+                            level = bitstream_read_signed(&s->bc, 12);
+
+                            if (bitstream_read(&s->bc, 1) == 0) {
+                                av_log(s->avctx, AV_LOG_ERROR,
+                                       "2. marker bit missing in 3. esc\n");
+                                return -1;
                             }
+                        }
 
-                            i += run + 1;
-                            if (last)
-                                i += 192;
-                        } else {
-                            /* second escape */
-                            bitstream_skip(&s->bc, 2);
-                            BITSTREAM_RL_VLC(level, run, &s->bc, rl_vlc, 
TEX_VLC_BITS, 2);
-                            i    += run + rl->max_run[run >> 7][level / qmul] 
+ 1;  // FIXME opt indexing
-                            level = (level ^ bitstream_peek_signed(&s->bc, 1)) 
-
-                                     bitstream_peek_signed(&s->bc, 1);
-                            bitstream_skip(&s->bc, 1);
+                        if (level > 0)
+                            level = level * qmul + qadd;
+                        else
+                            level = level * qmul - qadd;
+
+                        if ((unsigned)(level + 2048) > 4095) {
+                            if (s->avctx->err_recognition & AV_EF_BITSTREAM) {
+                                if (level > 2560 || level < -2560) {
+                                    av_log(s->avctx, AV_LOG_ERROR,
+                                           "|level| overflow in 3. esc, 
qp=%d\n",
+                                           s->qscale);
+                                    return -1;
+                                }
+                            }
+                            level = level < 0 ? -2048 : 2047;
                         }
+
+                        i += run + 1;
+                        if (last)
+                            i += 192;
                     } else {
-                        /* first escape */
-                        bitstream_skip(&s->bc, 1);
+                        /* second escape */
+                        bitstream_skip(&s->bc, 2);
                         BITSTREAM_RL_VLC(level, run, &s->bc, rl_vlc, 
TEX_VLC_BITS, 2);
-                        i    += run;
-                        level = level + rl->max_level[run >> 7][(run - 1) & 
63] * qmul;  // FIXME opt indexing
+                        i    += run + rl->max_run[run >> 7][level / qmul] + 1; 
// FIXME opt indexing
                         level = (level ^ bitstream_peek_signed(&s->bc, 1)) -
                                  bitstream_peek_signed(&s->bc, 1);
                         bitstream_skip(&s->bc, 1);
                     }
+                } else {
+                    /* first escape */
+                    bitstream_skip(&s->bc, 1);
+                    BITSTREAM_RL_VLC(level, run, &s->bc, rl_vlc, TEX_VLC_BITS, 
2);
+                    i    += run;
+                    level = level + rl->max_level[run >> 7][(run - 1) & 63] * 
qmul; // FIXME opt indexing
+                    level = (level ^ bitstream_peek_signed(&s->bc, 1)) -
+                             bitstream_peek_signed(&s->bc, 1);
+                    bitstream_skip(&s->bc, 1);
                 }
-            } else {
-                i    += run;
-                level = (level ^ bitstream_peek_signed(&s->bc, 1)) -
-                         bitstream_peek_signed(&s->bc, 1);
-                bitstream_skip(&s->bc, 1);
             }
-            if (i > 62) {
-                i -= 192;
-                if (i & (~63)) {
-                    av_log(s->avctx, AV_LOG_ERROR,
-                           "ac-tex damaged at %d %d\n", s->mb_x, s->mb_y);
-                    return -1;
-                }
-
-                block[scan_table[i]] = level;
-                break;
+        } else {
+            i    += run;
+            level = (level ^ bitstream_peek_signed(&s->bc, 1)) -
+                     bitstream_peek_signed(&s->bc, 1);
+            bitstream_skip(&s->bc, 1);
+        }
+        if (i > 62) {
+            i -= 192;
+            if (i & (~63)) {
+                av_log(s->avctx, AV_LOG_ERROR,
+                       "ac-tex damaged at %d %d\n", s->mb_x, s->mb_y);
+                return -1;
             }
 
             block[scan_table[i]] = level;
+            break;
         }
+
+        block[scan_table[i]] = level;
     }
 
 not_coded:
diff --git a/libavcodec/msmpeg4dec.c b/libavcodec/msmpeg4dec.c
index 500f06b..fd7e8e2 100644
--- a/libavcodec/msmpeg4dec.c
+++ b/libavcodec/msmpeg4dec.c
@@ -710,7 +710,6 @@ int ff_msmpeg4_decode_block(MpegEncContext * s, int16_t * 
block,
             scan_table = s->inter_scantable.permutated;
         rl_vlc= rl->rl_vlc[s->qscale];
     }
-  {
     for(;;) {
         BITSTREAM_RL_VLC(level, run, &s->bc, rl_vlc, TEX_VLC_BITS, 2);
         if (level==0) {
@@ -860,7 +859,6 @@ int ff_msmpeg4_decode_block(MpegEncContext * s, int16_t * 
block,
 
         block[scan_table[i]] = level;
     }
-  }
  not_coded:
     if (s->mb_intra) {
         ff_mpeg4_pred_ac(s, block, n, dc_pred_dir);
diff --git a/libavcodec/mxpegdec.c b/libavcodec/mxpegdec.c
index a300c6a..5de2224 100644
--- a/libavcodec/mxpegdec.c
+++ b/libavcodec/mxpegdec.c
@@ -203,117 +203,111 @@ static int mxpeg_decode_frame(AVCodecContext *avctx,
                                           &unescaped_buf_ptr, 
&unescaped_buf_size);
         if (start_code < 0)
             goto the_end;
-        {
-            bitstream_init8(&jpg->bc, unescaped_buf_ptr, unescaped_buf_size);
+        bitstream_init8(&jpg->bc, unescaped_buf_ptr, unescaped_buf_size);
 
-            if (start_code >= APP0 && start_code <= APP15) {
-                mxpeg_decode_app(s, unescaped_buf_ptr, unescaped_buf_size);
-            }
+        if (start_code >= APP0 && start_code <= APP15) {
+            mxpeg_decode_app(s, unescaped_buf_ptr, unescaped_buf_size);
+        }
 
-            switch (start_code) {
-            case SOI:
-                if (jpg->got_picture) //emulating EOI
-                    goto the_end;
-                break;
-            case EOI:
+        switch (start_code) {
+        case SOI:
+            if (jpg->got_picture) // emulating EOI
                 goto the_end;
-            case DQT:
-                ret = ff_mjpeg_decode_dqt(jpg);
-                if (ret < 0) {
-                    av_log(avctx, AV_LOG_ERROR,
-                           "quantization table decode error\n");
-                    return ret;
-                }
-                break;
-            case DHT:
-                ret = ff_mjpeg_decode_dht(jpg);
-                if (ret < 0) {
-                    av_log(avctx, AV_LOG_ERROR,
-                           "huffman table decode error\n");
-                    return ret;
-                }
-                break;
-            case COM:
-                ret = mxpeg_decode_com(s, unescaped_buf_ptr,
-                                       unescaped_buf_size);
-                if (ret < 0)
-                    return ret;
+            break;
+        case EOI:
+            goto the_end;
+        case DQT:
+            ret = ff_mjpeg_decode_dqt(jpg);
+            if (ret < 0) {
+                av_log(avctx, AV_LOG_ERROR,
+                       "quantization table decode error\n");
+                return ret;
+            }
+            break;
+        case DHT:
+            ret = ff_mjpeg_decode_dht(jpg);
+            if (ret < 0) {
+                av_log(avctx, AV_LOG_ERROR, "huffman table decode error\n");
+                return ret;
+            }
+            break;
+        case COM:
+            ret = mxpeg_decode_com(s, unescaped_buf_ptr, unescaped_buf_size);
+            if (ret < 0)
+                return ret;
+            break;
+        case SOF0:
+            s->got_sof_data = 0;
+            ret = ff_mjpeg_decode_sof(jpg);
+            if (ret < 0) {
+                av_log(avctx, AV_LOG_ERROR, "SOF data decode error\n");
+                return ret;
+            }
+            if (jpg->interlaced) {
+                av_log(avctx, AV_LOG_ERROR,
+                       "Interlaced mode not supported in MxPEG\n");
+                return AVERROR(EINVAL);
+            }
+            s->got_sof_data = 1;
+            break;
+        case SOS:
+            if (!s->got_sof_data) {
+                av_log(avctx, AV_LOG_WARNING,
+                       "Can not process SOS without SOF data, skipping\n");
                 break;
-            case SOF0:
-                s->got_sof_data = 0;
-                ret = ff_mjpeg_decode_sof(jpg);
-                if (ret < 0) {
-                    av_log(avctx, AV_LOG_ERROR,
-                           "SOF data decode error\n");
-                    return ret;
-                }
-                if (jpg->interlaced) {
-                    av_log(avctx, AV_LOG_ERROR,
-                           "Interlaced mode not supported in MxPEG\n");
-                    return AVERROR(EINVAL);
+            }
+            if (!jpg->got_picture) {
+                if (jpg->first_picture) {
+                    av_log(avctx, AV_LOG_WARNING,
+                           "First picture has no SOF, skipping\n");
+                    break;
                 }
-                s->got_sof_data = 1;
-                break;
-            case SOS:
-                if (!s->got_sof_data) {
+                if (!s->got_mxm_bitmask){
                     av_log(avctx, AV_LOG_WARNING,
-                           "Can not process SOS without SOF data, skipping\n");
+                           "Non-key frame has no MXM, skipping\n");
                     break;
                 }
-                if (!jpg->got_picture) {
-                    if (jpg->first_picture) {
-                        av_log(avctx, AV_LOG_WARNING,
-                               "First picture has no SOF, skipping\n");
-                        break;
-                    }
-                    if (!s->got_mxm_bitmask){
-                        av_log(avctx, AV_LOG_WARNING,
-                               "Non-key frame has no MXM, skipping\n");
-                        break;
-                    }
-                    /* use stored SOF data to allocate current picture */
-                    av_frame_unref(jpg->picture_ptr);
-                    if (ff_get_buffer(avctx, jpg->picture_ptr,
-                                      AV_GET_BUFFER_FLAG_REF) < 0) {
-                        av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n");
-                        return AVERROR(ENOMEM);
-                    }
-                    jpg->picture_ptr->pict_type = AV_PICTURE_TYPE_P;
-                    jpg->picture_ptr->key_frame = 0;
-                    jpg->got_picture = 1;
-                } else {
-                    jpg->picture_ptr->pict_type = AV_PICTURE_TYPE_I;
-                    jpg->picture_ptr->key_frame = 1;
+                /* use stored SOF data to allocate current picture */
+                av_frame_unref(jpg->picture_ptr);
+                if (ff_get_buffer(avctx, jpg->picture_ptr,
+                                  AV_GET_BUFFER_FLAG_REF) < 0) {
+                    av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n");
+                    return AVERROR(ENOMEM);
                 }
+                jpg->picture_ptr->pict_type = AV_PICTURE_TYPE_P;
+                jpg->picture_ptr->key_frame = 0;
+                jpg->got_picture = 1;
+            } else {
+                jpg->picture_ptr->pict_type = AV_PICTURE_TYPE_I;
+                jpg->picture_ptr->key_frame = 1;
+            }
+
+            if (s->got_mxm_bitmask) {
+                AVFrame *reference_ptr = s->picture[s->picture_index ^ 1];
+                if (mxpeg_check_dimensions(s, jpg, reference_ptr) < 0)
+                    break;
 
-                if (s->got_mxm_bitmask) {
-                    AVFrame *reference_ptr = s->picture[s->picture_index ^ 1];
-                    if (mxpeg_check_dimensions(s, jpg, reference_ptr) < 0)
-                        break;
-
-                    /* allocate dummy reference picture if needed */
-                    if (!reference_ptr->data[0] &&
-                        ff_get_buffer(avctx, reference_ptr,
-                                      AV_GET_BUFFER_FLAG_REF) < 0) {
-                        av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n");
-                        return AVERROR(ENOMEM);
-                    }
-
-                    ret = ff_mjpeg_decode_sos(jpg, s->mxm_bitmask, 
reference_ptr);
-                    if (ret < 0 && (avctx->err_recognition & AV_EF_EXPLODE))
-                        return ret;
-                } else {
-                    ret = ff_mjpeg_decode_sos(jpg, NULL, NULL);
-                    if (ret < 0 && (avctx->err_recognition & AV_EF_EXPLODE))
-                        return ret;
+                /* allocate dummy reference picture if needed */
+                if (!reference_ptr->data[0] &&
+                    ff_get_buffer(avctx, reference_ptr,
+                                  AV_GET_BUFFER_FLAG_REF) < 0) {
+                    av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n");
+                    return AVERROR(ENOMEM);
                 }
 
-                break;
+                ret = ff_mjpeg_decode_sos(jpg, s->mxm_bitmask, reference_ptr);
+                if (ret < 0 && (avctx->err_recognition & AV_EF_EXPLODE))
+                    return ret;
+            } else {
+                ret = ff_mjpeg_decode_sos(jpg, NULL, NULL);
+                if (ret < 0 && (avctx->err_recognition & AV_EF_EXPLODE))
+                    return ret;
             }
 
-            buf_ptr += (bitstream_tell(&jpg->bc) + 7) >> 3;
+            break;
         }
 
+        buf_ptr += (bitstream_tell(&jpg->bc) + 7) >> 3;
     }
 
 the_end:
-- 
2.7.3

_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to