mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
dxva2_hevc: properly signal the num_delta_pocs from the SPS RPS
ucNumDeltaPocsOfRefRpsIdx needs to contain the flat value from the SPS RPS, and not the final computed value from the slice header RPS, as this calculation is done internally by the driver again. Sample-Id: http://trailers.divx.com/hevc/Sintel_4k_27qp_24fps_1aud_9subs.mkvi Signed-off-by: Rémi Denis-Courmont <remi@remlab.net>
This commit is contained in:
parent
e579d8b29c
commit
8c399bd5ce
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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];
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user