forked from marfrit/libva-v4l2-request-fourier
23eb1bd5ae
ROOT CAUSE FIX for HEVC frame 2+ divergence (Bug 5 remainder). rkvdec's assemble_sw_rps (rkvdec-hevc.c:386-389) uses sl_params->short_term_ref_pic_set_size to compute the bit offset where long-term RPS data starts in the slice header. When zero, it falls back to fls(num_short_term_ref_pic_sets - 1) — wrong when num=1 (BBB's case). α-26 misdirected: set decode_params->short_term_ref_pic_set_size = st_rps_bits but rkvdec doesn't use that field. The correct consumer is slice_params per V4L2 spec and rkvdec source. VAAPI's picture->st_rps_bits is documented as: 'number of bits that structure short_term_ref_pic_set(num_short_term_ref_pic_sets) takes in slice segment header when short_term_ref_pic_set_sps_flag equals 0' — exactly what sl_params->short_term_ref_pic_set_size means. Frames 1 (IDR) unaffected (V4L2 rkvdec gates on !IDR_PIC flag). Frames 2+: bit offset for long-term RPS now correct, slice header parsing no longer falls off the edge of the entropy bitstream.