From patchwork Sun Mar 21 05:06:11 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nuo Mi X-Patchwork-Id: 26508 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 70E3D449390 for ; Sun, 21 Mar 2021 07:13:29 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5235168A76C; Sun, 21 Mar 2021 07:13:29 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-oi1-f174.google.com (mail-oi1-f174.google.com [209.85.167.174]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id AF037688179 for ; Sun, 21 Mar 2021 07:13:22 +0200 (EET) Received: by mail-oi1-f174.google.com with SMTP id a8so9505897oic.11 for ; Sat, 20 Mar 2021 22:13:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=XfzWz5XLJlPeWQGvM8+aMKrJ4+JOm+m4RA7eeNBTg+A=; b=BSukHkGoMfzWZPMJrEyVXoKPckP+1AHK9srN0iyfvef2rfrNTHPGCTc9dWMwr42r4/ DFAiXwgAu8fB4+7iUX4tK8I59JOkDJOZ+dxYEdh/GNIoBxP3O83K6TZIDL0IweV0E7fH naNDLh9V51ZWozfimsbOthPV2p8TLPT+2AJsK06qLvu9g5E0rv/0HhdBWyzj7SS17bSF uAFT6YRNqKbGEAOFTsOTV9DLiIpeFJ44SZ/ahefj4EuXROttwyTaKaXaGtFwRrhIUtxO +5xQY7u5XxV3qRfcOtZ085OM3jwwGUQ2J9zcz8d/JOwhoLq3c7V0J9lMa6vEbc7Ynt6q Im9A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=XfzWz5XLJlPeWQGvM8+aMKrJ4+JOm+m4RA7eeNBTg+A=; b=muacsbIbG/boojCZG1ddC7lnmz7YwqkTW09Zzoy08Uh7v4r7HWtyYo2PYWfcuNldOX WVenyMK0NSqxmXTdGbJC7JM7lvbOkSBQLur9i4OgyQ2I+LTiGhii5xKxdbBMMe9N8V8/ mCP//3Z2MZQ4ktOTqJ5CD028mW5c7qzZMAQwKe5ykU0Ot9qKNlA5hSLimH8Pnpf79zF2 fLOJT9ZpRK19c3g5ZZrJh+I1T7/x411fKPD1Y9Ta0+QXMD8hNHXUZY8vAIMeQIo46wfB lVrpg2zzqwqZPTb92Dvgw73r+T37noQBC4+aI/skxYx79+qyT1fINYlBRIWTro8UOEev qpbA== X-Gm-Message-State: AOAM530L3rRjz05xpaKT6vK/XuZPoAmoohJBCKxefT/1Fb+QAN3kNf2U h7Je0Ieiz9KuPrwPSw3xGYOZA0Mv5hk= X-Google-Smtp-Source: ABdhPJxlAjkiDkFz8UCU8NfGYo9IIO050aTmv7IEpfMft+W1pVdcHOr9Qwy2LD6PutJRDwsxQ5JZtA== X-Received: by 2002:a17:90a:db51:: with SMTP id u17mr6666454pjx.194.1616303201023; Sat, 20 Mar 2021 22:06:41 -0700 (PDT) Received: from Nuomi.localdomain (23.83.245.51.16clouds.com. [23.83.245.51]) by smtp.gmail.com with ESMTPSA id n16sm9766409pff.119.2021.03.20.22.06.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 20 Mar 2021 22:06:40 -0700 (PDT) From: Nuo Mi To: ffmpeg-devel@ffmpeg.org Date: Sun, 21 Mar 2021 13:06:11 +0800 Message-Id: <20210321050611.32380-1-nuomi2021@gmail.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avcodec/hevc_cabac: cabac_init_state, do not use magic number which not listed on the spec X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Nuo Mi , anton@khirnov.net Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" 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++)