diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2013-11-20 15:28:46 +0100 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2013-11-20 15:28:46 +0100 |
commit | 6c04c5f733d3b484ef75fc3af00c391d8db30363 (patch) | |
tree | ba16c90f0c2e73fce7e5b89b081ffe9504a21af3 /libavcodec/h261enc.c | |
parent | cccdaa406a29b6336276cb7ac3ab64c3b2232b0a (diff) | |
download | ffmpeg-6c04c5f733d3b484ef75fc3af00c391d8db30363.tar.gz |
avcodec/h261enc: dont use current_mv_x/y
Fixes -mbd rd
Fixes Ticket3151
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/h261enc.c')
-rw-r--r-- | libavcodec/h261enc.c | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/libavcodec/h261enc.c b/libavcodec/h261enc.c index f66de4f5f2..e185f5ec0a 100644 --- a/libavcodec/h261enc.c +++ b/libavcodec/h261enc.c @@ -99,20 +99,19 @@ static void h261_encode_gob_header(MpegEncContext *s, int mb_line) put_bits(&s->pb, 5, s->qscale); /* GQUANT */ put_bits(&s->pb, 1, 0); /* no GEI */ s->mb_skip_run = 0; - h->current_mv_x = 0; - h->current_mv_y = 0; + s->last_mv[0][0][0] = 0; + s->last_mv[0][0][1] = 0; } void ff_h261_reorder_mb_index(MpegEncContext *s) { - H261Context *h = (H261Context *)s; int index = s->mb_x + s->mb_y * s->mb_width; if (index % 11 == 0) { if (index % 33 == 0) h261_encode_gob_header(s, 0); - h->current_mv_x = 0; - h->current_mv_y = 0; + s->last_mv[0][0][0] = 0; + s->last_mv[0][0][1] = 0; } /* for CIF the GOB's are fragmented in the middle of a scanline @@ -254,8 +253,8 @@ void ff_h261_encode_mb(MpegEncContext *s, int16_t block[6][64], /* skip macroblock */ s->skip_count++; s->mb_skip_run++; - h->current_mv_x = 0; - h->current_mv_y = 0; + s->last_mv[0][0][0] = 0; + s->last_mv[0][0][1] = 0; return; } } @@ -294,10 +293,10 @@ void ff_h261_encode_mb(MpegEncContext *s, int16_t block[6][64], } if (IS_16X16(h->mtype)) { - mv_diff_x = (motion_x >> 1) - h->current_mv_x; - mv_diff_y = (motion_y >> 1) - h->current_mv_y; - h->current_mv_x = (motion_x >> 1); - h->current_mv_y = (motion_y >> 1); + mv_diff_x = (motion_x >> 1) - s->last_mv[0][0][0]; + mv_diff_y = (motion_y >> 1) - s->last_mv[0][0][1]; + s->last_mv[0][0][0] = (motion_x >> 1); + s->last_mv[0][0][1] = (motion_y >> 1); h261_encode_motion(h, mv_diff_x); h261_encode_motion(h, mv_diff_y); } @@ -313,8 +312,8 @@ void ff_h261_encode_mb(MpegEncContext *s, int16_t block[6][64], h261_encode_block(h, block[i], i); if (!IS_16X16(h->mtype)) { - h->current_mv_x = 0; - h->current_mv_y = 0; + s->last_mv[0][0][0] = 0; + s->last_mv[0][0][1] = 0; } } |