From patchwork Thu Jun 6 17:20:15 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhao Zhili X-Patchwork-Id: 49623 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:c209:0:b0:460:55fa:d5ed with SMTP id d9csp529376vqo; Thu, 6 Jun 2024 10:20:46 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCU75qSH95diFLCDwEEjqsc8dYM6u18AmVZ6xcaSrf9Y3cBVz9Yz6AssT5R87ulUy04ty9zS+r93JmoX6hg0+1XA9379yh5ig75h8w== X-Google-Smtp-Source: AGHT+IEDqsL4MAqJag4lm1Vw9NbOV94aGwt67txxzgFR0BcXMnYkdXgFzcCgfwAxp6XXTwyfE0rx X-Received: by 2002:a17:906:1417:b0:a68:b089:e27 with SMTP id a640c23a62f3a-a6cd78918ccmr15849566b.44.1717694446284; Thu, 06 Jun 2024 10:20:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1717694446; cv=none; d=google.com; s=arc-20160816; b=Z4sfkbgy08fpyRdZsxW83S2NRKPq8Irp6o5YkOkFc0PP1C3AryFJV2Xeke2qpxmV3H 4i03fz6A+CPSJwJGfl28ZXcxQor/Bc0N3hE0bthXdKHvnPNhl8Uyy/ygGIHPcCwCutjy BXIDpoLwNfpJmMxp1pl8EJcAcUMS7LGu0ftewWmn/u3auoKOon0kk1L0aH2jh/isR1nu OVg0/QsfoQ3v6x4OAuflkYHCe6Chyp0zl7Zq415CNjZB60w9h4h36hHDVEgxQsK1+VSW 7ZIudkxqu+o2Zu8mUNPKW6q4V+WBRprfTxv5zD8gqu+mJfygwKaG/zDKaE39e+ron9sF Zqhg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:date:to:from:message-id :dkim-signature:delivered-to; bh=SpM1zCQ7aT9wYA8sAnsz8glj7nAqpXzMREMM1WVY3sQ=; fh=HnHYuZ9XgUo86ZRXTLWWmQxhslYEI9B9taZ5X1DLFfc=; b=KJKLCKR/9CX8rDA1IjaJQvN4aF7cQnvZtlcf4e55uzBeAq3th6mihtvMcXGBn/dWls 8Vl3DDovXy57TZxJyseerZDq7vuiaaZEEvB9s1HhZWvljq5FNF7UYrdOgsVnhGg9jTM6 owsB1EvJ5pJDCcNDLoZspOfotdUJ3sB9fnsRPD99RNzmeCp2hJLrbHp7oiDQO25SK+K2 dW6HKuC+0ScMy14yll/aK8yrxbZ5107NuVmbnoLDKxTPvnKic8ontLK01/ELw++sI7q/ Jo5CEfpW9A8e6yiUwTPqxhH+2j1CgzXAITuYLHMa6UH4r3fBLnx9B2Qk08rG9iEzwQw8 4H1w==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b=o+9T4VVa; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=foxmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id a640c23a62f3a-a6c8070bf0csi87148666b.568.2024.06.06.10.20.45; Thu, 06 Jun 2024 10:20:46 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b=o+9T4VVa; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=foxmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A45ED68D30C; Thu, 6 Jun 2024 20:20:41 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from out203-205-251-73.mail.qq.com (out203-205-251-73.mail.qq.com [203.205.251.73]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4F0A768D30C for ; Thu, 6 Jun 2024 20:20:33 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1717694424; bh=LUP9AUCGw1cM099Ys6rgRDsiaMxz6QTfkZehexwJEIM=; h=From:To:Cc:Subject:Date; b=o+9T4VVaHOkOWRq/Vlfzbs7MyjUoruue8HDsc6UJsw6WfJ6mxQZ2j4mqTAR8novu+ jkDO16bb9cmLKkl0IKfFXE2r5rpDV8m10FO3/gVgvuDj/y3eiZ6Yv1x1WgbhOsb07A STl2vtnmVjQl8UWFcdqJWnwt7zmxXC+17Om5VysM= Received: from localhost.localdomain ([113.116.29.9]) by newxmesmtplogicsvrsza15-1.qq.com (NewEsmtp) with SMTP id 517BE6FF; Fri, 07 Jun 2024 01:20:23 +0800 X-QQ-mid: xmsmtpt1717694423t8umio24g Message-ID: X-QQ-XMAILINFO: N3l5ASPewLWq66X426WSVGYzSIAXKMCNmCON7abDBJLlrQZmx2jqpuEzzEBJvP rqZT1ScwEHDayw5p5GRa/6NMBiCO2fjzZq8K/DvjvYx7Jx8ON4aPRiliSNufA808deZ0UWsqwdrP RKd1H6nhksBp5mEdvHm53xUsnV+zuHS6diIpKEEOpsIVRBz/SlSkhA8VK8sDZeC2nXw9FtXZbuL2 6HJ92Np3UYKCpLH2YnofjSJGpJBGJPEe4uszNN8Jkp7gQtK2Vq3+cqs1g1idgERFTbar12zuauJI 8FAnv/GFBSvZpDqw0Pv3QsSNSx6peiHHOj35XZ30esfH0klh4ZHl7c7BD7qJkBcmU9Iaf/GQZjMT L6V5fAe9xYn1QRjjhoJuXMgQBsJa3CpqNb8vff34oesy219hvktPDKAwkJdNT2sLYi+fmJonaKT9 iVsJQWObO9LNgzHPqSmQhyF423gT4nBexCUfoAX3VNrjSrT3qCRbNTX/ZT9DC3N1fRuLs831zb20 Xtsfd1pD4b+jy2MjnpSvREMnQQRme5hO42P/XzlxuzOvGptuzHYtE+ou87sUsMbG6D9BkLaQOd6g HroUIckHcWY5cwOYAFxXGlD/oEm1XFyjnTN6EeAwvZgKJ1qwVPUbGCKrKNoRnHPlhWDwwH2JbQac iij79hsM5OGEQnQxu8i2IbxQyW4xKgWWBH7IeDLIv52UDJ4uHO/1HyY2MT/vAq82068VxkKlAp9N VXjuR2bQlyOkm1jTldOYVVqhmaBwKSpTE1iHCkXZYYF82vzkxABKB2SZFhAHDx3c8cNfrx/WrrKN ilvZq9qvCqdP7HAoBwmGF3ppFoW40snmZth3S8XdkAWCxNbKBSgt0B9zuBpuvMUsaZ5xuxyfHU+0 hTrMoiT1u3omwjs/CYlMzmZwMPpCkk+CCQvl5Riftnin3d2C/4EkPd3nvcQIdKIqT5txGkY6Ra+s iKYJRrBKd9ru9qrN+kMxrTiGF2BkCW X-QQ-XMRINFO: MSVp+SPm3vtS1Vd6Y4Mggwc= From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Fri, 7 Jun 2024 01:20:15 +0800 X-OQ-MSGID: <20240606172018.1514-1-quinkblack@foxmail.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 1/4] avutil/aarch64: Skip define AV_READ_TIME for apple 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: Zhao Zhili Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 0cdNrXylbWj6 From: Zhao Zhili It will fallback to mach_absolute_time inside libavutil/timer.h --- libavutil/aarch64/timer.h | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/libavutil/aarch64/timer.h b/libavutil/aarch64/timer.h index 8b28fd354c..fadc9568f8 100644 --- a/libavutil/aarch64/timer.h +++ b/libavutil/aarch64/timer.h @@ -24,13 +24,7 @@ #include #include "config.h" -#if defined(__APPLE__) - -#include - -#define AV_READ_TIME mach_absolute_time - -#elif HAVE_INLINE_ASM +#if HAVE_INLINE_ASM && !defined(__APPLE__) #define AV_READ_TIME read_time From patchwork Thu Jun 6 17:20:16 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhao Zhili X-Patchwork-Id: 49624 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:c209:0:b0:460:55fa:d5ed with SMTP id d9csp529458vqo; Thu, 6 Jun 2024 10:20:57 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCXWNziB0Q92WWawfobqJPRg3vyXv4zr+r1rHYwCnA2xnHgdwkt+mr4U/VfMySWM5kiPmW8yIqNv0p7xUQDAOzlOzLrmKgIi2CzVdg== X-Google-Smtp-Source: AGHT+IFp+w724yHIujmQZM/M1lkvKHRSTAUJT2kKvaIiko9+lpz8SYTOMCXz/dcZ5cZkYvlZNRT3 X-Received: by 2002:a17:906:7053:b0:a6c:7215:a195 with SMTP id a640c23a62f3a-a6cd665d978mr16250066b.22.1717694456886; Thu, 06 Jun 2024 10:20:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1717694456; cv=none; d=google.com; s=arc-20160816; b=qVvqYn/UgHHFJewQJd4k4JLXAySILPIbkWCEVsUnN/Xb0xDTAw/NeM64dBG1bwsU6N pZ7vfSY5iekyjCwc7U1QPfHmTbvy9b2PjpqCpJsa/Dq2egw8qQOJw7tfzWO+8t4p7YDw bbww5C9oR0XO9LGMR4CvxBqmfwOg9PPNyPtUqjYU0ymQM6UUm/QF12ufKIzK1ZT4C6HY sWCnJsvCs4uXkLx3g2GS+Z5oD202xAPFekQZ7dayuTX8li8WaIyVBex2n5rWIK2fIYI1 5eFMfWBYaUx/2qh6cRGP1uZujk+a2cTcgm8OygiRxXgxAL61G3g7Jo1KRSp/YMDndhlR Xk+A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to:date :to:from:message-id:dkim-signature:delivered-to; bh=BEdMiGMUBG6RcuXXfwYlK+EAnXOfG93d/BAkC5MxEnE=; fh=HnHYuZ9XgUo86ZRXTLWWmQxhslYEI9B9taZ5X1DLFfc=; b=wjJk8UQOQYbu7HknRoQztWTGIyLb4TDFuG4XMzFvC32ZnggdslhzusX8DFEUZ5uUQb 14dmfiJWGuzOCLKnEiZdhYh2KFhw0NZ3PIvmAuLaFJ28kQ55SI5A+j8siRkDOCcER0wS 8MkPYQWrb1ropriO1z0zVNu6BHQsrdBjTAB8/5NTFNtKzQ9yL47nGfJZjjqovKEwrN36 gE8w0N2DMAVqtaetB7vTkTG8Xc3suy7vUNXCejXlbAXAzb7MD811TU8mrrjor6KpbfdP cM8Cptsn8OC9+bwEeC5IPgM5UCykl6YSF8ieMvQQQWH+a1/AIWLbC0L8TDY0hbCk4czD RajA==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b=JbsWnAry; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=foxmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id a640c23a62f3a-a6c8070c961si89019166b.693.2024.06.06.10.20.56; Thu, 06 Jun 2024 10:20:56 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b=JbsWnAry; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=foxmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C8D4F68D70E; Thu, 6 Jun 2024 20:20:42 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from out203-205-251-80.mail.qq.com (out203-205-251-80.mail.qq.com [203.205.251.80]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id BFC1C68D52E for ; Thu, 6 Jun 2024 20:20:34 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1717694425; bh=pPn1U6OAWv+iyZ29YEhv3voyr4ULi7qNP4f5FvAG0QE=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=JbsWnAryqwZzZh9XW5W7DyMcTz7sTlowRYMCVSkWHkIkyew//qYdZ/fpL95eMoT8G frKTXtu4KBDh0RKDX9GY65wEhShzc+zcM+svVdXF/ijXQnl0e9JarPqJ/1tst1lMgX Y/67+klMxuBUQ1BQzJ/QiqhWn1PQU956p05HGAd8= Received: from localhost.localdomain ([113.116.29.9]) by newxmesmtplogicsvrsza15-1.qq.com (NewEsmtp) with SMTP id 517BE6FF; Fri, 07 Jun 2024 01:20:23 +0800 X-QQ-mid: xmsmtpt1717694424th6i0odsh Message-ID: X-QQ-XMAILINFO: NRYSeI3Ux+UPVPqKpwIZB7nQxaWYXl+/kNqXSyB/fFuHSW9HxHV/DorkuoAShf PgvPbA3YXqlP7AacYLN9GZj3boWJZi5p2aA9/lXfUSRAbOBDYW0YLjSA7kcTGdLYRjWjQ6Wy229x WCx4s5Py61skS5uFNqL1chpWZ05PQ8sowin6ahvoqb9z1FMb6oIQdmYFI0U3Pb0XBEosRxl1pPpW sGsG9nu3LSxByXEN5/jgxuTUZGAponi3LrWWuVGlniKLfCe+RGyIjEaJfZbvvhxTHv/GWYmg+Rh7 tDNJ7xZGmY/eiXD4l4+IkJVnohM6R5+75opri7TIOfZYGaUHFY2e+fHcDrk9KNaX7TclRQM9oby/ +EryOkGEWIgJUm5fnzGubuqZNuNXB4s7HrfucZbJlS0r01EePH+XWKGxb8SedMXvDto/R0sJhRN4 ETSpInFvg2AmtPDHQZrqmJgoSb5uoFEMoVCvbjxGxPWlQEw6leS4sBShga27Lt4sn0SNjSNpsaLY 0hmOIao8OJdP3rMAAfR/R3T3AY2xhepudFmaX7mCMqc91NICeFM/hPpRp4OI/IXtquR5cWNR9PwC kVyB8mU5PSHKRIUzQsdS+DgyltfQ80QM49HKHfD84QBke2nNEDkniLHBjQLmOT7O/qA6H5nWnqFi LEAnnTD9pxSmUHsMAR/pK/aQeN2OAdgSJkc8440MTdLDKFP5nEIW4RaaX0G8byY6qYgpqp7wvgUO B1X7MD8uWI9h2c5aRZqeoB6VuTmpM4GVfRI5Yp1uOeuztw8O/tucy9+DrG4M0+dsWXBHczEZUf0z dx7lnUBYHWmSQfL5Z5/Q9UrwzRMrIWc6IBsi61K9SZsSGJhQxKZibx6djC+pGGx/aQMZEc4fq257 eh+mvvjHHTnjKhdZK+TtyosI4syGfCJaPKmQCN05IqV/e9WzzlsRgunJ/VfVOYKnyvTCqPanmzR+ E6YEYVThTAPnmsLPKQn6VOiqokHUtlUsbqtdbkvleKfhAgGS1LGITtQFwH8HIQ2p53/l95GXU= X-QQ-XMRINFO: NS+P29fieYNw95Bth2bWPxk= From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Fri, 7 Jun 2024 01:20:16 +0800 X-OQ-MSGID: <20240606172018.1514-2-quinkblack@foxmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240606172018.1514-1-quinkblack@foxmail.com> References: <20240606172018.1514-1-quinkblack@foxmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 2/4] avutil/timer: Add clock_gettime as a fallback of AV_READ_TIME 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: Zhao Zhili Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: TgJhiyXrJez0 From: Zhao Zhili --- libavutil/timer.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/libavutil/timer.h b/libavutil/timer.h index 2cd299eca3..74c4d84e69 100644 --- a/libavutil/timer.h +++ b/libavutil/timer.h @@ -46,6 +46,8 @@ #include "macos_kperf.h" #elif HAVE_MACH_ABSOLUTE_TIME #include +#elif HAVE_CLOCK_GETTIME +#include #endif #include "common.h" @@ -70,6 +72,9 @@ # define AV_READ_TIME gethrtime # elif HAVE_MACH_ABSOLUTE_TIME # define AV_READ_TIME mach_absolute_time +# elif HAVE_CLOCK_GETTIME && defined(CLOCK_MONOTONIC) +# include "libavutil/time.h" +# define AV_READ_TIME av_gettime_relative # endif #endif From patchwork Thu Jun 6 17:20:17 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhao Zhili X-Patchwork-Id: 49625 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:c209:0:b0:460:55fa:d5ed with SMTP id d9csp529564vqo; Thu, 6 Jun 2024 10:21:07 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCVBD27T1MTxK/256c3Pest+ToxtXs6zIbUn4w/EEk4k6pRziwT0dkPnCh/wKkVlnjTf+pTLCpBxxcM+/qCjRfMoUSqoNSnV7E52Mw== X-Google-Smtp-Source: AGHT+IEBwvLtq7mSIoCCunmBOCOY6EkxBUGilmMs/lFOSlmEXokV+MrswthH0hFq1hxslDEBcgys X-Received: by 2002:a17:906:5915:b0:a68:e0e4:302b with SMTP id a640c23a62f3a-a6cdad23223mr15361866b.57.1717694467721; Thu, 06 Jun 2024 10:21:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1717694467; cv=none; d=google.com; s=arc-20160816; b=n5AkTCu+we3+QDT+zBITO804ewRFNkhDIvDpeRmEK3zEBb6yM1WW7K5UFtGpWIisTA pHxaExG7+0Zp+Cv/xZMwpT1F/D31PuX+zqKp2O7BPwo6gDl2KLEnuCGT83wqnm48B1pt fw8ux+16G7xDxM5y2hZrEXtpvm1mIgkgREZVk3plcEBD5sPE/10p5AXpCGcIUdO7g2vX v6y/t4ENJiSpemuBkOtiQyPgDoa+ceGP64j+LCma9NdWpdWdnKyO5HIjAcN96Hb8snLM dVcZi8EcWHa0/hCm98opW+HRFcEXO22vP8IcBMt/G+oHuVC0LPEn26tp2CJc+XkekzxA lJWQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to:date :to:from:message-id:dkim-signature:delivered-to; bh=I05n1bWf/gyRljiY0Cvr6hzGiLMez0TSMHKXN9kic/E=; fh=HnHYuZ9XgUo86ZRXTLWWmQxhslYEI9B9taZ5X1DLFfc=; b=PbLFYRyXYD+SuNMkUIK9BPFF46y3rQT9EPtXI8s+2oWWphBERM2TZn+p/mu7e5zpex 0M90cQRxhtOHNi1LkQ0ViRL0LELVPQvgVcJAZAtwDvPCbnLYWIGG/fdBxHLBeYer3imx oCYbOLLN6G67ZloOJAwkQNyBvDq2B3PolWFD8DvncsjEMGaQp3iVk9hOOZRGmrAyar/u /Z2TdSxihU8Rpd1JerBYpDFr8Z4OLpNLEqeqh6myMdc905J42OKfNhuEOoRHym+iSzwp P3EnF4oTfz52Lox77lx/37YXRAGzgsLfU6u1kYZ2zlEJUlGAyiHoqIXLDerj7g2rPMEO xapQ==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b=FFPF84to; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=foxmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id a640c23a62f3a-a6c806d7e02si91599866b.407.2024.06.06.10.21.06; Thu, 06 Jun 2024 10:21:07 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b=FFPF84to; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=foxmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D0E2468D52E; Thu, 6 Jun 2024 20:20:43 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from out203-205-221-149.mail.qq.com (out203-205-221-149.mail.qq.com [203.205.221.149]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C44DC68D6F8 for ; Thu, 6 Jun 2024 20:20:34 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1717694425; bh=X+JslqN5TqZMeawQbjMsteoKQv6zfagvWfd9tLZucw0=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=FFPF84toj2o06vUuF10MkaiaCJ3ysIvdwHBG7JMpKDUJI0Ru/IYGkOsGmFtdNf7GC TYy75LitmmRneqpLa+fMz19Uwp3wwfetq93DdYuvGQVRU7zPHlX4JgYjwu6UfAFoaX wCcX0lQKUpY0RCF4O+Acb4kS6OiwCcGZCxjJwN7I= Received: from localhost.localdomain ([113.116.29.9]) by newxmesmtplogicsvrsza15-1.qq.com (NewEsmtp) with SMTP id 517BE6FF; Fri, 07 Jun 2024 01:20:23 +0800 X-QQ-mid: xmsmtpt1717694425tyobpvfkw Message-ID: X-QQ-XMAILINFO: MflS1P6hJntI8Ngg8dRTjeTlWUCjPXFcdf+WdXCjVG1JrhF3UwP9iiqMTXWI9C 61soezo1YCzOm0SSA+ehbRWvqwEcK0WoyPWcwgk0YS+iQi73Z2dD7lYg0k3MAP3vlV2izySunJ9K LVrPVhVCuBTWpHxIDD9eFDmND9yFenvvMkhnxOyVVO+BvQDgJvCJaiZ01vV6b0/f6a3CmAHNxhV9 3IDi/wkfE0XE10s2Gog6hnMwHBBivEc3JYZ7u8gCmiLFmjqMNXNyZo57JifOeNQnKdrR6EwTxU8U wauLEv0H+x24GabnJKlU94AvRw+OmZrruwxERjzE6dhNwkBRfIh5gq6WmLCNHA0XgdyloooaVGiw cFr9/HLSDHTfkvdB6bDp13ueOFIyfxn/UkXxFRQRUUcl5X/mZxjENCCJMMXgB+0l4oEoO84ipZEE Le07g9W3PcK9nJfcjJkla5XBqOeJka2OiowoBe/cDty1TOVby0ypY6CF+UVkUpaoZCVvPzMByXMs VNFv1+6rpCw1fCO5EelozH7ghdiQuWrzYX6mnfnDwIu3dLdUfQxnBYF3yMUGzmiOCYlz2ZQ0/xIz OMmKobpPJGs/H/5b0GWYRU6r7GhYC9dzQc+3aPpkzJ4HWZ4/dfcBcqkX5Whf3AHEiP4XzBj7Zocp soPrsKGqPzL6sTlZ1fF78/53O6JozpPBXND5Ch8E9v5kXLOEcx1Maj0IAPzUmVwgGfPXP4gylvS8 jkUGLiEVUZAZIwNTAQJHb92iZx3yi+kkYhKHAZnarU8GTbA/sa7E637qpwsK/s/fLKDBABjwINgu gU4rzcSM1UIe8qxGK0OBxpQhbROznqjCCf/DKe2D3QqtCu02tEyaFdRWQj2CVIFOhBwaMDApy0mw rFmrOr7uJ14QTBXFQfjGLk2ZGJPO2pb7V/k2aGgLFtcdfuuso88ABVNmGoWHkhsjZeGhNe2ps1+M oFEJdW2rhssX3Rlmz+GYqUbvEsjeIUJHWSDLFcjmsLJ+dOYgjZD+3H0R0UG488FJVta8ELYK4= X-QQ-XMRINFO: OWPUhxQsoeAVDbp3OJHYyFg= From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Fri, 7 Jun 2024 01:20:17 +0800 X-OQ-MSGID: <20240606172018.1514-3-quinkblack@foxmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240606172018.1514-1-quinkblack@foxmail.com> References: <20240606172018.1514-1-quinkblack@foxmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 3/4] tests/checkasm: Fix build error when enable linux perf on Android 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: Zhao Zhili Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: /bpmI8xJaWOv From: Zhao Zhili B0 is defined by system header. --- tests/checkasm/llviddsp.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/tests/checkasm/llviddsp.c b/tests/checkasm/llviddsp.c index b75c0ea099..9f8de65df4 100644 --- a/tests/checkasm/llviddsp.c +++ b/tests/checkasm/llviddsp.c @@ -71,7 +71,7 @@ static void check_add_bytes(LLVidDSPContext *c, int width) } static void check_add_median_pred(LLVidDSPContext *c, int width) { - int A0, A1, B0, B1; + int a0, a1, b0, b1; uint8_t *dst0 = av_mallocz(width); uint8_t *dst1 = av_mallocz(width); uint8_t *src0 = av_calloc(width, sizeof(*src0)); @@ -85,18 +85,18 @@ static void check_add_median_pred(LLVidDSPContext *c, int width) { init_buffer(src0, src1, uint8_t, width); init_buffer(diff0, diff1, uint8_t, width); - A0 = rnd() & 0xFF; - B0 = rnd() & 0xFF; - A1 = A0; - B1 = B0; + a0 = rnd() & 0xFF; + b0 = rnd() & 0xFF; + a1 = a0; + b1 = b0; if (check_func(c->add_median_pred, "add_median_pred")) { - call_ref(dst0, src0, diff0, width, &A0, &B0); - call_new(dst1, src1, diff1, width, &A1, &B1); - if (memcmp(dst0, dst1, width) || (A0 != A1) || (B0 != B1)) + call_ref(dst0, src0, diff0, width, &a0, &b0); + call_new(dst1, src1, diff1, width, &a1, &b1); + if (memcmp(dst0, dst1, width) || (a0 != a1) || (b0 != b1)) fail(); - bench_new(dst1, src1, diff1, width, &A1, &B1); + bench_new(dst1, src1, diff1, width, &a1, &b1); } av_free(src0); From patchwork Thu Jun 6 17:20:18 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhao Zhili X-Patchwork-Id: 49626 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:c209:0:b0:460:55fa:d5ed with SMTP id d9csp529668vqo; Thu, 6 Jun 2024 10:21:17 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCVJV9YFWw+M2UNG9P68hbJSvnq3Qavd2JzxLuiMiGvosvoeqh7Jvj49obU7p0FRKceOjtVJ2hMYAedpvwz9uH5KpW6MGuMDVwSoQA== X-Google-Smtp-Source: AGHT+IHFiuqcQaRX6FNMURfTBC+bYcfJS7ugzIvjmaVUsnpRiMK84WSsCMHrGhZ4w0G2MhEhrS6Z X-Received: by 2002:a50:bb44:0:b0:578:6263:727b with SMTP id 4fb4d7f45d1cf-57c509952cfmr7810a12.3.1717694477670; Thu, 06 Jun 2024 10:21:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1717694477; cv=none; d=google.com; s=arc-20160816; b=bEb0LezHgKmFiz0862uOYWc3S4gLBY1N87ajk1EzmH7Xr6qv7cJClkJqmzqcgfQwNK nqbSFiYMdWbxriyzZU+pMhqs6mQMQKEeGAcSzGq51izkzZ5pXXJP+hnk/yPq5dcB7AzZ OM6PXIZiYIGqUp1t6fZliOQknhqvXTXDVjRKhWcgCm0hNPuhz8kbV6RVOBsc8OQ6OcCz NbQeE3W+mYi2TQWrCMQtovSBMns4JH9pzzct6XUUWUb22bjFY5wUwyJ5yDzpr9PfYYXd VNxCEyAJk+HpG0UVQdy4Gr0dtmq0aNP0/3p4Ay3oNlNFss+Y684Hfs4sXm9gpgVGc8Gt 7brg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to:date :to:from:message-id:dkim-signature:delivered-to; bh=pqNrH+zbD34KEiIr2p9/gGR3JYuez0sQihqX64xTXHw=; fh=HnHYuZ9XgUo86ZRXTLWWmQxhslYEI9B9taZ5X1DLFfc=; b=W9oxAGgMyPnx4rOSmiYkknoirvIVb8e405iR2J+SeJE+y8AP7uJn4OpmmLpTnW56oV MPH4nrTTO97JgtLyXav4POnGEWy3BslodZE0jMxP65kQGs6trz56QlndT17lNa68Bc5Q w4nA85VsOic02LQr9Dyh/ernRr2FjyeSEdhF2j5w2o48K5dImFXAWoZWQRScSi3FIP78 ZxJWppAxTfR3didrzyR9sQFuQnkHE5WQdFJAwi1dKXl4c8hZ/sXLjNTBkURC0o5ysKB0 ocQUAWQlpZ/Xw2K0SiV9OawGYtf2cZbdaVaXVQa7ouENXag2YyykXkphvS6lhlMpsUZd k5Vg==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b=qffg5QX3; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=foxmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 4fb4d7f45d1cf-57aae2665bcsi867754a12.563.2024.06.06.10.21.17; Thu, 06 Jun 2024 10:21:17 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b=qffg5QX3; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=foxmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 199B168D716; Thu, 6 Jun 2024 20:20:45 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from out203-205-221-155.mail.qq.com (out203-205-221-155.mail.qq.com [203.205.221.155]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 91C2568D30C for ; Thu, 6 Jun 2024 20:20:35 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1717694426; bh=BBMCU0No8LI5j9XgMuv2rjuKLFLY34nbjc8Je81UDwU=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=qffg5QX3m8+bkwxPP/98RykaSiicuyQ/uaHB8G8+T+W2F73y+DNQK2RAcaU+Kfqpi qmqx67v10N8lBQqqJU3jjFjFNGaBkGHA9ul09mFAC0Uo4IGf2DF4NkYTNlSnPXgumx KpeDmPyKvZs3//YlZEot44E/Ni5cUyZkQoLpOh6Q= Received: from localhost.localdomain ([113.116.29.9]) by newxmesmtplogicsvrsza15-1.qq.com (NewEsmtp) with SMTP id 517BE6FF; Fri, 07 Jun 2024 01:20:23 +0800 X-QQ-mid: xmsmtpt1717694425tldxybnop Message-ID: X-QQ-XMAILINFO: OCj3KYOiBu1oYVHHBKzOnxfP6anHE4on0UjsgzpJJpX+AedmSAbOc2is9S+J9S To7PtUVTnHFclkmXDJ5llqho/vvzPGojqDHXvyG2yWfEkNmQDBxMiLPS97h7dWafBtWT/Z/M3CdI Plnz6K0qVAFSzhryvyCSBwQS7kbdpXtW5G8ucJsm5AUOO9YUib0ucJbKzESmgM1v+zfARr+78gRr OBuf5Gs336WIWldWlaiVQlG4L89z/l+VOXBG2hQyTocwPIdsusnrdUmScNdi4FPm/BteKvOQCMza XxrU2izp6F9uS7od2RcUBR6w08A607KQeACCKlL7RbsoGKrIZejjFXFhyHnBvqSYMjrwNC3Zyltk wwr8GA7YSaYYVsJsRkdcwATraAgf9YjpO1l4CR4T2pJGrTOjSELqn9GMvxkbT9m3wJIHt4IZWtmI hCMeYmf7kQmH85oAZ7hCg08YVkhERkn9OaHhEUIJ0GR9K25Q1nCc7H7sKA9O6g+QWchUKzR/4lVM XUkd9vX6sb3D5rwlVd2Lml5LkiLp1zFfp6iuHa5rmBXO05TvCtL1tpxZO43H7hKRuIPa5PNUusMr qBaPWoQAvi96OcMClg0KUcLwebKhL9SEtiLLfbOxQ8On+j9uZYoF1NefbQTCpeuV3QwWW3iq5QA0 3zgZK0fiC2TY7TM0shW3Iipgve5XsAfuuYckrjBU3/63wfKiN1RBamFwX2JMqdjdSwlAD8n2FHfh GSOHD2w6/FwVw+mE2BM1vJxSHTYoJwPbwtaEdazCoW9zbbR9b6vbqp7vORYK9Zay4LXXRa35T8XB kL19F6bgFx+3rDQYRdpJB1FWgpCluzIxhN9SadqWwmQzVkezaQGnZPV3sry74fTDfxqtmzL1gnno dM4D4pSf5vdQ9PazwnMQkhZJCgSeS4o14uPrDSmxxqve3wYyV2uW0IZzuiWlJHTHWu+q4YYCeX6r LlLRb0zdTDAlPUbPLKt5ObdcnQ8ScjR7RFqZhz5OGm4Ii5m0e7EEhQITxFY79rcQvUkOUWbujUSE H+7cO8Mg== X-QQ-XMRINFO: OD9hHCdaPRBwq3WW+NvGbIU= From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Fri, 7 Jun 2024 01:20:18 +0800 X-OQ-MSGID: <20240606172018.1514-4-quinkblack@foxmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240606172018.1514-1-quinkblack@foxmail.com> References: <20240606172018.1514-1-quinkblack@foxmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 4/4] swscale/aarch64: Add rgb24 to yuv implementation 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: Zhao Zhili Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: vY6PZbt3idFM From: Zhao Zhili Test on Apple M1: rgb24_to_uv_8_c: 0.0 rgb24_to_uv_8_neon: 0.2 rgb24_to_uv_128_c: 1.0 rgb24_to_uv_128_neon: 0.5 rgb24_to_uv_1080_c: 7.0 rgb24_to_uv_1080_neon: 5.7 rgb24_to_uv_1920_c: 12.5 rgb24_to_uv_1920_neon: 9.5 rgb24_to_uv_half_8_c: 0.2 rgb24_to_uv_half_8_neon: 0.2 rgb24_to_uv_half_128_c: 1.0 rgb24_to_uv_half_128_neon: 0.5 rgb24_to_uv_half_1080_c: 6.2 rgb24_to_uv_half_1080_neon: 3.0 rgb24_to_uv_half_1920_c: 11.2 rgb24_to_uv_half_1920_neon: 5.2 rgb24_to_y_8_c: 0.2 rgb24_to_y_8_neon: 0.0 rgb24_to_y_128_c: 0.5 rgb24_to_y_128_neon: 0.5 rgb24_to_y_1080_c: 4.7 rgb24_to_y_1080_neon: 3.2 rgb24_to_y_1920_c: 8.0 rgb24_to_y_1920_neon: 5.7 On Pixel 6: rgb24_to_uv_8_c: 30.7 rgb24_to_uv_8_neon: 56.9 rgb24_to_uv_128_c: 213.9 rgb24_to_uv_128_neon: 173.2 rgb24_to_uv_1080_c: 1649.9 rgb24_to_uv_1080_neon: 1424.4 rgb24_to_uv_1920_c: 2907.9 rgb24_to_uv_1920_neon: 2480.7 rgb24_to_uv_half_8_c: 36.2 rgb24_to_uv_half_8_neon: 33.4 rgb24_to_uv_half_128_c: 167.9 rgb24_to_uv_half_128_neon: 99.4 rgb24_to_uv_half_1080_c: 1293.9 rgb24_to_uv_half_1080_neon: 778.7 rgb24_to_uv_half_1920_c: 2292.7 rgb24_to_uv_half_1920_neon: 1328.7 rgb24_to_y_8_c: 19.7 rgb24_to_y_8_neon: 27.7 rgb24_to_y_128_c: 129.9 rgb24_to_y_128_neon: 96.7 rgb24_to_y_1080_c: 995.4 rgb24_to_y_1080_neon: 767.7 rgb24_to_y_1920_c: 1747.4 rgb24_to_y_1920_neon: 1337.2 Note both tests use clang as compiler, which has vectorization enabled by default with -O3. Signed-off-by: Zhao Zhili --- libswscale/aarch64/Makefile | 1 + libswscale/aarch64/input.S | 202 +++++++++++++++++++++++++++++++++++ libswscale/aarch64/swscale.c | 25 +++++ 3 files changed, 228 insertions(+) create mode 100644 libswscale/aarch64/input.S diff --git a/libswscale/aarch64/Makefile b/libswscale/aarch64/Makefile index da1d909561..adfd90a1b6 100644 --- a/libswscale/aarch64/Makefile +++ b/libswscale/aarch64/Makefile @@ -3,6 +3,7 @@ OBJS += aarch64/rgb2rgb.o \ aarch64/swscale_unscaled.o \ NEON-OBJS += aarch64/hscale.o \ + aarch64/input.o \ aarch64/output.o \ aarch64/rgb2rgb_neon.o \ aarch64/yuv2rgb_neon.o \ diff --git a/libswscale/aarch64/input.S b/libswscale/aarch64/input.S new file mode 100644 index 0000000000..dff5a20ec6 --- /dev/null +++ b/libswscale/aarch64/input.S @@ -0,0 +1,202 @@ +/* + * Copyright (c) 2024 Zhao Zhili + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "libavutil/aarch64/asm.S" + +.macro rgb24_to_yuv_load_rgb, src + ld3 { v16.16b, v17.16b, v18.16b }, [\src] + uxtl v19.8h, v16.8b // v19: r + uxtl v20.8h, v17.8b // v20: g + uxtl v21.8h, v18.8b // v21: b + uxtl2 v22.8h, v16.16b // v22: r + uxtl2 v23.8h, v17.16b // v23: g + uxtl2 v24.8h, v18.16b // v24: b +.endm + +.macro rgb24_to_yuv_product, r, g, b, dst1, dst2, dst, coef0, coef1, coef2, right_shift + mov \dst1\().16b, v6.16b // dst1 = const_offset + mov \dst2\().16b, v6.16b // dst2 = const_offset + smlal \dst1\().4s, \coef0\().4h, \r\().4h // dst1 += rx * r + smlal \dst1\().4s, \coef1\().4h, \g\().4h // dst1 += gx * g + smlal \dst1\().4s, \coef2\().4h, \b\().4h // dst1 += bx * b + smlal2 \dst2\().4s, \coef0\().8h, \r\().8h // dst2 += rx * r + smlal2 \dst2\().4s, \coef1\().8h, \g\().8h // dst2 += gx * g + smlal2 \dst2\().4s, \coef2\().8h, \b\().8h // dst2 += bx * b + sqshrn \dst\().4h, \dst1\().4s, \right_shift // dst_lower_half = dst1 >> right_shift + sqshrn2 \dst\().8h, \dst2\().4s, \right_shift // dst_higher_half = dst2 >> right_shift +.endm + +function ff_rgb24ToY_neon, export=1 + cmp w4, #0 // check width > 0 + ldp w10, w11, [x5] // w10: ry, w11: gy + ldr w12, [x5, #8] // w12: by + b.le 3f + + mov w9, #256 // w9 = 1 << (RGB2YUV_SHIFT - 7) + movk w9, #8, lsl #16 // w9 += 32 << (RGB2YUV_SHIFT - 1) + dup v6.4s, w9 // w9: const_offset + + cmp w4, #16 + dup v0.8h, w10 + dup v1.8h, w11 + dup v2.8h, w12 + b.lt 2f +1: + rgb24_to_yuv_load_rgb x1 + rgb24_to_yuv_product v19, v20, v21, v25, v26, v16, v0, v1, v2, #9 + rgb24_to_yuv_product v22, v23, v24, v27, v28, v17, v0, v1, v2, #9 + sub w4, w4, #16 // width -= 16 + add x1, x1, #48 // src += 48 + cmp w4, #16 // width >= 16 ? + stp q16, q17, [x0], #32 // store to dst + b.ge 1b + cbz x4, 3f +2: + ldrb w13, [x1] // w13: r + ldrb w14, [x1, #1] // w14: g + ldrb w15, [x1, #2] // w15: b + + smaddl x13, w13, w10, x9 // x13 = ry * r + const_offset + smaddl x13, w14, w11, x13 // x13 += gy * g + smaddl x13, w15, w12, x13 // x13 += by * b + asr w13, w13, #9 // x13 >>= 9 + sub w4, w4, #1 // i++ + add x1, x1, #3 // src += 3 + strh w13, [x0], #2 // store to dst + cbnz w4, 2b +3: + ret +endfunc + +.macro rgb24_load_uv_coeff half + ldp w10, w11, [x6, #12] // w10: ru, w11: gu + ldp w12, w13, [x6, #20] // w12: bu, w13: rv + ldp w14, w15, [x6, #28] // w14: gv, w15: bv + .if \half + mov w9, #512 + movk w9, #128, lsl #16 // w9: const_offset + .else + mov w9, #256 + movk w9, #64, lsl #16 // w9: const_offset + .endif + dup v0.8h, w10 + dup v1.8h, w11 + dup v2.8h, w12 + dup v3.8h, w13 + dup v4.8h, w14 + dup v5.8h, w15 + dup v6.4s, w9 +.endm + +function ff_rgb24ToUV_half_neon, export=1 + cmp w5, #0 // check width > 0 + b.le 3f + + cmp w5, #8 + rgb24_load_uv_coeff half=1 + b.lt 2f +1: + ld3 { v16.16b, v17.16b, v18.16b }, [x3] + uaddlp v19.8h, v16.16b // v19: r + uaddlp v20.8h, v17.16b // v20: g + uaddlp v21.8h, v18.16b // v21: b + + rgb24_to_yuv_product v19, v20, v21, v22, v23, v16, v0, v1, v2, #10 + rgb24_to_yuv_product v19, v20, v21, v24, v25, v17, v3, v4, v5, #10 + sub w5, w5, #8 // width -= 8 + add x3, x3, #48 // src += 48 + cmp w5, #8 // width >= 8 ? + str q16, [x0], #16 // store dst_u + str q17, [x1], #16 // store dst_v + b.ge 1b + cbz w5, 3f +2: + ldrb w2, [x3] // w2: r1 + ldrb w4, [x3, #3] // w4: r2 + add w2, w2, w4 // w2 = r1 + r2 + + ldrb w4, [x3, #1] // w4: g1 + ldrb w7, [x3, #4] // w7: g2 + add w4, w4, w7 // w4 = g1 + g2 + + ldrb w7, [x3, #2] // w7: b1 + ldrb w8, [x3, #5] // w8: b2 + add w7, w7, w8 // w7 = b1 + b2 + + smaddl x8, w2, w10, x9 // dst_u = ru * r + const_offset + smaddl x8, w4, w11, x8 // dst_u += gu * g + smaddl x8, w7, w12, x8 // dst_u += bu * b + asr x8, x8, #10 // dst_u >>= 10 + strh w8, [x0], #2 // store dst_u + + smaddl x8, w2, w13, x9 // dst_v = rv * r + const_offset + smaddl x8, w4, w14, x8 // dst_v += gv * g + smaddl x8, w7, w15, x8 // dst_v += bv * b + asr x8, x8, #10 // dst_v >>= 10 + sub w5, w5, #1 + add x3, x3, #6 // src += 6 + strh w8, [x1], #2 // store dst_v + cbnz w5, 2b +3: + ret +endfunc + +function ff_rgb24ToUV_neon, export=1 + cmp w5, #0 // check width > 0 + b.le 3f + + cmp w5, #16 + rgb24_load_uv_coeff half=0 + b.lt 2f +1: + rgb24_to_yuv_load_rgb x3 + rgb24_to_yuv_product v19, v20, v21, v25, v26, v16, v0, v1, v2, #9 + rgb24_to_yuv_product v22, v23, v24, v27, v28, v17, v0, v1, v2, #9 + rgb24_to_yuv_product v19, v20, v21, v25, v26, v18, v3, v4, v5, #9 + rgb24_to_yuv_product v22, v23, v24, v27, v28, v19, v3, v4, v5, #9 + sub w5, w5, #16 + add x3, x3, #48 // src += 48 + cmp w5, #16 + stp q16, q17, [x0], #32 // store to dst_u + stp q18, q19, [x1], #32 // store to dst_v + b.ge 1b + cbz w5, 3f +2: + ldrb w16, [x3] // w16: r + ldrb w17, [x3, #1] // w17: g + ldrb w4, [x3, #2] // w4: b + + smaddl x8, w16, w10, x9 // x8 = ru * r + const_offset + smaddl x8, w17, w11, x8 // x8 += gu * g + smaddl x8, w4, w12, x8 // x8 += bu * b + asr w8, w8, #9 // x8 >>= 9 + strh w8, [x0], #2 // store to dst_u + + smaddl x8, w16, w13, x9 // x8 = rv * r + const_offset + smaddl x8, w17, w14, x8 // x8 += gv * g + smaddl x8, w4, w15, x8 // x8 += bv * b + asr w8, w8, #9 // x8 >>= 9 + sub w5, w5, #1 // width-- + add x3, x3, #3 // src += 3 + strh w8, [x1], #2 // store to dst_v + cbnz w5, 2b +3: + ret +endfunc diff --git a/libswscale/aarch64/swscale.c b/libswscale/aarch64/swscale.c index bbd9719a44..4c4ea39dc1 100644 --- a/libswscale/aarch64/swscale.c +++ b/libswscale/aarch64/swscale.c @@ -201,6 +201,20 @@ void ff_yuv2plane1_8_neon( default: break; \ } +void ff_rgb24ToY_neon(uint8_t *_dst, const uint8_t *src, const uint8_t *unused1, + const uint8_t *unused2, int width, + uint32_t *rgb2yuv, void *opq); + +void ff_rgb24ToUV_neon(uint8_t *_dstU, uint8_t *_dstV, const uint8_t *unused0, + const uint8_t *src1, + const uint8_t *src2, int width, uint32_t *rgb2yuv, + void *opq); + +void ff_rgb24ToUV_half_neon(uint8_t *_dstU, uint8_t *_dstV, const uint8_t *unused0, + const uint8_t *src1, + const uint8_t *src2, int width, uint32_t *rgb2yuv, + void *opq); + av_cold void ff_sws_init_swscale_aarch64(SwsContext *c) { int cpu_flags = av_get_cpu_flags(); @@ -212,5 +226,16 @@ av_cold void ff_sws_init_swscale_aarch64(SwsContext *c) if (c->dstBpc == 8) { c->yuv2planeX = ff_yuv2planeX_8_neon; } + switch (c->srcFormat) { + case AV_PIX_FMT_RGB24: + c->lumToYV12 = ff_rgb24ToY_neon; + if (c->chrSrcHSubSample) + c->chrToYV12 = ff_rgb24ToUV_half_neon; + else + c->chrToYV12 = ff_rgb24ToUV_neon; + break; + default: + break; + } } }