diff options
author | Mickaƫl Raulet <mraulet@insa-rennes.fr> | 2014-07-20 01:50:19 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2014-07-20 02:48:53 +0200 |
commit | 950a4f832661afeafd087dc28c19051ea83b0c4b (patch) | |
tree | bddf924eda004d77a7d1023b37d220ec284e6fdb /libavcodec | |
parent | 28f31e78eb9c2683fb50a1116e337dca5b97dab2 (diff) | |
download | ffmpeg-950a4f832661afeafd087dc28c19051ea83b0c4b.tar.gz |
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')
-rw-r--r-- | libavcodec/hevc.c | 6 |
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; } |