This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
notes:discrete:fall2022:projects:rle1 [2022/09/29 15:47] – [CUSTOMIZATION: variable stride] zswartwo | notes:discrete:fall2022:projects:rle1 [2022/10/06 15:38] (current) – Added info about compression ratio. bolsen1 | ||
---|---|---|---|
Line 22: | Line 22: | ||
*For anybody interested in editing the wiki page, here is the dokuwiki user guide: https:// | *For anybody interested in editing the wiki page, here is the dokuwiki user guide: https:// | ||
+ | |||
+ | |||
+ | |||
+ | =====DATA HEADER SPECIFICATIONS===== | ||
+ | (mostly the same as rle0) | ||
+ | |||
+ | Header Format: | ||
+ | |||
+ | byte 0: 0x72\\ | ||
+ | byte 1: 0x6c\\ | ||
+ | byte 2: 0x65\\ | ||
+ | byte 3: 0x58\\ | ||
+ | byte 4: 0x20\\ | ||
+ | byte 5: 0x52\\ | ||
+ | byte 6: 0x4c\\ | ||
+ | byte 7: 0x45\\ | ||
+ | byte 8: 0x00 (reserved)\\ | ||
+ | byte 9: 0x02 (version)\\ | ||
+ | byte 10: 0x(stride value) -- changes depending on input\\ | ||
+ | byte 11: 0xArgv The length of the source file name, not including NULL terminator\\ | ||
+ | (how many characters in Argv - 1)\\ | ||
+ | byte 12: The name of the source file, not including the NULL terminator\\ | ||
====CUSTOMISATION: | ====CUSTOMISATION: | ||
The stride will determine the workings of the the encoding/ | The stride will determine the workings of the the encoding/ | ||
Line 35: | Line 57: | ||
</ | </ | ||
- | For ENCODE, the second argument no longer indicates the destination file name, the destination file name is provided by byte 12 of the header ( the name of the original file), and appending '' | + | For ENCODE, the second argument no longer indicates the destination file name, the destination file name is provided by byte 12 of the header ( the name of the original file), and appending '' |
For ENCODE, the second argument is now a STRIDE indicator, with a min of 0 and max of 255. | For ENCODE, the second argument is now a STRIDE indicator, with a min of 0 and max of 255. | ||
Line 41: | Line 63: | ||
- | DECODE program will take only one argument, the encoded '' | + | DECODE program will take only one argument, the encoded '' |
<cli> | <cli> | ||
./decode INFILE | ./decode INFILE | ||
Line 55: | Line 77: | ||
=====OUTPUT SPECIFICATIONS===== | =====OUTPUT SPECIFICATIONS===== | ||
+ | |||
+ | Just like what we did in rle0, the rle1's encoder should output the original file's length, the encoded file length, followed by the compression ratio. The output is not strict, as long as you have the correct input file length, output file length, and compression ratio. The compression ratio can be calculated by the following equation: ' | ||
+ | |||
+ | Example: | ||
+ | Input File length: 100 | ||
+ | | ||
+ | | ||
=====VERIFICATION===== | =====VERIFICATION===== | ||
+ | **NOTE** Verification using ./check may not work. If this is the case, then run manual checks. To do this, run the sample and use the stride that is in the header of the sample output you are comparing to (Byte 10). The stride used is also in the file name. | ||
+ | |||
+ | To run the check file provided to you when you grabbed the project, run ./check (linux-based system, may vary on different OS). | ||
+ | |||
+ | You can also manually verify by encoding/ |