47 lines
4.2 KiB
Plaintext
47 lines
4.2 KiB
Plaintext
[video output=day354 member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Simple LZ Compression" vod_platform=youtube id=l8WUqmHD1PU annotator=Miblo]
|
|
[0:21][Recap and set the stage for the day]
|
|
[1:55][simple_compressor.cpp: Look through the code and note the relative simplicity of the decompressor]
|
|
[8:48][simple_compressor.cpp: Introduce LZDecompress()]
|
|
[10:59][Blackboard: What CopyDistance refers to]
|
|
[13:15][simple_compressor.cpp: Simplify and empower LZDecompress()]
|
|
[21:24][simple_compressor.cpp: Consider the respective trade-offs of LZDecompress() and RLEDecompress()]
|
|
[23:35][simple_compressor.cpp: Introduce LZCompress(), in order first to do RLE with an LZ backend]
|
|
[31:20][simple_compressor.cpp: Introduce a "test" command, which compresses and decompresses, and then tests that the output matches the original]
|
|
[34:23][Step through LZCompress() and LZDecompress() and watch what they do]
|
|
[37:01][Assess how effectively it compresses test1.hha and intro_art.hha]
|
|
[39:01][simple_compressor.cpp: Enable LZCompress() to perform look-backs for actual LZ compression]
|
|
[50:38][Run the compressor on test1.hha and assess its effectiveness]
|
|
[52:24][simple_compressor.cpp: Make LZCompress() output runs under stricter conditions]
|
|
[54:09][Consider the compressor's new effectiveness, run it on intro_art.hha and break briefly to get a drink]
|
|
[56:55][Blackboard: Optimal Parse]
|
|
[1:00:24][Blackboard: Parsing interleaved data]
|
|
[1:04:28][Assess the compressor's effectiveness on intro_art.hha]
|
|
[1:05:14][simple_compressor.cpp: Note some fun things we can do with this code to try and make it better]
|
|
[1:09:18][simple_compressor.cpp: Introduce the ability to gather and output statistics]
|
|
[1:12:39][simple_compressor.cpp: Define handlers for the compressors and decompressors]
|
|
[1:20:33][Run the compressor on test1.hha, crash and step in to investigate what's happening]
|
|
[1:21:39][simple_compressor.cpp: Fix up the documentation and typos]
|
|
[1:22:37][simple_compressor.cpp: Output the supported compression algorithms and continue implementing statistic gathering]
|
|
[1:25:11][simple_compressor.cpp: Introduce GetStatName(), PrintStats(), Percent() and Increment()]
|
|
[1:34:03][simple_compressor.cpp: Enable RLECompress() to gather stats, and make it and LZCompress() flush the buffer if they are at the end]
|
|
[1:37:47][Run the compressor and make RLECompress() encode runs more smartly]
|
|
[1:43:15][simple_compressor.cpp: Call PrintStats()]
|
|
[1:44:39][Run the compressor, crash and fix up Percent() and PrintStats()]
|
|
[1:45:39][Run the RLE compressor on test1.hha and consult the statistics]
|
|
[1:46:35][simple_compressor.cpp: Enable LZCompress() to gather statistics]
|
|
[1:48:06][Run the LZ compressor on test1.hha and consult the statistics]
|
|
[1:50:07][Q&A][:speech]
|
|
[1:51:51][@Miblo][Amazing. I think I followed it, but definitely want to re-watch (during and after annotating)]
|
|
[1:52:04][@garryjohanson][Forgive me if this information was somehow implicit in today's lecture and I missed it, but is compression ever used for locality wins?]
|
|
[1:52:43][@graeme7][Do you know off-hand what kind of compression ratio and decompression speed are needed before it's faster to load compressed data and decompress, over loading decompressed data?]
|
|
[1:54:01][@nxsy][inttypes.h and PRIu64 is probably what you are supposed to do for %llu for 64-bit printfs]
|
|
[1:54:38][@ieee754][You still have to uncompress your images for display, right? So do you have plans for using block compression?]
|
|
[1:55:16][@garryjohanson][Make data fit in cache]
|
|
[1:57:08][@mtsmox][Why is 255 not a good look back limit for images? You wanted to elaborate on that]
|
|
[1:57:47][Blackboard: Choosing your look back window for image compression]
|
|
[1:59:22][@bluespide][Have you ever heard of random seed data compression?]
|
|
[1:59:46][@kknewkles][Probably more of Jeff and Fabian's territory, but is there generally such a thing as a compressor that compresses a lot and fast? Would some RAD compressor leave 10% of initial size and be considerably faster than LZ? I guess BINK is hyperfast, isn't it like live decompression or something?]
|
|
[2:00:59][@ieee754][I meant block compression that's GPU-supported (BC1-BC7). You upload the compressed image to the GPU, and hardware decodes it when sampled]
|
|
[2:03:43][Close this off][:speech]
|
|
[/video]
|