[FFmpeg-cvslog] avcodec/h261enc: fix dquant encoding

Michael Niedermayer git at videolan.org
Sat Jan 31 05:13:04 CET 2015


ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Sat Jan 31 04:57:50 2015 +0100| [9f73b88c624a0b70a3d1169b9f6fa49002dfb94a] | committer: Michael Niedermayer

avcodec/h261enc: fix dquant encoding

Fixes Ticket4111

Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

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

 libavcodec/h261enc.c |    9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/libavcodec/h261enc.c b/libavcodec/h261enc.c
index 75211a0..d7b56a8 100644
--- a/libavcodec/h261enc.c
+++ b/libavcodec/h261enc.c
@@ -250,12 +250,13 @@ void ff_h261_encode_mb(MpegEncContext *s, int16_t block[6][64],
         /* mvd indicates if this block is motion compensated */
         mvd = motion_x | motion_y;
 
-        if ((cbp | mvd | s->dquant) == 0) {
+        if ((cbp | mvd) == 0) {
             /* skip macroblock */
             s->skip_count++;
             s->mb_skip_run++;
             s->last_mv[0][0][0] = 0;
             s->last_mv[0][0][1] = 0;
+            s->qscale -= s->dquant;
             return;
         }
     }
@@ -274,13 +275,15 @@ void ff_h261_encode_mb(MpegEncContext *s, int16_t block[6][64],
             h->mtype += 3;
         if (s->loop_filter)
             h->mtype += 3;
-        if (cbp || s->dquant)
+        if (cbp)
             h->mtype++;
         av_assert1(h->mtype > 1);
     }
 
-    if (s->dquant)
+    if (s->dquant && cbp) {
         h->mtype++;
+    } else
+        s->qscale -= s->dquant;
 
     put_bits(&s->pb,
              ff_h261_mtype_bits[h->mtype],



More information about the ffmpeg-cvslog mailing list