ladybird/Userland/Libraries
Nico Weber d1b5eec154 WebP/Lossy: Implement macroblock coefficient decoding
This basically adds the line

    u8 token = TRY(
        tree_decode(decoder, COEFFICIENT_TREE,
        header.coefficient_probabilities[plane][band][tricky],
        last_decoded_value == DCT_0 ? 2 : 0));

and calls it once for the 16 coefficients of a discrete cosine transform
that covers a 4x4 pixel subblock.

And then it does this 24 or 25 times per macroblock, for the 4x4 Y
subblocks and the 2x2 each U and V subblocks (plus an optional Y2 block
for some macroblocks).

It then adds a whole bunch of machinery to be able to compute `plane`,
`band`, and in particular `tricky` (which depends on if the
corresponding left or above subblock has non-zero coefficients).

(It also does dequantization, and does an inverse Walsh-Hadamard
transform when needed, to end up with complete DCT coefficients
in all cases.)
2023-05-29 10:41:53 -06:00
..
LibArchive LibArchive: Read Tar archive headers through read_value 2023-03-13 15:16:20 +00:00
LibAudio AK: Rename Time to Duration 2023-05-24 23:18:07 +02:00
LibC LibC: Ensure that struct group::gr_mem pointers are aligned 2023-05-28 05:05:09 -06:00
LibCards LibGfx+Everywhere: Change Gfx::Rect to be endpoint exclusive 2023-05-23 12:35:42 +02:00
LibChess AK: Add the Input word to input-only buffered streams 2023-05-09 11:18:46 +02:00
LibCMake LibSyntax+Libraries: Replace TextStyle with Gfx::TextAttributes 2023-03-15 14:55:49 +01:00
LibCodeComprehension LibCodeComprehension: Remove unused #include <DeprecatedFile.h> 2023-05-21 07:52:41 +02:00
LibCompress LibCompress: Move two shared LZMA magic numbers into a common place 2023-05-19 23:40:33 +02:00
LibConfig LibCore: Big first step towards pluggable Core::EventLoop 2023-04-25 14:48:40 +02:00
LibCore LibCore: Add wrapper for fstatat() 2023-05-28 05:51:27 -06:00
LibCoredump LibCoredump: Avoid unnecessary conversion to DeprecatedString 2023-05-27 17:30:55 +02:00
LibCpp LibCpp: Support for parsing c-style fixed arrays (arr[2]) 2023-04-26 09:40:25 +01:00
LibCrypt LibCrypt: Start installing headers again 2023-03-20 09:33:30 +01:00
LibCrypto LibCrypto: Add workaround for false -Warray-bounds warning 2023-05-28 05:05:09 -06:00
LibDebug LibDebug: Prefer File::read_until_eof over DeprecatedFile 2023-05-19 23:31:20 +02:00
LibDesktop Everywhere: Use MonotonicTime instead of Duration 2023-05-24 23:18:07 +02:00
LibDeviceTree Everywhere: Remove unused DeprecatedString includes 2023-04-09 22:00:54 +02:00
LibDiff LibDiff: Make Diff::generate_only_additions take text as StringView 2022-12-20 10:58:54 +01:00
LibDNS AK: Rename Stream::write_entire_buffer to Stream::write_until_depleted 2023-03-13 15:16:20 +00:00
LibDSP Piano: Allow per-track controls (again) 2023-05-05 01:32:09 +02:00
LibEDID LibEDID: Fix compiler error when ENABLE_PNP_IDS_DOWNLOAD=OFF 2023-04-06 10:26:21 -04:00
LibELF test-fuzz: Add all the missing fuzzers 2023-05-23 06:11:33 +02:00
LibFileSystem Userland: Allow our access check to pass flags to faccessat syscall 2023-05-13 17:59:37 -06:00
LibFileSystemAccessClient FileSystemAccessServer: Don't transmit unused data 2023-05-29 13:17:22 +02:00
LibGemini AK+Everywhere: Change URL::path() to serialize_path() 2023-04-15 06:37:04 +02:00
LibGfx WebP/Lossy: Implement macroblock coefficient decoding 2023-05-29 10:41:53 -06:00
LibGL LibGL: Implement support for the GL_RGB5_A1 internal image format 2023-05-04 16:11:28 +02:00
LibGLSL Everywhere: Use _{short_,}string to create Strings from literals 2023-02-25 20:51:49 +01:00
LibGPU LibGPU: Remove DeprecatedString usage 2023-01-30 13:49:52 -05:00
LibGUI LibGUI: Fix crooked close button on active tabs in the TabWidget 2023-05-28 21:12:19 +02:00
LibHTTP AK+Everywhere: Change URL::path() to serialize_path() 2023-04-15 06:37:04 +02:00
LibIDL LibIDL: Avoid unnecessary HashMap copy 2023-05-19 22:33:57 +02:00
LibImageDecoderClient LibImageDecoderClient: Fix minor const-correctness issue 2023-02-21 00:54:04 +01:00
LibIMAP Everywhere: Remove unintentional partial stream reads and writes 2023-03-13 15:16:20 +00:00
LibIPC AK: Introduce UnixDateTime 2023-05-24 23:18:07 +02:00
LibJS LibJS: Fix reading cached source ranges 2023-05-28 14:40:22 +02:00
LibKeyboard LibKeyboard: Read keymap through File, not DeprecatedFile 2023-05-12 19:46:54 +01:00
LibLine LibLine: Unify history reading, prefer File over DeprecatedFile 2023-05-27 07:16:01 +02:00
LibLocale LibTimeZone+Userland: Change timezone functions to use UnixDateTime 2023-05-24 23:18:07 +02:00
LibMain Everywhere: Explicitly link all binaries against the LibC target 2022-11-01 14:49:09 +00:00
LibManual LibManual: Allow querying on a help URL 2023-05-08 21:03:19 -06:00
LibMarkdown LibMarkdown+LibSyntax: Add a Markdown syntax highlighter 2023-05-05 17:08:40 +01:00
LibPartition LibPartition: Make Kernel parts const-correct re: StorageDevice& 2023-02-21 00:54:04 +01:00
LibPCIDB AK+Everywhere: Rename String to DeprecatedString 2022-12-06 08:54:33 +01:00
LibPDF LibPDF: Avoid unnecessary HashMap copy, mark other copies 2023-05-19 22:33:57 +02:00
LibProtocol WebSocket: Avoid unnecessary IPC::Dictionary wrapper 2023-05-21 07:53:45 +02:00
LibRegex LibRegex: Avoid calling GenericLexer::consume() past EOF 2023-04-14 12:33:54 +02:00
LibSanitizer LibC: Properly implement stack protectors 2022-11-01 14:49:09 +00:00
LibSoftGPU LibGfx+Everywhere: Change Gfx::Rect to be endpoint exclusive 2023-05-23 12:35:42 +02:00
LibSQL LibSQL: Free heap storage when deleting rows 2023-05-25 06:19:16 -07:00
LibSymbolication LibSymbolication: Use Core::File instead of Core::DeprecatedFile 2023-04-27 07:27:14 +02:00
LibSyntax LibMarkdown+LibSyntax: Add a Markdown syntax highlighter 2023-05-05 17:08:40 +01:00
LibSystem
LibTest LibTest: Use the 16 standard ANSI colors in status output 2023-05-28 06:31:59 -07:00
LibTextCodec LibTextCodec: Change UTF-8's decoder to replace invalid code points 2023-05-12 05:47:36 +02:00
LibThreading LibThreading: Do not crash when detaching from an already-exited thread 2023-05-24 16:45:25 +02:00
LibTimeZone LibTimeZone+Userland: Change timezone functions to use UnixDateTime 2023-05-24 23:18:07 +02:00
LibTLS LibTLS: Avoid unnecessary HashMap copies, improve const-correctness 2023-05-19 22:33:57 +02:00
LibUnicode AK+LibUnicode: Implement String::equals_ignoring_case without allocating 2023-03-08 18:57:53 +00:00
LibUSBDB AK+Everywhere: Rename String to DeprecatedString 2022-12-06 08:54:33 +01:00
LibVideo LibGfx+LibVideo: Make BooleanDecoder usable for both VP8 and VP9 2023-05-27 05:47:42 +02:00
LibVirtGPU LibCore: Remove Stream.h 2023-02-13 00:50:07 +00:00
LibVT LibGfx+Everywhere: Change Gfx::Rect to be endpoint exclusive 2023-05-23 12:35:42 +02:00
LibWasm LibWasm: Create AK::StackInfo once per AbstractMachine 2023-05-28 13:20:56 +02:00
LibWeb LibWeb: Update workarounds for fetching CORS cross-origin responses 2023-05-29 17:12:46 +02:00
LibWebSocket AK+Everywhere: Change URL::path() to serialize_path() 2023-04-15 06:37:04 +02:00
LibWebView LibWebView: Don't re-create WebContent proceses when repeatedly crashing 2023-05-27 20:09:50 +02:00
LibX86 LibX86: Remove i686 support 2022-12-28 11:53:41 +01:00
LibXML LibXML: Notify the listener about the root node as well 2023-05-05 01:33:49 +02:00
CMakeLists.txt LibFileSystem: Create LibFileSystem 2023-03-21 19:03:21 +00:00