Skip to content

Antti/rust-gpx-reader

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rust gpx reader Build Status

###Reads GuitarPro 6 compressed gpx file with BCFZ compression.


In order to decompress BCFZ file, you need to implement BitStream reader, capable of reading bit-by-bit from a stream.

The format itself is pretty simple: File has a BCFZ header following 32 le bit integer specifying expected decompressed data length. The rest of a file consists of 2 types of data chunks (uncompressed, raw data and compressed). Read 1 bit from a bitstream. If bit is 0, uncompressed chunk follows:

  1. Next 2 le bits are length in bytes.
  2. Read length bytes from a bitstream.
  3. Put those bytes into a decompressed data buffer.

If bit is 1, then compressed chunk follows:

  1. Next 4 be bits are word size.
  2. Read word size bits to get offset.
  3. Read word size bits to get length.
  4. Read length bytes from offset (from the end of the current position in the decompressed data buffer).
  5. Put those bytes into a decompressed data buffer.

Sometimes there file may end before your data buffer reaches expected decompressed data lenght, it's likely safe to assume the file was read correct.

About

Rust Guitar Pro GPX reader.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages