]> git.sesse.net Git - ffmpeg/commitdiff
hevc: fix offset for sao temporary frame
authorMickaël Raulet <mraulet@insa-rennes.fr>
Sat, 19 Jul 2014 23:50:19 +0000 (01:50 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Sun, 20 Jul 2014 00:48:53 +0000 (02:48 +0200)
fixes fate on alpha

cherry picked from commit 0a8ce1cbdaff7cd026bcf95ee3787bc7b4c063ee

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavcodec/hevc.c

index 8616395fe643fea251b48bb2d06c8ff3cbece456..6f93fcb84bd31714ac585b38c9f94c97fe6a13c1 100644 (file)
@@ -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;
     }