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 7F2B74EE55 for ; Wed, 14 May 2025 13:41:15 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id DAA1868C575; Wed, 14 May 2025 16:40:53 +0300 (EEST) Received: from mail-pf1-f171.google.com (mail-pf1-f171.google.com [209.85.210.171]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6E62568C4F0 for ; Wed, 14 May 2025 16:40:45 +0300 (EEST) Received: by mail-pf1-f171.google.com with SMTP id d2e1a72fcca58-742596d8b95so4787974b3a.1 for ; Wed, 14 May 2025 06:40:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747230043; x=1747834843; 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=EvSIMoVa4OLPAYqeRpKVBx8KYsxN+wyh5JBoQIU1H0G5FDMXmRBdPnOX+PFvdBuRwJ C0cC10I6JsxcfiVVd3f6byyqNR1dN+Xmy3GnZQCWzaCqGgSikskVcx7GFcEeRu4e4ZoF NQeCNAviYa7cWvP59FvEigAT0Y3kW+xhph2DXpMcNKWKtKI952lHzuscjA/Ee2xt0LBz 3y1UMKGhAhM8bXV1hPlPn6jhqZq0PyntnduQUDWDEyRlPsjByZYo19CVvKV1z8CCURKk iqvSVhXlFWDwBYGwmXtcXUbFc8uH1QwTKrwvbpEjWKVM1cyKY0H9IaS0UmZkkZ45vaD1 g2lQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747230043; x=1747834843; 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=KaqfhsfmZUwWBfzqTy2w4ED5rQSOUmxXBgQaFQhOCCS5HRi6oKIPFgRM5Fq19zpBbM 1QEEue0P8PVFNkfRfmzWJa//G3e0u9c4d/fkMfUBvN+NmHQ3ufnMoi+391zvzQ8JuOst QNZ4CsYWdYgUDNRAzsVvE+Fq6kR9FlgbuaBPo8OaQlj7BGhseXSVmyPClo+dbMkb+oXn /lP4sLXF0fbgwv70xjMeyDh6qVRPuwDaa4lC+1iByt6n10sIoLdQ9JpHrNcpWzrjO0I8 aRcZX+sSWDZYjt7/kvPWZjWvHxWyNIUm9w21S8oPuvfH8cutjA7W62UJ5gg3lY4n2ZoK 5/kA== X-Gm-Message-State: AOJu0YzEg62L5fTyoUg2g9nEQuAuYGLGxvbW3opzp8cYfxAJpJ1dbWtJ OItpG6FsY4gbREBcIfDd2trT46+SIax4wroqSKyl/sZLpPR3vf2XvEJ/K5TW X-Gm-Gg: ASbGnct666SQKS/YZTicanPC/fahd/KO/jyxINJl9JSxGSv0o9XcwylGAIKuYFYEfgL Rhl6nz5841wiXYjz1jIuFdAOaxrSxh2U//iNrtDFcwHH93YrtWBo3w0ALiCbFsCxQtqMg67uHcg oPFIPoyCvs1JeETxAn1zw5BK/22mymF4xG4NQnSEslvRHtBLAXRnHAExsh4TvJt/gGhMrAE0mfq Sw8axl2BArSkC7iIWZEVWsn2rA6DjrdFY1JUOcKCFekvAE/pc+Knb3+evqEWCOZKvW/tO8Bm6uM AhjUl2ogIIUq0PeP7owUdnS8hk330+/p+159RK96f9bKjTcLnSu0eRKhxVYf6rPQa4aV+VEL X-Google-Smtp-Source: AGHT+IEow4EJk9bQ7c4Jt7WS+H0SWVpvaDHT5hqXfyG3mmFBBR+NKu0sv3xQ2GHPpqlpk7P/p3Tshw== X-Received: by 2002:a05:6a00:21d3:b0:740:9d7c:8f5c with SMTP id d2e1a72fcca58-74289337d3dmr5511855b3a.18.1747230043393; Wed, 14 May 2025 06:40:43 -0700 (PDT) Received: from localhost.localdomain ([124.79.129.75]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-74237a8f7edsm9310669b3a.167.2025.05.14.06.40.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 May 2025 06:40:43 -0700 (PDT) From: toqsxw@gmail.com X-Google-Original-From: toqsxw@outlook.com To: ffmpeg-devel@ffmpeg.org Date: Wed, 14 May 2025 21:40:10 +0800 Message-ID: <20250514134031.1584-3-toqsxw@outlook.com> X-Mailer: git-send-email 2.44.0.windows.1 In-Reply-To: <20250514134031.1584-1-toqsxw@outlook.com> References: <20250514134031.1584-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".