Received: (at 74748) by debbugs.gnu.org; 27 Dec 2024 22:50:13 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Dec 27 17:50:13 2024 Received: from localhost ([127.0.0.1]:47925 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1tRJ9p-0004kd-5I for submit <at> debbugs.gnu.org; Fri, 27 Dec 2024 17:50:13 -0500 Received: from wolfsden.cz ([37.205.8.62]:43434) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <~@wolfsden.cz>) id 1tRJ9m-0004im-K1 for 74748 <at> debbugs.gnu.org; Fri, 27 Dec 2024 17:50:12 -0500 Received: by wolfsden.cz (Postfix, from userid 104) id 4E920338C03; Fri, 27 Dec 2024 22:50:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=wolfsden.cz; s=mail; t=1735339808; bh=hRkZ0BGGlJhR2bJ/YU1HOiEKlKREB3LnibkG3rX6Y1w=; h=From:To:Cc:Subject:In-Reply-To:References:Date; b=uzLyvFdU3Q94oSj+Ogl9li/f5hfLVeENUYONidRT6ptjqzZJ1zVTjZisQxa5V18B1 s+r0I+aI1bbLQeR5IYjmxnlhSn+hJpcKV8obwSmQlTbd/sqweQ2HvUOFolgVZ7ZC9e yonSHMa/a7KbphxnZJ/RPMBkd39py1vMQ+/m++amlsF29ss43KzDS5E79jlphJA+if CKnmTtDl72w0cIO7NjimmwTbxZepVvyOyjUtr8p6d5BzEzJkuHM7SSEo80wEEEGT+k oCtR0PRa0eJcz3r8/O2b7lNRYHCdfdVU8Gp7c8oIBn4qUvATjSYelP/34t3CTE+Tty Mjep4TDSTz74gG5jfUtBqmbFqn/9ZspBjtUTVtH3FqFJswqXedso9ELGl7EyPtEVOE q20TkH2plpHpu24lU7bhN8bERP7IedrofeHDW8hYQsCsVvQ5uP9GW7kSTszMZUWyBv ap1pee1yRxzRcmIcCBP7eGkTiV/BlLUmtD+w0i35HG8pV7O2IOtZaAFJpOY/zfWRiB gUJ1KGxCvtNLuu3wrhYv6HM6qvxw+SXdq62G9G77rsRRfNO5U4O5bMbIuqSq+af1Ky 0TLdveQ87jnPfkz1Q1nkVaygAoZ8lwEen14qok5JOyx2Cf+S3HrfUouBoRiJBEaGpC 1UvKcynC3jlet1xUyCgMWAJg= X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on wolfsden X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=ALL_TRUSTED,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 Received: from localhost (unknown [128.0.188.242]) by wolfsden.cz (Postfix) with ESMTPSA id 73B4733883B; Fri, 27 Dec 2024 22:50:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=wolfsden.cz; s=mail; t=1735339807; bh=hRkZ0BGGlJhR2bJ/YU1HOiEKlKREB3LnibkG3rX6Y1w=; h=From:To:Cc:Subject:In-Reply-To:References:Date; b=Sz11eS+xLWZKO0xXzCX2/Nc2CCU2jYKVGalMCyzmLe/VDXLsg+xjwk7l9kVG5lFSN 6APM57kKks87jq7CwlBvu4f1PXwKWcLw4A9TJetQZCUU2h4RTaYSkmpnyvNXh9T1qJ BQ1RpwZBrusmg48kh3PBmdy8lfb/Ul9WLEGnk4K2lry4UCE/TIZW7284Exp89WZbXM 3UwGJVXXmJenRLi+YCln0ZyAC8fHgEGHiV5fZf4fVmYjZOKNVfkhIE0ku3y0HxXjJN aepLQGHoG7uif4njBgVYy0J5x82DnyWgV98aH8NKRUbi9uTbnY4GbOQa/P5t9vJZCZ e3eJ2BaFG9k90VfA97HzDzr4dRbUw6thldt7flVe6Bl2Y5in5f8DF3o7eoUWKUaXrn 40A+8mAkq62ysafYXWQe0Ku3KQ1l9A1tgjIo1z842RKe69gq02lxM81uZYq0T3zgqC Qk3Dm3hMY5/mjW9sp0dBqDNPvit46i5xslrUVl1M2XHIR19fVjRE/AhuHpBs44WAmm +wfDF+j5iHadApNhymyHj1kLfhMTgVQQQ1d0oRAWDQZnm9cA8i9UVEnJXHp7HBD5xx 6xafFiQcjaO1lHBJfpguSPBNlIVs14GcWIUwuxISJ4TF6On5pQZdSk+P3pOc4DMQ6B DEW86FRxBwjlVHeYyMQ4EKLs= From: Tomas Volf <~@wolfsden.cz> To: Ludovic =?utf-8?Q?Court=C3=A8s?= <ludo@HIDDEN> Subject: Re: bug#74748: Constructor created by define-configuration is slow (>25s) when many fields are defined In-Reply-To: <87cyhh5eop.fsf@HIDDEN> ("Ludovic =?utf-8?Q?Court=C3=A8s=22'?= =?utf-8?Q?s?= message of "Tue, 24 Dec 2024 15:38:30 +0100") References: <87msh499f7.fsf@HIDDEN> <87cyhh5eop.fsf@HIDDEN> Date: Fri, 27 Dec 2024 23:50:06 +0100 Message-ID: <87a5cg4u75.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha512; protocol="application/pgp-signature" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 74748 Cc: 74748 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hello, thank you for finding the time to look into this issue. Replies below. Ludovic Court=C3=A8s <ludo@HIDDEN> writes: > Hi, > > Tomas Volf <~@wolfsden.cz> skribis: > >> I am writing a configuration for mpv and hit an issue of the generated >> constructor (`home-mpv-configuration') is extremely slow. While the >> almost 800 fields is unusually high, initializing the instances of the >> record should *not* take almost 30 seconds. The full file is attached >> to this email (as `mpv.scm'). > > AFAICS, time is spent in one of the compilation steps: > > scheme@(gnu home services mpv)> ,o interp #t > scheme@(gnu home services mpv)> ,t (lambda () (mpv-profile-configuration)) > $13 =3D #<procedure 7f6ed3796700 at ice-9/eval.scm:330:13 ()> > ;; 0.376347s real time, 0.375402s run time. 0.000000s spent in GC. > scheme@(gnu home services mpv)> ,o interp #f > scheme@(gnu home services mpv)> ,t (lambda () (mpv-profile-configuration)) > $14 =3D #<procedure 7f6ec32088f8 at <unknown port>:40:3 ()> > ;; 11.149828s real time, 12.052915s run time. 1.581736s spent in GC. > scheme@(gnu home services mpv)> ,t (->bool (macroexpand '(mpv-profile-con= figuration))) > $15 =3D #t > ;; 0.373865s real time, 0.372698s run time. 0.000000s spent in GC. > > > If we look more closely, it=E2=80=99s the optimizing compiler that takes = time; > the baseline compile (-O1) is doing okay: > > scheme@(gnu home services mpv)> ,use(system base compile) > scheme@(gnu home services mpv)> ,t (->bool (compile '(mpv-profile-configu= ration) #:to 'tree-il #:env (current-module))) > $20 =3D #t > ;; 0.378741s real time, 0.377043s run time. 0.000000s spent in GC. > scheme@(gnu home services mpv)> ,t (->bool (compile '(mpv-profile-configu= ration) #:to 'bytecode #:env (current-module))) > $21 =3D #t > ;; 11.946879s real time, 12.961704s run time. 1.777478s spent in GC. > scheme@(gnu home services mpv)> (define til (compile '(mpv-profile-config= uration) #:to 'tree-il #:env (current-module))) > scheme@(gnu home services mpv)> ,t (->bool (compile til #:from 'tree-il #= :to 'bytecode)) > $22 =3D #t > ;; 11.403420s real time, 12.317183s run time. 1.581972s spent in GC. > scheme@(gnu home services mpv)> ,t (->bool (compile til #:from 'tree-il #= :to 'bytecode #:optimization-level 1)) > $23 =3D #t > ;; 0.225455s real time, 0.156137s run time. 0.000000s spent in GC. > > Currently (guix build compile) applies these options to services: > > ((string-contains file "gnu/services/") > ;; '-O2 -Ono-letrectify' compiles about ~20% faster than '-O2' f= or > ;; large files like gnu/services/mail.scm. > (override-option #:letrectify? #f > (optimizations-for-level 2))) > > I think we should at least apply this patch: > > diff --git a/guix/build/compile.scm b/guix/build/compile.scm > index 5b27b55d02..f90016b9ae 100644 > --- a/guix/build/compile.scm > +++ b/guix/build/compile.scm > @@ -127,7 +127,8 @@ (define (optimization-options file) > ;; Use '-O1' to have partial evaluation and primitive inlining = so we > ;; can honor the "macro writer's bill of rights". > (optimizations-for-level 1)) > - ((string-contains file "gnu/services/") > + ((or (string-contains file "gnu/services/") > + (string-contains file "gnu/home/services/")) > ;; '-O2 -Ono-letrectify' compiles about ~20% faster than '-O2' = for > ;; large files like gnu/services/mail.scm. > (override-option #:letrectify? #f > > > Would that be enough for the home-mpv configuration records you wrote? I admit I did not test the patch attached, but my understanding is that even if the speed up was sufficient, it would take effect only for compilation via the make command. Assuming that is correct, it would not change much. I am (luckily) former C++ developer, so I am used to compilations taking ~forever. So, yes, while the compilation of mpv.scm (via `make') took roughly 40s on my machine, it was annoying, but not worthy of a bug report. The actual problem for me was the slowness in REPL. Would that be addressed by the patch above? If not, do we have any way to do that? )tomas =2D-=20 There are only two hard things in Computer Science: cache invalidation, naming things and off-by-one errors. --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQJCBAEBCgAsFiEEt4NJs4wUfTYpiGikL7/ufbZ/wakFAmdvLx4OHH5Ad29sZnNk ZW4uY3oACgkQL7/ufbZ/wanyqQ/+IWaH5/3zSHoUTrz+j5Wj6IOPD6MX23oqzmrh NJ5SpG4N6zl7oOI5UBOaYE/FQgBqvlgFcjHSrU+j/3k7GCx/1PY/Uuck72zFuDR7 Lx32SCOC2Rg5XoIhkhTm7iAiH7JXkRjD/jaQWvOBmxtc0i/jGsHycKrsKnfwBzdM YzqFh9y4gNJw7KC2TFIubkRAW/9hdXMS3vjVcsxd8DUn2OW23jJA70Jf1vGA8njo R3QA+PVFz280Ng/TTxt7gz8gxSP11J/CN2f1gDGAk48Wpi7+SjOv575I+P+f3mAj HriqaCFGHdN/K5elvLBNWzFoN0V2VJ47CYOStlFDkPxiSw7J5TWKpPWA9vtF2XmZ sobYVSW/59yihcvsNqkStj36IWveWDEccLG0B/uisjzgvh6V/TPu0ddbOE0ncbif YtUSf2Cb2aKQq+xU5AomzLqsjs2DCJ46qB2e9u53iL5AzhxJjFsurWyUThF0cmT1 oQScABso3HKf3YSYinNby+aKRbNhVcB6FkEMHtmpU5WDiYt3wyhMnau8Xj0M94Me fZJcHadDwn6bELxp3p4O5r2fsV+vtiP8Stpr4WB1ZPCmoHQglMa5R8DbzL25pQvI rcgZB/A2N6oeLVfHZHqCRxIRuR9oCj3JYs5At8fmg+G1YFr0VAh+P8xi+qQl+q8Y fuXkkdI= =PAc9 -----END PGP SIGNATURE----- --=-=-=--
bug-guix@HIDDEN
:bug#74748
; Package guix
.
Full text available.Received: (at 74748) by debbugs.gnu.org; 24 Dec 2024 14:38:43 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Dec 24 09:38:43 2024 Received: from localhost ([127.0.0.1]:60068 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1tQ63W-0004G0-JP for submit <at> debbugs.gnu.org; Tue, 24 Dec 2024 09:38:43 -0500 Received: from eggs.gnu.org ([209.51.188.92]:42728) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <ludo@HIDDEN>) id 1tQ63T-0004Fi-Nk for 74748 <at> debbugs.gnu.org; Tue, 24 Dec 2024 09:38:41 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <ludo@HIDDEN>) id 1tQ63N-0007qn-LY; Tue, 24 Dec 2024 09:38:33 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-Version:Date:References:In-Reply-To:Subject:To: From; bh=FngbVgWVrsYRyIDLwxin5BdpV8DOfQCd09vVy/G6x0Q=; b=kTbnAqyKGEkulqtA4FJy clcBI3JTXEajfk0kC55AuCT43OPj1+0eyQYzuSTAMXqOf1MqSgmUxeeGWx8NIQ73DVmb2O6gMOhmP wabpIPOzaYCU5Ve8AQezb4DXKUP9hA21BJ1ekoL63pMtj8RrhFzQW02ZLmn15KM7I9SRo1LfCbPeU auFfEgIygzJrtgV2HLOpAEQevAHaQOJx7y39eKZ1XNiG4Eoa8dEBgjxwpmMbaJ9uh+KAeqk6aQ1G9 YlarPkU5ZFVv5fYLaq23DKv7v0h0KZAnspelWUSTAhbkjN52IiztO3ia+HYvwudbPvLytDv6ZPama TkWge4caQ/a+ag==; From: =?utf-8?Q?Ludovic_Court=C3=A8s?= <ludo@HIDDEN> To: Tomas Volf <~@wolfsden.cz> Subject: Re: bug#74748: Constructor created by define-configuration is slow (>25s) when many fields are defined In-Reply-To: <87msh499f7.fsf@HIDDEN> (Tomas Volf's message of "Mon, 09 Dec 2024 16:13:16 +0100") References: <87msh499f7.fsf@HIDDEN> Date: Tue, 24 Dec 2024 15:38:30 +0100 Message-ID: <87cyhh5eop.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 74748 Cc: 74748 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hi, Tomas Volf <~@wolfsden.cz> skribis: > I am writing a configuration for mpv and hit an issue of the generated > constructor (`home-mpv-configuration') is extremely slow. While the > almost 800 fields is unusually high, initializing the instances of the > record should *not* take almost 30 seconds. The full file is attached > to this email (as `mpv.scm'). AFAICS, time is spent in one of the compilation steps: --8<---------------cut here---------------start------------->8--- scheme@(gnu home services mpv)> ,o interp #t scheme@(gnu home services mpv)> ,t (lambda () (mpv-profile-configuration)) $13 =3D #<procedure 7f6ed3796700 at ice-9/eval.scm:330:13 ()> ;; 0.376347s real time, 0.375402s run time. 0.000000s spent in GC. scheme@(gnu home services mpv)> ,o interp #f scheme@(gnu home services mpv)> ,t (lambda () (mpv-profile-configuration)) $14 =3D #<procedure 7f6ec32088f8 at <unknown port>:40:3 ()> ;; 11.149828s real time, 12.052915s run time. 1.581736s spent in GC. scheme@(gnu home services mpv)> ,t (->bool (macroexpand '(mpv-profile-confi= guration))) $15 =3D #t ;; 0.373865s real time, 0.372698s run time. 0.000000s spent in GC. --8<---------------cut here---------------end--------------->8--- If we look more closely, it=E2=80=99s the optimizing compiler that takes ti= me; the baseline compile (-O1) is doing okay: --8<---------------cut here---------------start------------->8--- scheme@(gnu home services mpv)> ,use(system base compile) scheme@(gnu home services mpv)> ,t (->bool (compile '(mpv-profile-configura= tion) #:to 'tree-il #:env (current-module))) $20 =3D #t ;; 0.378741s real time, 0.377043s run time. 0.000000s spent in GC. scheme@(gnu home services mpv)> ,t (->bool (compile '(mpv-profile-configura= tion) #:to 'bytecode #:env (current-module))) $21 =3D #t ;; 11.946879s real time, 12.961704s run time. 1.777478s spent in GC. scheme@(gnu home services mpv)> (define til (compile '(mpv-profile-configur= ation) #:to 'tree-il #:env (current-module))) scheme@(gnu home services mpv)> ,t (->bool (compile til #:from 'tree-il #:t= o 'bytecode)) $22 =3D #t ;; 11.403420s real time, 12.317183s run time. 1.581972s spent in GC. scheme@(gnu home services mpv)> ,t (->bool (compile til #:from 'tree-il #:t= o 'bytecode #:optimization-level 1)) $23 =3D #t ;; 0.225455s real time, 0.156137s run time. 0.000000s spent in GC. --8<---------------cut here---------------end--------------->8--- Currently (guix build compile) applies these options to services: ((string-contains file "gnu/services/") ;; '-O2 -Ono-letrectify' compiles about ~20% faster than '-O2' for ;; large files like gnu/services/mail.scm. (override-option #:letrectify? #f (optimizations-for-level 2))) I think we should at least apply this patch: --=-=-= Content-Type: text/x-patch Content-Disposition: inline diff --git a/guix/build/compile.scm b/guix/build/compile.scm index 5b27b55d02..f90016b9ae 100644 --- a/guix/build/compile.scm +++ b/guix/build/compile.scm @@ -127,7 +127,8 @@ (define (optimization-options file) ;; Use '-O1' to have partial evaluation and primitive inlining so we ;; can honor the "macro writer's bill of rights". (optimizations-for-level 1)) - ((string-contains file "gnu/services/") + ((or (string-contains file "gnu/services/") + (string-contains file "gnu/home/services/")) ;; '-O2 -Ono-letrectify' compiles about ~20% faster than '-O2' for ;; large files like gnu/services/mail.scm. (override-option #:letrectify? #f --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Would that be enough for the home-mpv configuration records you wrote? Thanks, Ludo=E2=80=99. --=-=-=--
bug-guix@HIDDEN
:bug#74748
; Package guix
.
Full text available.Received: (at submit) by debbugs.gnu.org; 9 Dec 2024 15:13:37 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon Dec 09 10:13:37 2024 Received: from localhost ([127.0.0.1]:55169 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1tKfS5-00021m-0B for submit <at> debbugs.gnu.org; Mon, 09 Dec 2024 10:13:37 -0500 Received: from lists.gnu.org ([209.51.188.17]:57498) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <~@wolfsden.cz>) id 1tKfS3-00021b-36 for submit <at> debbugs.gnu.org; Mon, 09 Dec 2024 10:13:35 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <~@wolfsden.cz>) id 1tKfS2-0006E8-HN for bug-guix@HIDDEN; Mon, 09 Dec 2024 10:13:34 -0500 Received: from wolfsden.cz ([37.205.8.62]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <~@wolfsden.cz>) id 1tKfRv-00035R-Pg for bug-guix@HIDDEN; Mon, 09 Dec 2024 10:13:33 -0500 Received: by wolfsden.cz (Postfix, from userid 104) id 75F7933BDCD; Mon, 9 Dec 2024 15:13:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=wolfsden.cz; s=mail; t=1733757201; bh=clVgEzu8oOaVALtgpBdL368zwsXxFNauJRITJcvMx0o=; h=From:To:Subject:Date; b=KblYvTRiCafywawnTTM00oM60QwJbtNC/795fwuakKBBHNtD0sSMdI/b4PiAAjW// i2x5xOZcXcBlXVob4rAC8dE05ekTrYUGsuCak2bCR8anfCalfStSKhoXPBoxlMW104 zidUfICmeqwtIq/r4GRgX7miqVqtnN85ROq5CRtZSAGmz4eJ0sngs59rQK81tTzBdE HydPz4omRJiUxJJxYYWdLhJ3VE6ys61iMe/Q4tfDSDymidi3YF98cHpvqgVoRmeT1J mVPyaAVkUN36OjLBtDV1AzXz6kKBeF5I/pcpXrr4CNapqsY82N5qfwr17Buk0KT/N1 iD6J9OQyN5T278tFtL/KHlIgSNU98b5mvbfozJCgAG/hAoEMSLiAIUMtT1kd+6lyXY /P8ngmdcXs5QZaIcWOLGNixT4hDTsOm0PvJdxFpRfg+i/nKrDlWS7cLvqaYLWk4wzH 5TZnbKSwavWkJYtS9bxRYoHVKQkguavKFZs8e2rYKenNVeZGYY9siTpoKVbyXGQDpk 9jLrZ99dkMqI33TT5iLn85hyEu36YfOXoY1Wzb5jj0wyHwpso/80XUchDNMNCOgkV/ kcNIJojr1dgayHpflDHhpL8UlFZqU+T63v7X2ZaswnIq2HuDG9vbj+rbbWGmCIJLUS 3emIgryu+71R2pVGvVw114eE= X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on wolfsden X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=ALL_TRUSTED,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 Received: from localhost (unknown [128.0.188.242]) by wolfsden.cz (Postfix) with ESMTPSA id 5498A33B35B for <bug-guix@HIDDEN>; Mon, 9 Dec 2024 15:13:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=wolfsden.cz; s=mail; t=1733757198; bh=clVgEzu8oOaVALtgpBdL368zwsXxFNauJRITJcvMx0o=; h=From:To:Subject:Date; b=H9UhpBS4Fcj1t96I29B2wt+YeQjfTx4LcIuHTQ+OW9lXqqOyIP0WcCUwuX2XAaxUr OkmtZoqKkT2gXguxqBJVBZcmDrZPfkiQV1pF2lHEoLUQOAviCvyh0lxZ3ZRb9g44KQ ez+rVOlkjzTpWYgNNJb7CqSUvnQfrtsGWdpRHa1XWQ7fCJLDnyL6tK6q92Ohdm5/AV AaifmrcVAbn5Os+GC16/tGbPOctcYYZ8xMTV1ZnoRpes1Ndx6KxmAXPI6DJ3D1MMsd QPexvOAl5z1wQNYByOQe7g4xmQ8SCgzaNUJDQo9/e2wNi1U+kmTKZRkoh61E0PtZdf occnobMaCjq6XZJ5k3tc3/BBz4x4E+oyqNn3GwXJiYd2zmIcaOguG4BqdwsKhKo1TD KWWAa/wNqCv1SOQGgnVymucv1guASk06mo8rf4knNDkKXrxIUt9g2XqvxRET3LsdPB w2JE3Zfjg5ooJJfjUVzyAC+1gt0dtgIO7zxfT/oQO0h/DehMrXVannQuJIymxMnQIR EmkIx5WRGcpvMKnStQA8k4K/DX40qBWYyx2QO33SWV1U1ygLUXNqqRc+lT5bUFGcwC AJqkPF4xy3IZTZtY+j6jIAOAPoSLMeQjj6OWUfKis6bFUd+kRKpcCGdyFgmWog1yEq 0SattK+3WOaZGuHXJG+QkTOU= From: Tomas Volf <~@wolfsden.cz> To: bug-guix@HIDDEN Subject: Constructor created by define-configuration is slow (>25s) when many fields are defined Date: Mon, 09 Dec 2024 16:13:16 +0100 Message-ID: <87msh499f7.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: multipart/signed; boundary="==-=-="; micalg=pgp-sha512; protocol="application/pgp-signature" Received-SPF: pass client-ip=37.205.8.62; envelope-from=~@wolfsden.cz; helo=wolfsden.cz X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> --==-=-= Content-Type: multipart/mixed; boundary="=-=-=" --=-=-= Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Hello, I am writing a configuration for mpv and hit an issue of the generated constructor (`home-mpv-configuration') is extremely slow. While the almost 800 fields is unusually high, initializing the instances of the record should *not* take almost 30 seconds. The full file is attached to this email (as `mpv.scm'). =2D-8<---------------cut here---------------start------------->8--- scheme@(guix-user)> ,use (gnu home services mpv) scheme@(guix-user)> ,t (and (home-mpv-configuration (global (mpv-profile-co= nfiguration (fullscreen #t)))) #t)=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20 $1 =3D #t ;; 29.615315s real time, 50.896973s run time. 24.031723s spent in GC. =2D-8<---------------cut here---------------end--------------->8--- Interestingly, profiling does not give us anything useful: =2D-8<---------------cut here---------------start------------->8--- scheme@(guix-user)> ,pr (and (home-mpv-configuration (global (mpv-profile-c= onfiguration (fullscreen #t)))) #t)=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20 No samples recorded. =2D-8<---------------cut here---------------end--------------->8--- I also tried to remove all my custom sanitizers, to make sure the issue is not in my code, but that did not help. I took a short look, but code of both the define-configuration and of Guix records is complex, full of syntax magic and I did not have any luck trying to debug it myself. Hence this report. Have a nice day, Tomas --=-=-= Content-Type: text/x-guile; charset=utf-8 Content-Disposition: attachment; filename=mpv.scm Content-Transfer-Encoding: quoted-printable Content-Description: Reproducer. ;;; GNU Guix --- Functional package management for GNU ;;; Copyright =C2=A9 2024 Tomas Volf <~@wolfsden.cz> ;;; ;;; This file is part of GNU Guix. ;;; ;;; GNU Guix is free software; you can redistribute it and/or modify it ;;; under the terms of the GNU General Public License as published by ;;; the Free Software Foundation; either version 3 of the License, or (at ;;; your option) any later version. ;;; ;;; GNU Guix 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 General Public License for more details. ;;; ;;; You should have received a copy of the GNU General Public License ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. (define-module (gnu home services mpv) #:use-module (gnu home services) #:use-module (gnu services configuration) #:use-module (guix gexp) #:use-module (ice-9 match) #:use-module (ice-9 regex) #:use-module (srfi srfi-1) #:use-module (srfi srfi-2) #:use-module (srfi srfi-26) #:use-module (srfi srfi-71) #:export (home-mpv-configuration home-mpv-configuration? home-mpv-configuration-global home-mpv-configuration-profiles home-mpv-configuration-extra home-mpv-configuration-source-location mpv-profile-configuration mpv-profile-configuration? mpv-profile-configuration-source-location ;; Generated exports - START. ;; Generated exports - END. )) ;;; ;;; Basic types. ;;; (define-maybe type/boolean) (define (serialize-type/boolean field-name value) #~(string-append #$(symbol->string field-name) "=3D" #$(if value "yes" "no") "\n")) (define type/boolean? (const #t)) (define-maybe type/integer) (define (serialize-type/integer field-name value) #~(string-append #$(symbol->string field-name) "=3D" #$(number->string value) "\n")) (define (type/integer? n) ;; We assume integer is a signed 32bit number. (and-let* (((integer? n)) ((>=3D n -2147483648)) ((<=3D n 2147483647))))) (define-maybe type/integer64) (define (serialize-type/integer64 field-name value) #~(string-append #$(symbol->string field-name) "=3D" #$(number->string value) "\n")) (define (type/integer64? n) ;; We assume integer is a signed 64bit number. (and-let* (((integer? n)) ((>=3D n -9223372036854775808)) ((<=3D n 9223372036854775807))))) (define-maybe type/string) (define (serialize-type/string field-name value) #~(string-append #$(symbol->string field-name) "=3D" #$value "\n")) (define type/string? string?) (define-maybe type/float) (define (serialize-type/float field-name value) #~(string-append #$(symbol->string field-name) "=3D" #$(number->string (exact->inexact value)) "\n")) (define type/float? ;; I am not sure how to validate floats. real?) (define-maybe type/double) (define (serialize-type/double field-name value) #~(string-append #$(symbol->string field-name) "=3D" #$(number->string (exact->inexact value)) "\n")) (define (type/double? value) ;; I am not sure how to validate doubles. real?) ;;; ;;; Additional types (possible based on the basic ones). ;;; ;;; Aspect seems to be treated as an integer, so define it in terms of it. (define-maybe type/aspect) (define serialize-type/aspect serialize-type/integer) (define type/aspect? type/integer?) ;;; `Audio channels or channel map' seems to be basically a free form string ;;; with no way to validate. (define-maybe type/audio-channels-or-channel-map) (define serialize-type/audio-channels-or-channel-map serialize-type/string) (define type/audio-channels-or-channel-map? type/string?) ;;; Does not seem possible to validate. (define-maybe type/audio-format) (define serialize-type/audio-format serialize-type/string) (define type/audio-format? type/string?) ;;; While most options list 4.6116860184274e+18 as a maximum value, we will ;;; use integer64 here. That should be enough for everyone for few more ;;; years. (define-maybe type/byte-size) (define serialize-type/byte-size serialize-type/integer64) (define type/byte-size? type/integer64?) (define-maybe type/color) (define (serialize-type/color field-name value) #~(string-append #$(symbol->string field-name) "=3D" #$(if (list? value) (string-join (map number->string value) "/") value) "\n")) (define (type/color? value) (define (ok-num? n) (and (number? n) (>=3D n 0) (<=3D n 1))) (if (list? value) ;; Either a list of 3(4) numbers encoding RGB(A) on range from 0 to 1= ... (match value (((? ok-num? r) (? ok-num? g) (? ok-num? b)) #t) (((? ok-num? r) (? ok-num? g) (? ok-num? b) (? ok-num? alpha)) #t) (_ #f)) ;; ... or RGB(A) hex encoding. (string-match "^#([A-Fa-f0-9]{2})?[A-Fa-f0-9]{6}$" value))) ;;; I do not see value mirroring fourcc.org's database here. It is further ;;; complicated by arbitrary hex being accepted as well. So string it is. (define-maybe type/fourcc) (define serialize-type/fourcc serialize-type/string) (define type/fourcc? type/string?) ;;; No way to validate. (define-maybe type/image-format) (define serialize-type/image-format serialize-type/string) (define type/image-format? type/string?) ;;; Looking at the documentation for --start, there is no way to make this ;;; bullet-proof, especially since even chapter numbers are accepted. (define-maybe type/relative-time-or-percent-position) (define serialize-type/relative-time-or-percent-position serialize-type/str= ing) (define type/relative-time-or-percent-position? type/string?) (define-maybe type/time) (define serialize-type/time serialize-type/string) (define type/time? type/string?) (define-maybe type/video-rectangle) (define serialize-type/video-rectangle serialize-type/string) (define (type/video-rectangle? value) (or (string-match "-?[0-9]+%?:-?[0-9]+%?" value) (string-match "^(-?[0-9]+%?(x-?[0-9]+%?)?)?([+-]-?[0-9]+%?[+-]-?[0-9]+%?)?$" value))) (define-maybe type/window-geometry) (define serialize-type/window-geometry serialize-type/string) (define (type/window-geometry? value) (or (string-match "-?[0-9]+%?:-?[0-9]+%?" value) (string-match "^(-?[0-9]+%?(x-?[0-9]+%?)?)?([+-]-?[0-9]+%?[+-]-?[0-9]+%?)?(/[0-9]+= )?$" value))) (define-maybe type/window-size) (define serialize-type/window-size serialize-type/string) (define (type/window-size? value) (string-match "^([0-9]+%?(x[0-9]+%?)?)?$" value)) (define-maybe type/enumeration) (define (serialize-type/enumeration field-name value) #~(string-append #$(symbol->string field-name) "=3D" ;; This could be either symbol or (in case of enumeratio= ns ;; with alternate type) anything. So just use `format'. #$(format #f "~s" value) "\n")) (define (type/enumeration? value) ;; There is no general way to check enumerations. The field always has to ;; define custom sanitizer. #t) ;;; ;;; List types. ;;; (define-maybe type/list-of-string) (define (serialize-type/list-of-string field-name lst) #~(string-append #$(symbol->string field-name) "=3D" #$(string-join lst ",") "\n")) (define (type/list-of-string? lst) (every type/string? lst)) (define-maybe type/list-of-key-value) (define (serialize-type/list-of-key-value field-name lst) #~(string-append #$(symbol->string field-name) "=3D" #$(string-join (map (match-lambda ((k . v) (format #f "~a=3D~a" k v)= )) lst) ",") "\n")) (define (type/list-of-key-value? lst) (every (match-lambda (((? string?) . (? string?)) #t) (_ #f)) lst)) (define-maybe type/list-of-object-setting) (define serialize-type/list-of-object-setting serialize-type/list-of-string) (define type/list-of-object-setting? type/list-of-string?) (define-maybe type/list-of-output-verbosity) (define serialize-type/list-of-output-verbosity serialize-type/list-of-key-= value) (define type/list-of-output-verbosity? type/list-of-key-value?) ;;; ;;; Actual configuration record. Contains a lot of generated code. ;;; ;;; Generated code - START. (define-configuration mpv-profile-configuration (ab-loop-a maybe-type/time "") (ab-loop-b maybe-type/time "") (ab-loop-count maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (or (memq val '(inf)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 2147483647)))))))) (access-references maybe-type/boolean "") (ad maybe-type/string "") (ad-lavc-ac3drc maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0) (<=3D val 6)))))) (ad-lavc-downmix maybe-type/boolean "") (ad-lavc-o maybe-type/list-of-key-value "") (ad-lavc-threads maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 16)))))) (ad-queue-enable maybe-type/boolean "") (ad-queue-max-bytes maybe-type/byte-size "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/byte-size? val) (>=3D val 0) (<=3D val 4.6116860184274e18)))))) (ad-queue-max-samples maybe-type/integer64 "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer64? val) (>=3D val 0) (<=3D val +inf.0)))))) (ad-queue-max-secs maybe-type/double "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/double? val) (>=3D val 0) (<=3D val +inf.0)))))) (af maybe-type/list-of-object-setting "") (audio maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (or (memq val '(no auto)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 8190)))))))) (alang maybe-type/list-of-string "") (allow-delayed-peak-detect maybe-type/boolean "") (alsa-buffer-time maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 2147483647)))))) (alsa-ignore-chmap maybe-type/boolean "") (alsa-mixer-device maybe-type/string "") (alsa-mixer-index maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 99)))))) (alsa-mixer-name maybe-type/string "") (alsa-non-interleaved maybe-type/boolean "") (alsa-periods maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 2147483647)))))) (alsa-resample maybe-type/boolean "") (ao maybe-type/list-of-object-setting "") (ao-null-broken-delay maybe-type/boolean "") (ao-null-broken-eof maybe-type/boolean "") (ao-null-buffer maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0) (<=3D val 100)))))) (ao-null-channel-layouts maybe-type/audio-channels-or-channel-map "") (ao-null-format maybe-type/audio-format "") (ao-null-latency maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0) (<=3D val 100)))))) (ao-null-outburst maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 1) (<=3D val 100000)))))) (ao-null-speed maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0) (<=3D val 10000)))))) (ao-null-untimed maybe-type/boolean "") (ao-pcm-append maybe-type/boolean "") (ao-pcm-file maybe-type/string "") (ao-pcm-waveheader maybe-type/boolean "") (audio-backward-batch maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 1024)))))) (audio-backward-overlap maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (or (memq val '(auto)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 1024)))))))) (audio-buffer maybe-type/double "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/double? val) (>=3D val 0) (<=3D val 10)))))) (audio-channels maybe-type/audio-channels-or-channel-map "") (audio-client-name maybe-type/string "") (audio-delay maybe-type/float "") (audio-demuxer maybe-type/string "") (audio-device maybe-type/string "") (audio-display maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(no embedded-first external-first))))))) (audio-exclusive maybe-type/boolean "") (audio-exts maybe-type/list-of-string "") (audio-fallback-to-null maybe-type/boolean "") (audio-file-auto maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(no exact fuzzy all))))))) (audio-file-paths maybe-type/list-of-string "") (audio-files maybe-type/list-of-string "") (audio-format maybe-type/audio-format "") (audio-normalize-downmix maybe-type/boolean "") (audio-pitch-correction maybe-type/boolean "") (audio-resample-cutoff maybe-type/double "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/double? val) (>=3D val 0) (<=3D val 1)))))) (audio-resample-filter-size maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 32)))))) (audio-resample-linear maybe-type/boolean "") (audio-resample-max-output-size maybe-type/double "") (audio-resample-phase-shift maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 30)))))) (audio-reversal-buffer maybe-type/byte-size "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/byte-size? val) (>=3D val 0) (<=3D val 4.6116860184274e18)))))) (audio-samplerate maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 768000)))))) (audio-spdif maybe-type/string "") (audio-stream-silence maybe-type/boolean "") (audio-swresample-o maybe-type/list-of-key-value "") (audio-wait-open maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0) (<=3D val 60)))))) (auto-window-resize maybe-type/boolean "") (autocreate-playlist maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(no filter same))))))) (autofit maybe-type/window-size "") (autofit-larger maybe-type/window-size "") (autofit-smaller maybe-type/window-size "") (autoload-files maybe-type/boolean "") (autosync maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (or (memq val '(no)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 10000)))))))) (background maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(none color tiles))))))) (background-color maybe-type/color "") (blend-subtitles maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(no yes video))))))) (bluray-device maybe-type/string "") (border maybe-type/boolean "") (border-background maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(none color tiles))))))) (brightness maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val -100) (<=3D val 100)))))) (cache maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(no auto yes))))))) (cache-on-disk maybe-type/boolean "") (cache-pause maybe-type/boolean "") (cache-pause-initial maybe-type/boolean "") (cache-pause-wait maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0) (<=3D val +inf.0)))))) (cache-secs maybe-type/double "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/double? val) (>=3D val 0) (<=3D val +inf.0)))))) (cdda-cdtext maybe-type/boolean "") (cdda-device maybe-type/string "") (cdda-overlap maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 75)))))) (cdda-paranoia maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 2)))))) (cdda-sector-size maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 1) (<=3D val 100)))))) (cdda-skip maybe-type/boolean "") (cdda-span-a maybe-type/integer "") (cdda-span-b maybe-type/integer "") (cdda-speed maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 1) (<=3D val 100)))))) (cdda-toc-offset maybe-type/integer "") (chapter-merge-threshold maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 10000)))))) (chapter-seek-threshold maybe-type/double "") (chapters-file maybe-type/string "") (config maybe-type/boolean "") (container-fps-override maybe-type/double "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/double? val) (>=3D val 0) (<=3D val +inf.0)))))) (contrast maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val -100) (<=3D val 100)))))) (cookies maybe-type/boolean "") (cookies-file maybe-type/string "") (corner-rounding maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0) (<=3D val 1)))))) (correct-downscaling maybe-type/boolean "") (correct-pts maybe-type/boolean "") (cover-art-auto maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(no exact fuzzy all))))))) (cover-art-files maybe-type/list-of-string "") (cover-art-whitelist maybe-type/list-of-string "") (cscale maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(bilinear bicubic_fast oversample spline16 spline36 spline64 sinc lanczos ginseng bicubic hermite catmull_rom mitchell robidoux robidouxsharp box nearest triangle gaussian jinc ewa_lanczos ewa_hanning ewa_ginseng ewa_lanczossharp ewa_lanczos4sharpest ewa_lanczossoft haasnsoft ewa_robidoux ewa_robidouxsharp bartlett cosine hanning tukey hamming quadric welch kaiser blackman sphinx))))))) (cscale-antiring maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0) (<=3D val 1)))))) (cscale-blur maybe-type/float "") (cscale-clamp maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0) (<=3D val 1)))))) (cscale-param1 maybe-type/float "") (cscale-param2 maybe-type/float "") (cscale-radius maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0.5) (<=3D val 16)))))) (cscale-taper maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0) (<=3D val 1)))))) (cscale-window maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(bartlett cosine hanning tukey hamming quadric welch kaiser blackman sphinx jinc))))))) (cscale-wparam maybe-type/float "") (cscale-wtaper maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0) (<=3D val 1)))))) (cursor-autohide maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (or (memq val '(no always)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 30000)))))))) (cursor-autohide-fs-only maybe-type/boolean "") (deband maybe-type/boolean "") (deband-grain maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0) (<=3D val 4096)))))) (deband-iterations maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 16)))))) (deband-range maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 1) (<=3D val 64)))))) (deband-threshold maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0) (<=3D val 4096)))))) (deinterlace maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(no yes auto))))))) (deinterlace-field-parity maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(tff bff auto))))))) (demuxer maybe-type/string "") (demuxer-backward-playback-step maybe-type/double "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/double? val) (>=3D val 0) (<=3D val +inf.0)))))) (demuxer-cache-dir maybe-type/string "") (demuxer-cache-unlink-files maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(immediate whendone no))))))) (demuxer-cache-wait maybe-type/boolean "") (demuxer-donate-buffer maybe-type/boolean "") (demuxer-hysteresis-secs maybe-type/double "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/double? val) (>=3D val 0) (<=3D val +inf.0)))))) (demuxer-lavf-allow-mimetype maybe-type/boolean "") (demuxer-lavf-analyzeduration maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0) (<=3D val 3600)))))) (demuxer-lavf-buffersize maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 1) (<=3D val 10485760)))))) (demuxer-lavf-format maybe-type/string "") (demuxer-lavf-hacks maybe-type/boolean "") (demuxer-lavf-linearize-timestamps maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(no auto yes))))))) (demuxer-lavf-o maybe-type/list-of-key-value "") (demuxer-lavf-probe-info maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(no yes auto nostreams))))))) (demuxer-lavf-probescore maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 1) (<=3D val 100)))))) (demuxer-lavf-probesize maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 32) (<=3D val 2147483647)))))) (demuxer-lavf-propagate-opts maybe-type/boolean "") (demuxer-max-back-bytes maybe-type/byte-size "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/byte-size? val) (>=3D val 0) (<=3D val 4.6116860184274e18)))))) (demuxer-max-bytes maybe-type/byte-size "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/byte-size? val) (>=3D val 0) (<=3D val 4.6116860184274e18)))))) (demuxer-mkv-probe-start-time maybe-type/boolean "") (demuxer-mkv-probe-video-duration maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(no yes full))))))) (demuxer-mkv-subtitle-preroll maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(no yes index))))))) (demuxer-mkv-subtitle-preroll-secs maybe-type/double "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/double? val) (>=3D val 0) (<=3D val +inf.0)))))) (demuxer-mkv-subtitle-preroll-secs-index maybe-type/double "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/double? val) (>=3D val 0) (<=3D val +inf.0)))))) (demuxer-rawaudio-channels maybe-type/audio-channels-or-channel-map "") (demuxer-rawaudio-format maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(u8 s8 u16le u16be s16le s16be u24le u24be s24le s24be u32le u32be s32le s32be floatle floatbe doublele doublebe u16 s16 u24 s24 u32 s32 float double))))))) (demuxer-rawaudio-rate maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 1000) (<=3D val 384000)))))) (demuxer-rawvideo-codec maybe-type/string "") (demuxer-rawvideo-format maybe-type/fourcc "") (demuxer-rawvideo-fps maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0.001) (<=3D val 1000)))))) (demuxer-rawvideo-h maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 1) (<=3D val 8192)))))) (demuxer-rawvideo-mp-format maybe-type/image-format "") (demuxer-rawvideo-size maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 1) (<=3D val 268435456)))))) (demuxer-rawvideo-w maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 1) (<=3D val 8192)))))) (demuxer-readahead-secs maybe-type/double "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/double? val) (>=3D val 0) (<=3D val +inf.0)))))) (demuxer-seekable-cache maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(auto no yes))))))) (demuxer-termination-timeout maybe-type/double "") (demuxer-thread maybe-type/boolean "") (directory-filter-types maybe-type/list-of-string "") (directory-mode maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(auto lazy recursive ignore))))))) (display-fps-override maybe-type/double "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/double? val) (>=3D val 0) (<=3D val +inf.0)))))) (display-tags maybe-type/list-of-string "") (dither maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(fruit ordered error-diffusion no))))))) (dither-depth maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (or (memq val '(no auto)) (and (maybe-type/integer? val) (>=3D val -1) (<=3D val 16)))))))) (dither-size-fruit maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 2) (<=3D val 8)))))) (drag-and-drop maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(no auto replace append insert-next))))))) (drm-connector maybe-type/string "") (drm-device maybe-type/string "") (drm-draw-plane maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (or (memq val '(primary overlay)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 2147483647)))))))) (drm-draw-surface-size maybe-type/window-size "") (drm-drmprime-video-plane maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (or (memq val '(primary overlay)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 2147483647)))))))) (drm-format maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(xrgb8888 xrgb2101010 xbgr8888 xbgr2101010 yuyv))))))) (drm-mode maybe-type/string "") (drm-vrr-enabled maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(no yes auto))))))) (dscale maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(bilinear bicubic_fast oversample spline16 spline36 spline64 sinc lanczos ginseng bicubic hermite catmull_rom mitchell robidoux robidouxsharp box nearest triangle gaussian jinc ewa_lanczos ewa_hanning ewa_ginseng ewa_lanczossharp ewa_lanczos4sharpest ewa_lanczossoft haasnsoft ewa_robidoux ewa_robidouxsharp bartlett cosine hanning tukey hamming quadric welch kaiser blackman sphinx))))))) (dscale-antiring maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0) (<=3D val 1)))))) (dscale-blur maybe-type/float "") (dscale-clamp maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0) (<=3D val 1)))))) (dscale-param1 maybe-type/float "") (dscale-param2 maybe-type/float "") (dscale-radius maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0.5) (<=3D val 16)))))) (dscale-taper maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0) (<=3D val 1)))))) (dscale-window maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(bartlett cosine hanning tukey hamming quadric welch kaiser blackman sphinx jinc))))))) (dscale-wparam maybe-type/float "") (dscale-wtaper maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0) (<=3D val 1)))))) (dump-stats maybe-type/string "") (dvbin-card maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 15)))))) (dvbin-channel-switch-offset maybe-type/integer "") (dvbin-file maybe-type/string "") (dvbin-full-transponder maybe-type/boolean "") (dvbin-prog maybe-type/string "") (dvbin-timeout maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 1) (<=3D val 30)))))) (dvd-angle maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 1) (<=3D val 99)))))) (dvd-device maybe-type/string "") (dvd-speed maybe-type/integer "") (edition maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (or (memq val '(auto)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 8190)))))))) (egl-config-id maybe-type/integer "") (egl-output-format maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(auto rgb8 rgba8 rgb10 rgb10_a2 rgb16 rgba16 rgb16f rgba16f rgb32f rgba32f))))))) (embeddedfonts maybe-type/boolean "") (end maybe-type/relative-time-or-percent-position "") (error-diffusion maybe-type/string "") (external-files maybe-type/list-of-string "") (fbo-format maybe-type/string "") (focus-on maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(never open all))))))) (force-media-title maybe-type/string "") (force-render maybe-type/boolean "") (force-rgba-osd-rendering maybe-type/boolean "") (force-seekable maybe-type/boolean "") (force-window maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(no yes immediate))))))) (force-window-position maybe-type/boolean "") (framedrop maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(no vo decoder decoder+vo))))))) (frames maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (or (memq val '(all)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 2147483647)))))))) (fs-screen maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (or (memq val '(all current)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 32)))))))) (fs-screen-name maybe-type/string "") (fullscreen maybe-type/boolean "") (gamma maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val -100) (<=3D val 100)))))) (gamma-auto maybe-type/boolean "") (gamma-factor maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0.1) (<=3D val 2)))))) (gamut-mapping-mode maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(auto clip perceptual relative saturation absolute desaturate darken warn linear))))))) (gapless-audio maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(no yes weak))))))) (geometry maybe-type/window-geometry "") (glsl-shader-opts maybe-type/list-of-key-value "") (glsl-shaders maybe-type/list-of-string "") (gpu-api maybe-type/list-of-object-setting "") (gpu-context maybe-type/list-of-object-setting "") (gpu-debug maybe-type/boolean "") (gpu-dumb-mode maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(auto yes no))))))) (gpu-hwdec-interop maybe-type/string "") (gpu-shader-cache maybe-type/boolean "") (gpu-shader-cache-dir maybe-type/string "") (gpu-sw maybe-type/boolean "") (gpu-tex-pad-x maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 4096)))))) (gpu-tex-pad-y maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 4096)))))) (hdr-compute-peak maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(auto yes no))))))) (hdr-contrast-recovery maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0) (<=3D val 2)))))) (hdr-contrast-smoothness maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 1) (<=3D val 100)))))) (hdr-peak-decay-rate maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0) (<=3D val 1000)))))) (hdr-peak-percentile maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0) (<=3D val 100)))))) (hdr-scene-threshold-high maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0) (<=3D val 20)))))) (hdr-scene-threshold-low maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0) (<=3D val 20)))))) (hidpi-window-scale maybe-type/boolean "") (hls-bitrate maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (or (memq val '(no min max)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 2147483647)))))))) (hr-seek maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(no absolute yes always default))))))) (hr-seek-demuxer-offset maybe-type/float "") (hr-seek-framedrop maybe-type/boolean "") (http-header-fields maybe-type/list-of-string "") (http-proxy maybe-type/string "") (hue maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val -100) (<=3D val 100)))))) (hwdec maybe-type/list-of-string "") (hwdec-codecs maybe-type/string "") (hwdec-extra-frames maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 256)))))) (hwdec-image-format maybe-type/image-format "") (icc-3dlut-size maybe-type/string "") (icc-cache maybe-type/boolean "") (icc-cache-dir maybe-type/string "") (icc-force-contrast maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (or (memq val '(no inf)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 1000000)))))))) (icc-intent maybe-type/integer "") (icc-profile maybe-type/string "") (icc-profile-auto maybe-type/boolean "") (icc-use-luma maybe-type/boolean "") (idle maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(no once yes))))))) (ignore-path-in-watch-later-config maybe-type/boolean "") (image-display-duration maybe-type/double "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/double? val) (>=3D val 0) (<=3D val +inf.0)))))) (image-exts maybe-type/list-of-string "") (image-lut maybe-type/string "") (image-lut-type maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(auto native normalized conversion))))))) (image-subs-video-resolution maybe-type/boolean "") (include maybe-type/string "") (index maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(default recreate))))))) (initial-audio-sync maybe-type/boolean "") (input-ar-delay maybe-type/integer "") (input-ar-rate maybe-type/integer "") (input-builtin-bindings maybe-type/boolean "") (input-builtin-dragging maybe-type/boolean "") (input-commands maybe-type/list-of-string "") (input-conf maybe-type/string "") (input-cursor maybe-type/boolean "") (input-cursor-passthrough maybe-type/boolean "") (input-default-bindings maybe-type/boolean "") (input-doubleclick-time maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 1000)))))) (input-dragging-deadzone maybe-type/integer "") (input-ipc-client maybe-type/string "") (input-ipc-server maybe-type/string "") (input-key-fifo-size maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 2) (<=3D val 65000)))))) (input-media-keys maybe-type/boolean "") (input-preprocess-wheel maybe-type/boolean "") (input-right-alt-gr maybe-type/boolean "") (input-terminal maybe-type/boolean "") (input-test maybe-type/boolean "") (input-touch-emulate-mouse maybe-type/boolean "") (input-vo-keyboard maybe-type/boolean "") (interpolation maybe-type/boolean "") (interpolation-preserve maybe-type/boolean "") (interpolation-threshold maybe-type/float "") (inverse-tone-mapping maybe-type/boolean "") (jack-autostart maybe-type/boolean "") (jack-connect maybe-type/boolean "") (jack-name maybe-type/string "") (jack-port maybe-type/string "") (jack-std-channel-layout maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(waveext any))))))) (keep-open maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(no yes always))))))) (keep-open-pause maybe-type/boolean "") (keepaspect maybe-type/boolean "") (keepaspect-window maybe-type/boolean "") (lavfi-complex maybe-type/string "") (length maybe-type/relative-time-or-percent-position "") (libplacebo-opts maybe-type/list-of-key-value "") (linear-downscaling maybe-type/boolean "") (linear-upscaling maybe-type/boolean "") (load-auto-profiles maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(no yes auto))))))) (load-osd-console maybe-type/boolean "") (load-scripts maybe-type/boolean "") (load-select maybe-type/boolean "") (load-stats-overlay maybe-type/boolean "") (load-unsafe-playlists maybe-type/boolean "") (log-file maybe-type/string "") (loop-file maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (or (memq val '(no inf yes)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 10000)))))))) (loop-playlist maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (or (memq val '(no inf yes force)) (and (maybe-type/integer? val) (>=3D val 1) (<=3D val 10000)))))))) (lut maybe-type/string "") (lut-type maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(auto native normalized conversion))))))) (mc maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0) (<=3D val 100)))))) (media-controls maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(no player yes))))))) (merge-files maybe-type/boolean "") (metadata-codepage maybe-type/string "") (mf-fps maybe-type/double "") (mf-type maybe-type/string "") (monitoraspect maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0) (<=3D val 9)))))) (monitorpixelaspect maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0.03125) (<=3D val 32)))))) (msg-color maybe-type/boolean "") (msg-level maybe-type/list-of-output-verbosity "") (msg-module maybe-type/boolean "") (msg-time maybe-type/boolean "") (mute maybe-type/boolean "") (native-fs maybe-type/boolean "") (native-keyrepeat maybe-type/boolean "") (native-touch maybe-type/boolean "") (network-timeout maybe-type/double "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/double? val) (>=3D val 0) (<=3D val +inf.0)))))) (oac maybe-type/string "") (oacopts maybe-type/list-of-key-value "") (ocopy-metadata maybe-type/boolean "") (of maybe-type/string "") (ofopts maybe-type/list-of-key-value "") (on-all-workspaces maybe-type/boolean "") (ontop maybe-type/boolean "") (ontop-level maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (or (memq val '(window system desktop)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 2147483647)))))))) (opengl-check-pattern-a maybe-type/integer "") (opengl-check-pattern-b maybe-type/integer "") (opengl-early-flush maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(no yes auto))))))) (opengl-es maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(auto yes no))))))) (opengl-glfinish maybe-type/boolean "") (opengl-pbo maybe-type/boolean "") (opengl-rectangle-textures maybe-type/boolean "") (opengl-swapinterval maybe-type/integer "") (opengl-waitvsync maybe-type/boolean "") (orawts maybe-type/boolean "") (ordered-chapters maybe-type/boolean "") (ordered-chapters-files maybe-type/string "") (oremove-metadata maybe-type/list-of-string "") (osc maybe-type/boolean "") (osd-align-x maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(left center right))))))) (osd-align-y maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(top center bottom))))))) (osd-back-color maybe-type/color "") (osd-bar maybe-type/boolean "") (osd-bar-align-x maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val -1) (<=3D val 1)))))) (osd-bar-align-y maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val -1) (<=3D val 1)))))) (osd-bar-h maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0.1) (<=3D val 50)))))) (osd-bar-outline-size maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0) (<=3D val 1000)))))) (osd-bar-w maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 1) (<=3D val 100)))))) (osd-blur maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0) (<=3D val 20)))))) (osd-bold maybe-type/boolean "") (osd-border-style maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(outline-and-shadow opaque-box background-box))))))) (osd-color maybe-type/color "") (osd-duration maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 3600000)))))) (osd-font maybe-type/string "") (osd-font-provider maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(auto none fontconfig))))))) (osd-font-size maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 1) (<=3D val 9000)))))) (osd-fonts-dir maybe-type/string "") (osd-fractions maybe-type/boolean "") (osd-italic maybe-type/boolean "") (osd-justify maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(auto left center right))))))) (osd-level maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(#{0}# #{1}# #{2}# #{3}#))))))) (osd-margin-x maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 300)))))) (osd-margin-y maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 600)))))) (osd-msg1 maybe-type/string "") (osd-msg2 maybe-type/string "") (osd-msg3 maybe-type/string "") (osd-on-seek maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(no bar msg msg-bar))))))) (osd-outline-color maybe-type/color "") (osd-outline-size maybe-type/float "") (osd-playing-msg maybe-type/string "") (osd-playing-msg-duration maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 3600000)))))) (osd-playlist-entry maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(title filename both))))))) (osd-scale maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0) (<=3D val 100)))))) (osd-scale-by-window maybe-type/boolean "") (osd-shadow-offset maybe-type/float "") (osd-spacing maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val -10) (<=3D val 10)))))) (osd-status-msg maybe-type/string "") (oset-metadata maybe-type/list-of-key-value "") (ovc maybe-type/string "") (ovcopts maybe-type/list-of-key-value "") (panscan maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0) (<=3D val 1)))))) (pause maybe-type/boolean "") (pitch maybe-type/double "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/double? val) (>=3D val 0.01) (<=3D val 100)))))) (play-direction maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(forward + backward -))))))) (player-operation-mode maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(cplayer pseudo-gui))))))) (playlist-start maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (or (memq val '(auto no)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 2147483647)))))))) (prefetch-playlist maybe-type/boolean "") (profile maybe-type/list-of-string "") (pulse-allow-suspended maybe-type/boolean "") (pulse-buffer maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (or (memq val '(native)) (and (maybe-type/integer? val) (>=3D val 1) (<=3D val 2000)))))))) (pulse-host maybe-type/string "") (pulse-latency-hacks maybe-type/boolean "") (quiet maybe-type/boolean "") (really-quiet maybe-type/boolean "") (rebase-start-time maybe-type/boolean "") (referrer maybe-type/string "") (replaygain maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(no track album))))))) (replaygain-clip maybe-type/boolean "") (replaygain-fallback maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val -200) (<=3D val 60)))))) (replaygain-preamp maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val -150) (<=3D val 150)))))) (reset-on-next-file maybe-type/list-of-string "") (resume-playback maybe-type/boolean "") (resume-playback-check-mtime maybe-type/boolean "") (rtsp-transport maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(lavf udp tcp http udp_multicast))))))) (saturation maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val -100) (<=3D val 100)))))) (save-position-on-quit maybe-type/boolean "") (scale maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(bilinear bicubic_fast oversample spline16 spline36 spline64 sinc lanczos ginseng bicubic hermite catmull_rom mitchell robidoux robidouxsharp box nearest triangle gaussian jinc ewa_lanczos ewa_hanning ewa_ginseng ewa_lanczossharp ewa_lanczos4sharpest ewa_lanczossoft haasnsoft ewa_robidoux ewa_robidouxsharp bartlett cosine hanning tukey hamming quadric welch kaiser blackman sphinx))))))) (scale-antiring maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0) (<=3D val 1)))))) (scale-blur maybe-type/float "") (scale-clamp maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0) (<=3D val 1)))))) (scale-param1 maybe-type/float "") (scale-param2 maybe-type/float "") (scale-radius maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0.5) (<=3D val 16)))))) (scale-taper maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0) (<=3D val 1)))))) (scale-window maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(bartlett cosine hanning tukey hamming quadric welch kaiser blackman sphinx jinc))))))) (scale-wparam maybe-type/float "") (scale-wtaper maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0) (<=3D val 1)))))) (scaler-resizes-only maybe-type/boolean "") (screen maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (or (memq val '(default)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 32)))))))) (screen-name maybe-type/string "") (screenshot-avif-encoder maybe-type/string "") (screenshot-avif-opts maybe-type/list-of-key-value "") (screenshot-avif-pixfmt maybe-type/string "") (screenshot-directory maybe-type/string "") (screenshot-format maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(jpg jpeg png webp jxl avif))))))) (screenshot-high-bit-depth maybe-type/boolean "") (screenshot-jpeg-quality maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 100)))))) (screenshot-jpeg-source-chroma maybe-type/boolean "") (screenshot-jxl-distance maybe-type/double "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/double? val) (>=3D val 0) (<=3D val 15)))))) (screenshot-jxl-effort maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 1) (<=3D val 9)))))) (screenshot-png-compression maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 9)))))) (screenshot-png-filter maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 5)))))) (screenshot-sw maybe-type/boolean "") (screenshot-tag-colorspace maybe-type/boolean "") (screenshot-template maybe-type/string "") (screenshot-webp-compression maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 6)))))) (screenshot-webp-lossless maybe-type/boolean "") (screenshot-webp-quality maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 100)))))) (script-opts maybe-type/list-of-key-value "") (scripts maybe-type/list-of-string "") (secondary-sid maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (or (memq val '(no auto)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 8190)))))))) (secondary-sub-ass-override maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(no yes scale force strip))))))) (secondary-sub-delay maybe-type/float "") (secondary-sub-pos maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0) (<=3D val 150)))))) (secondary-sub-visibility maybe-type/boolean "") (sharpen maybe-type/float "") (show-in-taskbar maybe-type/boolean "") (shuffle maybe-type/boolean "") (sub maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (or (memq val '(no auto)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 8190)))))))) (sigmoid-center maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0) (<=3D val 1)))))) (sigmoid-slope maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 1) (<=3D val 20)))))) (sigmoid-upscaling maybe-type/boolean "") (slang maybe-type/list-of-string "") (snap-window maybe-type/boolean "") (speed maybe-type/double "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/double? val) (>=3D val 0.01) (<=3D val 100)))))) (spirv-compiler maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(auto))))))) (sstep maybe-type/double "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/double? val) (>=3D val 0) (<=3D val +inf.0)))))) (start maybe-type/relative-time-or-percent-position "") (stop-playback-on-init-failure maybe-type/boolean "") (stop-screensaver maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(no yes always))))))) (stream-buffer-size maybe-type/byte-size "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/byte-size? val) (>=3D val 4096) (<=3D val 536870912)))))) (stream-dump maybe-type/string "") (stream-lavf-o maybe-type/list-of-key-value "") (stream-record maybe-type/string "") (stretch-dvd-subs maybe-type/boolean "") (stretch-image-subs-to-screen maybe-type/boolean "") (sub-align-x maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(left center right))))))) (sub-align-y maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(top center bottom))))))) (sub-ass maybe-type/boolean "") (sub-ass-force-margins maybe-type/boolean "") (sub-ass-hinting maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(none light normal native))))))) (sub-ass-justify maybe-type/boolean "") (sub-ass-line-spacing maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val -1000) (<=3D val 1000)))))) (sub-ass-override maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(no yes scale force strip))))))) (sub-ass-scale-with-window maybe-type/boolean "") (sub-ass-shaper maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(simple complex))))))) (sub-ass-style-overrides maybe-type/list-of-string "") (sub-ass-styles maybe-type/string "") (sub-ass-use-video-data maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(none aspect-ratio all))))))) (sub-ass-video-aspect-override maybe-type/aspect "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/aspect? val) (>=3D val 0) (<=3D val 10)))))) (sub-ass-vsfilter-color-compat maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(no basic full force-601))))))) (sub-auto maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(no exact fuzzy all))))))) (sub-auto-exts maybe-type/list-of-string "") (sub-back-color maybe-type/color "") (sub-blur maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0) (<=3D val 20)))))) (sub-bold maybe-type/boolean "") (sub-border-style maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(outline-and-shadow opaque-box background-box))))))) (sub-clear-on-seek maybe-type/boolean "") (sub-codepage maybe-type/string "") (sub-color maybe-type/color "") (sub-create-cc-track maybe-type/boolean "") (sub-delay maybe-type/float "") (sub-demuxer maybe-type/string "") (sub-file-paths maybe-type/list-of-string "") (sub-files maybe-type/list-of-string "") (sub-filter-jsre maybe-type/list-of-string "") (sub-filter-regex maybe-type/list-of-string "") (sub-filter-regex-enable maybe-type/boolean "") (sub-filter-regex-plain maybe-type/boolean "") (sub-filter-regex-warn maybe-type/boolean "") (sub-filter-sdh maybe-type/boolean "") (sub-filter-sdh-enclosures maybe-type/string "") (sub-filter-sdh-harder maybe-type/boolean "") (sub-fix-timing maybe-type/boolean "") (sub-font maybe-type/string "") (sub-font-provider maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(auto none fontconfig))))))) (sub-font-size maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 1) (<=3D val 9000)))))) (sub-fonts-dir maybe-type/string "") (sub-forced-events-only maybe-type/boolean "") (sub-fps maybe-type/float "") (sub-gauss maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0) (<=3D val 3)))))) (sub-gray maybe-type/boolean "") (sub-italic maybe-type/boolean "") (sub-justify maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(auto left center right))))))) (sub-lavc-o maybe-type/list-of-key-value "") (sub-margin-x maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 300)))))) (sub-margin-y maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 600)))))) (sub-outline-color maybe-type/color "") (sub-outline-size maybe-type/float "") (sub-past-video-end maybe-type/boolean "") (sub-pos maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0) (<=3D val 150)))))) (sub-scale maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0) (<=3D val 100)))))) (sub-scale-by-window maybe-type/boolean "") (sub-scale-with-window maybe-type/boolean "") (sub-shadow-offset maybe-type/float "") (sub-spacing maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val -10) (<=3D val 10)))))) (sub-speed maybe-type/float "") (sub-stretch-durations maybe-type/boolean "") (sub-use-margins maybe-type/boolean "") (sub-visibility maybe-type/boolean "") (sub-vsfilter-bidi-compat maybe-type/boolean "") (subs-fallback maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(no default yes))))))) (subs-fallback-forced maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(no yes always))))))) (subs-match-os-language maybe-type/boolean "") (subs-with-matching-audio maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(no forced yes))))))) (swapchain-depth maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 1) (<=3D val 8)))))) (sws-allow-zimg maybe-type/boolean "") (sws-bitexact maybe-type/boolean "") (sws-cgb maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0) (<=3D val 100)))))) (sws-chs maybe-type/integer "") (sws-cs maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val -100) (<=3D val 100)))))) (sws-cvs maybe-type/integer "") (sws-fast maybe-type/boolean "") (sws-lgb maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0) (<=3D val 100)))))) (sws-ls maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val -100) (<=3D val 100)))))) (sws-scaler maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(fast-bilinear bilinear bicubic x point area bicublin gauss sinc lanczos spline))))))) (target-colorspace-hint maybe-type/boolean "") (target-contrast maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (or (memq val '(auto inf)) (and (maybe-type/integer? val) (>=3D val 10) (<=3D val 1000000)))))))) (target-gamut maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(auto bt.601-525 bt.601-625 bt.709 bt.2020 bt.470m apple adobe prophoto cie1931 dci-p3 display-p3 v-gamut s-gamut ebu3213 film-c aces-ap0 aces-ap1))))))) (target-lut maybe-type/string "") (target-peak maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (or (memq val '(auto)) (and (maybe-type/integer? val) (>=3D val 10) (<=3D val 10000)))))))) (target-prim maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(auto bt.601-525 bt.601-625 bt.709 bt.2020 bt.470m apple adobe prophoto cie1931 dci-p3 display-p3 v-gamut s-gamut ebu3213 film-c aces-ap0 aces-ap1))))))) (target-trc maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(auto bt.1886 srgb linear gamma1.8 gamma2.0 gamma2.2 gamma2.4 gamma2.6 gamma2.8 prophoto pq hlg v-log s-log1 s-log2 st428))))))) (taskbar-progress maybe-type/boolean "") (teletext-page maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val -1) (<=3D val 999)))))) (temporal-dither maybe-type/boolean "") (temporal-dither-period maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 1) (<=3D val 128)))))) (term-osd maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(force auto no))))))) (term-osd-bar maybe-type/boolean "") (term-osd-bar-chars maybe-type/string "") (term-playing-msg maybe-type/string "") (term-status-msg maybe-type/string "") (term-title maybe-type/string "") (terminal maybe-type/boolean "") (title maybe-type/string "") (title-bar maybe-type/boolean "") (tls-ca-file maybe-type/string "") (tls-cert-file maybe-type/string "") (tls-key-file maybe-type/string "") (tls-verify maybe-type/boolean "") (tone-mapping maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(auto clip mobius reinhard hable gamma linear spline bt.2390 bt.2446a st2094-40 st2094-10))))))) (tone-mapping-max-boost maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 1) (<=3D val 10)))))) (tone-mapping-param maybe-type/float "") (tone-mapping-visualize maybe-type/boolean "") (track-auto-selection maybe-type/boolean "") (tscale maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(oversample linear spline16 spline36 spline64 sinc lanczos ginseng bicubic hermite catmull_rom mitchell robidoux robidouxsharp box nearest triangle gaussian bartlett cosine hanning tukey hamming quadric welch kaiser blackman sphinx jinc))))))) (tscale-antiring maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0) (<=3D val 1)))))) (tscale-blur maybe-type/float "") (tscale-clamp maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0) (<=3D val 1)))))) (tscale-param1 maybe-type/float "") (tscale-param2 maybe-type/float "") (tscale-radius maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0.5) (<=3D val 16)))))) (tscale-taper maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0) (<=3D val 1)))))) (tscale-window maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(bartlett cosine hanning tukey hamming quadric welch kaiser blackman sphinx jinc))))))) (tscale-wparam maybe-type/float "") (tscale-wtaper maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0) (<=3D val 1)))))) (untimed maybe-type/boolean "") (use-embedded-icc-profile maybe-type/boolean "") (use-filedir-conf maybe-type/boolean "") (user-agent maybe-type/string "") (vaapi-device maybe-type/string "") (vd maybe-type/string "") (vd-apply-cropping maybe-type/boolean "") (vd-lavc-assume-old-x264 maybe-type/boolean "") (vd-lavc-bitexact maybe-type/boolean "") (vd-lavc-check-hw-profile maybe-type/boolean "") (vd-lavc-dr maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(auto no yes))))))) (vd-lavc-fast maybe-type/boolean "") (vd-lavc-film-grain maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(auto cpu gpu))))))) (vd-lavc-framedrop maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(none default nonref bidir nonkey all))))))) (vd-lavc-o maybe-type/list-of-key-value "") (vd-lavc-show-all maybe-type/boolean "") (vd-lavc-skipframe maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(none default nonref bidir nonkey all))))))) (vd-lavc-skipidct maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(none default nonref bidir nonkey all))))))) (vd-lavc-skiploopfilter maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(none default nonref bidir nonkey all))))))) (vd-lavc-software-fallback maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (or (memq val '(no yes)) (and (maybe-type/integer? val) (>=3D val 1) (<=3D val 2147483647)))))))) (vd-lavc-threads maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val +inf.0)))))) (vd-queue-enable maybe-type/boolean "") (vd-queue-max-bytes maybe-type/byte-size "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/byte-size? val) (>=3D val 0) (<=3D val 4.6116860184274e18)))))) (vd-queue-max-samples maybe-type/integer64 "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer64? val) (>=3D val 0) (<=3D val +inf.0)))))) (vd-queue-max-secs maybe-type/double "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/double? val) (>=3D val 0) (<=3D val +inf.0)))))) (vf maybe-type/list-of-object-setting "") (video maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (or (memq val '(no auto)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 8190)))))))) (video-align-x maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val -1) (<=3D val 1)))))) (video-align-y maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val -1) (<=3D val 1)))))) (video-aspect-method maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(bitstream container))))))) (video-aspect-override maybe-type/aspect "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/aspect? val) (>=3D val -1) (<=3D val 10)))))) (video-backward-batch maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 1024)))))) (video-backward-overlap maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (or (memq val '(auto)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 1024)))))))) (video-crop maybe-type/video-rectangle "") (video-exts maybe-type/list-of-string "") (video-latency-hacks maybe-type/boolean "") (video-margin-ratio-bottom maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0) (<=3D val 1)))))) (video-margin-ratio-left maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0) (<=3D val 1)))))) (video-margin-ratio-right maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0) (<=3D val 1)))))) (video-margin-ratio-top maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0) (<=3D val 1)))))) (video-osd maybe-type/boolean "") (video-output-levels maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(auto limited full))))))) (video-pan-x maybe-type/float "") (video-pan-y maybe-type/float "") (video-reversal-buffer maybe-type/byte-size "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/byte-size? val) (>=3D val 0) (<=3D val 4.6116860184274e18)))))) (video-rotate maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (or (memq val '(no)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 359)))))))) (video-scale-x maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0) (<=3D val 10000)))))) (video-scale-y maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0) (<=3D val 10000)))))) (video-sync maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(audio display-resample display-resample-vdrop display-resample-desync display-tempo display-adrop display-vdrop display-desync desync))))))) (video-sync-max-audio-change maybe-type/double "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/double? val) (>=3D val 0) (<=3D val 1)))))) (video-sync-max-factor maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 1) (<=3D val 10)))))) (video-sync-max-video-change maybe-type/double "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/double? val) (>=3D val 0) (<=3D val +inf.0)))))) (video-timing-offset maybe-type/double "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/double? val) (>=3D val 0) (<=3D val 1)))))) (video-unscaled maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(no yes downscale-big))))))) (video-zoom maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val -20) (<=3D val 20)))))) (vlang maybe-type/list-of-string "") (vo maybe-type/list-of-object-setting "") (vo-image-avif-encoder maybe-type/string "") (vo-image-avif-opts maybe-type/list-of-key-value "") (vo-image-avif-pixfmt maybe-type/string "") (vo-image-format maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(jpg jpeg png webp jxl avif))))))) (vo-image-high-bit-depth maybe-type/boolean "") (vo-image-jpeg-quality maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 100)))))) (vo-image-jpeg-source-chroma maybe-type/boolean "") (vo-image-jxl-distance maybe-type/double "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/double? val) (>=3D val 0) (<=3D val 15)))))) (vo-image-jxl-effort maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 1) (<=3D val 9)))))) (vo-image-outdir maybe-type/string "") (vo-image-png-compression maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 9)))))) (vo-image-png-filter maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 5)))))) (vo-image-tag-colorspace maybe-type/boolean "") (vo-image-webp-compression maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 6)))))) (vo-image-webp-lossless maybe-type/boolean "") (vo-image-webp-quality maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 100)))))) (vo-kitty-alt-screen maybe-type/boolean "") (vo-kitty-cols maybe-type/integer "") (vo-kitty-config-clear maybe-type/boolean "") (vo-kitty-height maybe-type/integer "") (vo-kitty-left maybe-type/integer "") (vo-kitty-rows maybe-type/integer "") (vo-kitty-top maybe-type/integer "") (vo-kitty-use-shm maybe-type/boolean "") (vo-kitty-width maybe-type/integer "") (vo-null-fps maybe-type/double "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/double? val) (>=3D val 0) (<=3D val 10000)))))) (vo-sixel-alt-screen maybe-type/boolean "") (vo-sixel-buffered maybe-type/boolean "") (vo-sixel-cols maybe-type/integer "") (vo-sixel-config-clear maybe-type/boolean "") (vo-sixel-dither maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(auto none atkinson fs jajuni stucki burkes arithmetic xor))))))) (vo-sixel-fixedpalette maybe-type/boolean "") (vo-sixel-height maybe-type/integer "") (vo-sixel-left maybe-type/integer "") (vo-sixel-pad-x maybe-type/integer "") (vo-sixel-pad-y maybe-type/integer "") (vo-sixel-reqcolors maybe-type/integer "") (vo-sixel-rows maybe-type/integer "") (vo-sixel-threshold maybe-type/integer "") (vo-sixel-top maybe-type/integer "") (vo-sixel-width maybe-type/integer "") (vo-tct-256 maybe-type/boolean "") (vo-tct-algo maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(plain half-blocks))))))) (vo-tct-buffering maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(pixel line frame))))))) (vo-tct-height maybe-type/integer "") (vo-tct-width maybe-type/integer "") (vo-vaapi-scaled-osd maybe-type/boolean "") (vo-vaapi-scaling maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(default fast hq nla))))))) (vo-vdpau-chroma-deint maybe-type/boolean "") (vo-vdpau-colorkey maybe-type/color "") (vo-vdpau-composite-detect maybe-type/boolean "") (vo-vdpau-denoise maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0) (<=3D val 1)))))) (vo-vdpau-force-yuv maybe-type/boolean "") (vo-vdpau-fps maybe-type/double "") (vo-vdpau-hqscaling maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 9)))))) (vo-vdpau-output-surfaces maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 2) (<=3D val 15)))))) (vo-vdpau-pullup maybe-type/boolean "") (vo-vdpau-queuetime-fs maybe-type/integer "") (vo-vdpau-queuetime-windowed maybe-type/integer "") (vo-vdpau-sharpen maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val -1) (<=3D val 1)))))) (volume maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val -1) (<=3D val 1000)))))) (volume-gain maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val -150) (<=3D val 150)))))) (volume-gain-max maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 0) (<=3D val 150)))))) (volume-gain-min maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val -150) (<=3D val 0)))))) (volume-max maybe-type/float "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/float? val) (>=3D val 100) (<=3D val 1000)))))) (vulkan-async-compute maybe-type/boolean "") (vulkan-async-transfer maybe-type/boolean "") (vulkan-device maybe-type/string "") (vulkan-display-display maybe-type/integer "") (vulkan-display-mode maybe-type/integer "") (vulkan-display-plane maybe-type/integer "") (vulkan-queue-count maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 1) (<=3D val 8)))))) (vulkan-swap-mode maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(auto fifo fifo-relaxed mailbox immediate))))))) (watch-later-directory maybe-type/string "") (watch-later-options maybe-type/list-of-string "") (wayland-app-id maybe-type/string "") (wayland-configure-bounds maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(auto no yes))))))) (wayland-content-type maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(auto none photo video game))))))) (wayland-disable-vsync maybe-type/boolean "") (wayland-edge-pixels-pointer maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 2147483647)))))) (wayland-edge-pixels-touch maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val 2147483647)))))) (wayland-present maybe-type/boolean "") (wid maybe-type/integer64 "") (window-dragging maybe-type/boolean "") (window-maximized maybe-type/boolean "") (window-minimized maybe-type/boolean "") (window-scale maybe-type/double "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/double? val) (>=3D val 0.001) (<=3D val 100)))))) (write-filename-in-watch-later-config maybe-type/boolean "") (x11-bypass-compositor maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(no yes fs-only never))))))) (x11-name maybe-type/string "") (x11-netwm maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(auto no yes))))))) (x11-present maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(no auto yes))))))) (x11-wid-title maybe-type/boolean "") (xv-adaptor maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val -1) (<=3D val +inf.0)))))) (xv-buffers maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 1) (<=3D val 10)))))) (xv-ck maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(use set cur))))))) (xv-ck-method maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(none bg man auto))))))) (xv-colorkey maybe-type/integer "") (xv-port maybe-type/integer "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/integer? val) (>=3D val 0) (<=3D val +inf.0)))))) (ytdl maybe-type/boolean "") (ytdl-format maybe-type/string "") (ytdl-raw-options maybe-type/list-of-key-value "") (zimg-dither maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(no ordered random error-diffusion))))))) (zimg-fast maybe-type/boolean "") (zimg-scaler maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(point bilinear bicubic spline16 spline36 lanczos))))))) (zimg-scaler-chroma maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (memq val '(point bilinear bicubic spline16 spline36 lanczos))))))) (zimg-scaler-chroma-param-a maybe-type/double "") (zimg-scaler-chroma-param-b maybe-type/double "") (zimg-scaler-param-a maybe-type/double "") (zimg-scaler-param-b maybe-type/double "") (zimg-threads maybe-type/enumeration "" (sanitizer (lambda (val) (or (not (maybe-value-set? val)) (and (maybe-type/enumeration? val) (or (memq val '(auto)) (and (maybe-type/integer? val) (>=3D val 1) (<=3D val 64))))))))) ;;; Generated code - END. (set-object-property! (module-ref (current-module) 'mpv-profile-configuration) 'documentation (generate-documentation `((mpv-profile-configuration ,mpv-profile-configuration-fields)) 'mpv-profile-configuration)) ;;; ;;; Configuration base. ;;; (define-maybe type/mpv-profile-configurations) (define (serialize-type/mpv-profile-configurations _ profiles) #~(string-append #$@(map (match-lambda ((name . config) #~(string-append #$(format #f "[~a]~%" name) #$(serialize-mpv-profile-configuration _ config)))) profiles))) (define (type/mpv-profile-configurations? alist) (every (match-lambda (((? symbol?) . (? mpv-profile-configuration?)) #t) (_ #f)) alist)) (define-maybe type/extra) (define (serialize-type/extra _ value) #~(string-append #$value "\n")) (define type/extra? string?) (define (serialize-mpv-profile-configuration _ config) (serialize-configuration config mpv-profile-configuration-fields)) (define-configuration home-mpv-configuration (global mpv-profile-configuration "Globally valid settings, outputted before any profile.") (profiles maybe-type/mpv-profile-configurations "Alist mapping additional settings to specific profiles. Key should be a symbol, value an instance of @code{mpv-profile-configuration}.") (extra maybe-type/extra "Additional content to append to the end of the configuration file.")) (set-object-property! (module-ref (current-module) 'home-mpv-configuration) 'documentation (generate-documentation `((home-mpv-configuration ,home-mpv-configuration-fields)) 'home-mpv-configuration)) --=-=-= Content-Type: text/plain Content-Transfer-Encoding: quoted-printable =2D-=20 There are only two hard things in Computer Science: cache invalidation, naming things and off-by-one errors. --=-=-=-- --==-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQJCBAEBCgAsFiEEt4NJs4wUfTYpiGikL7/ufbZ/wakFAmdXCQwOHH5Ad29sZnNk ZW4uY3oACgkQL7/ufbZ/wamT4hAAg8D+H05v8RtRA4NjEP/K429gwVFI+rwBZ8Qh kHr9JRHcUyeW6KoWXaE+ugRIqFALTv9wDj8LlZeA6XMKVar55ZvJN42JNKr9Vxi9 Su3aXSwZ8ou8NwiVs/2bkS9PpEM2yEA1vclQ5R1w4MybuJ3OCXkDNZ/st++CzKiJ ydZLy4bkxwvpX4KG0L1m0V9cA0rEn8lo09TpGLdwyptJd4OJMZ691MoFEnwZUVlx 3O7JyO3mh7ZeaGZvH3y8g1qG65/f3HAtk9Af3nr1ukHJ1NEu4czb9vSE8DL9mTKx Je9mOUqKn6e6r8oYfpgk1KcANpiv+s4nXSx4vtmcWstVKpkss0vH/FuYepvN2eUp 70EyMSDA3MoZ6Af9+sS3XFx8J8nNfacqkvqWS1QV1jykEk++s4xRjsZkb+ki56sj jj4O3wF1PwzZZg4tKgJvOtCnwGZt59XOK8ZpM5KdwNhdIeMsVu6/9wVB+bWoXdC3 HX2XoDw1KugQXgFr6xKfoyvktOkxYfCN7TTGiWhYxOGK2GBUlnVki4J5VYfsokqx u18wjBYxQQZkKz196UBPRAW/SM0tjXbj6xGr0yePPQVpChxANvZRqiEoxjEYZ4sH TMbAlfEwUTfgS20yv5p9Bssw4d4p7CY9FUS4pLiiXOMlJ9APGM2DiKE8jnFsTvQh oTgtbD4= =4w6D -----END PGP SIGNATURE----- --==-=-=--
Tomas Volf <~@wolfsden.cz>
:bug-guix@HIDDEN
.
Full text available.bug-guix@HIDDEN
:bug#74748
; Package guix
.
Full text available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.