Struct reed_solomon::Decoder
[−]
[src]
pub struct Decoder { /* fields omitted */ }
Reed-Solomon BCH decoder
Methods
impl Decoder
[src]
fn new(ecc_len: usize) -> Self
[src]
fn correct_err_count(
&self,
msg: &[u8],
erase_pos: Option<&[u8]>
) -> Result<(Buffer, usize), DecoderError>
[src]
&self,
msg: &[u8],
erase_pos: Option<&[u8]>
) -> Result<(Buffer, usize), DecoderError>
Decodes block-encoded message and returns Buffer
with corrected message and ecc offset.
Also includes the number of errors corrected.
Example
use reed_solomon::Encoder; use reed_solomon::Decoder; // Create encoder and decoder let encoder = Encoder::new(4); let decoder = Decoder::new(4); // Encode message let mut encoded = encoder.encode(&[1, 2, 3, 4]); // Corrupt message encoded[2] = 1; encoded[3] = 2; // Let's assume it's known that `encoded[3]` is an error let known_erasures = [3]; // Decode and correct message, let corrected = decoder.correct(&mut encoded, Some(&known_erasures)).unwrap(); // Check results assert_eq!(&[1, 2, 3, 4], corrected.data())
fn correct(
&self,
msg: &[u8],
erase_pos: Option<&[u8]>
) -> Result<Buffer, DecoderError>
[src]
&self,
msg: &[u8],
erase_pos: Option<&[u8]>
) -> Result<Buffer, DecoderError>
Decodes block-encoded message and returns Buffer
with corrected message and ecc offset.
Example
use reed_solomon::Encoder; use reed_solomon::Decoder; // Create encoder and decoder let encoder = Encoder::new(4); let decoder = Decoder::new(4); // Encode message let mut encoded = encoder.encode(&[1, 2, 3, 4]); // Corrupt message encoded[2] = 1; encoded[3] = 2; // Let's assume it's known that `encoded[3]` is an error let known_erasures = [3]; // Decode and correct message, let corrected = decoder.correct(&mut encoded, Some(&known_erasures)).unwrap(); // Check results assert_eq!(&[1, 2, 3, 4], corrected.data())
fn is_corrupted(&self, msg: &[u8]) -> bool
[src]
Performs fast corruption check.
Example
use reed_solomon::Encoder; use reed_solomon::Decoder; // Create encoder and decoder let encoder = Encoder::new(4); let decoder = Decoder::new(4); // Encode message let mut encoded = encoder.encode(&[1, 2, 3, 4]); assert_eq!(decoder.is_corrupted(&encoded), false); // Corrupt message encoded[2] = 1; encoded[3] = 2; assert_eq!(decoder.is_corrupted(&encoded), true);