diff options
author | Ronald S. Bultje <rsbultje@gmail.com> | 2015-04-22 20:14:19 -0400 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2015-04-24 16:54:31 +0200 |
commit | ed45edb2f6fe0af577b6d09665763c6cb479a0a5 (patch) | |
tree | 8f120403227a263dd27c43cf6c527732e9061f5f /libavcodec/vp9.c | |
parent | 3de13d5212b6a0ff146dc0b50e34ee7dbc822eef (diff) | |
download | ffmpeg-ed45edb2f6fe0af577b6d09665763c6cb479a0a5.tar.gz |
vp9: use aligned size to write segmentation map into cache.
The unaligned size is not handled in setctx_2d(), causing edges of images
to have improper segmentation prediction, which causes visual artifacts
at image edges a few frames later.
Diffstat (limited to 'libavcodec/vp9.c')
-rw-r--r-- | libavcodec/vp9.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/libavcodec/vp9.c b/libavcodec/vp9.c index 8d9ba0d0ae..1935f94ea5 100644 --- a/libavcodec/vp9.c +++ b/libavcodec/vp9.c @@ -1352,8 +1352,8 @@ static void decode_mode(AVCodecContext *ctx) VP9Block *b = s->b; int row = s->row, col = s->col, row7 = s->row7; enum TxfmMode max_tx = max_tx_for_bl_bp[b->bs]; - int w4 = FFMIN(s->cols - col, bwh_tab[1][b->bs][0]); - int h4 = FFMIN(s->rows - row, bwh_tab[1][b->bs][1]), y; + int bw4 = bwh_tab[1][b->bs][0], w4 = FFMIN(s->cols - col, bw4); + int bh4 = bwh_tab[1][b->bs][1], h4 = FFMIN(s->rows - row, bh4), y; int have_a = row > 0, have_l = col > s->tiling.tile_col_start; int vref, filter_id; @@ -1395,7 +1395,7 @@ static void decode_mode(AVCodecContext *ctx) if (s->segmentation.enabled && (s->segmentation.update_map || s->keyframe || s->intraonly)) { setctx_2d(&s->frames[CUR_FRAME].segmentation_map[row * 8 * s->sb_cols + col], - w4, h4, 8 * s->sb_cols, b->seg_id); + bw4, bh4, 8 * s->sb_cols, b->seg_id); } b->skip = s->segmentation.enabled && |