Handmade Hero»Episode Guide
Simple LZ Compression
?
?

Keyboard Navigation

Global Keys

[, < / ], > Jump to previous / next episode
W, K, P / S, J, N Jump to previous / next marker
t / T Toggle theatre / SUPERtheatre mode
V Revert filter to original state Y Select link (requires manual Ctrl-c)

Menu toggling

q Quotes r References f Filter y Link c Credits

In-Menu Movement

a
w
s
d
h j k l


Quotes and References Menus

Enter Jump to timecode

Quotes, References and Credits Menus

o Open URL (in new tab)

Filter Menu

x, Space Toggle category and focus next
X, ShiftSpace Toggle category and focus previous
v Invert topics / media as per focus

Filter and Link Menus

z Toggle filter / linking mode

Credits Menu

Enter Open URL (in new tab)
0:21Recap and set the stage for the day
0:21Recap and set the stage for the day
0:21Recap and set the stage for the day
1:55simple_compressor.cpp: Look through the code and note the relative simplicity of the decompressor
1:55simple_compressor.cpp: Look through the code and note the relative simplicity of the decompressor
1:55simple_compressor.cpp: Look through the code and note the relative simplicity of the decompressor
8:48simple_compressor.cpp: Introduce LZDecompress()
8:48simple_compressor.cpp: Introduce LZDecompress()
8:48simple_compressor.cpp: Introduce LZDecompress()
10:59Blackboard: What CopyDistance refers to
10:59Blackboard: What CopyDistance refers to
10:59Blackboard: What CopyDistance refers to
13:15simple_compressor.cpp: Simplify and empower LZDecompress()
13:15simple_compressor.cpp: Simplify and empower LZDecompress()
13:15simple_compressor.cpp: Simplify and empower LZDecompress()
21:24simple_compressor.cpp: Consider the respective trade-offs of LZDecompress() and RLEDecompress()
21:24simple_compressor.cpp: Consider the respective trade-offs of LZDecompress() and RLEDecompress()
21:24simple_compressor.cpp: Consider the respective trade-offs of LZDecompress() and RLEDecompress()
23:35simple_compressor.cpp: Introduce LZCompress(), in order first to do RLE with an LZ backend
23:35simple_compressor.cpp: Introduce LZCompress(), in order first to do RLE with an LZ backend
23:35simple_compressor.cpp: Introduce LZCompress(), in order first to do RLE with an LZ backend
31:20simple_compressor.cpp: Introduce a "test" command, which compresses and decompresses, and then tests that the output matches the original
31:20simple_compressor.cpp: Introduce a "test" command, which compresses and decompresses, and then tests that the output matches the original
31:20simple_compressor.cpp: Introduce a "test" command, which compresses and decompresses, and then tests that the output matches the original
34:23Step through LZCompress() and LZDecompress() and watch what they do
34:23Step through LZCompress() and LZDecompress() and watch what they do
34:23Step through LZCompress() and LZDecompress() and watch what they do
37:01Assess how effectively it compresses test1.hha and intro_art.hha
37:01Assess how effectively it compresses test1.hha and intro_art.hha
37:01Assess how effectively it compresses test1.hha and intro_art.hha
39:01simple_compressor.cpp: Enable LZCompress() to perform look-backs for actual LZ compression
39:01simple_compressor.cpp: Enable LZCompress() to perform look-backs for actual LZ compression
39:01simple_compressor.cpp: Enable LZCompress() to perform look-backs for actual LZ compression
50:38Run the compressor on test1.hha and assess its effectiveness
50:38Run the compressor on test1.hha and assess its effectiveness
50:38Run the compressor on test1.hha and assess its effectiveness
52:24simple_compressor.cpp: Make LZCompress() output runs under stricter conditions
52:24simple_compressor.cpp: Make LZCompress() output runs under stricter conditions
52:24simple_compressor.cpp: Make LZCompress() output runs under stricter conditions
54:09Consider the compressor's new effectiveness, run it on intro_art.hha and break briefly to get a drink
54:09Consider the compressor's new effectiveness, run it on intro_art.hha and break briefly to get a drink
54:09Consider the compressor's new effectiveness, run it on intro_art.hha and break briefly to get a drink
56:55Blackboard: Optimal Parse
56:55Blackboard: Optimal Parse
56:55Blackboard: Optimal Parse
1:00:24Blackboard: Parsing interleaved data
1:00:24Blackboard: Parsing interleaved data
1:00:24Blackboard: Parsing interleaved data
1:04:28Assess the compressor's effectiveness on intro_art.hha
1:04:28Assess the compressor's effectiveness on intro_art.hha
1:04:28Assess the compressor's effectiveness on intro_art.hha
1:05:14simple_compressor.cpp: Note some fun things we can do with this code to try and make it better
1:05:14simple_compressor.cpp: Note some fun things we can do with this code to try and make it better
1:05:14simple_compressor.cpp: Note some fun things we can do with this code to try and make it better
1:09:18simple_compressor.cpp: Introduce the ability to gather and output statistics
1:09:18simple_compressor.cpp: Introduce the ability to gather and output statistics
1:09:18simple_compressor.cpp: Introduce the ability to gather and output statistics
1:12:39simple_compressor.cpp: Define handlers for the compressors and decompressors
1:12:39simple_compressor.cpp: Define handlers for the compressors and decompressors
1:12:39simple_compressor.cpp: Define handlers for the compressors and decompressors
1:20:33Run the compressor on test1.hha, crash and step in to investigate what's happening
1:20:33Run the compressor on test1.hha, crash and step in to investigate what's happening
1:20:33Run the compressor on test1.hha, crash and step in to investigate what's happening
1:21:39simple_compressor.cpp: Fix up the documentation and typos
1:21:39simple_compressor.cpp: Fix up the documentation and typos
1:21:39simple_compressor.cpp: Fix up the documentation and typos
1:22:37simple_compressor.cpp: Output the supported compression algorithms and continue implementing statistic gathering
1:22:37simple_compressor.cpp: Output the supported compression algorithms and continue implementing statistic gathering
1:22:37simple_compressor.cpp: Output the supported compression algorithms and continue implementing statistic gathering
1:25:11simple_compressor.cpp: Introduce GetStatName(), PrintStats(), Percent() and Increment()
1:25:11simple_compressor.cpp: Introduce GetStatName(), PrintStats(), Percent() and Increment()
1:25:11simple_compressor.cpp: Introduce GetStatName(), PrintStats(), Percent() and Increment()
1:34:03simple_compressor.cpp: Enable RLECompress() to gather stats, and make it and LZCompress() flush the buffer if they are at the end
1:34:03simple_compressor.cpp: Enable RLECompress() to gather stats, and make it and LZCompress() flush the buffer if they are at the end
1:34:03simple_compressor.cpp: Enable RLECompress() to gather stats, and make it and LZCompress() flush the buffer if they are at the end
1:37:47Run the compressor and make RLECompress() encode runs more smartly
1:37:47Run the compressor and make RLECompress() encode runs more smartly
1:37:47Run the compressor and make RLECompress() encode runs more smartly
1:43:15simple_compressor.cpp: Call PrintStats()
1:43:15simple_compressor.cpp: Call PrintStats()
1:43:15simple_compressor.cpp: Call PrintStats()
1:44:39Run the compressor, crash and fix up Percent() and PrintStats()
1:44:39Run the compressor, crash and fix up Percent() and PrintStats()
1:44:39Run the compressor, crash and fix up Percent() and PrintStats()
1:45:39Run the RLE compressor on test1.hha and consult the statistics
1:45:39Run the RLE compressor on test1.hha and consult the statistics
1:45:39Run the RLE compressor on test1.hha and consult the statistics
1:46:35simple_compressor.cpp: Enable LZCompress() to gather statistics
1:46:35simple_compressor.cpp: Enable LZCompress() to gather statistics
1:46:35simple_compressor.cpp: Enable LZCompress() to gather statistics
1:48:06Run the LZ compressor on test1.hha and consult the statistics
1:48:06Run the LZ compressor on test1.hha and consult the statistics
1:48:06Run the LZ compressor on test1.hha and consult the statistics
1:50:07Q&A
🗩
1:50:07Q&A
🗩
1:50:07Q&A
🗩
1:51:51Miblo Amazing. I think I followed it, but definitely want to re-watch (during and after annotating)
🗪
1:51:51Miblo Amazing. I think I followed it, but definitely want to re-watch (during and after annotating)
🗪
1:51:51Miblo Amazing. I think I followed it, but definitely want to re-watch (during and after annotating)
🗪
1:52:04garryjohanson 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:04garryjohanson 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:04garryjohanson 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:43graeme7 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:52:43graeme7 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:52:43graeme7 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:01nxsy inttypes.h and PRIu64 is probably what you are supposed to do for %llu for 64-bit printfs
🗪
1:54:01nxsy inttypes.h and PRIu64 is probably what you are supposed to do for %llu for 64-bit printfs
🗪
1:54:01nxsy inttypes.h and PRIu64 is probably what you are supposed to do for %llu for 64-bit printfs
🗪
1:54:38ieee754 You still have to uncompress your images for display, right? So do you have plans for using block compression?
🗪
1:54:38ieee754 You still have to uncompress your images for display, right? So do you have plans for using block compression?
🗪
1:54:38ieee754 You still have to uncompress your images for display, right? So do you have plans for using block compression?
🗪
1:55:16garryjohanson Make data fit in cache
🗪
1:55:16garryjohanson Make data fit in cache
🗪
1:55:16garryjohanson Make data fit in cache
🗪
1:57:08mtsmox Why is 255 not a good look back limit for images? You wanted to elaborate on that
🗪
1:57:08mtsmox Why is 255 not a good look back limit for images? You wanted to elaborate on that
🗪
1:57:08mtsmox Why is 255 not a good look back limit for images? You wanted to elaborate on that
🗪
1:57:47Blackboard: Choosing your look back window for image compression
1:57:47Blackboard: Choosing your look back window for image compression
1:57:47Blackboard: Choosing your look back window for image compression
1:59:22bluespide Have you ever heard of random seed data compression?
🗪
1:59:22bluespide Have you ever heard of random seed data compression?
🗪
1:59:22bluespide Have you ever heard of random seed data compression?
🗪
1:59:46kknewkles 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?
🗪
1:59:46kknewkles 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?
🗪
1:59:46kknewkles 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:59ieee754 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:00:59ieee754 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:00:59ieee754 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:43Close this off
🗩
2:03:43Close this off
🗩
2:03:43Close this off
🗩