[FFmpeg-cvslog] SVQ3: Check that things match up after a frame.

Baptiste Coudurier git at videolan.org
Thu May 5 16:06:15 CEST 2011


ffmpeg | branch: master | Baptiste Coudurier <baptiste.coudurier at gmail.com> | Thu May  5 14:40:26 2011 +0200| [b0e7a932e6ea9bb83e7e15c4cd4c1bda110d16e2] | committer: Michael Niedermayer

SVQ3: Check that things match up after a frame.
Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

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

 libavcodec/svq3.c |   14 +++++++++++++-
 1 files changed, 13 insertions(+), 1 deletions(-)

diff --git a/libavcodec/svq3.c b/libavcodec/svq3.c
index 393c7b4..9dff9e9 100644
--- a/libavcodec/svq3.c
+++ b/libavcodec/svq3.c
@@ -932,7 +932,7 @@ static int svq3_decode_frame(AVCodecContext *avctx,
     H264Context *h = &svq3->h;
     MpegEncContext *s = &h->s;
     int buf_size = avpkt->size;
-    int m, mb_type;
+    int m, mb_type, left;
 
     /* special case for last picture */
     if (buf_size == 0) {
@@ -1054,6 +1054,18 @@ static int svq3_decode_frame(AVCodecContext *avctx,
         ff_draw_horiz_band(s, 16*s->mb_y, 16);
     }
 
+    left = buf_size*8 - get_bits_count(&s->gb);
+
+    if (s->mb_y != s->mb_height || s->mb_x != s->mb_width) {
+        av_log(avctx, AV_LOG_INFO, "frame num %d incomplete pic x %d y %d left %d\n", avctx->frame_number, s->mb_y, s->mb_x, left);
+        //av_hex_dump(stderr, buf+buf_size-8, 8);
+    }
+
+    if (left < 0) {
+        av_log(avctx, AV_LOG_ERROR, "frame num %d left %d\n", avctx->frame_number, left);
+        return -1;
+    }
+
     MPV_frame_end(s);
 
     if (s->pict_type == AV_PICTURE_TYPE_B || s->low_delay) {



More information about the ffmpeg-cvslog mailing list