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 945B6484CF for ; Tue, 5 Dec 2023 19:25:36 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id E61FF68CDE1; Tue, 5 Dec 2023 21:25:32 +0200 (EET) Received: from mail-qv1-f47.google.com (mail-qv1-f47.google.com [209.85.219.47]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A3E6668B991 for ; Tue, 5 Dec 2023 21:25:25 +0200 (EET) Received: by mail-qv1-f47.google.com with SMTP id 6a1803df08f44-679dd3055faso35426986d6.0 for ; Tue, 05 Dec 2023 11:25:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1701804324; x=1702409124; darn=ffmpeg.org; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=S5FuLAVDBewza6738VNInrwImaJ76gQu7+BP1ddRfxE=; b=RcxJIq5kXn4xBjgJVZ+IKjhGTsf2ibmH8kcOdC7uVp8ZGIgFEoEHEM2OVnczZZ3JZ2 3L9lKJ/h8vlde6Bc4eY9qdr2lcz1bwFDIRWvc8cqC36z97EL1MkPT9RoV0dYMvjeSuDs uzOV4595x7fb2CaIDi9NBp5Sqi/7RSLVQ4MOhtmfbZDmqxqHgNvFritrLmhsZHFF6vDR rYCDDBrke3iI+Xh97pvLAHb+0wjzg0aVZuyjc+/wHu4KI/2ZHWUy6ZHLU9UOXOlvIDfp rIuka4TYvO3EyBg5mISTwCWV8FlvbZHg88qljV+pxkVgVxpdSmeSzY1ptLpqgxmtLdjs DL/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701804324; x=1702409124; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=S5FuLAVDBewza6738VNInrwImaJ76gQu7+BP1ddRfxE=; b=GTctmINZVoJCDdLfbYXsIPrukVrP5V3e51/FNNaDjcTSa3g3hvb7dZCh2o4HsGZEve pBg7VvvtiNmgslyGcKDCADjSGV2VPfhIC0nipeaywoYpqCUZd9xr1o4vh8v5Kg1vZDtV qnw3nFg4VLLG7YkRF5uvckQ+PHheaL5F8nBq8+nqLoPWA2E+lGsKB1MSEjvPst2TxuQv V66k78vSMT3DT0YMLKVyFbvf7GVo0RS+auxb284hQPhIdJsPZKybRsLflQer/S6Jp5Uz u+aKKwxjrUQig7EF0WRDr8NhT9LTvc00eNyLmRQ9mi35zm/DL9XqnO75pRZFe+aCjGZc BvvQ== X-Gm-Message-State: AOJu0Ywii1LW8WM/humtAf2U67iT2LQRPrgMNSza5yaQS+ZRm2AFlhiN kE7g0mXeAymsEf5Q+fl5CoBUHULVXi8ofqRgkI0CISotoQ0wI7gI X-Google-Smtp-Source: AGHT+IHkoRG5AIkhAS+fnKIWzbqx4wHPW0VtmweRsHruQUb1Wrw7MpznOEglVlASg4iitbFu48hkZ9yl4cXgGpWer38= X-Received: by 2002:a05:6214:5249:b0:67a:ad71:8bce with SMTP id kf9-20020a056214524900b0067aad718bcemr2825618qvb.0.1701804323859; Tue, 05 Dec 2023 11:25:23 -0800 (PST) MIME-Version: 1.0 References: <3488362.4jH3KRUo1u@basile.remlab.net> <2772910.fE53gIofYm@basile.remlab.net> In-Reply-To: <2772910.fE53gIofYm@basile.remlab.net> From: flow gg Date: Wed, 6 Dec 2023 03:25:12 +0800 Message-ID: To: FFmpeg development discussions and patches Content-Type: multipart/mixed; boundary="00000000000033a106060bc8320f" X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH] lavc/vc1dsp: R-V V inv_trans 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" Archived-At: List-Archive: List-Post: --00000000000033a106060bc8320f Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable > This block can be folded into the next. You don't need to check VLENB twice. Changed. > Instruction scheduling could be better, especially on in-order CPUs. I put the vload at the front, and then proceeded with the t2 operation, but I'm not sure... > You don't need to reset the AVL here, just pass zero. Changed. > vsetivli Changed. R=C3=A9mi Denis-Courmont =E4=BA=8E2023=E5=B9=B412=E6=9C= =886=E6=97=A5=E5=91=A8=E4=B8=89 00:41=E5=86=99=E9=81=93=EF=BC=9A > Hi, > > > diff --git a/libavcodec/riscv/Makefile b/libavcodec/riscv/Makefile > > index 2d0e6c19c8..442c5961ea 100644 > > --- a/libavcodec/riscv/Makefile > > +++ b/libavcodec/riscv/Makefile > > @@ -39,5 +39,7 @@ OBJS-$(CONFIG_PIXBLOCKDSP) +=3D riscv/pixblockdsp_ini= t.o > \ > > RVV-OBJS-$(CONFIG_PIXBLOCKDSP) +=3D riscv/pixblockdsp_rvv.o > > OBJS-$(CONFIG_UTVIDEO_DECODER) +=3D riscv/utvideodsp_init.o > > RVV-OBJS-$(CONFIG_UTVIDEO_DECODER) +=3D riscv/utvideodsp_rvv.o > > +OBJS-$(CONFIG_VC1DSP) +=3D riscv/vc1dsp_init.o > > +RVV-OBJS-$(CONFIG_VC1DSP) +=3D riscv/vc1dsp_rvv.o > > OBJS-$(CONFIG_VORBIS_DECODER) +=3D riscv/vorbisdsp_init.o > > RVV-OBJS-$(CONFIG_VORBIS_DECODER) +=3D riscv/vorbisdsp_rvv.o > > diff --git a/libavcodec/riscv/vc1dsp_init.c > b/libavcodec/riscv/vc1dsp_init.c > > new file mode 100644 > > index 0000000000..6a04bea6d6 > > --- /dev/null > > +++ b/libavcodec/riscv/vc1dsp_init.c > > @@ -0,0 +1,47 @@ > > +/* > > + * Copyright (c) 2023 Institue of Software Chinese Academy of Sciences > > (ISCAS). > > + * > > + * 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 > > + > > +#include "libavutil/attributes.h" > > +#include "libavutil/cpu.h" > > +#include "libavutil/riscv/cpu.h" > > +#include "libavcodec/vc1.h" > > + > > +void ff_vc1_inv_trans_8x8_dc_rvv(uint8_t *dest, ptrdiff_t stride, > int16_t > > *block); > > +void ff_vc1_inv_trans_4x8_dc_rvv(uint8_t *dest, ptrdiff_t stride, > int16_t > > *block); > > +void ff_vc1_inv_trans_8x4_dc_rvv(uint8_t *dest, ptrdiff_t stride, > int16_t > > *block); > > +void ff_vc1_inv_trans_4x4_dc_rvv(uint8_t *dest, ptrdiff_t stride, > int16_t > > *block); > > + > > +av_cold void ff_vc1dsp_init_riscv(VC1DSPContext *dsp) > > +{ > > +#if HAVE_RVV > > + int flags =3D av_get_cpu_flags(); > > + > > + if ((flags & AV_CPU_FLAG_RVV_I64) && ff_get_rv_vlenb() >=3D 16) { > > + dsp->vc1_inv_trans_8x8_dc =3D ff_vc1_inv_trans_8x8_dc_rvv; > > + dsp->vc1_inv_trans_8x4_dc =3D ff_vc1_inv_trans_8x4_dc_rvv; > > + } > > This block can be folded into the next. You don't need to check VLENB > twice. > > > + if ((flags & AV_CPU_FLAG_RVV_I32) && ff_get_rv_vlenb() >=3D 16) { > > + dsp->vc1_inv_trans_4x8_dc =3D ff_vc1_inv_trans_4x8_dc_rvv; > > + dsp->vc1_inv_trans_4x4_dc =3D ff_vc1_inv_trans_4x4_dc_rvv; > > + } > > +#endif > > +} > > diff --git a/libavcodec/riscv/vc1dsp_rvv.S > b/libavcodec/riscv/vc1dsp_rvv.S > > new file mode 100644 > > index 0000000000..b865bd2cbc > > --- /dev/null > > +++ b/libavcodec/riscv/vc1dsp_rvv.S > > @@ -0,0 +1,114 @@ > > +/* > > + * Copyright (c) 2023 Institue of Software Chinese Academy of Sciences > > (ISCAS). > > + * > > + * 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/riscv/asm.S" > > + > > +func ff_vc1_inv_trans_8x8_dc_rvv, zve64x > > + lh t2, (a2) > > + sh1add t2, t2, t2 > > + addi t2, t2, 1 > > + srai t2, t2, 1 > > + sh1add t2, t2, t2 > > + addi t2, t2, 16 > > + srai t2, t2, 5 > > + vsetivli zero, 8, e8, mf2, ta, ma > > + vlse64.v v0, (a0), a1 > > + li t0, 8*8 > > + vsetvli zero, t0, e16, m8, ta, ma > > Instruction scheduling could be better, especially on in-order CPUs. > > > + vzext.vf2 v8, v0 > > + vadd.vx v8, v8, t2 > > + vmax.vx v8, v8, zero > > + vsetvli zero, t0, e8, m4, ta, ma > > You don't need to reset the AVL here, just pass zero. > > > + vnclipu.wi v0, v8, 0 > > + vsetivli zero, 8, e8, mf2, ta, ma > > + vsse64.v v0, (a0), a1 > > + ret > > +endfunc > > + > > +func ff_vc1_inv_trans_4x8_dc_rvv, zve32x > > + lh t2, (a2) > > + slli t1, t2, 4 > > + add t2, t2, t1 > > + addi t2, t2, 4 > > + srai t2, t2, 3 > > + sh1add t2, t2, t2 > > + slli t2, t2, 2 > > + addi t2, t2, 64 > > + srai t2, t2, 7 > > + vsetivli zero, 8, e8, mf2, ta, ma > > + vlse32.v v0, (a0), a1 > > + li t0, 4*8 > > + vsetvli zero, t0, e16, m4, ta, ma > > + vzext.vf2 v4, v0 > > + vadd.vx v4, v4, t2 > > + vmax.vx v4, v4, zero > > + vsetvli zero, t0, e8, m2, ta, ma > > + vnclipu.wi v0, v4, 0 > > + vsetivli zero, 8, e8, mf2, ta, ma > > + vsse32.v v0, (a0), a1 > > + ret > > +endfunc > > + > > +func ff_vc1_inv_trans_8x4_dc_rvv, zve64x > > + lh t2, (a2) > > + sh1add t2, t2, t2 > > + addi t2, t2, 1 > > + srai t2, t2, 1 > > + slli t1, t2, 4 > > + add t2, t2, t1 > > + addi t2, t2, 64 > > + srai t2, t2, 7 > > + vsetivli zero, 8, e8, mf2, ta, ma > > + vlse64.v v0, (a0), a1 > > + li t0, 8*4 > > + vsetvli zero, t0, e16, m4, ta, ma > > + vzext.vf2 v4, v0 > > + vadd.vx v4, v4, t2 > > + vmax.vx v4, v4, zero > > + vsetvli zero, t0, e8, m2, ta, ma > > + vnclipu.wi v0, v4, 0 > > + vsetivli zero, 8, e8, mf2, ta, ma > > + vsse64.v v0, (a0), a1 > > + ret > > +endfunc > > + > > +func ff_vc1_inv_trans_4x4_dc_rvv, zve32x > > + lh t2, (a2) > > + slli t1, t2, 4 > > + add t2, t2, t1 > > + addi t2, t2, 4 > > + srai t2, t2, 3 > > + slli t1, t2, 4 > > + add t2, t2, t1 > > + addi t2, t2, 64 > > + srai t2, t2, 7 > > + vsetivli zero, 4, e8, mf2, ta, ma > > + vlse32.v v0, (a0), a1 > > + li t0, 4*4 > > + vsetvli zero, t0, e16, m2, ta, ma > > vsetivli > > > + vzext.vf2 v2, v0 > > + vadd.vx v2, v2, t2 > > + vmax.vx v2, v2, zero > > + vsetvli zero, t0, e8, m1, ta, ma > > + vnclipu.wi v0, v2, 0 > > + vsetivli zero, 4, e8, mf2, ta, ma > > + vsse32.v v0, (a0), a1 > > + ret > > +endfunc > > diff --git a/libavcodec/vc1dsp.c b/libavcodec/vc1dsp.c > > index 62c8eb21fa..2caa3c6863 100644 > > --- a/libavcodec/vc1dsp.c > > +++ b/libavcodec/vc1dsp.c > > @@ -1039,6 +1039,8 @@ av_cold void ff_vc1dsp_init(VC1DSPContext *dsp) > > ff_vc1dsp_init_arm(dsp); > > #elif ARCH_PPC > > ff_vc1dsp_init_ppc(dsp); > > +#elif ARCH_RISCV > > + ff_vc1dsp_init_riscv(dsp); > > #elif ARCH_X86 > > ff_vc1dsp_init_x86(dsp); > > #elif ARCH_MIPS > > diff --git a/libavcodec/vc1dsp.h b/libavcodec/vc1dsp.h > > index 7ed1776ca7..e3b90d2b62 100644 > > --- a/libavcodec/vc1dsp.h > > +++ b/libavcodec/vc1dsp.h > > @@ -89,6 +89,7 @@ void ff_vc1dsp_init(VC1DSPContext* c); > > void ff_vc1dsp_init_aarch64(VC1DSPContext* dsp); > > void ff_vc1dsp_init_arm(VC1DSPContext* dsp); > > void ff_vc1dsp_init_ppc(VC1DSPContext *c); > > +void ff_vc1dsp_init_riscv(VC1DSPContext *c); > > void ff_vc1dsp_init_x86(VC1DSPContext* dsp); > > void ff_vc1dsp_init_mips(VC1DSPContext* dsp); > > void ff_vc1dsp_init_loongarch(VC1DSPContext* dsp); > > > -- > R=C3=A9mi Denis-Courmont > http://www.remlab.net/ > > > > _______________________________________________ > 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". > --00000000000033a106060bc8320f Content-Type: text/x-patch; charset="US-ASCII"; name="lavc-vc1dsp-R-V-V-inv_trans_nosplat.patch" Content-Disposition: attachment; filename="lavc-vc1dsp-R-V-V-inv_trans_nosplat.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lpsq4umu0 RnJvbSBkNjA2NTA4Y2QwYTUyZDIxYWUzMjhkYzYzM2E5OTQ4MTJiYmE0ODI1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBzdW55dWVjaGkgPHN1bnl1ZWNoaUBpc2Nhcy5hYy5jbj4KRGF0 ZTogRnJpLCAxIERlYyAyMDIzIDEwOjA3OjQwICswODAwClN1YmplY3Q6IFtQQVRDSF0gbGF2Yy92 YzFkc3A6IFItViBWIGludl90cmFucwoKYzkxMAogICAgdmMxZHNwLnZjMV9pbnZfdHJhbnNfNHg0 X2RjX2M6IDg0LjAKICAgIHZjMWRzcC52YzFfaW52X3RyYW5zXzR4NF9kY19ydnZfaTMyOiA3NC4w CiAgICB2YzFkc3AudmMxX2ludl90cmFuc180eDhfZGNfYzogMTUwLjIKICAgIHZjMWRzcC52YzFf aW52X3RyYW5zXzR4OF9kY19ydnZfaTMyOiA4My41CiAgICB2YzFkc3AudmMxX2ludl90cmFuc184 eDRfZGNfYzogMTI5LjAKICAgIHZjMWRzcC52YzFfaW52X3RyYW5zXzh4NF9kY19ydnZfaTY0OiA3 NS43CiAgICB2YzFkc3AudmMxX2ludl90cmFuc184eDhfZGNfYzogMjU0LjcKICAgIHZjMWRzcC52 YzFfaW52X3RyYW5zXzh4OF9kY19ydnZfaTY0OiA5MC41Ci0tLQogbGliYXZjb2RlYy9yaXNjdi9N YWtlZmlsZSAgICAgIHwgICAyICsKIGxpYmF2Y29kZWMvcmlzY3YvdmMxZHNwX2luaXQuYyB8ICA0 OSArKysrKysrKysrKysrKysKIGxpYmF2Y29kZWMvcmlzY3YvdmMxZHNwX3J2di5TICB8IDExMCAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGxpYmF2Y29kZWMvdmMxZHNwLmMgICAg ICAgICAgICB8ICAgMiArCiBsaWJhdmNvZGVjL3ZjMWRzcC5oICAgICAgICAgICAgfCAgIDEgKwog NSBmaWxlcyBjaGFuZ2VkLCAxNjQgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxp YmF2Y29kZWMvcmlzY3YvdmMxZHNwX2luaXQuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2Y29k ZWMvcmlzY3YvdmMxZHNwX3J2di5TCgpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9yaXNjdi9NYWtl ZmlsZSBiL2xpYmF2Y29kZWMvcmlzY3YvTWFrZWZpbGUKaW5kZXggMmQwZTZjMTljOC4uNDQyYzU5 NjFlYSAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9yaXNjdi9NYWtlZmlsZQorKysgYi9saWJhdmNv ZGVjL3Jpc2N2L01ha2VmaWxlCkBAIC0zOSw1ICszOSw3IEBAIE9CSlMtJChDT05GSUdfUElYQkxP Q0tEU1ApICs9IHJpc2N2L3BpeGJsb2NrZHNwX2luaXQubyBcCiBSVlYtT0JKUy0kKENPTkZJR19Q SVhCTE9DS0RTUCkgKz0gcmlzY3YvcGl4YmxvY2tkc3BfcnZ2Lm8KIE9CSlMtJChDT05GSUdfVVRW SURFT19ERUNPREVSKSArPSByaXNjdi91dHZpZGVvZHNwX2luaXQubwogUlZWLU9CSlMtJChDT05G SUdfVVRWSURFT19ERUNPREVSKSArPSByaXNjdi91dHZpZGVvZHNwX3J2di5vCitPQkpTLSQoQ09O RklHX1ZDMURTUCkgKz0gcmlzY3YvdmMxZHNwX2luaXQubworUlZWLU9CSlMtJChDT05GSUdfVkMx RFNQKSArPSByaXNjdi92YzFkc3BfcnZ2Lm8KIE9CSlMtJChDT05GSUdfVk9SQklTX0RFQ09ERVIp ICs9IHJpc2N2L3ZvcmJpc2RzcF9pbml0Lm8KIFJWVi1PQkpTLSQoQ09ORklHX1ZPUkJJU19ERUNP REVSKSArPSByaXNjdi92b3JiaXNkc3BfcnZ2Lm8KZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvcmlz Y3YvdmMxZHNwX2luaXQuYyBiL2xpYmF2Y29kZWMvcmlzY3YvdmMxZHNwX2luaXQuYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4wZDIyZDI4ZjRkCi0tLSAvZGV2L251bGwK KysrIGIvbGliYXZjb2RlYy9yaXNjdi92YzFkc3BfaW5pdC5jCkBAIC0wLDAgKzEsNDkgQEAKKy8q CisgKiBDb3B5cmlnaHQgKGMpIDIwMjMgSW5zdGl0dWUgb2YgU29mdHdhcmUgQ2hpbmVzZSBBY2Fk ZW15IG9mIFNjaWVuY2VzIChJU0NBUykuCisgKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZt cGVnLgorICoKKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNz ZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2Us IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogRkZtcGVnIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsg aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwg NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVT QQorICovCisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKworI2luY2x1ZGUgImxpYmF2dXRpbC9hdHRy aWJ1dGVzLmgiCisjaW5jbHVkZSAibGliYXZ1dGlsL2NwdS5oIgorI2luY2x1ZGUgImxpYmF2dXRp bC9yaXNjdi9jcHUuaCIKKyNpbmNsdWRlICJsaWJhdmNvZGVjL3ZjMS5oIgorCit2b2lkIGZmX3Zj MV9pbnZfdHJhbnNfOHg4X2RjX3J2dih1aW50OF90ICpkZXN0LCBwdHJkaWZmX3Qgc3RyaWRlLCBp bnQxNl90ICpibG9jayk7Cit2b2lkIGZmX3ZjMV9pbnZfdHJhbnNfNHg4X2RjX3J2dih1aW50OF90 ICpkZXN0LCBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQxNl90ICpibG9jayk7Cit2b2lkIGZmX3ZjMV9p bnZfdHJhbnNfOHg0X2RjX3J2dih1aW50OF90ICpkZXN0LCBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQx Nl90ICpibG9jayk7Cit2b2lkIGZmX3ZjMV9pbnZfdHJhbnNfNHg0X2RjX3J2dih1aW50OF90ICpk ZXN0LCBwdHJkaWZmX3Qgc3RyaWRlLCBpbnQxNl90ICpibG9jayk7CisKK2F2X2NvbGQgdm9pZCBm Zl92YzFkc3BfaW5pdF9yaXNjdihWQzFEU1BDb250ZXh0ICpkc3ApCit7CisjaWYgSEFWRV9SVlYK KyAgICBpbnQgZmxhZ3MgPSBhdl9nZXRfY3B1X2ZsYWdzKCk7CisKKyAgICBpZiAoZmZfZ2V0X3J2 X3ZsZW5iKCkgPj0gMTYpIHsKKyAgICAgICAgaWYgKGZsYWdzICYgQVZfQ1BVX0ZMQUdfUlZWX0k2 NCkgeworICAgICAgICAgICAgZHNwLT52YzFfaW52X3RyYW5zXzh4OF9kYyA9IGZmX3ZjMV9pbnZf dHJhbnNfOHg4X2RjX3J2djsKKyAgICAgICAgICAgIGRzcC0+dmMxX2ludl90cmFuc184eDRfZGMg PSBmZl92YzFfaW52X3RyYW5zXzh4NF9kY19ydnY7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGZs YWdzICYgQVZfQ1BVX0ZMQUdfUlZWX0kzMikgeworICAgICAgICAgICAgZHNwLT52YzFfaW52X3Ry YW5zXzR4OF9kYyA9IGZmX3ZjMV9pbnZfdHJhbnNfNHg4X2RjX3J2djsKKyAgICAgICAgICAgIGRz cC0+dmMxX2ludl90cmFuc180eDRfZGMgPSBmZl92YzFfaW52X3RyYW5zXzR4NF9kY19ydnY7Cisg ICAgICAgIH0KKyAgICB9CisjZW5kaWYKK30KZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvcmlzY3Yv dmMxZHNwX3J2di5TIGIvbGliYXZjb2RlYy9yaXNjdi92YzFkc3BfcnZ2LlMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uYTVjNmM3NzA2MwotLS0gL2Rldi9udWxsCisrKyBi L2xpYmF2Y29kZWMvcmlzY3YvdmMxZHNwX3J2di5TCkBAIC0wLDAgKzEsMTEwIEBACisvKgorICog Q29weXJpZ2h0IChjKSAyMDIzIEluc3RpdHVlIG9mIFNvZnR3YXJlIENoaW5lc2UgQWNhZGVteSBv ZiBTY2llbmNlcyAoSVNDQVMpLgorICoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4K KyAqCisgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdl bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIEZGbXBlZyBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5v dCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKyAq LworCisjaW5jbHVkZSAibGliYXZ1dGlsL3Jpc2N2L2FzbS5TIgorCitmdW5jIGZmX3ZjMV9pbnZf dHJhbnNfOHg4X2RjX3J2diwgenZlNjR4CisgICAgICAgIGxoICAgICAgICAgICAgdDIsIChhMikK KyAgICAgICAgdnNldGl2bGkgICAgICB6ZXJvLCA4LCBlOCwgbWYyLCB0YSwgbWEKKyAgICAgICAg dmxzZTY0LnYgICAgICB2MCwgKGEwKSwgYTEKKyAgICAgICAgc2gxYWRkICAgICAgICB0MiwgdDIs IHQyCisgICAgICAgIGFkZGkgICAgICAgICAgdDIsIHQyLCAxCisgICAgICAgIHNyYWkgICAgICAg ICAgdDIsIHQyLCAxCisgICAgICAgIHNoMWFkZCAgICAgICAgdDIsIHQyLCB0MgorICAgICAgICBh ZGRpICAgICAgICAgIHQyLCB0MiwgMTYKKyAgICAgICAgc3JhaSAgICAgICAgICB0MiwgdDIsIDUK KyAgICAgICAgdnNldGl2bGkgICAgICB6ZXJvLCA4KjgsIGUxNiwgbTgsIHRhLCBtYQorICAgICAg ICB2emV4dC52ZjIgICAgIHY4LCB2MAorICAgICAgICB2YWRkLnZ4ICAgICAgIHY4LCB2OCwgdDIK KyAgICAgICAgdm1heC52eCAgICAgICB2OCwgdjgsIHplcm8KKyAgICAgICAgdnNldHZsaSAgICAg ICB6ZXJvLCB6ZXJvLCBlOCwgbTQsIHRhLCBtYQorICAgICAgICB2bmNsaXB1LndpICAgIHYwLCB2 OCwgMAorICAgICAgICB2c2V0aXZsaSAgICAgIHplcm8sIDgsIGU4LCBtZjIsIHRhLCBtYQorICAg ICAgICB2c3NlNjQudiAgICAgIHYwLCAoYTApLCBhMQorICAgICAgICByZXQKK2VuZGZ1bmMKKwor ZnVuYyBmZl92YzFfaW52X3RyYW5zXzR4OF9kY19ydnYsIHp2ZTMyeAorICAgICAgICBsaCAgICAg ICAgICAgIHQyLCAoYTIpCisgICAgICAgIHZzZXRpdmxpICAgICAgemVybywgOCwgZTgsIG1mMiwg dGEsIG1hCisgICAgICAgIHZsc2UzMi52ICAgICAgdjAsIChhMCksIGExCisgICAgICAgIHNsbGkg ICAgICAgICAgdDEsIHQyLCA0CisgICAgICAgIGFkZCAgICAgICAgICAgdDIsIHQyLCB0MQorICAg ICAgICBhZGRpICAgICAgICAgIHQyLCB0MiwgNAorICAgICAgICBzcmFpICAgICAgICAgIHQyLCB0 MiwgMworICAgICAgICBzaDFhZGQgICAgICAgIHQyLCB0MiwgdDIKKyAgICAgICAgc2xsaSAgICAg ICAgICB0MiwgdDIsIDIKKyAgICAgICAgYWRkaSAgICAgICAgICB0MiwgdDIsIDY0CisgICAgICAg IHNyYWkgICAgICAgICAgdDIsIHQyLCA3CisgICAgICAgIHZzZXRpdmxpICAgICAgemVybywgNCo4 LCBlMTYsIG00LCB0YSwgbWEKKyAgICAgICAgdnpleHQudmYyICAgICB2NCwgdjAKKyAgICAgICAg dmFkZC52eCAgICAgICB2NCwgdjQsIHQyCisgICAgICAgIHZtYXgudnggICAgICAgdjQsIHY0LCB6 ZXJvCisgICAgICAgIHZzZXR2bGkgICAgICAgemVybywgemVybywgZTgsIG0yLCB0YSwgbWEKKyAg ICAgICAgdm5jbGlwdS53aSAgICB2MCwgdjQsIDAKKyAgICAgICAgdnNldGl2bGkgICAgICB6ZXJv LCA4LCBlOCwgbWYyLCB0YSwgbWEKKyAgICAgICAgdnNzZTMyLnYgICAgICB2MCwgKGEwKSwgYTEK KyAgICAgICAgcmV0CitlbmRmdW5jCisKK2Z1bmMgZmZfdmMxX2ludl90cmFuc184eDRfZGNfcnZ2 LCB6dmU2NHgKKyAgICAgICAgbGggICAgICAgICAgICB0MiwgKGEyKQorICAgICAgICB2c2V0aXZs aSAgICAgIHplcm8sIDgsIGU4LCBtZjIsIHRhLCBtYQorICAgICAgICB2bHNlNjQudiAgICAgIHYw LCAoYTApLCBhMQorICAgICAgICBzaDFhZGQgICAgICAgIHQyLCB0MiwgdDIKKyAgICAgICAgYWRk aSAgICAgICAgICB0MiwgdDIsIDEKKyAgICAgICAgc3JhaSAgICAgICAgICB0MiwgdDIsIDEKKyAg ICAgICAgc2xsaSAgICAgICAgICB0MSwgdDIsIDQKKyAgICAgICAgYWRkICAgICAgICAgICB0Miwg dDIsIHQxCisgICAgICAgIGFkZGkgICAgICAgICAgdDIsIHQyLCA2NAorICAgICAgICBzcmFpICAg ICAgICAgIHQyLCB0MiwgNworICAgICAgICB2c2V0aXZsaSAgICAgIHplcm8sIDgqNCwgZTE2LCBt NCwgdGEsIG1hCisgICAgICAgIHZ6ZXh0LnZmMiAgICAgdjQsIHYwCisgICAgICAgIHZhZGQudngg ICAgICAgdjQsIHY0LCB0MgorICAgICAgICB2bWF4LnZ4ICAgICAgIHY0LCB2NCwgemVybworICAg ICAgICB2c2V0dmxpICAgICAgIHplcm8sIHplcm8sIGU4LCBtMiwgdGEsIG1hCisgICAgICAgIHZu Y2xpcHUud2kgICAgdjAsIHY0LCAwCisgICAgICAgIHZzZXRpdmxpICAgICAgemVybywgOCwgZTgs IG1mMiwgdGEsIG1hCisgICAgICAgIHZzc2U2NC52ICAgICAgdjAsIChhMCksIGExCisgICAgICAg IHJldAorZW5kZnVuYworCitmdW5jIGZmX3ZjMV9pbnZfdHJhbnNfNHg0X2RjX3J2diwgenZlMzJ4 CisgICAgICAgIGxoICAgICAgICAgICAgdDIsIChhMikKKyAgICAgICAgdnNldGl2bGkgICAgICB6 ZXJvLCA0LCBlOCwgbWYyLCB0YSwgbWEKKyAgICAgICAgdmxzZTMyLnYgICAgICB2MCwgKGEwKSwg YTEKKyAgICAgICAgc2xsaSAgICAgICAgICB0MSwgdDIsIDQKKyAgICAgICAgYWRkICAgICAgICAg ICB0MiwgdDIsIHQxCisgICAgICAgIGFkZGkgICAgICAgICAgdDIsIHQyLCA0CisgICAgICAgIHNy YWkgICAgICAgICAgdDIsIHQyLCAzCisgICAgICAgIHNsbGkgICAgICAgICAgdDEsIHQyLCA0Cisg ICAgICAgIGFkZCAgICAgICAgICAgdDIsIHQyLCB0MQorICAgICAgICBhZGRpICAgICAgICAgIHQy LCB0MiwgNjQKKyAgICAgICAgc3JhaSAgICAgICAgICB0MiwgdDIsIDcKKyAgICAgICAgdnNldGl2 bGkgICAgICB6ZXJvLCA0KjQsIGUxNiwgbTIsIHRhLCBtYQorICAgICAgICB2emV4dC52ZjIgICAg IHYyLCB2MAorICAgICAgICB2YWRkLnZ4ICAgICAgIHYyLCB2MiwgdDIKKyAgICAgICAgdm1heC52 eCAgICAgICB2MiwgdjIsIHplcm8KKyAgICAgICAgdnNldHZsaSAgICAgICB6ZXJvLCB6ZXJvLCBl OCwgbTEsIHRhLCBtYQorICAgICAgICB2bmNsaXB1LndpICAgIHYwLCB2MiwgMAorICAgICAgICB2 c2V0aXZsaSAgICAgIHplcm8sIDQsIGU4LCBtZjIsIHRhLCBtYQorICAgICAgICB2c3NlMzIudiAg ICAgIHYwLCAoYTApLCBhMQorICAgICAgICByZXQKK2VuZGZ1bmMKZGlmZiAtLWdpdCBhL2xpYmF2 Y29kZWMvdmMxZHNwLmMgYi9saWJhdmNvZGVjL3ZjMWRzcC5jCmluZGV4IDYyYzhlYjIxZmEuLjJj YWEzYzY4NjMgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMvdmMxZHNwLmMKKysrIGIvbGliYXZjb2Rl Yy92YzFkc3AuYwpAQCAtMTAzOSw2ICsxMDM5LDggQEAgYXZfY29sZCB2b2lkIGZmX3ZjMWRzcF9p bml0KFZDMURTUENvbnRleHQgKmRzcCkKICAgICBmZl92YzFkc3BfaW5pdF9hcm0oZHNwKTsKICNl bGlmIEFSQ0hfUFBDCiAgICAgZmZfdmMxZHNwX2luaXRfcHBjKGRzcCk7CisjZWxpZiBBUkNIX1JJ U0NWCisgICAgZmZfdmMxZHNwX2luaXRfcmlzY3YoZHNwKTsKICNlbGlmIEFSQ0hfWDg2CiAgICAg ZmZfdmMxZHNwX2luaXRfeDg2KGRzcCk7CiAjZWxpZiBBUkNIX01JUFMKZGlmZiAtLWdpdCBhL2xp YmF2Y29kZWMvdmMxZHNwLmggYi9saWJhdmNvZGVjL3ZjMWRzcC5oCmluZGV4IDdlZDE3NzZjYTcu LmUzYjkwZDJiNjIgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMvdmMxZHNwLmgKKysrIGIvbGliYXZj b2RlYy92YzFkc3AuaApAQCAtODksNiArODksNyBAQCB2b2lkIGZmX3ZjMWRzcF9pbml0KFZDMURT UENvbnRleHQqIGMpOwogdm9pZCBmZl92YzFkc3BfaW5pdF9hYXJjaDY0KFZDMURTUENvbnRleHQq IGRzcCk7CiB2b2lkIGZmX3ZjMWRzcF9pbml0X2FybShWQzFEU1BDb250ZXh0KiBkc3ApOwogdm9p ZCBmZl92YzFkc3BfaW5pdF9wcGMoVkMxRFNQQ29udGV4dCAqYyk7Cit2b2lkIGZmX3ZjMWRzcF9p bml0X3Jpc2N2KFZDMURTUENvbnRleHQgKmMpOwogdm9pZCBmZl92YzFkc3BfaW5pdF94ODYoVkMx RFNQQ29udGV4dCogZHNwKTsKIHZvaWQgZmZfdmMxZHNwX2luaXRfbWlwcyhWQzFEU1BDb250ZXh0 KiBkc3ApOwogdm9pZCBmZl92YzFkc3BfaW5pdF9sb29uZ2FyY2goVkMxRFNQQ29udGV4dCogZHNw KTsKLS0gCjIuNDMuMAoK --00000000000033a106060bc8320f 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". --00000000000033a106060bc8320f--