summaryrefslogtreecommitdiff
path: root/libavcodec/hevc.c
diff options
context:
space:
mode:
authorMickaƫl Raulet <mraulet@insa-rennes.fr>2014-07-20 01:50:19 +0200
committerMichael Niedermayer <michaelni@gmx.at>2014-07-20 02:48:53 +0200
commit950a4f832661afeafd087dc28c19051ea83b0c4b (patch)
treebddf924eda004d77a7d1023b37d220ec284e6fdb /libavcodec/hevc.c
parent28f31e78eb9c2683fb50a1116e337dca5b97dab2 (diff)
hevc: fix offset for sao temporary frame
fixes fate on alpha cherry picked from commit 0a8ce1cbdaff7cd026bcf95ee3787bc7b4c063ee Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/hevc.c')
-rw-r--r--libavcodec/hevc.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/libavcodec/hevc.c b/libavcodec/hevc.c
index 8616395fe6..6f93fcb84b 100644
--- a/libavcodec/hevc.c
+++ b/libavcodec/hevc.c
@@ -276,7 +276,7 @@ static int decode_lt_rps(HEVCContext *s, LongTermRPS *rps, GetBitContext *gb)
return 0;
}
-static int get_buffer_sao(HEVCContext *s, AVFrame *frame)
+static int get_buffer_sao(HEVCContext *s, AVFrame *frame, HEVCSPS *sps)
{
int ret, i;
@@ -285,7 +285,7 @@ static int get_buffer_sao(HEVCContext *s, AVFrame *frame)
if ((ret = ff_get_buffer(s->avctx, frame, AV_GET_BUFFER_FLAG_REF)) < 0)
return ret;
for (i = 0; frame->data[i]; i++) {
- int offset = frame->linesize[i] + 1;
+ int offset = frame->linesize[i] + (1 << sps->pixel_shift);
frame->data[i] += offset;
}
frame->width = s->avctx->width;
@@ -335,7 +335,7 @@ static int set_sps(HEVCContext *s, const HEVCSPS *sps)
if (sps->sao_enabled) {
av_frame_unref(s->tmp_frame);
- ret = get_buffer_sao(s, s->tmp_frame);
+ ret = get_buffer_sao(s, s->tmp_frame, sps);
s->sao_frame = s->tmp_frame;
}