Files
punktfunk/clients/apple/Tests/PunktfunkKitTests/PyroWaveFixtures/ref-dense-cr.bin
T
enricobuehler 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
feat(apple): PyroWave Phase 5 — native Metal decode on Mac / Apple TV / iPad (§4.7)
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>
2026-07-15 12:16:43 +02:00

1 line
9.0 KiB
Plaintext

tttrwwtwxz~{|}{𦹄﹞═圾唂岱貝悟熣筏秩陷窗ㄒ╮╪ㄩ飪蝶撮憎妣帑狎玷螃謐擢礬tutuvqww~~x||}~╰═言成夾辛偺偃眷盛嵗﹜ㄓㄑ溢葭飯遘托帚版囿聶蕞臏醴pmtsrusvvt|zz|~}嵗╪岫帘帖版秣偽假盔迚ㄐ兢陬飪熄貝貝足妒鄘噯臏謠pqotporsx|wy|y~}~~~夾巧成豆洵韋皎絞ㄐ項絮給毽丰谷赤版噶壇臍鐘orsnnppqxwxywzx~﹞﹛╮ㄗ岳岱圻重型鬼掖﹛章陷給虜它圻坏扣遝播擰噶mnqoupqqzxuw|xzy}𪈳ㄖ豆谷䔮酊炯掠聦晰晰須閎丰炊爬死蕪蝦講緻lonspqpwstxuwyy{~╰“豆之陋垂狗拳╮斑絕眶硃ㄓ不尹之嗾瑰擦播kqmrmoqswrxxvwyzy~{z~~﹞ㄔ尹ㄓ帑車悌陋辺假絨接雪ㄑ式弛夾匱遛謎遝}snpquqrzwu{yyy|貝赤爬狀降拳乾悅普雲須辣奶岫帕郃{sqqsqvtwwwyvy|角尹豕貝陋悅秤秣毓絡飩晴見╪爭岳z~|}}olorqtrq杮wvuvzwz}}璍ㄖㄑ巨𨯵洸洵洫𨺗散晰眺間╮豕成芒{mkopomrqwyxvzyy{~}}~式ㄓㄔ妨囿悚限乾捲眸溢順ㄓ忙圻它}~}~}pmnonlrpttvuwyvy|zzㄒ丰岳狀垣悌雄假順項ㄕ巨|}y}|}~jolmloppurpttwwv|{{}╮╰ㄓ中貝物妝狗秦偽接散攟不丐戎zw{}~}|hmlomlomvutrvwtxyx{z|~|}𧚔ㄑㄒ挷成爭足𧑐租陰秩鴂奴豆屹zwzy~z|hhnkiklkqprtutwz~zz}|y襍版爸岳𨭬盔扇捲鰊孕刃fggghjjy|~oponnrqqsrwtuxz|}~ㄓ坐╞慐垠神洵𡆇絲絡斑搏egffgjj{}znknnlnnpvtswvxvz~}|}}~不╰丐忙妞物洩垢陸偌雯陷fbdigifh{}zz|}{mjmnmqorvsutszx{z}z||╰不孕╡赤妞洸限秧捲雯絮aecdeagg|}{z~||{jlkmmnkpovxsuvusxxy}{|ㄐㄓ‘𥚃洩夾豆𧑐假掠結巢gcffeib{y{x||{{ilinkhokqqsruuvu~wx~||~|丑丑迚ㄒ成ㄖ洵物秩眼租結bbbaebfexuyx|{|zjikijjmnqnptqroryuzxz{|y~鱝鴂叚夾扛咩洮戚眷盔陳d_a_fbccvxz}xw{wfiflkilk}}~psqpntswvvyy{z}}攟𢶠迚岩它圻咧洫祝偌陌[_d`aaaeuszwwwxzhigiflkn}~|}sqpsnsptvsuxzz~|{}~~~𢒰藁戌見岳氹戛租捲島pssvvsveb_bdcgfzzyz||~fjjkjkplprprussvx|wv|}{|中迚﹛尼帚版酋stosqtqr``bdgchduuzyzz{{ingmkhklnsrupuruyyzx}zx}𨯂戎帘妣赤pqpsvqrscebfb_dd{w{yy|yzjgjgkljl}~opqrptruyxyxw{{{鱝迚豕左戍岳pporqqur`_`bcbacwxxzyz{wgjgliihi~nlqorrswvxyz}z~{}|~坏扣戍妒oqnnstqpb`]^cb`ayxuxwww{ihgfjilj~~}|lorpooppzvuzvuwz}~}~蘂夾ㄒ岸馪olmkoso^``abaaavwvwzwz{hfgglgljy~{}|onlqmqpnxsyvyxwv}}不ㄔ豕言oknqpmns_]^^c^c`rvvtwuzxbeggggfh|{|~}|kpnoloonwsuuwwtz||z~~迚ㄕ言角nmilknol]]^^`]`arsvtsvuwfchefeiiy~}z|gnnonqpn杮txutwux||~|{~它丑孕UXWZ]XY]mopnrprt^`^``ac_uwxuwzxveejifjjlz~pmqqqpsrxuvzxyyy~袇忙ㄒ夾冊X[WV[Y\nnokqsps_d^_adbawvxvzzz{egfflfik~|{~}lmonprquxw|x{xz}|{嫃之妒扛冉TYWWZWYmpklqoon_^__]^^_wvvuvuxvfhdfghikxy{}|pmmjkpsrruvwvwzv}z|~~|不ㄒ圻戌UTWXVUYUmlnnmoon__]]^_^`wssvvws{ffdgchhiz|}{}lrpomtnqtttustts{}~}}═忖巧奶TVTWUSVXkjlloknmYZ]_\]^`vrwurxwvd`cecgej{zz~}~}mlmpnmqpruvvuvuvy{}~}}z鰊嵗丹尼VRUSTVVWmkkjmknk]\Z[\[\cqqtvvvzrcbbafddgyw{|{|}|kkmkmmomqussurxv}{x{~}}~边﹝═QNVQVVSUjljllkmoZ[YY]^[\nqrtsvptcbfeafef|zwx}{|zkkklmlllqrptuusu}y~{{yz}黾嵗ㄒTRPPUVUSkikkhjjk[ZXW\^]Wpspustsv_ab_cgedxxw{v|}|jflkilimrortprrywzz{|yz~╰丹bcchggjgWSUZVWVVollllnmo\_^]^___rttwwwyydb`cjfki|{z|{|kkmmlponsswtsvw{xy{|}|~cegbfehiQWWVSWZZmlkijlmjZ^\Z_`a[srvuwrvxaafgcbfgzvy{}|~lmkknmooputxtuww{|{{zz}`ddfafbfSVWVRWUYklnimmjnZ\Z[]^_]sususrttdfdeagfdxw{|{|{ghlhokioquqvtqvwzv|y~}|}檧adcccadORTVSSUTlihkmiik\Z[Z^]Y]pvrqqstra``e`efe{zzxyzzzgjhmlmmnoqpvqtrwzyyzz~}_aacccahSNRSTSQThjmjlikkXZZY]^]Zroqrrqss_`dbabddwzyzxxzyiihillnj}}prssnrpyzwz{yy{嵖```baecQPSTSRQTfhmgilmkUZ[[[Y]Yopqroppr]d_`_bbexvuuwyxyhhilkkfk}|~pppmrsrwvzzzzx{~{^a]_d`c`QOOOROSRkigegjjmXXVYZ\ZZnmqpqppr_^b\_]b`vxvwyxzwjggfjhjl}mqporuutuuw{y|v}}}腭_c^]a`aRMNRRRPScdifjhkhZS[XYZYWpmpqpsqo]]`aaabdtsuyvyyxgidghgglx~}~~~llpoqspntvqw{wwy{z}|NKLMLNMNaa^db_eeUSRVTTYVhjihilkj[Y[ZZ^Z]oqsqsupxdc`e`cgaxxzx|{y{jigljmhnpqrsuusyzvwzy{JGKKHNLM`^abab_gNRSSVTQTfjkjllmhZZ[\Z^[^lnmqrqrr_a]]adafxtytyyvzfgfjjhpk}{~lpooroqrxwvwxx{|𣿯HGLJJNJ^]b^_daaMURQRTPUhfjklgkhWYWYZ\[Xomoqnstr^a^`bdbcytwwyz|{kfggjklj}}mosmrqqrvxxw|u}{||~𡜺GJJFHIK]`_]_^a`MQRPPRPQgeffejiiVVVXXY]Xrrkmoknn_]`_aaceuwwuxvwueifighhi~{|~pnpppqpwvvwxwzy~}𨦉JEGIIJH]`b_^^cbONPOOMPTheecfgijVXVVVX]Yllpnqqor\\^Z]^`bsstssutycifhigih{z}~pnnrpppuvwuxtyw|}}~{GHGJHGJI[]]^_^c`NKRMSRTPecddficeTUVWWV\Tpklmkqqq\Z]]_^a_vsvxwzvxgcbegihh~z|}|~lkppimputyvrtvwx~|zCEFFGFIE]\]Z``[\NONNQNOOaebjdffgSTXVSUYZmlimmpmqX[\\\`a`psusutssebegffeg}xz|~{{flmmpnmnǐtuqtqvzzy~}~{BEHIDFEG^X\[_]_aNIOPMQNMfbeebdbeTTSTUYUWlikmnkjl\\^\\]^^psosrtsuhecdgecfxxz|}|}ikhjklonoquwsupu{||z~~YWVXV[YYIGFKJJML^]^cab`aNLQQPPPSfffjlifgWWXSVX[[jonnsopp]`_a^ab_wtvuvwwugfjhhighz||mlnooosrttvuxywz}}~VUUWVZVXHIDEHMJH^\aa`]abJJPORPORfcffjjiiVUVYYXYVnlnmnnpq`]__]__`tuxxtxwwhhdcfjik~|{{~njmoppnusxvyztu}z}~}}TUVUUWWWEDEEDCFG^^__`b^bMMPKSRPNaddfcggeXURWWVXXmkmmopoqZZ^a_aa_rstusuwvbehfegfg|z{{}~{inlrisnosrtwryuv|z{}RRUWXWVYBCDDDKGEXY[\^a\_OKPMPRRQdabfefdhUUWYWYYVlmklnhklZ[Z^]]`^vsrpwurufhgeffehy{~x|{}~pknqmponusrtvwvxvzz{~{~|RVVXUWXUFHFJFLJJX\^[aaZaNMQPPQPRbeeefffeSTWXSWXZjnkojmmp\Z\_\a\^qrrssrxwdcddhdkhxzz~{}z}kklnonnpusvwywyyz}|}~QQMRQPWSKGFJHJHMY[Y][[]`LQLOQQROaadbdbcdUVUYW[XXhfiomhol`\`^`^_`qrsqqpvshedghfgjx{xy|xy}mmkmqttqtwuuvwxz~||~~}QPURTQTUHIHFKHHIZX[[]_Y[OOPKRSOV^_bb`cefTVXWYYYWhjjhmfmj[b`^ac^^pprttosrhiefkhfkwwwwz|z{jllmqqlpuwtv|vvy{|~|}~}QPSRTRTSLGIJKIIM[[XW\ZZ\RTQSPRSQ`be`_fb_VXYXZ[ZXdfihkkkj\^`a^^b_posqrrppkhjghglhxvx{x{w~nknorprt}tuxvxwzz}~~EIECHHEKVSTVUVXYJMJPRNSN[\[[\^^]RUSUVVWXcecfgehf[^\Y]]^^lkkplomjbc`dcgddopqurwvulkmopnkmzy{y{~~|vnqupuvy}{z||}}DHGGIFIMORURWSUSMINLMOOPX[[^]^\]XUVZXWYWb`bdeefe][`^]\`]jihmmijoedbebddkosrurrwynlklqmnlxxyzx{{{qvsvusvt~{zz~{{~~EBIDGGFGURRTROVSOOPLQNRQ][[\Z\Z]XTUYVZZX`dbdbaeeY[]_]^_ajjjkmnmlbcehcigjrnstsqrslkloonppy|yxx{yzpsvyuwsw~~{{||~~}~IEHGEGHIPPPTSVVRLOONNSPRZ\X[[YX^TUVXZYZU_a`a`bbf^a[]^`a`ieiifiglbfghihhgqprqrvvuhllqmqnoxvwuv{|zwtsrsxww~|{~|~DHIJJFJMRRQQSVTSKROPOSRRZ[UYXZ[[UWV[ZVUZ\`_acbc`[\_bbacbigghiijiffjgghggqnrpqrqtpllomopowvwuvwv|rtsuxzxu|~zy}IFHFKHKIOMPNQRTSOOQRNPQRVWUXY\^XSTYTV\XZa``_a_aab^^]``abjegjgkijeghfjikglpnqqqqpimnoppopttvxuvxusxtyx{ys~}~}}|~FJFKFGLIMOOORVSOROPSRTSRXUYYXUZYYUWYWY]]b]_^]ac^^b_b^^b^ddgehhjidfhghhhjkmnnkmomnqpomqmpvsvyuuxxwrvwxw{y|{|~~{}~~~~HMHMGKHKOOLPOOOSOSQQPVSTUVVUVWVWZY[YXYZZ___\a_cb]]ad`bccebfhieiifhljjkjjkkollnpqjsrqrppstpuutvvxxuvxyyyy}z{|~}|{~}