use cc_data::decode::{Cea608Channel, Cea608Decoder};
fn par(v: u8) -> u8 {
if (v & 0x7F).count_ones() % 2 == 0 {
v | 0x80
} else {
v & 0x7F
}
}
fn main() {
let mut dec = Cea608Decoder::new();
let pairs: &[(u8, u8)] = &[
(0x14, 0x20),
(0x14, 0x70),
(b'H', b'E'),
(b'L', b'L'),
(b'O', 0x00),
(0x14, 0x2F),
];
for &(b1, b2) in pairs {
dec.push_pair(false, par(b1), par(b2));
}
println!("CC1 mode : {}", dec.mode(Cea608Channel::Cc1));
println!("CC1 text : {:?}", dec.channel_text(Cea608Channel::Cc1));
let mut dec2 = Cea608Decoder::new();
let roll: &[(u8, u8)] = &[
(0x14, 0x25), (b'O', b'N'),
(b'E', 0x00),
(0x14, 0x2D), (b'T', b'W'),
(b'O', 0x00),
];
for &(b1, b2) in roll {
dec2.push_pair(false, par(b1), par(b2));
}
println!("\nRoll-up mode : {}", dec2.mode(Cea608Channel::Cc1));
println!("Roll-up text :\n{}", dec2.channel_text(Cea608Channel::Cc1));
}