diff options
author | Steve Lhomme <robux4@ycbcr.xyz> | 2022-03-23 14:54:26 +0100 |
---|---|---|
committer | Hendrik Leppkes <h.leppkes@gmail.com> | 2022-03-27 10:00:15 +0200 |
commit | 723065a3466c7a05ef9c7cecda501115e789d261 (patch) | |
tree | 0a119bf4ccc0d201becb442d910a5aa95e74f1f0 /libavcodec | |
parent | 8ae15b565533944d042d3caf25f7262e002e8953 (diff) | |
download | ffmpeg-723065a3466c7a05ef9c7cecda501115e789d261.tar.gz |
dxva2_hevc: don't use frames as reference if they are not marked as such
Similar to how a frame is considered for referencing for the RefPicList array.
This will do the same for RefPicSetStCurrBefore, RefPicSetStCurrAfter and
RefPicSetLtCurr.
Fixes playback of http://www.gbbsoft.pl/!download/!/Film1.mp4
Ref. VLC issue https://code.videolan.org/videolan/vlc/-/issues/26738
Signed-off-by: Steve Lhomme <robux4@ycbcr.xyz>
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/dxva2_hevc.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/libavcodec/dxva2_hevc.c b/libavcodec/dxva2_hevc.c index c91bcf3eeb..6b239d9917 100644 --- a/libavcodec/dxva2_hevc.c +++ b/libavcodec/dxva2_hevc.c @@ -184,7 +184,7 @@ static void fill_picture_parameters(const AVCodecContext *avctx, AVDXVAContext * const HEVCFrame *frame = NULL; \ while (!frame && j < rpl->nb_refs) \ frame = rpl->ref[j++]; \ - if (frame) \ + if (frame && frame->flags & (HEVC_FRAME_FLAG_LONG_REF | HEVC_FRAME_FLAG_SHORT_REF)) \ pp->ref_list[i] = get_refpic_index(pp, ff_dxva2_get_surface_index(avctx, ctx, frame->frame)); \ else \ pp->ref_list[i] = 0xff; \ |