diff options
author | Xu Guangxin <guangxin.xu@intel.com> | 2020-05-12 21:44:21 +0800 |
---|---|---|
committer | Linjie Fu <linjie.fu@intel.com> | 2020-05-27 14:47:55 +0800 |
commit | 8b5ffaea64c7810b66f66f7b70222242000e2a3e (patch) | |
tree | 121407753b4a257239e74d9de761847b298edd1f /libavcodec/8bps.c | |
parent | 939a4db227be629b7ff5492c6cc7cd75f40bf0f8 (diff) | |
download | ffmpeg-8b5ffaea64c7810b66f66f7b70222242000e2a3e.tar.gz |
lavc/hevc_refs: Fix the logic of find_ref_idx()
Currently find_ref_idx() would trigger 2 scans in DPB to find the
requested POC:
1. Firstly, ignore MSB of ref->poc and search for the requested POC;
2. Secondly, compare the entire ref->poc with requested POC;
For long term reference, we are able to only check LSB if MSB is not
presented(e.g. delta_poc_msb_present_flag == 0). However, for short
term reference, we should never ignore poc's MSB and it should be
kind of bit-exact. (Details in 8.3.2)
Otherwise this leads to decoding failures like:
[hevc @ 0x5638f4328600] Error constructing the frame RPS.
[hevc @ 0x5638f4328600] Error parsing NAL unit #2.
[hevc @ 0x5638f4338a80] Could not find ref with POC 21
Error while decoding stream #0:0: Invalid data found when processing input
Search the requested POC based on whether MSB is used, and avoid
the 2-times scan for DPB buffer. This benefits both native HEVC
decoder and integrated HW decoders.
Signed-off-by: Xu Guangxin <guangxin.xu@intel.com>
Signed-off-by: Linjie Fu <linjie.fu@intel.com>
Diffstat (limited to 'libavcodec/8bps.c')
0 files changed, 0 insertions, 0 deletions