Received: by 2002:a89:d88:0:b0:1fa:5c73:8e2d with SMTP id eb8csp1665219lqb; Sun, 26 May 2024 11:08:13 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCWTzsUsNmfZb2wux4RKOZMzW/df+Fla3pJXElLTN6b43FlqAPSxugyU0L5FaV0oZwSSnmsT81zLNV3OOl+gyopDqKUiZBhx1DqhPqZhCw== X-Google-Smtp-Source: AGHT+IF7wdh0XJsV91bdpzSiIXApOJd96XU61O83N5xOaYPpHRLuJBgr0SsxVIU4BOJnbJVymiqh X-Received: by 2002:a17:90b:19cc:b0:2b8:c813:1696 with SMTP id 98e67ed59e1d1-2bf5e170e39mr6253892a91.10.1716746893127; Sun, 26 May 2024 11:08:13 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1716746893; cv=pass; d=google.com; s=arc-20160816; b=waEF/TXVNghZqM7QD3hiMdSjSY0dEKVsAtsfhb6eO9KRqZNhXFfYEiEXiw6X7x6TAN O7Ldrfn3QKKjunkfm4ljXdDENNiV2m5FxbhnyVPLJB5d37CO1YdqlnaxVEXTmI5jVtiw kTBd9xrXGeMtvaiTYxcP5nz+5MvQV5nVv8sXuZyu03olEmmPizjGoBBGI8CFr9jBza+1 GV2albUPQf3GjEB9ON125XIbRD4AvwYUJQE3JDfVt3Z14XLkKL6sKMBE6F3hyIwEauwN z/2WqQSjoxgHo7u1AcIq3JQyM0CbR3VhbMfiZ8uWRbogDAiQi6TuFT//gdVlAo8OOAim yvQA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=HUwrfN5B2JWLhrIioUhDD1eNVlVH01sy99LXutfMssI=; fh=WDM+QErEcmMCSWCU1yb0EwImd3doUcJmf0PGeNpiJ/8=; b=eVN3hpfz9Wlg5btDP0Cu9VL7YC8ZmvjgkPCOtcs8Ig5uyqihVmJXXBbn0ExIFb+g/X 4eY1DD9v0VhyQwzk969hFbfaZa4n07gcldXL23L+UkA8fqB3uXQIlTBBmKUJH2Om96K3 IeqHi7Krx3yn+nlVtIOYBIIXcUmTgzbNIczKBLhZL5ZWXk3NN9EnQ5pygF2wH3uy9Q4K RAWhW/t2Mc/cBS93Qzugex+YcctVoclxdfkydIYQjIP7yjsabB9byOkApmtRAfb3oTBp SgWp7pTW75yFOJqq3DTTYmgNBkx5mU7aUwqcSAv92DVubDLb7AymBUf9wPfFzZdse23b MNwQ==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@ti.com header.s=ti-com-17Q1 header.b=y348WWYB; arc=pass (i=1 spf=pass spfdomain=ti.com dkim=pass dkdomain=ti.com dmarc=pass fromdomain=ti.com); spf=pass (google.com: domain of linux-kernel+bounces-189814-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-189814-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=ti.com Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [139.178.88.99]) by mx.google.com with ESMTPS id 98e67ed59e1d1-2bdd9ed930bsi6789575a91.16.2024.05.26.11.08.12 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 May 2024 11:08:13 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-189814-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) client-ip=139.178.88.99; Authentication-Results: mx.google.com; dkim=pass header.i=@ti.com header.s=ti-com-17Q1 header.b=y348WWYB; arc=pass (i=1 spf=pass spfdomain=ti.com dkim=pass dkdomain=ti.com dmarc=pass fromdomain=ti.com); spf=pass (google.com: domain of linux-kernel+bounces-189814-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-189814-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=ti.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id BED99280C3C for ; Sun, 26 May 2024 18:08:12 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 30CBE12BE9C; Sun, 26 May 2024 18:08:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ti.com header.i=@ti.com header.b="y348WWYB" Received: from fllv0015.ext.ti.com (fllv0015.ext.ti.com [198.47.19.141]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2B8659449; Sun, 26 May 2024 18:07:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.47.19.141 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716746881; cv=none; b=SHwVAJ9wsSuA1F7rKi9cgu0zFpyDtUedQnsL6nVJDLSNdDUq7yuydbEIGipILWKFXicRzpCSN+lyzfiVpjhvReP7eppyACP3vNdEdalbgxbErM9DQbGPIn2K6qxTEFdtXHWxrCfYiibHAexSajBFvW8b7FhN1uP1NXtxOAI81ZI= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716746881; c=relaxed/simple; bh=T2/SBapqPLsacIUOa+sg9uZO0r4tzoCKcDs1Lm7niYk=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=MzXlmcCEwIegcNtraw9Hci3qo1rWjjnMFMukyGWz3SrcHUadHJTo3d4qbRBUdjhvqU2hD+84q17QGoRpTK2iWlnuU1OSJ6EHRD08yHKqxkGgwcrAVxwJX47my4zALISNT96bCncUNonHCeg4Q6QaNIE4fh5Rg/G1bBf56cJBNIE= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=ti.com; spf=pass smtp.mailfrom=ti.com; dkim=pass (1024-bit key) header.d=ti.com header.i=@ti.com header.b=y348WWYB; arc=none smtp.client-ip=198.47.19.141 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=ti.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ti.com Received: from fllv0034.itg.ti.com ([10.64.40.246]) by fllv0015.ext.ti.com (8.15.2/8.15.2) with ESMTP id 44QI7jGX125244; Sun, 26 May 2024 13:07:45 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1716746865; bh=HUwrfN5B2JWLhrIioUhDD1eNVlVH01sy99LXutfMssI=; h=From:To:CC:Subject:Date:In-Reply-To:References; b=y348WWYBwMWRnLh0WaIIG/H48zEzL49jxHNxU465cv0Q01PtNQs+abmczgGJMmXZ9 IKw4AaAvEUIcgyHMVdRJLMb7+cDu7gYnVNnXlGCEc4xd1AgIC2kS9JRmaJrD1rw0JB 3KLc6hWcKCrXEquh00MABvKZ3kLg5x0PoDibLHJ4= Received: from DLEE103.ent.ti.com (dlee103.ent.ti.com [157.170.170.33]) by fllv0034.itg.ti.com (8.15.2/8.15.2) with ESMTPS id 44QI7jco043312 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL); Sun, 26 May 2024 13:07:45 -0500 Received: from DLEE113.ent.ti.com (157.170.170.24) by DLEE103.ent.ti.com (157.170.170.33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2507.23; Sun, 26 May 2024 13:07:44 -0500 Received: from lelvsmtp6.itg.ti.com (10.180.75.249) by DLEE113.ent.ti.com (157.170.170.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2507.23 via Frontend Transport; Sun, 26 May 2024 13:07:44 -0500 Received: from localhost (ti.dhcp.ti.com [172.24.227.95] (may be forged)) by lelvsmtp6.itg.ti.com (8.15.2/8.15.2) with ESMTP id 44QI7hxY059610; Sun, 26 May 2024 13:07:44 -0500 From: Devarsh Thakkar To: , , , , , CC: , , , , , , , , , , , , , , , Subject: [PATCH v9 04/10] media: imagination: Use exported tables from v4l2-jpeg core Date: Sun, 26 May 2024 23:37:43 +0530 Message-ID: <20240526180743.1121182-1-devarsht@ti.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20240526175655.1093707-1-devarsht@ti.com> References: <20240526175655.1093707-1-devarsht@ti.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-EXCLAIMER-MD-CONFIG: e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180 Use exported huffman and quantization tables from v4l2-jpeg core library. Signed-off-by: Devarsh Thakkar --- V1->V9 (No change, patch introduced in V7) --- .../platform/imagination/e5010-jpeg-enc.c | 140 +++--------------- 1 file changed, 19 insertions(+), 121 deletions(-) diff --git a/drivers/media/platform/imagination/e5010-jpeg-enc.c b/drivers/media/platform/imagination/e5010-jpeg-enc.c index a9ad41f54ab6..e701d573a26a 100644 --- a/drivers/media/platform/imagination/e5010-jpeg-enc.c +++ b/drivers/media/platform/imagination/e5010-jpeg-enc.c @@ -32,116 +32,6 @@ #include "e5010-jpeg-enc.h" #include "e5010-jpeg-enc-hw.h" -/* Luma and chroma qp table to achieve 50% compression quality - * This is as per example in Annex K.1 of ITU-T.81 - */ -static const u8 luma_q_table[64] = { - 16, 11, 10, 16, 24, 40, 51, 61, - 12, 12, 14, 19, 26, 58, 60, 55, - 14, 13, 16, 24, 40, 57, 69, 56, - 14, 17, 22, 29, 51, 87, 80, 62, - 18, 22, 37, 56, 68, 109, 103, 77, - 24, 35, 55, 64, 81, 104, 113, 92, - 49, 64, 78, 87, 103, 121, 120, 101, - 72, 92, 95, 98, 112, 100, 103, 99 -}; - -static const u8 chroma_q_table[64] = { - 17, 18, 24, 47, 99, 99, 99, 99, - 18, 21, 26, 66, 99, 99, 99, 99, - 24, 26, 56, 99, 99, 99, 99, 99, - 47, 66, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99 -}; - -/* Zigzag scan pattern */ -static const u8 zigzag[64] = { - 0, 1, 8, 16, 9, 2, 3, 10, - 17, 24, 32, 25, 18, 11, 4, 5, - 12, 19, 26, 33, 40, 48, 41, 34, - 27, 20, 13, 6, 7, 14, 21, 28, - 35, 42, 49, 56, 57, 50, 43, 36, - 29, 22, 15, 23, 30, 37, 44, 51, - 58, 59, 52, 45, 38, 31, 39, 46, - 53, 60, 61, 54, 47, 55, 62, 63 -}; - -/* - * Contains the data that needs to be sent in the marker segment of an interchange format JPEG - * stream or an abbreviated format table specification data stream. - * Specifies the huffman table used for encoding the luminance DC coefficient differences. - * The table represents Table K.3 of ITU-T.81 - */ -static const u8 luma_dc_table[] = { - 0x00, 0x01, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B -}; - -/* - * Contains the data that needs to be sent in the marker segment of an interchange format JPEG - * stream or an abbreviated format table specification data stream. - * Specifies the huffman table used for encoding the luminance AC coefficients. - * The table represents Table K.5 of ITU-T.81 - */ -static const u8 luma_ac_table[] = { - 0x00, 0x02, 0x01, 0x03, 0x03, 0x02, 0x04, 0x03, - 0x05, 0x05, 0x04, 0x04, 0x00, 0x00, 0x01, 0x7D, - 0x01, 0x02, 0x03, 0x00, 0x04, 0x11, 0x05, 0x12, 0x21, 0x31, 0x41, 0x06, 0x13, 0x51, 0x61, - 0x07, 0x22, 0x71, 0x14, 0x32, 0x81, 0x91, 0xA1, 0x08, 0x23, 0x42, 0xB1, 0xC1, 0x15, 0x52, - 0xD1, 0xF0, 0x24, 0x33, 0x62, 0x72, 0x82, 0x09, 0x0A, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x25, - 0x26, 0x27, 0x28, 0x29, 0x2A, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x43, 0x44, 0x45, - 0x46, 0x47, 0x48, 0x49, 0x4A, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x63, 0x64, - 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x83, - 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, - 0x9A, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, - 0xB7, 0xB8, 0xB9, 0xBA, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xD2, 0xD3, - 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, - 0xE9, 0xEA, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA -}; - -/* - * Contains the data that needs to be sent in the marker segment of an interchange format JPEG - * stream or an abbreviated format table specification data stream. - * Specifies the huffman table used for encoding the chrominance DC coefficient differences. - * The table represents Table K.4 of ITU-T.81 - */ -static const u8 chroma_dc_table[] = { - 0x00, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B -}; - -/* - * Contains the data that needs to be sent in the marker segment of an interchange format JPEG - * stream or an abbreviated format table specification data stream. - * Specifies the huffman table used for encoding the chrominance AC coefficients. - * The table represents Table K.6 of ITU-T.81 - */ -static const u8 chroma_ac_table[] = { - 0x00, 0x02, 0x01, 0x02, 0x04, 0x04, 0x03, 0x04, - 0x07, 0x05, 0x04, 0x04, 0x00, 0x01, 0x02, 0x77, - 0x00, 0x01, 0x02, 0x03, 0x11, 0x04, 0x05, 0x21, 0x31, 0x06, 0x12, 0x41, 0x51, 0x07, 0x61, - 0x71, 0x13, 0x22, 0x32, 0x81, 0x08, 0x14, 0x42, 0x91, 0xA1, 0xB1, 0xC1, 0x09, 0x23, 0x33, - 0x52, 0xF0, 0x15, 0x62, 0x72, 0xD1, 0x0A, 0x16, 0x24, 0x34, 0xE1, 0x25, 0xF1, 0x17, 0x18, - 0x19, 0x1A, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x43, 0x44, - 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x63, - 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, - 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, - 0x98, 0x99, 0x9A, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xB2, 0xB3, 0xB4, - 0xB5, 0xB6, 0xB7, 0xB8, 0xB9, 0xBA, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, - 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, - 0xE8, 0xE9, 0xEA, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA -}; - -#define JPEG_LUM_HT 0x00 -#define JPEG_CHR_HT 0x01 -#define JPEG_DC_HT 0x00 -#define JPEG_AC_HT 0x10 - /* forward declarations */ static const struct of_device_id e5010_of_match[]; @@ -270,6 +160,9 @@ static void calculate_qp_tables(struct e5010_context *ctx) { long long luminosity, contrast; int quality, i; + const u8 *luma_q_table, *chroma_q_table; + + v4l2_jpeg_get_reference_quantization_tables(&luma_q_table, &chroma_q_table); quality = 50 - ctx->quality; @@ -281,7 +174,7 @@ static void calculate_qp_tables(struct e5010_context *ctx) contrast *= INCREASE; } - for (i = 0; i < ARRAY_SIZE(luma_q_table); i++) { + for (i = 0; i < V4L2_JPEG_PIXELS_IN_BLOCK; i++) { long long delta = chroma_q_table[i] * contrast + luminosity; int val = (int)(chroma_q_table[i] + delta); @@ -927,41 +820,46 @@ static void encode_marker_segment(struct e5010_context *ctx, void *addr, unsigne { u8 *buffer = (u8 *)addr; int i; + const u8 *luma_dc_table, *chroma_dc_table, *luma_ac_table, *chroma_ac_table, *zigzag; + + v4l2_jpeg_get_reference_huffman_tables(&luma_dc_table, &luma_ac_table, &chroma_dc_table, + &chroma_ac_table); + v4l2_jpeg_get_zig_zag_scan(&zigzag); header_write(ctx, buffer, offset, 2, START_OF_IMAGE); header_write(ctx, buffer, offset, 2, DQT_MARKER); header_write(ctx, buffer, offset, 3, LQPQ << 4); - for (i = 0; i < PELS_IN_BLOCK; i++) + for (i = 0; i < V4L2_JPEG_PIXELS_IN_BLOCK; i++) header_write(ctx, buffer, offset, 1, ctx->luma_qp[zigzag[i]]); header_write(ctx, buffer, offset, 2, DQT_MARKER); header_write(ctx, buffer, offset, 3, (LQPQ << 4) | 1); - for (i = 0; i < PELS_IN_BLOCK; i++) + for (i = 0; i < V4L2_JPEG_PIXELS_IN_BLOCK; i++) header_write(ctx, buffer, offset, 1, ctx->chroma_qp[zigzag[i]]); /* Huffman tables */ header_write(ctx, buffer, offset, 2, DHT_MARKER); header_write(ctx, buffer, offset, 2, LH_DC); - header_write(ctx, buffer, offset, 1, JPEG_LUM_HT | JPEG_DC_HT); - for (i = 0 ; i < ARRAY_SIZE(luma_dc_table); i++) + header_write(ctx, buffer, offset, 1, V4L2_JPEG_LUM_HT | V4L2_JPEG_DC_HT); + for (i = 0 ; i < V4L2_JPEG_REF_HT_DC_LEN; i++) header_write(ctx, buffer, offset, 1, luma_dc_table[i]); header_write(ctx, buffer, offset, 2, DHT_MARKER); header_write(ctx, buffer, offset, 2, LH_AC); - header_write(ctx, buffer, offset, 1, JPEG_LUM_HT | JPEG_AC_HT); - for (i = 0 ; i < ARRAY_SIZE(luma_ac_table); i++) + header_write(ctx, buffer, offset, 1, V4L2_JPEG_LUM_HT | V4L2_JPEG_AC_HT); + for (i = 0 ; i < V4L2_JPEG_REF_HT_AC_LEN; i++) header_write(ctx, buffer, offset, 1, luma_ac_table[i]); header_write(ctx, buffer, offset, 2, DHT_MARKER); header_write(ctx, buffer, offset, 2, LH_DC); - header_write(ctx, buffer, offset, 1, JPEG_CHR_HT | JPEG_DC_HT); - for (i = 0 ; i < ARRAY_SIZE(chroma_dc_table); i++) + header_write(ctx, buffer, offset, 1, V4L2_JPEG_CHR_HT | V4L2_JPEG_DC_HT); + for (i = 0 ; i < V4L2_JPEG_REF_HT_DC_LEN; i++) header_write(ctx, buffer, offset, 1, chroma_dc_table[i]); header_write(ctx, buffer, offset, 2, DHT_MARKER); header_write(ctx, buffer, offset, 2, LH_AC); - header_write(ctx, buffer, offset, 1, JPEG_CHR_HT | JPEG_AC_HT); - for (i = 0 ; i < ARRAY_SIZE(chroma_ac_table); i++) + header_write(ctx, buffer, offset, 1, V4L2_JPEG_CHR_HT | V4L2_JPEG_AC_HT); + for (i = 0 ; i < V4L2_JPEG_REF_HT_AC_LEN; i++) header_write(ctx, buffer, offset, 1, chroma_ac_table[i]); } -- 2.39.1