57:30Run it and again crash in HuffmanDecode() on an invalid symbol, although we did process more bits

🏃

57:30Run it and again crash in HuffmanDecode() on an invalid symbol, although we did process more bits

🏃

57:30Run it and again crash in HuffmanDecode() on an invalid symbol, although we did process more bits

🏃

59:05Crash ScriptedSandbox64.exe

🗹

59:05Crash ScriptedSandbox64.exe

🗹

59:05Crash ScriptedSandbox64.exe

🗹

59:52Continue to investigate our bug exhibited by gimp_64x64.png

🏃

59:52Continue to investigate our bug exhibited by gimp_64x64.png

🏃

59:52Continue to investigate our bug exhibited by gimp_64x64.png

🏃

1:02:51Assert at the end of ParsePNG() that the Dest == DecompressedPixels

1:02:51Assert at the end of ParsePNG() that the Dest == DecompressedPixels

1:02:51Assert at the end of ParsePNG() that the Dest == DecompressedPixels

1:03:16Run it and do not hit that assertion

🏃

1:03:16Run it and do not hit that assertion

🏃

1:03:16Run it and do not hit that assertion

🏃

1:03:34Determine that gimp_64x64.png crashes 9 bytes from the end, and investigate why

🏃

1:03:34Determine that gimp_64x64.png crashes 9 bytes from the end, and investigate why

🏃

1:03:34Determine that gimp_64x64.png crashes 9 bytes from the end, and investigate why

🏃

1:05:30Make PeekBits() print out BitBufferBeforeAdvance if it needs to advance the buffer

1:05:30Make PeekBits() print out BitBufferBeforeAdvance if it needs to advance the buffer

1:05:30Make PeekBits() print out BitBufferBeforeAdvance if it needs to advance the buffer

1:07:05Run it to see that there are 12 bits in the buffer but, more pressingly, that we do not handle fixed Huffman compressed chunks

🏃

1:07:05Run it to see that there are 12 bits in the buffer but, more pressingly, that we do not handle fixed Huffman compressed chunks

🏃

1:07:05Run it to see that there are 12 bits in the buffer but, more pressingly, that we do not handle fixed Huffman compressed chunks

🏃

1:08:06Enable ParsePNG() to handle fixed Huffman compressed chunks5

1:08:06Enable ParsePNG() to handle fixed Huffman compressed chunks5

1:08:06Enable ParsePNG() to handle fixed Huffman compressed chunks5

1:17:51Step into ParsePNG() and inspect the LitLenDistTable comparing it with the PNG spec6

🏃

1:17:51Step into ParsePNG() and inspect the LitLenDistTable comparing it with the PNG spec6

🏃

1:17:51Step into ParsePNG() and inspect the LitLenDistTable comparing it with the PNG spec6

🏃

1:19:17Determine to perform some difference tests

🗩

1:19:17Determine to perform some difference tests

🗩

1:19:17Determine to perform some difference tests

🗩

1:21:03Grab a screenshot of the stream7

📖

1:21:03Grab a screenshot of the stream7

📖

1:21:03Grab a screenshot of the stream7

📖

1:22:43Run okay on our captured screenshot

🏃

1:22:43Run okay on our captured screenshot

🏃

1:22:43Run okay on our captured screenshot

🏃

1:23:06Q&A

🗩

1:23:06Q&A

🗩

1:23:06Q&A

🗩

1:23:38mtsmox Q: Yeah, same bug

🗪

1:23:38mtsmox Q: Yeah, same bug

🗪

1:23:38mtsmox Q: Yeah, same bug

🗪

1:23:52vaualbus Q: You could use the ray casting code for save image files so we can see what happens. It should be a quick thing to do!

🗪

1:23:52vaualbus Q: You could use the ray casting code for save image files so we can see what happens. It should be a quick thing to do!

🗪

1:23:52vaualbus Q: You could use the ray casting code for save image files so we can see what happens. It should be a quick thing to do!

🗪

1:24:12Run the PNG reader successfully on our ray tracing image

🏃

1:24:12Run the PNG reader successfully on our ray tracing image

🏃

1:24:12Run the PNG reader successfully on our ray tracing image

🏃

1:25:49Credit rooctag for clarifying our understanding of the Paeth filter

🗩

1:25:49Credit rooctag for clarifying our understanding of the Paeth filter

🗩

1:25:49Credit rooctag for clarifying our understanding of the Paeth filter

🗩

1:26:33xxthebigfoxx Q: Did you purposely screenshot my message saying you are handsome?

🗪

1:26:33xxthebigfoxx Q: Did you purposely screenshot my message saying you are handsome?

🗪

1:26:33xxthebigfoxx Q: Did you purposely screenshot my message saying you are handsome?

🗪

1:26:42frostyninja Q: I think he meant save out the decoded PNGs out as a raw BMP so we can see the result?

🗪

1:26:42frostyninja Q: I think he meant save out the decoded PNGs out as a raw BMP so we can see the result?

🗪

1:26:42frostyninja Q: I think he meant save out the decoded PNGs out as a raw BMP so we can see the result?

🗪

1:27:24Pull WriteImage() in from ray.cpp and make ParsePNG() return an image_u32 for us to write out

1:27:24Pull WriteImage() in from ray.cpp and make ParsePNG() return an image_u32 for us to write out

1:27:24Pull WriteImage() in from ray.cpp and make ParsePNG() return an image_u32 for us to write out

1:32:27Inspect our written image to see that it is upside-down and incorrectly coloured

🎨

1:32:27Inspect our written image to see that it is upside-down and incorrectly coloured

🎨

1:32:27Inspect our written image to see that it is upside-down and incorrectly coloured

🎨

1:33:15Rename WriteImage() to WriteImageTopDownRGBA() and enable it to swap the rows, introducing SwapRAndB() to swap those colour channels

1:33:15Rename WriteImage() to WriteImageTopDownRGBA() and enable it to swap the rows, introducing SwapRAndB() to swap those colour channels

1:33:15Rename WriteImage() to WriteImageTopDownRGBA() and enable it to swap the rows, introducing SwapRAndB() to swap those colour channels

1:39:47Compare our written image with the original, to see that it is off-by-1 pixel vertically

🎨

1:39:47Compare our written image with the original, to see that it is off-by-1 pixel vertically

🎨

1:39:47Compare our written image with the original, to see that it is off-by-1 pixel vertically

🎨

1:43:05Fix typo in WriteImageTopDownRGBA()

1:43:05Fix typo in WriteImageTopDownRGBA()

1:43:05Fix typo in WriteImageTopDownRGBA()

1:43:20Compare our written image with the original to see that they match

🎨

1:43:20Compare our written image with the original to see that they match

🎨

1:43:20Compare our written image with the original to see that they match

🎨

1:44:09bobby1up Q: Isn't it true that the compiler's optimizations of your code and the way the CPU works can sometimes cause instructions to happen in a different order than you wrote them? If so, won't that screw up profiling measurements?

🗪

1:44:09bobby1up Q: Isn't it true that the compiler's optimizations of your code and the way the CPU works can sometimes cause instructions to happen in a different order than you wrote them? If so, won't that screw up profiling measurements?

🗪

1:44:09bobby1up Q: Isn't it true that the compiler's optimizations of your code and the way the CPU works can sometimes cause instructions to happen in a different order than you wrote them? If so, won't that screw up profiling measurements?

🗪

1:44:43tavqua Q: Can you quantify how fast you type?

🗪

🎲

1:44:43tavqua Q: Can you quantify how fast you type?

🗪

🎲

1:44:43tavqua Q: Can you quantify how fast you type?

🗪

🎲

1:44:59jacksonbanan Q: Would you say that 4coder is the ideal text editor?

🗪

1:44:59jacksonbanan Q: Would you say that 4coder is the ideal text editor?

🗪

1:44:59jacksonbanan Q: Would you say that 4coder is the ideal text editor?

🗪

1:45:32jacksonbanan Q: Also, how often do you work out? You're buff

🗪

🎲

1:45:32jacksonbanan Q: Also, how often do you work out? You're buff

🗪

🎲

1:45:32jacksonbanan Q: Also, how often do you work out? You're buff

🗪

🎲

1:45:40lkalinovcic Q: In the BMP write routine, I think you have a bug. You advance Row0 too soon

🗪

1:45:40lkalinovcic Q: In the BMP write routine, I think you have a bug. You advance Row0 too soon

🗪

1:45:40lkalinovcic Q: In the BMP write routine, I think you have a bug. You advance Row0 too soon

🗪

1:45:44enemymouse Q: Double-check the shifting is not a GIMP paster error

🗪

1:45:44enemymouse Q: Double-check the shifting is not a GIMP paster error

🗪

1:45:44enemymouse Q: Double-check the shifting is not a GIMP paster error

🗪

1:45:57jnog92 Q: Just joined a week ago and haven't had time to go through all the series. Can you say in overall what have you done on the project and what is left to do?

🗪

1:45:57jnog92 Q: Just joined a week ago and haven't had time to go through all the series. Can you say in overall what have you done on the project and what is left to do?

🗪

1:45:57jnog92 Q: Just joined a week ago and haven't had time to go through all the series. Can you say in overall what have you done on the project and what is left to do?

🗪

1:47:10bbbyan Q: Do you have any project recommendations for beginner-intermediate C programmers?

🗪

1:47:10bbbyan Q: Do you have any project recommendations for beginner-intermediate C programmers?

🗪

1:47:10bbbyan Q: Do you have any project recommendations for beginner-intermediate C programmers?