modulepackage
0.0.0-20160820054803-4928733085e9
Repository: https://github.com/google/gofountain.git
Documentation: pkg.go.dev
# README
gofountain
Go implementation of various fountain codes. Luby Transform, Online codes, Raptor code.
Includes many tests, libraries, and utilities.
The abstraction level is "low" -- that is, the code currently supports very low-level encoder/decoder level functionality, without any packetizing, etc. that a full system would include on top of this layer.
# Functions
EncodeLTBlocks encodes a sequence of LT-encoded code blocks from the given message and the block IDs.
NewBinaryCodec returns a codec implementing the binary fountain code, where source blocks composing each LT block are chosen randomly and independently.
NewLubyCodec creates a new Codec using the provided number of source blocks, PRNG, and degree distribution function.
NewMersenneTwister creates a new MT19937 PRNG with the given seed.
NewMersenneTwister64 creates a new 64-bit version of the MT19937 PRNG.
NewOnlineCodec creates a new encoder for an Online code.
NewRaptorCodec creates a new R10 raptor codec using the provided number of source blocks and alignment size.
NewRU10Codec creates an unsystematic raptor-like fountain codec which uses an intermediate block generation algorithm similar to the Raptor R10 codec.
# Structs
LTBlock is an encoded block structure representing a block created using the LT transform.
MersenneTwister is an implementation of the MT19937 PRNG of Matsumoto and Nishimura.
MersenneTwister64 is a 64-bit MT19937 PRNG after Nishimura.
# Interfaces
Codec is an interface for fountain codes which follow the general scheme of preparing intermediate encoding representations based on the input message and picking LT composition indices given an integer code block number.
Decoder is an interface allowing decoding of fountain-code-encoded messages as the blocks are received.