Magic number 124 and ^= are not listed on the spec. Strictly following the spec will make a reader's life much easier. See (9-6) for details --- libavcodec/hevc_cabac.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-)
diff --git a/libavcodec/hevc_cabac.c b/libavcodec/hevc_cabac.c index 9b8c8e342d..7ac340f471 100644 --- a/libavcodec/hevc_cabac.c +++ b/libavcodec/hevc_cabac.c @@ -496,12 +496,10 @@ static void cabac_init_state(HEVCContext *s) int init_value = init_values[init_type][i]; int m = (init_value >> 4) * 5 - 45; int n = ((init_value & 15) << 3) - 16; - int pre = 2 * (((m * av_clip(s->sh.slice_qp, 0, 51)) >> 4) + n) - 127; - - pre ^= pre >> 31; - if (pre > 124) - pre = 124 + (pre & 1); - s->HEVClc->cabac_state[i] = pre; + int pre = av_clip(((m * av_clip(s->sh.slice_qp, 0, 51)) >> 4) + n, 1, 126); + int val_mps = (pre <= 63 ) ? 0 : 1; + int state = val_mps ? (pre - 64) : (63 - pre); + s->HEVClc->cabac_state[i] = (state << 1) + val_mps; } for (i = 0; i < 4; i++) -- 2.25.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".