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 ESMTP id 4307E46AB2 for ; Thu, 29 Feb 2024 12:22:16 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id CA69868CFF7; Thu, 29 Feb 2024 14:22:13 +0200 (EET) Received: from relay3-d.mail.gandi.net (relay3-d.mail.gandi.net [217.70.183.195]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 70A1B68CC25 for ; Thu, 29 Feb 2024 14:22:07 +0200 (EET) Received: by mail.gandi.net (Postfix) with ESMTPSA id 9FF3160003 for ; Thu, 29 Feb 2024 12:22:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=niedermayer.cc; s=gm1; t=1709209326; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=KPAM6NW1yGb1hGj1BwgoiVXGf7nG/gvDGtgzAZpqxAw=; b=PRtRuT2nMzHFR9fkYb1IZMQm6EPh/d6V7k63gDIV8uwZEAZIrzGRDQhHCcdTMtL2fmiwEq klOtiUsWfwUZeHfcSZ1plcjrwP0VfqKEswHV0ZwBJI4y/3z2gE9cugNIvSuGXHaz0O4SL1 DPcxVbztkRJA/AHJswI/1dFf939KREbGtGkFOsUiu3MFEF+ZVXqsVb6uR6vCbqF3ZXAihr 4/Kj5IDxQAlj79ukTJhLBCbCG6sRjJKPKJF1+mFsjEwRVJ2BD+9HjlbACcbb38fPwmmR6U wyHcfjS1HobR9yegRf8UqvUwBGMKNn8v5VIsbJiic+fvoLUiqguzbZRGLDIFQw== Date: Thu, 29 Feb 2024 13:22:05 +0100 From: Michael Niedermayer To: FFmpeg development discussions and patches Message-ID: <20240229122205.GD6420@pb2> References: <20240226221940.GV6420@pb2> <20240227094810.1182-1-cus@passwd.hu> <20240227094810.1182-2-cus@passwd.hu> MIME-Version: 1.0 In-Reply-To: <20240227094810.1182-2-cus@passwd.hu> X-GND-Sasl: michael@niedermayer.cc Subject: Re: [FFmpeg-devel] [PATCH 2/2] swresample/resample: rework resample_one function to work the same way as the others 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 Content-Type: multipart/mixed; boundary="===============5003947661746344776==" Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: --===============5003947661746344776== Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="cRLlM4mOAtv/aDZg" Content-Disposition: inline --cRLlM4mOAtv/aDZg Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Tue, Feb 27, 2024 at 10:48:10AM +0100, Marton Balint wrote: > Signed-off-by: Marton Balint > --- > libswresample/resample.c | 29 +++++++---------------------- > libswresample/resample.h | 4 ++-- > libswresample/resample_template.c | 14 ++++++++++++-- > 3 files changed, 21 insertions(+), 26 deletions(-) >=20 > diff --git a/libswresample/resample.c b/libswresample/resample.c > index 17cebad01b..89859dec79 100644 > --- a/libswresample/resample.c > +++ b/libswresample/resample.c > @@ -356,26 +356,7 @@ static int multiple_resample(ResampleContext *c, Aud= ioData *dst, int dst_size, A > =20 > *consumed =3D 0; > =20 > - if (c->filter_length =3D=3D 1 && c->phase_count =3D=3D 1) { > - int64_t index2=3D (1LL<<32)*c->frac/c->src_incr + (1LL<<32)*c->i= ndex + 1; > - int64_t incr=3D (1LL<<32) * c->dst_incr / c->src_incr + 1; > - int new_size =3D (src_size * (int64_t)c->src_incr - c->frac + c-= >dst_incr - 1) / c->dst_incr; > - > - dst_size =3D FFMAX(FFMIN(dst_size, new_size), 0); > - if (dst_size > 0) { > - for (i =3D 0; i < dst->ch_count; i++) { > - c->dsp.resample_one(dst->ch[i], src->ch[i], dst_size, in= dex2, incr); > - if (i+1 =3D=3D dst->ch_count) { > - c->index +=3D dst_size * c->dst_incr_div; > - c->index +=3D (c->frac + dst_size * (int64_t)c->dst_= incr_mod) / c->src_incr; > - av_assert2(c->index >=3D 0); > - *consumed =3D c->index; > - c->frac =3D (c->frac + dst_size * (int64_t)c->dst_= incr_mod) % c->src_incr; > - c->index =3D 0; > - } > - } > - } > - } else { > + { > int64_t end_index =3D (1LL + src_size - c->filter_length) * c->p= hase_count; > int64_t delta_frac =3D (end_index - c->index) * c->src_incr - c-= >frac; > int delta_n =3D (delta_frac + c->dst_incr - 1) / c->dst_incr; > @@ -386,8 +367,12 @@ static int multiple_resample(ResampleContext *c, Aud= ioData *dst, int dst_size, A > if (dst_size > 0) { > /* resample_linear and resample_common should have same beha= vior > * when frac and dst_incr_mod are zero */ > - resample_func =3D (c->linear && (c->frac || c->dst_incr_mod)= ) ? > - c->dsp.resample_linear : c->dsp.resample_com= mon; > + if (c->filter_length =3D=3D 1 && c->phase_count =3D=3D 1) > + resample_func =3D c->dsp.resample_one; > + else if (c->linear && (c->frac || c->dst_incr_mod)) > + resample_func =3D c->dsp.resample_linear; > + else > + resample_func =3D c->dsp.resample_common; > for (i =3D 0; i < dst->ch_count; i++) > *consumed =3D resample_func(c, dst->ch[i], src->ch[i], d= st_size, i+1 =3D=3D dst->ch_count); > } > diff --git a/libswresample/resample.h b/libswresample/resample.h > index 1731dad3cf..8cc29effe8 100644 > --- a/libswresample/resample.h > +++ b/libswresample/resample.h > @@ -51,8 +51,8 @@ typedef struct ResampleContext { > int phase_count_compensation; /* desired phase_count when compe= nsation is enabled */ > =20 > struct { > - void (*resample_one)(void *dst, const void *src, > - int n, int64_t index, int64_t incr); > + int (*resample_one)(struct ResampleContext *c, void *dst, > + const void *src, int n, int update_ctx); > int (*resample_common)(struct ResampleContext *c, void *dst, > const void *src, int n, int update_ctx); > int (*resample_linear)(struct ResampleContext *c, void *dst, > diff --git a/libswresample/resample_template.c b/libswresample/resample_t= emplate.c > index 4c227b9940..a8114ea918 100644 > --- a/libswresample/resample_template.c > +++ b/libswresample/resample_template.c > @@ -72,17 +72,27 @@ > =20 > #endif > =20 > -static void RENAME(resample_one)(void *dest, const void *source, > - int dst_size, int64_t index2, int64_t i= ncr) > +static int RENAME(resample_one)(ResampleContext *c, > + void *dest, const void *source, > + int dst_size, int update_ctx) > { > DELEM *dst =3D dest; > const DELEM *src =3D source; > int dst_index; > + int64_t index2 =3D (1LL << 32) * c->frac / c->src_incr + 1 + (1L= L << 32) * c->index; > + int64_t incr =3D (1LL << 32) * c->dst_incr / c->src_incr + 1; This computation is done repeatedly for each channel, thats not needed its enough if its done once thx [...] --=20 Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB The worst form of inequality is to try to make unequal things equal. -- Aristotle --cRLlM4mOAtv/aDZg Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iF0EABEIAB0WIQSf8hKLFH72cwut8TNhHseHBAsPqwUCZeB26gAKCRBhHseHBAsP qxmsAKCS9n+PGCLMNsfdPD1ph7qTqwYpHgCff3pGtL7ocXaLLw0im6ENj9HA2jE= =5gR4 -----END PGP SIGNATURE----- --cRLlM4mOAtv/aDZg-- --===============5003947661746344776== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ 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". --===============5003947661746344776==--