diff --git a/libavcodec/dxva2_hevc.c b/libavcodec/dxva2_hevc.c index aa684bba75..5bb10d6916 100644 --- a/libavcodec/dxva2_hevc.c +++ b/libavcodec/dxva2_hevc.c @@ -96,7 +96,7 @@ static void fill_picture_parameters(const AVCodecContext *avctx, AVDXVAContext * pp->init_qp_minus26 = pps->pic_init_qp_minus26; if (h->sh.short_term_ref_pic_set_sps_flag == 0 && h->sh.short_term_rps) { - pp->ucNumDeltaPocsOfRefRpsIdx = h->sh.short_term_rps->num_delta_pocs; + pp->ucNumDeltaPocsOfRefRpsIdx = h->sh.short_term_rps->rps_idx_num_delta_pocs; pp->wNumBitsForShortTermRPSInSlice = h->sh.short_term_ref_pic_set_size; } diff --git a/libavcodec/hevc.h b/libavcodec/hevc.h index 7c87a557dd..62edcf258f 100644 --- a/libavcodec/hevc.h +++ b/libavcodec/hevc.h @@ -262,6 +262,7 @@ enum ScanType { typedef struct ShortTermRPS { unsigned int num_negative_pics; int num_delta_pocs; + int rps_idx_num_delta_pocs; int32_t delta_poc[32]; uint8_t used[32]; } ShortTermRPS; diff --git a/libavcodec/hevc_ps.c b/libavcodec/hevc_ps.c index 2faee96bbf..583fa062ab 100644 --- a/libavcodec/hevc_ps.c +++ b/libavcodec/hevc_ps.c @@ -134,6 +134,7 @@ int ff_hevc_decode_short_term_rps(GetBitContext *gb, AVCodecContext *avctx, return AVERROR_INVALIDDATA; } rps_ridx = &sps->st_rps[sps->nb_st_rps - delta_idx]; + rps->rps_idx_num_delta_pocs = rps_ridx->num_delta_pocs; } else rps_ridx = &sps->st_rps[rps - sps->st_rps - 1];