diff options
author | Philip Langdale <philipl@overt.org> | 2018-05-09 18:48:59 -0700 |
---|---|---|
committer | Timo Rothenpieler <timo@rothenpieler.org> | 2018-05-10 18:41:56 +0200 |
commit | 1261003700322789d62a892e3325f8b58349d051 (patch) | |
tree | 5d0018fe0ffc65b1d41f91686028b57cda7a29f6 /libavcodec/nvdec_hevc.c | |
parent | 46c1ee19171c4704ad7dec65b1c716a727238486 (diff) | |
download | ffmpeg-1261003700322789d62a892e3325f8b58349d051.tar.gz |
avcodec/nvdec_hevc: fix scaling lists
The main issue here was the use of [i] instead of [i * 3] for the 32x32
matrix. As part of fixing this, I changed the code to match that used
in vdpau_hevc, which I spent a lot of time verifying.
I also changed to calculating NumPocTotalCurr using the existing helper,
which is what vdpau does.
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
Diffstat (limited to 'libavcodec/nvdec_hevc.c')
-rw-r--r-- | libavcodec/nvdec_hevc.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/libavcodec/nvdec_hevc.c b/libavcodec/nvdec_hevc.c index 008963130b..e04a701f3a 100644 --- a/libavcodec/nvdec_hevc.c +++ b/libavcodec/nvdec_hevc.c @@ -58,12 +58,13 @@ static void fill_scaling_lists(CUVIDHEVCPICPARAMS *ppc, const HEVCContext *s) ppc->ScalingList16x16[i][j] = sl->sl[2][i][pos]; if (i < 2) - ppc->ScalingList32x32[i][j] = sl->sl[3][i][pos]; + ppc->ScalingList32x32[i][j] = sl->sl[3][i * 3][pos]; } - } - memcpy(ppc->ScalingListDCCoeff16x16, sl->sl_dc[0], sizeof(ppc->ScalingListDCCoeff16x16)); - memcpy(ppc->ScalingListDCCoeff32x32, sl->sl_dc[1], sizeof(ppc->ScalingListDCCoeff32x32)); + ppc->ScalingListDCCoeff16x16[i] = sl->sl_dc[0][i]; + if (i < 2) + ppc->ScalingListDCCoeff32x32[i] = sl->sl_dc[1][i * 3]; + } } static int nvdec_hevc_start_frame(AVCodecContext *avctx, @@ -166,8 +167,7 @@ static int nvdec_hevc_start_frame(AVCodecContext *avctx, .NumBitsForShortTermRPSInSlice = s->sh.short_term_rps ? s->sh.short_term_ref_pic_set_size : 0, .NumDeltaPocsOfRefRpsIdx = s->sh.short_term_rps ? s->sh.short_term_rps->rps_idx_num_delta_pocs : 0, - .NumPocTotalCurr = s->rps[ST_CURR_BEF].nb_refs + s->rps[ST_CURR_AFT].nb_refs + - s->rps[LT_CURR].nb_refs, + .NumPocTotalCurr = ff_hevc_frame_nb_refs(s), .NumPocStCurrBefore = s->rps[ST_CURR_BEF].nb_refs, .NumPocStCurrAfter = s->rps[ST_CURR_AFT].nb_refs, .NumPocLtCurr = s->rps[LT_CURR].nb_refs, |