From patchwork Wed Aug 21 23:24:54 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ramiro Polla X-Patchwork-Id: 51109 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:612c:4062:b0:48e:c0f8:d0de with SMTP id kz34csp730270vqb; Wed, 21 Aug 2024 16:31:18 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCXlY2PWsI9G2qPRtiVoF9rekq69YbcyZHl8tzmUU00dUClK+BtY+BWdRJD3En1OUJ5AGiFcxNFPJ/eC5pdfGwIO@gmail.com X-Google-Smtp-Source: AGHT+IEgnlBuCchvlEURDuFOpSzkIcA7fC3HR/yxqA0AZjkW3QwA5a2L9iNFMP3l8HKBSCmo7a22 X-Received: by 2002:a05:6402:4312:b0:5af:85fc:1a98 with SMTP id 4fb4d7f45d1cf-5bf1efb5241mr1485839a12.0.1724283078427; Wed, 21 Aug 2024 16:31:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1724283078; cv=none; d=google.com; s=arc-20160816; b=jspnRX3z38TaYqgkuTuniqlhNfaRirRfG21kS6ckYk+tCyDhXlTlLGhsEgy8xbkwF4 4w2XViUfA91tBaEeSb+HtpJ168bNDzVSFI6EQxjO4RKXPuhER9y9uWuscc/qSqcKzMt4 Y/ycO/meIn1C9i9qf9nbRfO3F1wZc9us+7k4SLqGchxSjY+w/CZkC7gwtsestA2O2hUw jQwaHvojU3OpuLUqmlb78TW/XTR5P+lZPEivXmOZyz29SrUf/LIswK791t6FKn0P628x 1vYEk43M/K9OUPVUPnAW4Qh6jdWbQU7Zxpz+75HHK0hI6Q647tVnWJsPLs/kAKlvjWok gXqA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=jIJVyRKB4SWS1OSt11Ei0oA06QJbOiCO69OYmXBL+TY=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=RPaO/OEFi1flBgGs8wT0c4Ds5IR+9GvlcKx+vlky71+xPCF613kFHT/vkTkr24F19y iOm9dlXBBtDAA6qvl5wuD4Ad1qROx2+bzV17+pBRiP3vLTr/RBLHC5L2/iDr3jWqu06l qCe+S1qthnmVc+s1JH/ZXGPM5iVbNDf4QNPAiWgMq6d1FJY7iWNUbV40uaXUIcTwvwcg cJhGwTaqPamD6A1kvCUV+4ORQ3AT2/HaH8qRaNSDFDg8PB1tasmiDIg3NKIc+sRx8hU5 y5Y39rVmeexN6SWx7anLe16BH2Jr6m9NK4uHn6EPmNCAU89erhcGb84aBdHPTb2nvtIi dheg==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b=gEmfM8d7; 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=QUARANTINE dis=NONE) header.from=gmail.com; dara=fail header.i=@gmail.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-5c05163016dsi188250a12.670.2024.08.21.16.31.18; Wed, 21 Aug 2024 16:31:18 -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=@gmail.com header.s=20230601 header.b=gEmfM8d7; 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=QUARANTINE dis=NONE) header.from=gmail.com; dara=fail header.i=@gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id BF9F768DDE0; Thu, 22 Aug 2024 02:25:08 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ed1-f47.google.com (mail-ed1-f47.google.com [209.85.208.47]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1CDAA68DC5F for ; Thu, 22 Aug 2024 02:24:59 +0300 (EEST) Received: by mail-ed1-f47.google.com with SMTP id 4fb4d7f45d1cf-5bf068aebe5so385806a12.0 for ; Wed, 21 Aug 2024 16:24:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1724282698; x=1724887498; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=R9nFxu/58IMOGzZnjEOGaiNEsPG6ixQwjfyfKPWCWyE=; b=gEmfM8d79E9LEuhl+zrvkBCPUXboXBUZCX3TGu5UyJb1HN5GUZIsqc6IXbi6hz4QBE YKZJzuWZJrpiWyDJ3oAjDS+5SZF2bVfrgWGnm+GAHRKZYNIiiXEwro2KwlfS0n+jD/0q wdCczQ4/awz90wzA+hVC5U9zFUVwhPaE/rC/p4Zy575Jd/C4vR+3KdSQvX7OxzII819D U57Ov2TntcSY9sNgeNCLYejhbWGGuD/H6BE0DFmmxJ4UQPdd9sGesf1oNf08v8dp1YKm EdlgvD0ExDdNTEZSfmtMYSicdu52+yo+/qDchpRzQC7P06dLE8Ss94ORAOc4ydHtiggn klOw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1724282698; x=1724887498; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=R9nFxu/58IMOGzZnjEOGaiNEsPG6ixQwjfyfKPWCWyE=; b=p9Kv4CW5xw//3n1vMdLzFoVrgtoZrjc+gQX6VpZtEY700eFkoftMcsWT1wCunzXk1P cWz+NomGQNy0is4WbGDoXmofzFLge6EW38ffG1PPuf9mWhJAUMxsIRkA1Fn7l0dw/suS oAAcuipDGkVlO3knrSynjxLjjohkxh30Cid/ZYzieiM29qJWhRP4TKYqWc5eWAgd67EH toKa2QRYJwlIOTUvFtsSIHoPnCbKFbZR883yfs8bUOL+2Qo4Nj2UbDB7YggFO4Gn28Gb 0Fa3WO/Br/gAaMu8WYoj89okurTPyBHaNnh2j9dbiEejschRgzZsxC9PCKv/1ZxUn+em 6gvw== X-Gm-Message-State: AOJu0YzHxLFadx3kDpkVYHYWl79UMUEVJWyFMIeM9qbu9kYZpb6pKiYc iPihnvti3FzJ1kjw1e4tRlrx3YmJR7i4VbcG0TTpnio6fU4/gkXVUpWQmsZx X-Received: by 2002:a05:6402:528d:b0:5be:fc2e:b7d9 with SMTP id 4fb4d7f45d1cf-5bf1f2797bdmr1915249a12.36.1724282697701; Wed, 21 Aug 2024 16:24:57 -0700 (PDT) Received: from localhost.localdomain (196.105-180-91.adsl-dyn.isp.belgacom.be. [91.180.105.196]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5c044ddc0d0sm164644a12.10.2024.08.21.16.24.57 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 21 Aug 2024 16:24:57 -0700 (PDT) From: Ramiro Polla To: ffmpeg-devel@ffmpeg.org Date: Thu, 22 Aug 2024 01:24:54 +0200 Message-Id: <20240821232455.238469-2-ramiro.polla@gmail.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20240821232455.238469-1-ramiro.polla@gmail.com> References: <20240821232455.238469-1-ramiro.polla@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avcodec/mpegvideo: remove redundant workaround to recalculate last nonzero coefficient 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: U/Ox5PK/wsmd The x86 optimized dct_quantize only calculates the last nonzero coefficient correctly if the zigzag scan order is used. For the alternate scan order, this value is incorrect. To work around this, the dct_unquantize functions process the entire block if the alternate scan order is used. But a second workaround (bb198e198ab) was added that recalculates the last nonzero coefficient after dct_quantize is called if the alternate scan order is used. This commit removes the first workaround, which became redundant. --- libavcodec/mpegvideo.c | 9 +++------ libavcodec/x86/mpegvideo.c | 6 ++---- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c index b9a0469335..01e310e483 100644 --- a/libavcodec/mpegvideo.c +++ b/libavcodec/mpegvideo.c @@ -110,8 +110,7 @@ static void dct_unquantize_mpeg2_intra_c(MpegEncContext *s, if (s->q_scale_type) qscale = ff_mpeg2_non_linear_qscale[qscale]; else qscale <<= 1; - if(s->alternate_scan) nCoeffs= 63; - else nCoeffs= s->block_last_index[n]; + nCoeffs= s->block_last_index[n]; block[0] *= n < 4 ? s->y_dc_scale : s->c_dc_scale; quant_matrix = s->intra_matrix; @@ -141,8 +140,7 @@ static void dct_unquantize_mpeg2_intra_bitexact(MpegEncContext *s, if (s->q_scale_type) qscale = ff_mpeg2_non_linear_qscale[qscale]; else qscale <<= 1; - if(s->alternate_scan) nCoeffs= 63; - else nCoeffs= s->block_last_index[n]; + nCoeffs= s->block_last_index[n]; block[0] *= n < 4 ? s->y_dc_scale : s->c_dc_scale; sum += block[0]; @@ -175,8 +173,7 @@ static void dct_unquantize_mpeg2_inter_c(MpegEncContext *s, if (s->q_scale_type) qscale = ff_mpeg2_non_linear_qscale[qscale]; else qscale <<= 1; - if(s->alternate_scan) nCoeffs= 63; - else nCoeffs= s->block_last_index[n]; + nCoeffs= s->block_last_index[n]; quant_matrix = s->inter_matrix; for(i=0; i<=nCoeffs; i++) { diff --git a/libavcodec/x86/mpegvideo.c b/libavcodec/x86/mpegvideo.c index 73967cafda..9878607a81 100644 --- a/libavcodec/x86/mpegvideo.c +++ b/libavcodec/x86/mpegvideo.c @@ -312,8 +312,7 @@ static void dct_unquantize_mpeg2_intra_mmx(MpegEncContext *s, if (s->q_scale_type) qscale = ff_mpeg2_non_linear_qscale[qscale]; else qscale <<= 1; - if(s->alternate_scan) nCoeffs= 63; //FIXME - else nCoeffs= s->intra_scantable.raster_end[ s->block_last_index[n] ]; + nCoeffs= s->intra_scantable.raster_end[ s->block_last_index[n] ]; if (n < 4) block0 = block[0] * s->y_dc_scale; @@ -380,8 +379,7 @@ static void dct_unquantize_mpeg2_inter_mmx(MpegEncContext *s, if (s->q_scale_type) qscale = ff_mpeg2_non_linear_qscale[qscale]; else qscale <<= 1; - if(s->alternate_scan) nCoeffs= 63; //FIXME - else nCoeffs= s->intra_scantable.raster_end[ s->block_last_index[n] ]; + nCoeffs= s->intra_scantable.raster_end[ s->block_last_index[n] ]; quant_matrix = s->inter_matrix; __asm__ volatile(