NCDI/Checksum
From ThorxWiki
(Difference between revisions)
(first draft) |
m |
||
Line 1: | Line 1: | ||
The checksum is handled by taking each track offset and summing them together, resulting in a "large number", which is then brought into the range of 0-4095 by applying mod4096. |
The checksum is handled by taking each track offset and summing them together, resulting in a "large number", which is then brought into the range of 0-4095 by applying mod4096. |
||
− | ;Q:Why 4096? |
+ | ;Why 4096 and not 255 or 65536?:Short answer - Cos FFF in hex is a nice size for the checksum to be |
− | ;A:Cos FFF in hex is a nice size for the checksum to be |
+ | === Long answer... === |
+ | DiscID checksum was based on |
||
+ | * track offsets in seconds |
||
+ | * mod 255 (it should have been mod256, but little difference I think) |
||
− | ;Q:Why not 255 (FF) or 65536 (FFFF) then? |
+ | [[NCDI]] checksum is based on |
− | ;A:255 and 65536 were both tested with a conversion script which generated NCDI's from the FreeDB database. 65536 gave no appreciable improvement for guaranteed uniqueness, and 255 was ''(awaiting actual data for this ;)'' |
+ | * track offsets in frames |
+ | |||
+ | I then tested with mod256, mod4096 and mod65536 to see how they fared. |
||
+ | |||
+ | * mod256 - clearly better than DiscID - this is only attributable to the difference in using frame-level offsets |
||
+ | * mod4096 - clearly better mod256 - more number for the checksum to spread over = less chance of duplication |
||
+ | * mod65536 - marginal improvement on mod4096 - not enough to be worthwhile using compared to mod4096 however |
||
+ | |||
+ | I hope to have a graph of this available shortly... |
Revision as of 11:38, 3 May 2002
The checksum is handled by taking each track offset and summing them together, resulting in a "large number", which is then brought into the range of 0-4095 by applying mod4096.
- Why 4096 and not 255 or 65536?
- Short answer - Cos FFF in hex is a nice size for the checksum to be
Long answer...
DiscID checksum was based on
- track offsets in seconds
- mod 255 (it should have been mod256, but little difference I think)
NCDI checksum is based on
- track offsets in frames
I then tested with mod256, mod4096 and mod65536 to see how they fared.
- mod256 - clearly better than DiscID - this is only attributable to the difference in using frame-level offsets
- mod4096 - clearly better mod256 - more number for the checksum to spread over = less chance of duplication
- mod65536 - marginal improvement on mod4096 - not enough to be worthwhile using compared to mod4096 however
I hope to have a graph of this available shortly...