739a5f76bf
ci / web (push) Successful in 1m3s
ci / docs-site (push) Successful in 58s
decky / build-publish (push) Successful in 16s
docker / build-push (--build-arg FEDORA_VERSION=44, ci, ci/fedora-rpm.Dockerfile, punktfunk-fedora44-rpm) (push) Successful in 8s
docker / build-push (., web/Dockerfile, punktfunk-web) (push) Successful in 7s
docker / build-push (ci, ci/fedora-rpm.Dockerfile, punktfunk-fedora-rpm) (push) Successful in 7s
docker / build-push (ci, ci/rust-ci.Dockerfile, punktfunk-rust-ci) (push) Successful in 8s
docker / build-push (docs-site, docs-site/Dockerfile, punktfunk-docs) (push) Successful in 43s
ci / bench (push) Successful in 5m21s
arch / build-publish (push) Successful in 10m58s
docker / deploy-docs (push) Successful in 28s
android / android (push) Successful in 13m23s
deb / build-publish (push) Successful in 12m58s
ci / rust (push) Successful in 18m5s
rpm / build-publish (43, bazzite, punktfunk-fedora-rpm) (push) Successful in 12m31s
rpm / build-publish (44, fedora-44, punktfunk-fedora44-rpm) (push) Successful in 12m56s
flatpak / build-publish (push) Successful in 5m53s
windows-host / package (push) Successful in 14m37s
windows-msix / package (arm64, C:\Users\Public\ffmpeg-arm64, --no-default-features, aarch64-pc-windows-msvc, C:\t-a64) (push) Successful in 4m9s
windows-msix / package (x64, C:\Users\Public\ffmpeg, , x86_64-pc-windows-msvc, C:\t) (push) Successful in 4m15s
windows / build (aarch64-pc-windows-msvc) (push) Successful in 5m12s
windows / build (x86_64-pc-windows-msvc) (push) Successful in 6m6s
apple / swift (push) Has been cancelled
apple / screenshots (push) Has been cancelled
release / apple (push) Has been cancelled
The Apple client now decodes PyroWave natively on the presenter's own MTLDevice —
no MoltenVK, no upstream C++ in the app. Completes and wires up the decoder whose
early working-tree snapshot rode along in 9127c346:
- MetalWaveletShaders.swift: wavelet_dequant + idwt hand-ported from the vendored
GLSL (STORAGE_MODE 0 only; subgroup scans → 32-wide simdgroups; DCShift spec
constant → function constant; precision-1 split: fp16 levels 0-1 / fp32 2-4).
- MetalWaveletDecoder.swift: Swift reimplementation of push_packet/decode_packet
incl. the Phase-4 chunk-aligned window walk (FRAG chains, zeroed missing shards,
the >half-blocks partial rule), init_block_meta's block-index space, and the
42-dequant + 13-idwt dispatch structure with encoder-boundary barriers. SOF-dims
changes rebuild the size-dependent resources, which is also the mid-stream
resize path. Ring of 4 output plane sets on the presenter's queue.
- Presenter: pf_frag_planar (3xR8, the planar_csc.frag twin) + renderPlanar with
a shared present tail; ReadyFrame carries an image enum (.video | .planar).
- Stage2Pipeline: a dedicated PyroWave pump — no VideoToolbox machinery, no
keyframe/re-anchor recovery (all-intra; partials render as localized blur by
design), newest-frame-index staleness guard for late partials.
- Opt-in: "PyroWave (wired LAN)" codec entry (probe-gated, ≈A13 floor via a real
kernel-compile probe), selecting it advertises + prefers the codec and forces
the session SDR (HDR/10-bit/4:4:4 caps dropped, plan contract).
- Core ABI: punktfunk_connection_shard_payload() — the Welcome's negotiated shard
payload, needed by native decoders to walk chunk-aligned AUs.
- Validation: golden fixtures generated by the host encoder + upstream's own
decoder (pyrowave_dump_golden, RTX 5070 Ti); the Metal decode PSNR-matches at
77-88 dB across all planes for dense AND chunk-aligned AUs, and a hole-punched
partial still decodes. Parser unit tests cover the window walk, FRAG chains,
broken chains, the half-blocks gate, and the block-index layout.
Tests: apple 134 green (mac; iOS/tvOS build), host 312 w/ pyrowave on .21,
core 148 w/ quic; clippy/fmt clean.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 line
9.0 KiB
Plaintext
1 line
9.0 KiB
Plaintext
qqvssuvw����{{|}~�|{����������������鴂ㄐ�坏����妒限妣咿����秣革祚捲﹝﹞忙ㄑ兢蝶遣撩型狙帚垂螟藍斃豁uuprvrwu����zywy{|�������������������奶ㄕ����尼帖咩型����眷假扈粥�椬不ㄒ溯熄遘遞妝壯帕物噢墾謊擬qqqrsvrx����y{{{z|}|����}�����������椬�𨯂﹞����言牧爭咩����炬秣降掖╮𢒰鰊ㄒ毓熄虜兢炊赤妣型蝙遝螞釋rsupstvu����wy|y{x}{����z��������������攟����佂妒帕帘����臁掠秤眷恣𢶠椬═ㄡ眶虞韌握岱妨旨氖噱螃蝓聳orsprtr����vw{y}||y����}~������������﹜�����𨫥坐咻赤����𤌍洮陌盔恣���△飧斐溢髡它版巧那遝蝗臏鴛qsqrqqp����wwyzwx{v����|~������������𢒰椬����働不角忙����嵰囿乾扇��﹛�嘑集眸葆舅之不圻宏厭撢播緻mmpooro����uwtuwxxw����|||������������������中巨它巧����咿帑革鬼����假歲斑陶中之言奴蕃蕉凳瑭koonmnon����wwxxvwz{����z}������������������丐�奴孕����垠洹為祗����眶須盔陬﹛弛坏坐翔蛹蝸撒�����tqsutst����tyxyzy}y����~~������������椬迚����𢬢豕戎予����𡛂陌陋悅����聣絮僱毓椰岱貝爸������nsrqtooo����vtz}zzwz����}~��~}����������椘�攟����丹戍坏尹����祝悌悌偽���ㄑ陶韌殿紫戎奶岱帕}�~�~�mqpppqtp����yywvxz{z�����}|�������������嵗����╰岫戍之����型悌限陵����絞斯順絲═ㄚ戍坐�|�~z�lmlqoptp����vrtyxyux����||}~�����������������不中丐巧����狀祟洵偺����眺雪絮絮丐孕圻ㄗ{|}�~~lnomompo~���ōtvyvsv|�����|~|}����������������﹛ㄐ奴丐����貝帚洫垣��䐓�眾陬散項椬ㄕㄕ扣x~x�~{}mnjlmont����xvqvuwww����}y~||�}}����������������‘ㄐ圾����𨫣狀悍悚����𦁈眼探陶等﹛弛不肝{yy~y~�mljmnnn����strsrxv����|}|y}{y~����������������𢒰�孕孕����成囿洸帖����秤眾偽接ㄑ叚�戎yv{xz~{zhkllhkmn�����ssuswtt����|y{||z}}���������������𦜖�﹝ㄒ����慐岱左洸����躀韭秩陴部𢶠��叉gffighk||}{}|~�mmoqrpq����svvtxuvx�����}|}������������������錬ㄔㄒ巧����𢥫物洮炫����业斐眾飪辜bjehdeg}|~|{~~jlnqmnqr����vuxtutxw����zy~|������������������ㄒ孕╪岫����咿洵垠洵����眷探探斑dcceeceh|�|}~{}~jommonll����tvrxvvvs����}z||}{~�����������������丑榀﹝丑����洩帘型幸����盛拳眷項cbccdghdy{}{z{ymjkkmlko����rqssstvv����xy|~{}}|�����������������迚𡵆之����豆妨妣帚����盒皎秦陷acdcadecw{|{{{{fljhnloo����rppruqoq����y|y|{~z|�������������������陁����戎豆牧戍����祚盒秣革dbaafbgbxy|z{wz|igihhjjk�~��pssntrqs����xyt{yxwz����~�����������𨋍�﹛�����袇岱奶型����芦停陰偃起`c]``dd{{w{xxxiikkkjmn~���pprqrrs����wv|y|~x}�����������������𢖍攟�鰊����之豆物言����高城秧秣_b`aabcdxuuzyyxxhfjjghji~}~~}nooonnoq����uwvy{y|y����~�|�����������𣪧�椬����中豆圻坏����垮悌垠洎qstsswvrcaabaedb{yx{{{|{lmikiolk����uttuuut����y{{~}{}~����������������鱝椬鰊忙����托爭囿咧����rrrtqsuvac_cffbiwvzy}y|zflkkilkm����ísuuprrr����vxxzzy|z����������������嵗╯䣳����慐夾它貝����𦨭sqoppuq^`dbbdcby}yyz||{ghihjinl�����oporpqu����xzwxx{z|����~��������������ㄒ����ㄖ不豆走����looossqu_`a`bfbdxvuvvwxyhdfkijkn~�~���ooqsppqt����{vwuyx{z����~��������������╮�����不成妒爬����lpmmoppt``^c^fcbt{wxyzuyeehhgjkk�}||�qpnnrps����uxyuuz{x����}�������������������ㄓㄖ戎扛����npopomoq_]]b^d]brwywwtvwgegegjgk}{��|�mkrknopq����tsrtyvwx�����|~�}~�����������������╮它╪孕����kkmnpqqp\]\`___dtruuuwxzdegdgekh~�~�jmnonqqq����tvtvvwyx����|}||}{�����������������失ㄔ’忖����kkmjlpmn]_]\]_`_ostyyuusgfgedfehy{}{|~�omponlpo����swwvuwtu����z{y}||}~����������������═ㄐ中忖����UYXWZXYZlmrqnrsraa`__a`cututxuxyfjhkhiij|{�����mrrropo����szswxw{|����}~������������﹛嵗����ㄕ見帚帚UYYZYW[\qnnnsqoo\^__bfcbvxsuwwyzdhdhhggg}{}~��nmqqppot����srxxsyww����~~������������������╮忙夾版SWUZVYW[omonkppq][^]`^`dussxxwvyffeihege{||}�~�klkoqps����swsyxu{x�����|~{��~����������������均圾巨丰TWXYUYVYmlmonmnoX[]_b\a`suuuwwwwfeddfifg|}{}�lpnmpplo����wsusstww����{|}z}~���������������揢╮﹛奴努UXUXS[Vljllnnmo`[]\\^]aptsuuxuvdbgcdfhgzyz}|}~klmnoonp����rtwrtuxu����z~z}~����������������═╯‘ㄒTRWSSSVWlmjnkjkkZW\]\_[_pssutvvubfeccaee{x{z~~ijmmnjpl����ssqvttww����||{~}{}~����������������嵗╰═不WQVSVWXTflklnjnp[\[\[^]`trsuurtu_abf_bbiz||x|{}}iklijkpn����qrtrrruv����z{yy~{}z������������������ㄒ�﹒QRTSUSVgmjkinmjY[Z[Z\\^qqqrtquqadbdcadexxv{x}zzhjjlloil}����qqruott����yy{{z~zy�������������������╮ececifeiTWTTWSXZjimpokmn]_^\a^abswtuwuysfeehddeez|}}|y�jmnnnnnq����srsxsxy����x|{{||�����������������dcfcfejhQSRTXVUYjjlklioq^\[_Za__srqtutvw^dcdfchfzy|~{�zinonnnll����uqwurswu����{~~z|~|����������������𠩯bcfegeiRXUWTVTVkjlkokok[\]_^]^Yqprttqsv`gedgdfg}{{}|}{~ikkokllm����rvrttstv����{yz||~y����������������a_^ebccgPRURSUUSgkkkknijWZ]\ZZ_]ssqqstqrbbdaddedv|y}{xy{ihliiloi�~���uustusq����yywy{zy|�����~����������𨔼^ba`caeSOPRVTUSkhgkkjhpXXZ\[^[Yppqqsqvsaefcbdcbwwwzy{{�ehkiijki���~�poustttt����z{{{y|~y����������������醶b^d]ccdPQONOTTUkggiigklXXYYZ\Z^qopsrtsq_`_`baeewuyxxw}}ifkkhiik}~���pmsrrrp����vxvzxyxw����}�����������𠰋a`bdcdbOOORPOSRegjkjjikWWWYXZ]\mqsnqpoq^`__b_b`vwx{zx|}ghgjifgj{}~|��ooporpq����xsvyyyw{����z|~}~���������胬^aa``bdNLSRPQOUdiiejghiWYWVWZ\\mppmoqqq`]^aac``xvsvvz{xgfggghgh|}�~�rmmnkloq����ttuuxzwz����||}~~}|��������𤶸JJLJOMLdaecadedQQOUVUVWggijglknX[YZ[\[_osrrsqrtbb``bfeeuvyzyxz|jijgkonk~����trqssrq����vwz{}zyz������������LKKJLMJLb_bacbcfTORQUSQXlfkjimgkWYY[]][Zoprprrpp\`cbbcdbzvu}yv|yhkelimlh}~���qrqrppt����xxzz{xyy����~�������燶JHHMHHM`]d`baccPQOTPQSUgfkggigkXX[YWZZZnooppprqab__acbctvwxzvz|fdgfjifn~~}���rpprlsrr����yuyxxvy{�����~}������柖KGJKKIJ]___a`b`PQNRRRPOfeggihghRXWW[ZY[momnqnrp_^a^^acdvxvuxzxxedjihgjk���}�lpnqsoq����wtwvwyzv����~�}}}}����稆GLCKJGH]^__`^]bOONPOSOPeefggfghUZXWYWYVlnnmnmqq__b\]```uswuwywzdcgciggh}{{z~~~lqnqporn����wvvyxsyz����}~~}�~����𥟟EHHIFHH^\`[]_abNLNPOPQSebgeiijfUUVZUVVXlnlnnkqm^^[_[]_^ptvuwytuafccfiei|{||}}}olmomoot���艺twxuxuw����w}}z~�|����𣸱DDHHFEG`\[\]_\_MLQPNOOOeecdehdhSTSSWTXXkmmljmom\\ZZ^]]_rupswurvcfdccfhb}{y}{|}nmkjnnnm����tqswurw����zy|{~~}����DFEBIGIG][X\Z_a_IKJLLOQRcceeecdfRUXUTYSVkminmlnoW]Y^Y^\^prstuutwcbecccjf{||~zyz~hhgmmjlr|����qussvsu����x}}yy}||����VXZUXWVYGIFGKMKJa]`a]``cMMPROPQTfbffggikXWWUU[[Ymlpoomrp^a``a`^awusxywywgdeikjjh}~|}�}�mkoqprrp����wurwxzxz����{~~~~SWSVXVZZIFHKJIJJ]\]_aa^_MNPOQRRQhegeedihTWSTWTZXlmjpnpkp^`^`]ca]tuuxvxwxcggjejhd}|||~|nllknmno����suzwx{xt����|z~{���UVYTYWWYHEDGHLHG^[]Y^b``NLOONPPP`dbhcgdeWXVTXVWXmmoonjnoX[^^^]a_rrupusyxefbffeif{~}|}|~inollmqp����qwwwwtw{����|y~{z�{}SUSXVVXVFECGHGIJZYZ]]_`bOLOMNKQPdabbfghjUUSZYWVXjlkmnnnq\]]]]``_suuruqxvddggdhfd{{}|}~~jinplonp����uvstvswv����z{~}}|{UQTSTUXYHGIIHJIIXZZ\\Z[\POPOMOPObcfcbfecSWWWXXZVijhlkmkqZ__b`b`bqoqtstwwbdbehggfyy{wzz{|jmnmoppm����sxuztwt����{~||{~|}SRTPTWRVEHGIJKIHYZZXZ]]]OONNTQSPbbeaebdfUXUUYVZ\kgljjilm]]a_a_^aoorsroqufcgghflivu{z|v{|llnlnmnq����svuyyzwu����|{}}~~SRSUTTRVFEIHKJKLX[Z\W[]^QPNOOPORbb_c`ccdVVTXWXWZkikghljk[[_b``_cqrrntspscddeiggiwyywxy|znqloqqtr���vuwu|{zw����|~}~�}OQQTSQRTEDFJGJKLYWZ]W[[ZNNPQSPRT]`abaedcUVYY[Y\Zhdgikjfk^^a^b_`asrqorrqqiljklhmjvxyxy{w|ptqpqpnq|���xxuvtzx����}}~}~DFEDEFGERTRUWVVYKLLLONLOXZ\[\[`_QVUXUWRWecfdffgfY[\^^```iilnjlkmaddeeekepvrsvsttijlllomn{zx{{z|�tvtssyvy����xx{{{z~{����EFIGHHIHUSPSRSSVNINPOLQPY]X[_\[]PSWSXXUVbadedg`gX[^_`^`_gmimjlllbfeadidhsprqstsuljnnolonzyz|zy|~uvvurwvu�����{{|}~z{}����EGEFJHJIQRTVWTUUMMOQNNMT[W\XX[]_SUQVZVXYcabeehdc`Z_^\\a`egnijkljgeecjcghorotqtvwnnnmnmmrvw|z{{{{sxtuswzt~���{~{|}}~����IGFJFGHIRRPTVSSSLJQQMORNUWY\ZY\[QTVSXWWY`__cbbcd]^_[aa_^eghinhineggiiifkpnrpqqspomlnmpnnxzuzyzwzvtxwvwxy����|}~~|����FFIHGGFGQRQQRSSSKPOPORSQX\XV[][]VTUZWWTX^_accc^c]^_^_^`]fcfjgjhideiggfihnnqmmmppmmroqpnryxuywz}{vtuyyytw~���~|{|{}����KIGHIHJKMSOPQPRVMOQOMSVQWSYZVYZ]VUVX[Z[Z[]``_d`ab`a_ae_behiifijlighifehhkolmqrnpjkpqoqrtvuvyuzwvrxxvwuzz{}~~��}}~����HKKIJIHLJQORQOPRNNPTSRQWUTZWWVVZWZWZXZZZ`]_^__```a_bbc^bfggdgdkhefjggjkikjjnqploonmrqqqtqtxtwx|uttxvzywy~}~~~~�}|}~~�����KHHLMMMQNLNNRTRMMRQSSPSTVSZXXXYYV[Z\\\^]]a^]`^^]`baab`edddehghghhgklkmilhjommoqoolpnqsrrtvxuszuxxzxwxx{{}|z�}}}{�������� |