From 950a4f832661afeafd087dc28c19051ea83b0c4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micka=C3=ABl=20Raulet?= Date: Sun, 20 Jul 2014 01:50:19 +0200 Subject: [PATCH] hevc: fix offset for sao temporary frame fixes fate on alpha cherry picked from commit 0a8ce1cbdaff7cd026bcf95ee3787bc7b4c063ee Signed-off-by: Michael Niedermayer --- libavcodec/hevc.c | 6 +++--- 1 file 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; }