Streaming reports back whenever a change in the encoding algorithm is required, so the higher level layers can stick with one algorithm - considerable speedup. Weak bits are reported back to the higher level encoders.
Written lots of support routines for bitfield level manipulation of track buffers - this is not so trivial since:
- Speed is in an issue
- The buffer may or may not wrap around during writing a field
- Field length to be written is arbitrary (up to 32 bits in the decoder, but can be easily changed to any size like up to 64 or up to 128 bits at once)
- Start position is arbitrary
- Track buffer length is specified in bits (i.e. no longer limited to byte sizes)
Currently the decoder is about 1000 lines (written from scratch during the past few days!) and far from complete, but it’s slowly getting there as most support routines are done and fully tested. The code required for the level of data manipulation now possible is very tricky so all functions are tested - tracking down problems otherwise would be very costly. The entire original decoder is about the same size...