diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2012-08-23 19:03:57 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2012-08-23 19:03:57 +0200 |
commit | 2b3b52d51998e261e65dc1f972dbc1805e539f20 (patch) | |
tree | 4833b5921ded32bd4b351447f05b513115ed706a /libavcodec/lagarith.c | |
parent | 732dfc7660105cddbccdf9f3bc6f6adca8cc8e37 (diff) | |
download | ffmpeg-2b3b52d51998e261e65dc1f972dbc1805e539f20.tar.gz |
lagarith: fix alignment on buffers passed into prediction dsp code.
This should fix issues with direct rendering
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/lagarith.c')
-rw-r--r-- | libavcodec/lagarith.c | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/libavcodec/lagarith.c b/libavcodec/lagarith.c index 9178f9294a..09ae402e5c 100644 --- a/libavcodec/lagarith.c +++ b/libavcodec/lagarith.c @@ -250,8 +250,8 @@ static void lag_pred_line(LagarithContext *l, uint8_t *buf, if (!line) { /* Left prediction only for first line */ - L = l->dsp.add_hfyu_left_prediction(buf + 1, buf + 1, - width - 1, buf[0]); + L = l->dsp.add_hfyu_left_prediction(buf, buf, + width, 0); } else { /* Left pixel is actually prev_row[width] */ L = buf[width - stride - 1]; @@ -277,11 +277,12 @@ static void lag_pred_line_yuy2(LagarithContext *l, uint8_t *buf, int L, TL; if (!line) { - if (is_luma) { - buf++; - width--; - } - l->dsp.add_hfyu_left_prediction(buf + 1, buf + 1, width - 1, buf[0]); + L= buf[0]; + if (is_luma) + buf[0] = 0; + l->dsp.add_hfyu_left_prediction(buf, buf, width, 0); + if (is_luma) + buf[0] = L; return; } if (line == 1) { @@ -294,14 +295,17 @@ static void lag_pred_line_yuy2(LagarithContext *l, uint8_t *buf, L += buf[i]; buf[i] = L; } - buf += HEAD; - width -= HEAD; + for (; i<width; i++) { + L = mid_pred(L&0xFF, buf[i-stride], (L + buf[i-stride] - TL)&0xFF) + buf[i]; + TL = buf[i-stride]; + buf[i]= L; + } } else { TL = buf[width - (2 * stride) - 1]; L = buf[width - stride - 1]; + l->dsp.add_hfyu_median_prediction(buf, buf - stride, buf, width, + &L, &TL); } - l->dsp.add_hfyu_median_prediction(buf, buf - stride, buf, width, - &L, &TL); } static int lag_decode_line(LagarithContext *l, lag_rac *rac, |