From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id E38E54BFBF for ; Thu, 1 May 2025 14:44:19 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9D4D468B559; Thu, 1 May 2025 17:43:50 +0300 (EEST) Received: from mail-pg1-f172.google.com (mail-pg1-f172.google.com [209.85.215.172]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8915768B536 for ; Thu, 1 May 2025 17:43:44 +0300 (EEST) Received: by mail-pg1-f172.google.com with SMTP id 41be03b00d2f7-af548cb1f83so1075165a12.3 for ; Thu, 01 May 2025 07:43:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746110622; x=1746715422; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=XLnOkxlCvFTXZcXPgT5DaJXmX5va47SPPGIdtIN7HYg=; b=MsYjz+X93/WQiKalSFVGNxGLj7g3ETbGGRukmDbkcghm07XX+CeacieraELmpUEtV0 rqeLiN1kOoxOlWEZ1nXtryW0o+vJueubPxZbt/qhB1DUw5U7ncVmSFDMpK5Mo7KVvPqc 298/CL/hJhQVnwdNxI4tDJvj53w7RU2U7W4X+J2AU0MrTTr7NCIoBj8J1GecJ1wim3X/ SoqQKi3Z4DEw7rPP4JMA6QO3OPkJQF8HOrVVeG+QX0sY3VTTCiBu20IJ2+EDR2MqdgFX CP4LeUT6/NaXhN/5PmTRx8ZKJIRP43F45B1khGXXcHACpOPVbEcSYakiI/+3f/YhPzgC Y0xw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746110622; x=1746715422; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=XLnOkxlCvFTXZcXPgT5DaJXmX5va47SPPGIdtIN7HYg=; b=eb5kfNYLB4jtIdpaONTX1M/Qg9VidhzKhOkgZ7pe8XRtxzNEW4lYgGsnJqQWd0Brf6 9CaTvT2PU3qA2nBbKqMUL2zpFwBQg3qq36onQRDlmhRScpYsxjR65FqKllxz1dgyTg+4 fwp4yPNVE1SCsysNb9bJqaieJZwFLqyDOp2xPro4gqO7CTwVlRZXmKO42U8pF2BCftDC Q7nq+HNeDMfzZlgade6oBBC3Wn59X8Y6I8hRMqD92pxkEqNHCUi0MnW2tjLRP5JXWsqw 0OSffLeGFugS3wR84sQ75mw9QuW9RxikYuvr6Ve9T8T+zyd4w6l5cLGHCmzK5pm7dthY 2Slg== X-Gm-Message-State: AOJu0YwjJWVSEZ3BhMS2SA4ZEuSKeis327HJ1PKbE7uWJ4QSdAE00LQZ 26NNDVQ2FrnzTZNvNf/4wa4r24fhwsaIcxtMsepifXHuTeKt5tLABhqz9g== X-Gm-Gg: ASbGncttGC8a4MReNm59CimTl57l84vBtZPPf57xF8xHtmoOlw/O9B8aWGjBffL2C/w X4aWmcIfQO1fRAJJpDk/F+20z6qrVrp2jBOOucdOKKbUrgplnFI79xPr3VrUd2UlLTaItrsyooT 9aWIaC6UL5BIq/w+a1xVU71mGkUFLE0DXptcyFHvWw2HQKyucZdbGHEzveHf+GAnQNS9pH/3efH DV9F94MHZMH4I0xJqPtDZzwBbKm/OEO1kzeb8IKZFB7/u7LDhOo0t/z1Uc14vLwvPRUmcN5d5wY Wr3NBUK7uZdamTQ9W8dNQzxVrLAQ0tryi+H0Ny1jVIny8J+Ub2vteccO1vCU7g== X-Google-Smtp-Source: AGHT+IGr3tLgDXedNY2tVgmpZDIXUghDAZJ+Ye3K6W1nV655aqorV8C27NW/x/6MCx4XBKmWdLqREA== X-Received: by 2002:a05:6a20:c704:b0:1f5:790c:94a with SMTP id adf61e73a8af0-20aa30d3d00mr11062970637.25.1746110622415; Thu, 01 May 2025 07:43:42 -0700 (PDT) Received: from localhost.localdomain ([124.79.129.75]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b1f9d4b68e8sm807271a12.27.2025.05.01.07.43.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 01 May 2025 07:43:42 -0700 (PDT) From: toqsxw@gmail.com X-Google-Original-From: toqsxw@outlook.com To: ffmpeg-devel@ffmpeg.org Date: Thu, 1 May 2025 22:43:01 +0800 Message-ID: <20250501144324.958-3-toqsxw@outlook.com> X-Mailer: git-send-email 2.44.0.windows.1 In-Reply-To: <20250501144324.958-1-toqsxw@outlook.com> References: <20250501144324.958-1-toqsxw@outlook.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v1 03/23] avcodec/vvc/cabac: add palette support X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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: Wu Jianhua Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: From: Wu Jianhua Signed-off-by: Wu Jianhua --- libavcodec/vvc/cabac.c | 52 ++++++++++++++++++++++++++++++++++++++++++ libavcodec/vvc/cabac.h | 9 ++++++++ 2 files changed, 61 insertions(+) diff --git a/libavcodec/vvc/cabac.c b/libavcodec/vvc/cabac.c index 9290ecd90f..700b719b7c 100644 --- a/libavcodec/vvc/cabac.c +++ b/libavcodec/vvc/cabac.c @@ -1377,6 +1377,58 @@ int ff_vvc_intra_chroma_pred_mode(VVCLocalContext *lc) return (get_cabac_bypass(&lc->ep->cc) << 1) | get_cabac_bypass(&lc->ep->cc); } +int ff_vvc_palette_predictor_run(VVCLocalContext *lc) +{ + return kth_order_egk_decode(&lc->ep->cc, 0); +} + +int ff_vvc_num_signalled_palette_entries(VVCLocalContext *lc) +{ + return kth_order_egk_decode(&lc->ep->cc, 0); +} + +int ff_vvc_new_palette_entries(VVCLocalContext *lc, const int bit_depth) +{ + return fixed_length_decode(&lc->ep->cc, bit_depth); +} + +bool ff_vvc_palette_escape_val_present_flag(VVCLocalContext *lc) +{ + return get_cabac_bypass(&lc->ep->cc); +} + +bool ff_vvc_palette_transpose_flag(VVCLocalContext *lc) +{ + return GET_CABAC(PALETTE_TRANSPOSE_FLAG); +} + +bool ff_vvc_run_copy_flag(VVCLocalContext *lc, const int prev_run_type, const int prev_run_position, const int cur_pos) +{ + uint8_t run_left_lut[] = { 0, 1, 2, 3, 4 }; + uint8_t run_top_lut[] = { 5, 6, 6, 7, 7 }; + + int bin_dist = cur_pos - prev_run_position - 1; + uint8_t *run_lut = prev_run_type == 1 ? run_top_lut : run_left_lut; + uint8_t ctx_inc = bin_dist <= 4 ? run_lut[bin_dist] : run_lut[4]; + + return GET_CABAC(RUN_COPY_FLAG + ctx_inc); +} + +bool ff_vvc_copy_above_palette_indices_flag(VVCLocalContext *lc) +{ + return GET_CABAC(COPY_ABOVE_PALETTE_INDICES_FLAG); +} + +int ff_vvc_palette_idx_idc(VVCLocalContext *lc, const int max_palette_index, const bool adjust) +{ + return truncated_binary_decode(lc, max_palette_index - adjust); +} + +int ff_vvc_palette_escape_val(VVCLocalContext *lc) +{ + return kth_order_egk_decode(&lc->ep->cc, 5); +} + int ff_vvc_general_merge_flag(VVCLocalContext *lc) { return GET_CABAC(GENERAL_MERGE_FLAG); diff --git a/libavcodec/vvc/cabac.h b/libavcodec/vvc/cabac.h index e9bc98e23a..92f0163c85 100644 --- a/libavcodec/vvc/cabac.h +++ b/libavcodec/vvc/cabac.h @@ -81,6 +81,15 @@ int ff_vvc_intra_luma_mpm_remainder(VVCLocalContext *lc); int ff_vvc_cclm_mode_flag(VVCLocalContext *lc); int ff_vvc_cclm_mode_idx(VVCLocalContext *lc); int ff_vvc_intra_chroma_pred_mode(VVCLocalContext *lc); +int ff_vvc_palette_predictor_run(VVCLocalContext *lc); +int ff_vvc_num_signalled_palette_entries(VVCLocalContext *lc); +int ff_vvc_new_palette_entries(VVCLocalContext *lc, int bit_dpeth); +bool ff_vvc_palette_escape_val_present_flag(VVCLocalContext *lc); +bool ff_vvc_palette_transpose_flag(VVCLocalContext *lc); +bool ff_vvc_run_copy_flag(VVCLocalContext *lc, int prev_run_type, int prev_run_position, int cur_pos); +bool ff_vvc_copy_above_palette_indices_flag(VVCLocalContext *lc); +int ff_vvc_palette_idx_idc(VVCLocalContext *lc, int max_palette_index, bool adjust); +int ff_vvc_palette_escape_val(VVCLocalContext *lc); //inter int ff_vvc_general_merge_flag(VVCLocalContext *lc); -- 2.44.0.windows.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-request@ffmpeg.org with subject "unsubscribe".