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 1C49348444 for ; Mon, 4 Dec 2023 08:49:18 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id B110368CEB9; Mon, 4 Dec 2023 10:49:15 +0200 (EET) Received: from mail-qv1-f52.google.com (mail-qv1-f52.google.com [209.85.219.52]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6982D68CBBE for ; Mon, 4 Dec 2023 10:49:09 +0200 (EET) Received: by mail-qv1-f52.google.com with SMTP id 6a1803df08f44-67a8a745c43so30776846d6.0 for ; Mon, 04 Dec 2023 00:49:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1701679748; x=1702284548; 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=TVD4YFwNFOwX8egk5NFBZrg6LN0SwP4w+Cbz1u6bcaE=; b=LOUcrZuseCaw9JfxV3YZp2KX6+/ct9A0MKpHUvN2d2HjQCUHqSKQomXxEfE+A8DYLU ZX0yuT2VR0dC06wy1srlWDWfNNMfuhYeJfg30pm4pBZOo+xyinTRSTaMZiJ2XygsdELW osEAe/RjhcLtZ4zHIJfP6WfBqLqiEhIA47Bsz5IOGSA/w9wOaNoLPdK/TD0vSxP57xym 60NCz3hT1JGfaEV7Y7oZ9za7vPrngPeFI0NagPxUzYGHijSAkkgKlqfs8F2W8CqYAY/s wRlIMytffoJI832K48aItJfFALVNf9LVCk2HlyaHZLJ/md98egQ4lsnRK24CFhfjOTte VODw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701679748; x=1702284548; 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=TVD4YFwNFOwX8egk5NFBZrg6LN0SwP4w+Cbz1u6bcaE=; b=NFGGa+BpdQpLkrMIghh1bV+/WBiNag9CvjmYrOJmhcPVSjcQw/VsLHZwIC7n5GlJWZ AXXL1zuckW1WiygXO3uj5s/OUX/ejxIPCzcqLICMeNf1JPcKIdxy6Sm0HG6dDOmRozq+ XhNxRx1FaT2liEMYMslV7imqDVu/BmxLzABN4pwHfU5CTFMNa52+EatlfMbZzi66HuZW VEZ9w2Qywa635/J2o9mUGWdj/kXExQUPlq4njztVblZzZhsDDKW56vLkobnrPLeEdCt+ IuMLEvvbb41xV3mdcFT+hA/HARqryOvYynO3XF0cln1o9cJDHPwtWjXv+51NEhvZKsw3 lOBg== X-Gm-Message-State: AOJu0YwNX4buhs3CfxN2hpwYco7rWU2hufw4w4aLjQ8Ye65XKItsUkBd 5druEzrjkhi6TtifigGnhQDagJAU6ElAdvfRB+JgqflZc/5duQ== X-Google-Smtp-Source: AGHT+IGVMyQlc/G6JIxH0z8oR38fX8xjmJbQev62TobHxAmymkdnQ3cRAj7TzOCYWclIQ3eeu7p+2Ak9jArRhA9stwc= X-Received: by 2002:ad4:5f8c:0:b0:67a:a72d:fbb2 with SMTP id jp12-20020ad45f8c000000b0067aa72dfbb2mr5389720qvb.48.1701679747523; Mon, 04 Dec 2023 00:49:07 -0800 (PST) MIME-Version: 1.0 References: <1790733.STO4oIezCH@basile.remlab.net> In-Reply-To: <1790733.STO4oIezCH@basile.remlab.net> From: flow gg Date: Mon, 4 Dec 2023 16:48:56 +0800 Message-ID: To: FFmpeg development discussions and patches Content-Type: multipart/mixed; boundary="000000000000df957c060bab3079" 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: --000000000000df957c060bab3079 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable > Probably missing VLENB checks. Changed. > You can multiply by 3, 5 or 9 with shift-and-add. By 12 with shift-and-ad= d > then shift, and by 17 with shift then add. You don't need multiplications= . Changed. > Do you really need to splat? Can't .vx or .wx be used instead? Okay, for example in ff_vc1_inv_trans_8x8_dc_rvv + vsetvli zero, t0, e8, m2, ta, ma + vwaddu.vx v4, v0, zero + vsetvli zero, t0, e16, m4, ta, ma + vadd.vx v4, v4, t2 - vsetvli zero, t0, e16, m4, ta, ma - vmv.v.x v4, t2 - vsetvli zero, t0, e8, m2, ta, ma - vwaddu.wv v4, v4, v0 But the speed has slowed down slightly on the c910, I'm not sure if I should modify it. splat | no spla= t vc1dsp.vc1_inv_trans_4x4_dc_c: 84.0 | 84.0 vc1dsp.vc1_inv_trans_4x4_dc_rvv_i32: 74.0 | 76.0 vc1dsp.vc1_inv_trans_4x8_dc_c: 150.0 | 150.0 vc1dsp.vc1_inv_trans_4x8_dc_rvv_i32: 83.5 | 84.5 vc1dsp.vc1_inv_trans_8x4_dc_c: 129.0 | 129.0 vc1dsp.vc1_inv_trans_8x4_dc_rvv_i64: 76.0 | 76.7 vc1dsp.vc1_inv_trans_8x8_dc_c: 255.0 | 254.7 vc1dsp.vc1_inv_trans_8x8_dc_rvv_i64: 90.5 | 93.0 > The code below uses fractional multipliers, so I infer that the benchmarked > code was significantly different, and the measurements are not really worth the > bother. > > I know that supply is a problem at the moment, but I if you are going to keep > this up, I would hope that ISCAS can get you access to an RVV 1.0 board. Using mf2 only requires changing the first vset and the last vset in each function to mf2. I guess they would achieve similar effects on both c910 and c908? example in 8x8 ``` - vsetivli zero, 8, e64, m4, ta, ma + vsetivli zero, 8, e8, mf2, ta, ma - vsetvli zero, zero, e64, m4, ta, ma + vsetivli zero, 8, e8, mf2, ta, ma ``` And ISCAS seems to have no announcement about getting an RVV 1.0 board. I plan to ask about it from time to time. R=C3=A9mi Denis-Courmont =E4=BA=8E2023=E5=B9=B412=E6=9C= =884=E6=97=A5=E5=91=A8=E4=B8=80 01:17=E5=86=99=E9=81=93=EF=BC=9A > Le sunnuntaina 3. joulukuuta 2023, 16.40.08 EET flow gg a =C3=A9crit : > > c910 > > vc1dsp.vc1_inv_trans_4x4_dc_c: 84.0 > > vc1dsp.vc1_inv_trans_4x4_dc_rvv_i32: 74.0 > > vc1dsp.vc1_inv_trans_4x8_dc_c: 150.2 > > vc1dsp.vc1_inv_trans_4x8_dc_rvv_i32: 83.5 > > vc1dsp.vc1_inv_trans_8x4_dc_c: 129.0 > > vc1dsp.vc1_inv_trans_8x4_dc_rvv_i64: 75.7 > > vc1dsp.vc1_inv_trans_8x8_dc_c: 254.7 > > vc1dsp.vc1_inv_trans_8x8_dc_rvv_i64: 90.5 > > The code below uses fractional multipliers, so I infer that the > benchmarked > code was significantly different, and the measurements are not really > worth the > bother. > > I know that supply is a problem at the moment, but I if you are going to > keep > this up, I would hope that ISCAS can get you access to an RVV 1.0 board. > > In-line... > > > diff --git a/libavcodec/riscv/vc1dsp_init.c > b/libavcodec/riscv/vc1dsp_init.c > > new file mode 100644 > > index 0000000000..88e0434f0e > > --- /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) { > > + 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; > > + } > > + if (flags & AV_CPU_FLAG_RVV_I32) { > > + 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; > > + } > > Probably missing VLENB checks. > > > +#endif > > +} > > diff --git a/libavcodec/riscv/vc1dsp_rvv.S > b/libavcodec/riscv/vc1dsp_rvv.S > > new file mode 100644 > > index 0000000000..8a6b27192a > > --- /dev/null > > +++ b/libavcodec/riscv/vc1dsp_rvv.S > > @@ -0,0 +1,123 @@ > > +/* > > + * 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) > > + li t1, 3 > > + mul t2, t2, t1 > > You can multiply by 3, 5 or 9 with shift-and-add. By 12 with shift-and-ad= d > then shift, and by 17 with shift then add. You don't need multiplications= . > > > + addi t2, t2, 1 > > + srai t2, t2, 1 > > + mul t2, t2, t1 > > + 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 > > + vmv.v.x v8, t2 > > Do you really need to splat? Can't .vx or .wx be used instead? > > > + vsetvli zero, t0, e8, m4, ta, ma > > + vwaddu.wv v8, v8, v0 > > + vsetvli zero, t0, e16, m8, ta, ma > > + vmax.vx v8, v8, zero > > + vsetvli zero, t0, e8, m4, ta, ma > > + 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) > > + li t1, 17 > > + mul t2, t2, t1 > > + addi t2, t2, 4 > > + srai t2, t2, 3 > > + li t1, 12 > > + mul t2, t2, t1 > > + 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 > > + vmv.v.x v4, t2 > > + vsetvli zero, t0, e8, m2, ta, ma > > + vwaddu.wv v4, v4, v0 > > + vsetvli zero, t0, e16, m4, ta, ma > > + 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) > > + li t1, 3 > > + mul t2, t2, t1 > > + addi t2, t2, 1 > > + srai t2, t2, 1 > > + li t1, 17 > > + mul 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 > > + vmv.v.x v4, t2 > > + vsetvli zero, t0, e8, m2, ta, ma > > + vwaddu.wv v4, v4, v0 > > + vsetvli zero, t0, e16, m4, ta, ma > > + 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) > > + li t1, 17 > > + mul t2, t2, t1 > > + addi t2, t2, 4 > > + srai t2, t2, 3 > > + mul 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 > > + vmv.v.x v2, t2 > > + vsetvli zero, t0, e8, m1, ta, ma > > + vwaddu.wv v2, v2, v0 > > + vsetvli zero, t0, e16, m2, ta, ma > > + 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); > > -- > =E3=83=AC=E3=83=9F=E3=83=BB=E3=83=87=E3=83=8B-=E3=82=AF=E3=83=BC=E3=83=AB= =E3=83=A2=E3=83=B3 > 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". > --000000000000df957c060bab3079 Content-Type: text/x-patch; charset="US-ASCII"; name="lavc-vc1dsp-R-V-V-inv_trans.patch" Content-Disposition: attachment; filename="lavc-vc1dsp-R-V-V-inv_trans.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lpqo3zop0 RnJvbSA3MWI2MGY1ZTNhMmE4MjdlMzliZDcwZjZkNjk1MTM0OWY1OTcyMDJmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBzdW55dWVjaGkgPHN1bnl1ZWNoaUBpc2Nhcy5hYy5jbj4KRGF0 ZTogRnJpLCAxIERlYyAyMDIzIDEwOjA3OjQwICswODAwClN1YmplY3Q6IFtQQVRDSF0gbGF2Yy92 YzFkc3A6IFItViBWIGludl90cmFucwoKYzkxMAogICAgdmMxZHNwLnZjMV9pbnZfdHJhbnNfNHg0 X2RjX2M6IDg0LjAKICAgIHZjMWRzcC52YzFfaW52X3RyYW5zXzR4NF9kY19ydnZfaTMyOiA3NC4w CiAgICB2YzFkc3AudmMxX2ludl90cmFuc180eDhfZGNfYzogMTUwLjIKICAgIHZjMWRzcC52YzFf aW52X3RyYW5zXzR4OF9kY19ydnZfaTMyOiA4My41CiAgICB2YzFkc3AudmMxX2ludl90cmFuc184 eDRfZGNfYzogMTI5LjAKICAgIHZjMWRzcC52YzFfaW52X3RyYW5zXzh4NF9kY19ydnZfaTY0OiA3 NS43CiAgICB2YzFkc3AudmMxX2ludl90cmFuc184eDhfZGNfYzogMjU0LjcKICAgIHZjMWRzcC52 YzFfaW52X3RyYW5zXzh4OF9kY19ydnZfaTY0OiA5MC41Ci0tLQogbGliYXZjb2RlYy9yaXNjdi9N YWtlZmlsZSAgICAgIHwgICAyICsKIGxpYmF2Y29kZWMvcmlzY3YvdmMxZHNwX2luaXQuYyB8ICA0 NyArKysrKysrKysrKysrCiBsaWJhdmNvZGVjL3Jpc2N2L3ZjMWRzcF9ydnYuUyAgfCAxMjIgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBsaWJhdmNvZGVjL3ZjMWRzcC5jICAgICAg ICAgICAgfCAgIDIgKwogbGliYXZjb2RlYy92YzFkc3AuaCAgICAgICAgICAgIHwgICAxICsKIDUg ZmlsZXMgY2hhbmdlZCwgMTc0IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJh dmNvZGVjL3Jpc2N2L3ZjMWRzcF9pbml0LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmNvZGVj L3Jpc2N2L3ZjMWRzcF9ydnYuUwoKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvcmlzY3YvTWFrZWZp bGUgYi9saWJhdmNvZGVjL3Jpc2N2L01ha2VmaWxlCmluZGV4IDJkMGU2YzE5YzguLjQ0MmM1OTYx ZWEgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMvcmlzY3YvTWFrZWZpbGUKKysrIGIvbGliYXZjb2Rl Yy9yaXNjdi9NYWtlZmlsZQpAQCAtMzksNSArMzksNyBAQCBPQkpTLSQoQ09ORklHX1BJWEJMT0NL RFNQKSArPSByaXNjdi9waXhibG9ja2RzcF9pbml0Lm8gXAogUlZWLU9CSlMtJChDT05GSUdfUElY QkxPQ0tEU1ApICs9IHJpc2N2L3BpeGJsb2NrZHNwX3J2di5vCiBPQkpTLSQoQ09ORklHX1VUVklE RU9fREVDT0RFUikgKz0gcmlzY3YvdXR2aWRlb2RzcF9pbml0Lm8KIFJWVi1PQkpTLSQoQ09ORklH X1VUVklERU9fREVDT0RFUikgKz0gcmlzY3YvdXR2aWRlb2RzcF9ydnYubworT0JKUy0kKENPTkZJ R19WQzFEU1ApICs9IHJpc2N2L3ZjMWRzcF9pbml0Lm8KK1JWVi1PQkpTLSQoQ09ORklHX1ZDMURT UCkgKz0gcmlzY3YvdmMxZHNwX3J2di5vCiBPQkpTLSQoQ09ORklHX1ZPUkJJU19ERUNPREVSKSAr PSByaXNjdi92b3JiaXNkc3BfaW5pdC5vCiBSVlYtT0JKUy0kKENPTkZJR19WT1JCSVNfREVDT0RF UikgKz0gcmlzY3Yvdm9yYmlzZHNwX3J2di5vCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3Jpc2N2 L3ZjMWRzcF9pbml0LmMgYi9saWJhdmNvZGVjL3Jpc2N2L3ZjMWRzcF9pbml0LmMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNmEwNGJlYTZkNgotLS0gL2Rldi9udWxsCisr KyBiL2xpYmF2Y29kZWMvcmlzY3YvdmMxZHNwX2luaXQuYwpAQCAtMCwwICsxLDQ3IEBACisvKgor ICogQ29weXJpZ2h0IChjKSAyMDIzIEluc3RpdHVlIG9mIFNvZnR3YXJlIENoaW5lc2UgQWNhZGVt eSBvZiBTY2llbmNlcyAoSVNDQVMpLgorICoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBl Zy4KKyAqCisgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2Vy IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBv ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIEZGbXBlZyBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlm IG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUx IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EK KyAqLworCisjaW5jbHVkZSA8c3RkaW50Lmg+CisKKyNpbmNsdWRlICJsaWJhdnV0aWwvYXR0cmli dXRlcy5oIgorI2luY2x1ZGUgImxpYmF2dXRpbC9jcHUuaCIKKyNpbmNsdWRlICJsaWJhdnV0aWwv cmlzY3YvY3B1LmgiCisjaW5jbHVkZSAibGliYXZjb2RlYy92YzEuaCIKKwordm9pZCBmZl92YzFf aW52X3RyYW5zXzh4OF9kY19ydnYodWludDhfdCAqZGVzdCwgcHRyZGlmZl90IHN0cmlkZSwgaW50 MTZfdCAqYmxvY2spOwordm9pZCBmZl92YzFfaW52X3RyYW5zXzR4OF9kY19ydnYodWludDhfdCAq ZGVzdCwgcHRyZGlmZl90IHN0cmlkZSwgaW50MTZfdCAqYmxvY2spOwordm9pZCBmZl92YzFfaW52 X3RyYW5zXzh4NF9kY19ydnYodWludDhfdCAqZGVzdCwgcHRyZGlmZl90IHN0cmlkZSwgaW50MTZf dCAqYmxvY2spOwordm9pZCBmZl92YzFfaW52X3RyYW5zXzR4NF9kY19ydnYodWludDhfdCAqZGVz dCwgcHRyZGlmZl90IHN0cmlkZSwgaW50MTZfdCAqYmxvY2spOworCithdl9jb2xkIHZvaWQgZmZf dmMxZHNwX2luaXRfcmlzY3YoVkMxRFNQQ29udGV4dCAqZHNwKQoreworI2lmIEhBVkVfUlZWCisg ICAgaW50IGZsYWdzID0gYXZfZ2V0X2NwdV9mbGFncygpOworCisgICAgaWYgKChmbGFncyAmIEFW X0NQVV9GTEFHX1JWVl9JNjQpICYmIGZmX2dldF9ydl92bGVuYigpID49IDE2KSB7CisgICAgICAg IGRzcC0+dmMxX2ludl90cmFuc184eDhfZGMgPSBmZl92YzFfaW52X3RyYW5zXzh4OF9kY19ydnY7 CisgICAgICAgIGRzcC0+dmMxX2ludl90cmFuc184eDRfZGMgPSBmZl92YzFfaW52X3RyYW5zXzh4 NF9kY19ydnY7CisgICAgfQorICAgIGlmICgoZmxhZ3MgJiBBVl9DUFVfRkxBR19SVlZfSTMyKSAm JiBmZl9nZXRfcnZfdmxlbmIoKSA+PSAxNikgeworICAgICAgICBkc3AtPnZjMV9pbnZfdHJhbnNf NHg4X2RjID0gZmZfdmMxX2ludl90cmFuc180eDhfZGNfcnZ2OworICAgICAgICBkc3AtPnZjMV9p bnZfdHJhbnNfNHg0X2RjID0gZmZfdmMxX2ludl90cmFuc180eDRfZGNfcnZ2OworICAgIH0KKyNl bmRpZgorfQpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9yaXNjdi92YzFkc3BfcnZ2LlMgYi9saWJh dmNvZGVjL3Jpc2N2L3ZjMWRzcF9ydnYuUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwLi41MTA1YWVlNzA2Ci0tLSAvZGV2L251bGwKKysrIGIvbGliYXZjb2RlYy9yaXNjdi92 YzFkc3BfcnZ2LlMKQEAgLTAsMCArMSwxMjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMjMg SW5zdGl0dWUgb2YgU29mdHdhcmUgQ2hpbmVzZSBBY2FkZW15IG9mIFNjaWVuY2VzIChJU0NBUyku CisgKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgorICoKKyAqIEZGbXBlZyBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl cgorICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCisgKgorICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3Nl ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp YworICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJl ZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0 aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQorICovCisKKyNpbmNsdWRlICJsaWJh dnV0aWwvcmlzY3YvYXNtLlMiCisKK2Z1bmMgZmZfdmMxX2ludl90cmFuc184eDhfZGNfcnZ2LCB6 dmU2NHgKKyAgICAgICAgbGggICAgICAgICAgICB0MiwgKGEyKQorICAgICAgICBzaDFhZGQgICAg ICAgIHQyLCB0MiwgdDIKKyAgICAgICAgYWRkaSAgICAgICAgICB0MiwgdDIsIDEKKyAgICAgICAg c3JhaSAgICAgICAgICB0MiwgdDIsIDEKKyAgICAgICAgc2gxYWRkICAgICAgICB0MiwgdDIsIHQy CisgICAgICAgIGFkZGkgICAgICAgICAgdDIsIHQyLCAxNgorICAgICAgICBzcmFpICAgICAgICAg IHQyLCB0MiwgNQorICAgICAgICB2c2V0aXZsaSAgICAgIHplcm8sIDgsIGU4LCBtZjIsIHRhLCBt YQorICAgICAgICB2bHNlNjQudiAgICAgIHYwLCAoYTApLCBhMQorICAgICAgICBsaSAgICAgICAg ICAgIHQwLCA4KjgKKyAgICAgICAgdnNldHZsaSAgICAgICB6ZXJvLCB0MCwgZTE2LCBtOCwgdGEs IG1hCisgICAgICAgIHZtdi52LnggICAgICAgdjgsIHQyCisgICAgICAgIHZzZXR2bGkgICAgICAg emVybywgdDAsIGU4LCBtNCwgdGEsIG1hCisgICAgICAgIHZ3YWRkdS53diAgICAgdjgsIHY4LCB2 MAorICAgICAgICB2c2V0dmxpICAgICAgIHplcm8sIHQwLCBlMTYsIG04LCB0YSwgbWEKKyAgICAg ICAgdm1heC52eCAgICAgICB2OCwgdjgsIHplcm8KKyAgICAgICAgdnNldHZsaSAgICAgICB6ZXJv LCB0MCwgZTgsIG00LCB0YSwgbWEKKyAgICAgICAgdm5jbGlwdS53aSAgICB2MCwgdjgsIDAKKyAg ICAgICAgdnNldGl2bGkgICAgICB6ZXJvLCA4LCBlOCwgbWYyLCB0YSwgbWEKKyAgICAgICAgdnNz ZTY0LnYgICAgICB2MCwgKGEwKSwgYTEKKyAgICAgICAgcmV0CitlbmRmdW5jCisKK2Z1bmMgZmZf dmMxX2ludl90cmFuc180eDhfZGNfcnZ2LCB6dmUzMngKKyAgICAgICAgbGggICAgICAgICAgICB0 MiwgKGEyKQorICAgICAgICBzbGxpICAgICAgICAgIHQxLCB0MiwgNAorICAgICAgICBhZGQgICAg ICAgICAgIHQyLCB0MiwgdDEKKyAgICAgICAgYWRkaSAgICAgICAgICB0MiwgdDIsIDQKKyAgICAg ICAgc3JhaSAgICAgICAgICB0MiwgdDIsIDMKKyAgICAgICAgc2gxYWRkICAgICAgICB0MiwgdDIs IHQyCisgICAgICAgIHNsbGkgICAgICAgICAgdDIsIHQyLCAyCisgICAgICAgIGFkZGkgICAgICAg ICAgdDIsIHQyLCA2NAorICAgICAgICBzcmFpICAgICAgICAgIHQyLCB0MiwgNworICAgICAgICB2 c2V0aXZsaSAgICAgIHplcm8sIDgsIGU4LCBtZjIsIHRhLCBtYQorICAgICAgICB2bHNlMzIudiAg ICAgIHYwLCAoYTApLCBhMQorICAgICAgICBsaSAgICAgICAgICAgIHQwLCA0KjgKKyAgICAgICAg dnNldHZsaSAgICAgICB6ZXJvLCB0MCwgZTE2LCBtNCwgdGEsIG1hCisgICAgICAgIHZtdi52Lngg ICAgICAgdjQsIHQyCisgICAgICAgIHZzZXR2bGkgICAgICAgemVybywgdDAsIGU4LCBtMiwgdGEs IG1hCisgICAgICAgIHZ3YWRkdS53diAgICAgdjQsIHY0LCB2MAorICAgICAgICB2c2V0dmxpICAg ICAgIHplcm8sIHQwLCBlMTYsIG00LCB0YSwgbWEKKyAgICAgICAgdm1heC52eCAgICAgICB2NCwg djQsIHplcm8KKyAgICAgICAgdnNldHZsaSAgICAgICB6ZXJvLCB0MCwgZTgsIG0yLCB0YSwgbWEK KyAgICAgICAgdm5jbGlwdS53aSAgICB2MCwgdjQsIDAKKyAgICAgICAgdnNldGl2bGkgICAgICB6 ZXJvLCA4LCBlOCwgbWYyLCB0YSwgbWEKKyAgICAgICAgdnNzZTMyLnYgICAgICB2MCwgKGEwKSwg YTEKKyAgICAgICAgcmV0CitlbmRmdW5jCisKK2Z1bmMgZmZfdmMxX2ludl90cmFuc184eDRfZGNf cnZ2LCB6dmU2NHgKKyAgICAgICAgbGggICAgICAgICAgICB0MiwgKGEyKQorICAgICAgICBzaDFh ZGQgICAgICAgIHQyLCB0MiwgdDIKKyAgICAgICAgYWRkaSAgICAgICAgICB0MiwgdDIsIDEKKyAg ICAgICAgc3JhaSAgICAgICAgICB0MiwgdDIsIDEKKyAgICAgICAgc2xsaSAgICAgICAgICB0MSwg dDIsIDQKKyAgICAgICAgYWRkICAgICAgICAgICB0MiwgdDIsIHQxCisgICAgICAgIGFkZGkgICAg ICAgICAgdDIsIHQyLCA2NAorICAgICAgICBzcmFpICAgICAgICAgIHQyLCB0MiwgNworICAgICAg ICB2c2V0aXZsaSAgICAgIHplcm8sIDgsIGU4LCBtZjIsIHRhLCBtYQorICAgICAgICB2bHNlNjQu diAgICAgIHYwLCAoYTApLCBhMQorICAgICAgICBsaSAgICAgICAgICAgIHQwLCA4KjQKKyAgICAg ICAgdnNldHZsaSAgICAgICB6ZXJvLCB0MCwgZTE2LCBtNCwgdGEsIG1hCisgICAgICAgIHZtdi52 LnggICAgICAgdjQsIHQyCisgICAgICAgIHZzZXR2bGkgICAgICAgemVybywgdDAsIGU4LCBtMiwg dGEsIG1hCisgICAgICAgIHZ3YWRkdS53diAgICAgdjQsIHY0LCB2MAorICAgICAgICB2c2V0dmxp ICAgICAgIHplcm8sIHQwLCBlMTYsIG00LCB0YSwgbWEKKyAgICAgICAgdm1heC52eCAgICAgICB2 NCwgdjQsIHplcm8KKyAgICAgICAgdnNldHZsaSAgICAgICB6ZXJvLCB0MCwgZTgsIG0yLCB0YSwg bWEKKyAgICAgICAgdm5jbGlwdS53aSAgICB2MCwgdjQsIDAKKyAgICAgICAgdnNldGl2bGkgICAg ICB6ZXJvLCA4LCBlOCwgbWYyLCB0YSwgbWEKKyAgICAgICAgdnNzZTY0LnYgICAgICB2MCwgKGEw KSwgYTEKKyAgICAgICAgcmV0CitlbmRmdW5jCisKK2Z1bmMgZmZfdmMxX2ludl90cmFuc180eDRf ZGNfcnZ2LCB6dmUzMngKKyAgICAgICAgbGggICAgICAgICAgICB0MiwgKGEyKQorICAgICAgICBz bGxpICAgICAgICAgIHQxLCB0MiwgNAorICAgICAgICBhZGQgICAgICAgICAgIHQyLCB0MiwgdDEK KyAgICAgICAgYWRkaSAgICAgICAgICB0MiwgdDIsIDQKKyAgICAgICAgc3JhaSAgICAgICAgICB0 MiwgdDIsIDMKKyAgICAgICAgc2xsaSAgICAgICAgICB0MSwgdDIsIDQKKyAgICAgICAgYWRkICAg ICAgICAgICB0MiwgdDIsIHQxCisgICAgICAgIGFkZGkgICAgICAgICAgdDIsIHQyLCA2NAorICAg ICAgICBzcmFpICAgICAgICAgIHQyLCB0MiwgNworICAgICAgICB2c2V0aXZsaSAgICAgIHplcm8s IDQsIGU4LCBtZjIsIHRhLCBtYQorICAgICAgICB2bHNlMzIudiAgICAgIHYwLCAoYTApLCBhMQor ICAgICAgICBsaSAgICAgICAgICAgIHQwLCA0KjQKKyAgICAgICAgdnNldHZsaSAgICAgICB6ZXJv LCB0MCwgZTE2LCBtMiwgdGEsIG1hCisgICAgICAgIHZtdi52LnggICAgICAgdjIsIHQyCisgICAg ICAgIHZzZXR2bGkgICAgICAgemVybywgdDAsIGU4LCBtMSwgdGEsIG1hCisgICAgICAgIHZ3YWRk dS53diAgICAgdjIsIHYyLCB2MAorICAgICAgICB2c2V0dmxpICAgICAgIHplcm8sIHQwLCBlMTYs IG0yLCB0YSwgbWEKKyAgICAgICAgdm1heC52eCAgICAgICB2MiwgdjIsIHplcm8KKyAgICAgICAg dnNldHZsaSAgICAgICB6ZXJvLCB0MCwgZTgsIG0xLCB0YSwgbWEKKyAgICAgICAgdm5jbGlwdS53 aSAgICB2MCwgdjIsIDAKKyAgICAgICAgdnNldGl2bGkgICAgICB6ZXJvLCA0LCBlOCwgbWYyLCB0 YSwgbWEKKyAgICAgICAgdnNzZTMyLnYgICAgICB2MCwgKGEwKSwgYTEKKyAgICAgICAgcmV0Citl bmRmdW5jCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3ZjMWRzcC5jIGIvbGliYXZjb2RlYy92YzFk c3AuYwppbmRleCA2MmM4ZWIyMWZhLi4yY2FhM2M2ODYzIDEwMDY0NAotLS0gYS9saWJhdmNvZGVj L3ZjMWRzcC5jCisrKyBiL2xpYmF2Y29kZWMvdmMxZHNwLmMKQEAgLTEwMzksNiArMTAzOSw4IEBA IGF2X2NvbGQgdm9pZCBmZl92YzFkc3BfaW5pdChWQzFEU1BDb250ZXh0ICpkc3ApCiAgICAgZmZf dmMxZHNwX2luaXRfYXJtKGRzcCk7CiAjZWxpZiBBUkNIX1BQQwogICAgIGZmX3ZjMWRzcF9pbml0 X3BwYyhkc3ApOworI2VsaWYgQVJDSF9SSVNDVgorICAgIGZmX3ZjMWRzcF9pbml0X3Jpc2N2KGRz cCk7CiAjZWxpZiBBUkNIX1g4NgogICAgIGZmX3ZjMWRzcF9pbml0X3g4Nihkc3ApOwogI2VsaWYg QVJDSF9NSVBTCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3ZjMWRzcC5oIGIvbGliYXZjb2RlYy92 YzFkc3AuaAppbmRleCA3ZWQxNzc2Y2E3Li5lM2I5MGQyYjYyIDEwMDY0NAotLS0gYS9saWJhdmNv ZGVjL3ZjMWRzcC5oCisrKyBiL2xpYmF2Y29kZWMvdmMxZHNwLmgKQEAgLTg5LDYgKzg5LDcgQEAg dm9pZCBmZl92YzFkc3BfaW5pdChWQzFEU1BDb250ZXh0KiBjKTsKIHZvaWQgZmZfdmMxZHNwX2lu aXRfYWFyY2g2NChWQzFEU1BDb250ZXh0KiBkc3ApOwogdm9pZCBmZl92YzFkc3BfaW5pdF9hcm0o VkMxRFNQQ29udGV4dCogZHNwKTsKIHZvaWQgZmZfdmMxZHNwX2luaXRfcHBjKFZDMURTUENvbnRl eHQgKmMpOwordm9pZCBmZl92YzFkc3BfaW5pdF9yaXNjdihWQzFEU1BDb250ZXh0ICpjKTsKIHZv aWQgZmZfdmMxZHNwX2luaXRfeDg2KFZDMURTUENvbnRleHQqIGRzcCk7CiB2b2lkIGZmX3ZjMWRz cF9pbml0X21pcHMoVkMxRFNQQ29udGV4dCogZHNwKTsKIHZvaWQgZmZfdmMxZHNwX2luaXRfbG9v bmdhcmNoKFZDMURTUENvbnRleHQqIGRzcCk7Ci0tIAoyLjQzLjAKCg== --000000000000df957c060bab3079 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". --000000000000df957c060bab3079--