A decoder for decoding information received over a communications channel, possibly with errors and/or erasures and/or lost or missing information, from an encoder, the decoder comprising:
- an input for receiving symbols from the communications channel;
- logic for identifying whether a received symbol represents a source symbol of the encoded data, a first type of repair symbol for recovering lost, incorrect or missing information of the encoded data or a second type of repair symbol for recovering lost, incorrect or missing information of the encoded data, wherein the first type of repair symbol is a repair symbol generated from the source symbols according to a first FEC code and the second type of repair symbol is a repair symbol generated from the source symbols according to a second FEC code, the second FEC code being more complex than the first FEC code where complexity is a measure of computational effort required to generate repair symbols;
- and
- logic for using at least the received source symbols, at least one repair symbol of the first type and at least one repair symbol of the second type to recover the encoded data, such that the encoded data is recovered with less information than would be required if only one of the first type of repair symbol or the second type of repair symbol are used.