Commit ea4cf98
committed
gfx: fix RGB24 sRGB + RGBA64 black decoders + decode-correctness test
Two shipped video-decoder bugs found by the decode-correctness matrix
(both verified under ASAN on llvmpipe):
- RGB24/BGR24 rendered ~15 dB too dark: RGB24Decoder's packed R8 data texture
was flagged QRhiTexture::sRGB, so the sampler applied the sRGB EOTF to raw
bytes on texelFetch. Drop the flag (data texture, not colour). 15 -> 99 dB.
- RGBA64LE/BGRA64LE rendered pure black: routed to a half-float RGBA16F
texture, but the data is 16-bit UNORM integer -> reinterpreted as halfs ->
NaN. QRhi has no 4-channel 16-bit UNORM, so add RGBA64Decoder (R16 x w*4
packed + texelFetch reassembly, mirroring RGB48Decoder). black -> 51 dB.
(RGBAF16LE, a genuine half-float format, still uses RGBA16F — unchanged.)
Test: test_video_decode_correctness — every software-decodable pixel format
encoded as a known pattern (ffprobe-verified pix_fmt), decoded through
VideoDecoderTester --expect/--psnr, RGBA readback asserted vs ffmpeg's own
decode (per-format PSNR bound) + truncated/garbage fuzz. 43 PASS / 0 XFAIL.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014rZgzE8JjWvHDtaVUhxpLE1 parent 696f579 commit ea4cf98
5 files changed
Lines changed: 691 additions & 12 deletions
File tree
- src/plugins/score-plugin-gfx
- Gfx/Graph/decoders
- tests
- tests/integration
Lines changed: 5 additions & 6 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
145 | 145 | | |
146 | 146 | | |
147 | 147 | | |
148 | | - | |
| 148 | + | |
| 149 | + | |
149 | 150 | | |
150 | | - | |
151 | | - | |
| 151 | + | |
152 | 152 | | |
153 | | - | |
154 | | - | |
155 | | - | |
| 153 | + | |
| 154 | + | |
156 | 155 | | |
157 | 156 | | |
158 | 157 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
332 | 332 | | |
333 | 333 | | |
334 | 334 | | |
335 | | - | |
336 | | - | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
337 | 342 | | |
338 | 343 | | |
339 | 344 | | |
| |||
442 | 447 | | |
443 | 448 | | |
444 | 449 | | |
| 450 | + | |
| 451 | + | |
| 452 | + | |
| 453 | + | |
| 454 | + | |
| 455 | + | |
| 456 | + | |
| 457 | + | |
| 458 | + | |
| 459 | + | |
| 460 | + | |
| 461 | + | |
| 462 | + | |
| 463 | + | |
| 464 | + | |
| 465 | + | |
| 466 | + | |
| 467 | + | |
| 468 | + | |
| 469 | + | |
| 470 | + | |
| 471 | + | |
| 472 | + | |
| 473 | + | |
| 474 | + | |
| 475 | + | |
| 476 | + | |
| 477 | + | |
| 478 | + | |
| 479 | + | |
| 480 | + | |
| 481 | + | |
| 482 | + | |
| 483 | + | |
| 484 | + | |
| 485 | + | |
| 486 | + | |
| 487 | + | |
| 488 | + | |
| 489 | + | |
| 490 | + | |
| 491 | + | |
| 492 | + | |
| 493 | + | |
| 494 | + | |
| 495 | + | |
| 496 | + | |
| 497 | + | |
| 498 | + | |
| 499 | + | |
| 500 | + | |
| 501 | + | |
| 502 | + | |
| 503 | + | |
| 504 | + | |
| 505 | + | |
| 506 | + | |
| 507 | + | |
| 508 | + | |
| 509 | + | |
| 510 | + | |
| 511 | + | |
| 512 | + | |
| 513 | + | |
| 514 | + | |
| 515 | + | |
| 516 | + | |
| 517 | + | |
| 518 | + | |
| 519 | + | |
| 520 | + | |
| 521 | + | |
| 522 | + | |
| 523 | + | |
| 524 | + | |
| 525 | + | |
| 526 | + | |
| 527 | + | |
| 528 | + | |
| 529 | + | |
445 | 530 | | |
446 | 531 | | |
0 commit comments