Files
punktfunk/clients/apple/Tests/PunktfunkKitTests/PyroWaveFixtures/ref-chunked-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

qqvssuvw{{|}~|{鴂ㄐ妒限妣咿秣革祚捲﹝﹞忙ㄑ兢蝶遣撩型狙帚垂螟藍斃豁uuprvrwuzywy{|奶ㄕ尼帖咩型眷假扈粥椬不ㄒ溯熄遘遞妝壯帕物噢墾謊擬qqqrsvrxy{{{z|}|}𨯂﹞言牧爭咩炬秣降掖╮𢒰鰊ㄒ毓熄虜兢炊赤妣型蝙遝螞釋rsupstvuwy|y{x}{z佂妒帕帘臁掠秤眷恣𢶠椬═ㄡ眶虞韌握岱妨旨氖噱螃蝓聳orsprtrvw{y}||y}~𨫥坐咻赤𤌍洮陌盔恣△飧斐溢髡它版巧那遝蝗臏鴛qsqrqqpwwyzwx{v|~𢒰椬働不角忙嵰囿乾扇嘑集眸葆舅之不圻宏厭撢播緻mmpoorouwtuwxxw|||中巨它巧咿帑革鬼假歲斑陶中之言奴蕃蕉凳瑭koonmnonwwxxvwz{z}奴孕垠洹為祗眶須盔陬﹛弛坏坐翔蛹蝸撒tqsutsttyxyzy}y~~椬迚𢬢豕戎予𡛂陌陋悅聣絮僱毓椰岱貝爸nsrqtooovtz}zzwz}~~}丹戍坏尹祝悌悌偽ㄑ陶韌殿紫戎奶岱帕}~~mqpppqtpyywvxz{z}|╰岫戍之型悌限陵絞斯順絲═ㄚ戍坐|~zlmlqoptpvrtyxyux||}~不中丐巧狀祟洵偺眺雪絮絮丐孕圻ㄗ{|}~~lnomompo~ōtvyvsv||~|}﹛ㄐ奴丐貝帚洫垣眾陬散項椬ㄕㄕ扣x~x~{}mnjlmontxvqvuwww}y~||}}‘ㄐ圾𨫣狀悍悚𦁈眼探陶等﹛弛不肝{yy~y~mljmnnnstrsrxv|}|y}{y~𢒰孕孕成囿洸帖秤眾偽接ㄑ叚戎yv{xz~{zhkllhkmnssuswtt|y{||z}}𦜖﹝ㄒ慐岱左洸躀韭秩陴部𢶠叉gffighk||}{}|~mmoqrpqsvvtxuvx}|}錬ㄔㄒ巧𢥫物洮炫业斐眾飪辜bjehdeg}|~|{~~jlnqmnqrvuxtutxwzy~|ㄒ孕╪岫咿洵垠洵眷探探斑dcceeceh||}~{}~jommonlltvrxvvvs}z||}{~丑榀﹝丑洩帘型幸盛拳眷項cbccdghdy{}{z{ymjkkmlkorqssstvvxy|~{}}|迚𡵆之豆妨妣帚盒皎秦陷acdcadecw{|{{{{fljhnloorppruqoqy|y|{~z|戎豆牧戍祚盒秣革dbaafbgbxy|z{wz|igihhjjk~pssntrqsxyt{yxwz~𨋍袇岱奶型芦停陰偃起`c]``dd{{w{xxxiikkkjmn~pprqrrswv|y|~x}𢖍攟之豆物言高城秧秣_b`aabcdxuuzyyxxhfjjghji~}~~}nooonnoquwvy{y|y~|𣪧中豆圻坏垮悌垠洎qstsswvrcaabaedb{yx{{{|{lmikiolkuttuuuty{{~}{}~鱝椬鰊忙托爭囿咧rrrtqsuvac_cffbiwvzy}y|zflkkilkmísuuprrrvxxzzy|z嵗╯䣳慐夾它貝𦨭sqoppuq^`dbbdcby}yyz||{ghihjinloporpquxzwxx{z|~ㄖ不豆走looossqu_`a`bfbdxvuvvwxyhdfkijkn~~ooqsppqt{vwuyx{z~不成妒爬lpmmoppt``^c^fcbt{wxyzuyeehhgjkk}||qpnnrpsuxyuuz{x}ㄓㄖ戎扛npopomoq_]]b^d]brwywwtvwgegegjgk}{|mkrknopqtsrtyvwx|~}~╮它╪孕kkmnpqqp\]\`___dtruuuwxzdegdgekh~~jmnonqqqtvtvvwyx|}||}{失ㄔ’忖kkmjlpmn]_]\]_`_ostyyuusgfgedfehy{}{|~omponlposwwvuwtuz{y}||}~═ㄐ中忖UYXWZXYZlmrqnrsraa`__a`cututxuxyfjhkhiij|{mrrroposzswxw{|}~﹛嵗ㄕ見帚帚UYYZYW[\qnnnsqoo\^__bfcbvxsuwwyzdhdhhggg}{}~nmqqppotsrxxsyww~~╮忙夾版SWUZVYW[omonkppq][^]`^`dussxxwvyffeihege{||}~klkoqpsswsyxu{x|~{~均圾巨丰TWXYUYVYmlmonmnoX[]_b\a`suuuwwwwfeddfifg|}{}lpnmpplowsusstww{|}z}~揢╮﹛奴努UXUXS[Vljllnnmo`[]\\^]aptsuuxuvdbgcdfhgzyz}|}~klmnoonprtwrtuxuz~z}~═╯‘ㄒTRWSSSVWlmjnkjkkZW\]\_[_pssutvvubfeccaee{x{z~~ijmmnjplssqvttww||{~}{}~嵗╰═不WQVSVWXTflklnjnp[\[\[^]`trsuurtu_abf_bbiz||x|{}}iklijkpnqrtrrruvz{yy~{}z﹒QRTSUSVgmjkinmjY[Z[Z\\^qqqrtquqadbdcadexxv{x}zzhjjlloil}qqruottyy{{z~zy╮ececifeiTWTTWSXZjimpokmn]_^\a^abswtuwuysfeehddeez|}}|yjmnnnnnqsrsxsxyx|{{||dcfcfejhQSRTXVUYjjlklioq^\[_Za__srqtutvw^dcdfchfzy|~{zinonnnlluqwurswu{~~z|~|𠩯bcfegeiRXUWTVTVkjlkokok[\]_^]^Yqprttqsv`gedgdfg}{{}|}{~ikkokllmrvrttstv{yz||~ya_^ebccgPRURSUUSgkkkknijWZ]\ZZ_]ssqqstqrbbdaddedv|y}{xy{ihliiloi~uustusqyywy{zy|~𨔼^ba`caeSOPRVTUSkhgkkjhpXXZ\[^[Yppqqsqvsaefcbdcbwwwzy{{ehkiijki~pousttttz{{{y|~y醶b^d]ccdPQONOTTUkggiigklXXYYZ\Z^qopsrtsq_`_`baeewuyxxw}}ifkkhiik}~pmsrrrpvxvzxyxw}𠰋a`bdcdbOOORPOSRegjkjjikWWWYXZ]\mqsnqpoq^`__b_b`vwx{zx|}ghgjifgj{}~|ooporpqxsvyyyw{z|~}~胬^aa``bdNLSRPQOUdiiejghiWYWVWZ\\mppmoqqq`]^aac``xvsvvz{xgfggghgh|}~rmmnkloqttuuxzwz||}~~}|𤶸JJLJOMLdaecadedQQOUVUVWggijglknX[YZ[\[_osrrsqrtbb``bfeeuvyzyxz|jijgkonk~trqssrqvwz{}zyzLKKJLMJLb_bacbcfTORQUSQXlfkjimgkWYY[]][Zoprprrpp\`cbbcdbzvu}yv|yhkelimlh}~qrqrpptxxzz{xyy~燶JHHMHHM`]d`baccPQOTPQSUgfkggigkXX[YWZZZnooppprqab__acbctvwxzvz|fdgfjifn~~}rpprlsrryuyxxvy{~}柖KGJKKIJ]___a`b`PQNRRRPOfeggihghRXWW[ZY[momnqnrp_^a^^acdvxvuxzxxedjihgjk}lpnqsoqwtwvwyzv~}}}}稆GLCKJGH]^__`^]bOONPOSOPeefggfghUZXWYWYVlnnmnmqq__b\]```uswuwywzdcgciggh}{{z~~~lqnqpornwvvyxsyz}~~}~𥟟EHHIFHH^\`[]_abNLNPOPQSebgeiijfUUVZUVVXlnlnnkqm^^[_[]_^ptvuwytuafccfiei|{||}}}olmomoot艺twxuxuww}}z~|𣸱DDHHFEG`\[\]_\_MLQPNOOOeecdehdhSTSSWTXXkmmljmom\\ZZ^]]_rupswurvcfdccfhb}{y}{|}nmkjnnnmtqswurwzy|{~~}DFEBIGIG][X\Z_a_IKJLLOQRcceeecdfRUXUTYSVkminmlnoW]Y^Y^\^prstuutwcbecccjf{||~zyz~hhgmmjlr|qussvsux}}yy}||VXZUXWVYGIFGKMKJa]`a]``cMMPROPQTfbffggikXWWUU[[Ymlpoomrp^a``a`^awusxywywgdeikjjh}~|}}mkoqprrpwurwxzxz{~~~~SWSVXVZZIFHKJIJJ]\]_aa^_MNPOQRRQhegeedihTWSTWTZXlmjpnpkp^`^`]ca]tuuxvxwxcggjejhd}|||~|nllknmnosuzwx{xt|z~{UVYTYWWYHEDGHLHG^[]Y^b``NLOONPPP`dbhcgdeWXVTXVWXmmoonjnoX[^^^]a_rrupusyxefbffeif{~}|}|~inollmqpqwwwwtw{|y~{z{}SUSXVVXVFECGHGIJZYZ]]_`bOLOMNKQPdabbfghjUUSZYWVXjlkmnnnq\]]]]``_suuruqxvddggdhfd{{}|}~~jinplonpuvstvswvz{~}}|{UQTSTUXYHGIIHJIIXZZ\\Z[\POPOMOPObcfcbfecSWWWXXZVijhlkmkqZ__b`b`bqoqtstwwbdbehggfyy{wzz{|jmnmoppmsxuztwt{~||{~|}SRTPTWRVEHGIJKIHYZZXZ]]]OONNTQSPbbeaebdfUXUUYVZ\kgljjilm]]a_a_^aoorsroqufcgghflivu{z|v{|llnlnmnqsvuyyzwu|{}}~~SRSUTTRVFEIHKJKLX[Z\W[]^QPNOOPORbb_c`ccdVVTXWXWZkikghljk[[_b``_cqrrntspscddeiggiwyywxy|znqloqqtrvuwu|{zw|~}~}OQQTSQRTEDFJGJKLYWZ]W[[ZNNPQSPRT]`abaedcUVYY[Y\Zhdgikjfk^^a^b_`asrqorrqqiljklhmjvxyxy{w|ptqpqpnq|xxuvtzx}}~}~DFEDEFGERTRUWVVYKLLLONLOXZ\[\[`_QVUXUWRWecfdffgfY[\^^```iilnjlkmaddeeekepvrsvsttijlllomn{zx{{z|tvtssyvyxx{{{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}}}{