[FFmpeg-cvslog] avcodec/h261dec: fix motion vector vissualization

Michael Niedermayer git at videolan.org
Wed Mar 26 01:28:40 CET 2014


ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Wed Mar 26 00:39:46 2014 +0100| [4090d5baa89467e4ebdc7747e795bd6d83a91635] | committer: Michael Niedermayer

avcodec/h261dec: fix motion vector vissualization

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

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

 libavcodec/h261dec.c |    9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/libavcodec/h261dec.c b/libavcodec/h261dec.c
index 696a0f2..882bef1 100644
--- a/libavcodec/h261dec.c
+++ b/libavcodec/h261dec.c
@@ -341,7 +341,8 @@ static int h261_decode_block(H261Context *h, int16_t *block, int n, int coded)
 static int h261_decode_mb(H261Context *h)
 {
     MpegEncContext *const s = &h->s;
-    int i, cbp, xy;
+    int i, cbp, xy, b_xy;
+    int b_stride = 2*s->mb_width + 1;
 
     cbp = 63;
     // Read mba
@@ -374,6 +375,7 @@ static int h261_decode_mb(H261Context *h)
     s->mb_x = ((h->gob_number - 1) % 2) * 11 + ((h->current_mba - 1) % 11);
     s->mb_y = ((h->gob_number - 1) / 2) * 3 + ((h->current_mba - 1) / 11);
     xy      = s->mb_x + s->mb_y * s->mb_stride;
+    b_xy    = 2 * s->mb_x + (2 * s->mb_y) * b_stride;
     ff_init_block_index(s);
     ff_update_block_index(s);
 
@@ -432,6 +434,11 @@ static int h261_decode_mb(H261Context *h)
     s->mv[0][0][0]                 = h->current_mv_x * 2; // gets divided by 2 in motion compensation
     s->mv[0][0][1]                 = h->current_mv_y * 2;
 
+    if (s->current_picture.motion_val[0]) {
+        s->current_picture.motion_val[0][b_xy][0] = s->mv[0][0][0];
+        s->current_picture.motion_val[0][b_xy][1] = s->mv[0][0][1];
+    }
+
 intra:
     /* decode each block */
     if (s->mb_intra || HAS_CBP(h->mtype)) {



More information about the ffmpeg-cvslog mailing list