9 struct AICCodeReader8 {
10 lengths: &'static [u8],
14 impl CodebookDescReader<i8> for AICCodeReader8 {
15 fn bits(&mut self, idx: usize) -> u8 { self.lengths[idx] }
16 fn code(&mut self, idx: usize) -> u32 { self.codes[idx] as u32 }
17 fn sym (&mut self, idx: usize) -> i8 { idx as i8 }
18 fn len (&mut self) -> usize { self.lengths.len() }
21 struct AICCodeReader16 {
22 lengths: &'static [u8],
23 codes: &'static [u16],
26 impl CodebookDescReader<i8> for AICCodeReader16 {
27 fn bits(&mut self, idx: usize) -> u8 { self.lengths[idx] }
28 fn code(&mut self, idx: usize) -> u32 { self.codes[idx] as u32 }
29 fn sym (&mut self, idx: usize) -> i8 { idx as i8 }
30 fn len (&mut self) -> usize { self.lengths.len() }
33 struct TypeCodeReader {
34 lengths: &'static [u8],
36 syms: &'static [MBType],
39 impl CodebookDescReader<MBType> for TypeCodeReader {
40 fn bits(&mut self, idx: usize) -> u8 { self.lengths[idx] }
41 fn code(&mut self, idx: usize) -> u32 { self.codes[idx] as u32 }
42 fn sym (&mut self, idx: usize) -> MBType{ self.syms[idx] }
43 fn len (&mut self) -> usize { self.lengths.len() }
46 struct RealVideo40BR {
49 aic_top_cb: Codebook<i8>,
50 aic_mode1_cb: Vec<Codebook<i8>>,
51 aic_mode2_cb: Vec<Codebook<i8>>,
52 ptype_cb: Vec<Codebook<MBType>>,
53 btype_cb: Vec<Codebook<MBType>>,
59 let mut coderead = AICCodeReader8{ lengths: &RV40_AIC_TOP_BITS, codes: &RV40_AIC_TOP_CODES };
60 let aic_top_cb = Codebook::new(&mut coderead, CodebookMode::MSB).unwrap();
62 let mut aic_mode1_cb: Vec<Codebook<i8>> = Vec::with_capacity(RV40_AIC_MODE1_BITS.len());
63 for i in 0..RV40_AIC_MODE1_BITS.len() {
65 let mut coderead = AICCodeReader8{ lengths: &RV40_AIC_MODE1_BITS[i], codes: &RV40_AIC_MODE1_CODES[i] };
66 let cb = Codebook::new(&mut coderead, CodebookMode::MSB).unwrap();
67 aic_mode1_cb.push(cb);
69 let mut coderead = AICCodeReader8{ lengths: &RV40_AIC_MODE1_BITS_DUMMY, codes: &RV40_AIC_MODE1_CODES_DUMMY };
70 let cb = Codebook::new(&mut coderead, CodebookMode::MSB).unwrap();
71 aic_mode1_cb.push(cb);
75 let mut aic_mode2_cb: Vec<Codebook<i8>> = Vec::with_capacity(RV40_AIC_MODE2_BITS.len());
76 for i in 0..RV40_AIC_MODE2_BITS.len() {
77 let mut coderead = AICCodeReader16{ lengths: &RV40_AIC_MODE2_BITS[i], codes: &RV40_AIC_MODE2_CODES[i] };
78 let cb = Codebook::new(&mut coderead, CodebookMode::MSB).unwrap();
79 aic_mode2_cb.push(cb);
82 let mut ptype_cb: Vec<Codebook<MBType>> = Vec::with_capacity(RV40_PTYPE_BITS.len());
83 for i in 0..RV40_PTYPE_BITS.len() {
84 let mut coderead = TypeCodeReader{ lengths: &RV40_PTYPE_BITS[i], codes: &RV40_PTYPE_CODES[i], syms: RV40_PTYPE_SYMS };
85 let cb = Codebook::new(&mut coderead, CodebookMode::MSB).unwrap();
89 let mut btype_cb: Vec<Codebook<MBType>> = Vec::with_capacity(RV40_BTYPE_BITS.len());
90 for i in 0..RV40_BTYPE_BITS.len() {
91 let mut coderead = TypeCodeReader{ lengths: &RV40_BTYPE_BITS[i], codes: &RV40_BTYPE_CODES[i], syms: RV40_BTYPE_SYMS };
92 let cb = Codebook::new(&mut coderead, CodebookMode::MSB).unwrap();
99 aic_top_cb: aic_top_cb,
100 aic_mode1_cb: aic_mode1_cb,
101 aic_mode2_cb: aic_mode2_cb,
107 fn predict_b_mv_component(&self, sstate: &SState, mvi: &MVInfo, mbinfo: &Vec<RV34MBInfo>, mbtype: MBType, fwd: bool) -> MV {
108 let mut pred_mvs: [MV; 3] = [ZERO_MV; 3];
109 let mut mv_count: usize = 0;
110 let mb_x = sstate.mb_x;
111 let mb_y = sstate.mb_y;
112 let mb_stride = sstate.mb_w;
113 let mb_idx = mb_x + mb_y * mb_stride;
115 if !mbtype.has_mv_dir(fwd) {
119 if sstate.has_left && mbinfo[mb_idx - 1].mbtype.has_mv_dir(fwd) {
120 pred_mvs[mv_count] = mvi.get_mv(mb_x - 1, mb_y, 0, 0, fwd);
126 if mbinfo[mb_idx - mb_stride].mbtype.has_mv_dir(fwd) {
127 pred_mvs[mv_count] = mvi.get_mv(mb_x, mb_y - 1, 0, 0, fwd);
131 if mbinfo[mb_idx - mb_stride + 1].mbtype.has_mv_dir(fwd) {
132 pred_mvs[mv_count] = mvi.get_mv(mb_x + 1, mb_y - 1, 0, 0, fwd);
136 if sstate.has_tl && mbinfo[mb_idx - mb_stride - 1].mbtype.has_mv_dir(fwd) {
137 pred_mvs[mv_count] = mvi.get_mv(mb_x - 1, mb_y - 1, 0, 0, fwd);
143 3 => MV::pred(pred_mvs[0], pred_mvs[1], pred_mvs[2]),
144 2 => { let sum_mv = pred_mvs[0] + pred_mvs[1]; MV { x: sum_mv.x / 2, y: sum_mv.y / 2 } },
151 fn get_dimension(br: &mut BitReader, tab: &'static [i16]) -> DecoderResult<usize> {
152 let t = br.read(3)? as usize;
153 if tab[t] > 0 { return Ok(tab[t] as usize); }
155 let idx = (-tab[t] as usize) + (br.read(1)? as usize);
156 if tab[idx] != 0 { return Ok(tab[idx] as usize); }
158 let mut size: usize = 0;
160 let t = br.read(8)? as usize;
162 if t != 255 { break; }
167 impl RV34BitstreamDecoder for RealVideo40BR {
168 fn decode_slice_header(&mut self, br: &mut BitReader, old_w: usize, old_h: usize) -> DecoderResult<RV34SliceHeader> {
169 if br.read(1)? != 0 { return Err(DecoderError::InvalidData); }
170 let ft_idx = br.read(2)?;
171 let ftype = match ft_idx {
176 let q = br.read(5)? as u8;
177 if br.read(2)? != 0 { return Err(DecoderError::InvalidData); }
178 let set_idx = br.read(2)? as usize;
179 let deblock = !br.read_bool()?;
180 let pts = br.read(13)? as u16;
183 if (ftype == FrameType::I) || !br.read_bool()? {
184 w = get_dimension(br, &RV40_STANDARD_WIDTHS)?;
185 h = get_dimension(br, &RV40_STANDARD_HEIGHTS)?;
190 let start = br.read(get_slice_start_offset_bits(w, h))? as usize;
191 //println!(" type {:?} q {} set {} pts {} {}x{} start {} @ {}", ftype, q, set_idx, pts, w, h, start, br.tell());
193 self.had_skip_run = false;
195 Ok(RV34SliceHeader{ ftype: ftype, quant: q, deblock: deblock, pts: pts, width: w, height: h, start: start, end: 0, set_idx: set_idx })
197 fn decode_intra_pred(&mut self, br: &mut BitReader, types: &mut [i8], mut pos: usize, tstride: usize, has_top: bool) -> DecoderResult<()> {
199 //println!(" @ {}", br.tell());
203 let code = br.read_cb(&self.aic_top_cb)?;
204 types[pos + 0] = (code >> 2) & 2;
205 types[pos + 1] = (code >> 1) & 2;
206 types[pos + 2] = (code >> 0) & 2;
207 types[pos + 3] = (code << 1) & 2;
208 //println!(" first line {} {} {} {} @ {}", types[pos +0],types[pos+1],types[pos+2],types[pos+3],br.tell());
213 let mut x: usize = 0;
215 let tr = types[pos + x - tstride + 1];
216 let t = types[pos + x - tstride];
217 let l = types[pos + x - 1];
218 //println!(" x = {} ctx {} {} {} @ {}", x, l, t, tr, br.tell());
219 let ctx = if x < 3 { ((tr & 0xF) as u16) + (((t as u16) & 0xF) << 4) + (((l as u16) & 0xF) << 8) } else { 0xFFF };
220 let res = RV40_AIC_PATTERNS.iter().position(|&x| x == ctx);
221 if let Some(idx) = res {
222 let code = br.read_cb(&self.aic_mode2_cb[idx])?;
223 types[pos + x + 0] = code / 9;
224 types[pos + x + 1] = code % 9;
225 //println!(" -> {} {}", types[pos + x + 0], types[pos + x + 1]);
228 if (t != -1) && (l != -1) {
229 let idx = (t as usize) + (l as usize) * 10;
230 types[pos + x] = br.read_cb(&self.aic_mode1_cb[idx])?;
233 -1 if t < 2 => { types[pos + x] = (br.read(1)? as i8) ^ 1; },
234 0 | 2 => { types[pos + x] = ((br.read(1)? as i8) ^ 1) << 1; },
235 _ => { types[pos + x] = 0; },
238 //println!(" -> {}", types[pos + x]);
246 fn decode_inter_mb_hdr(&mut self, br: &mut BitReader, ftype: FrameType, mbtype_ref: MBType) -> DecoderResult<MBInfo> {
247 let skip_run = if self.had_skip_run { 0 } else { br.read_code(UintCodeType::Gamma)? as usize };
249 self.had_skip_run = true;
250 return Ok(MBInfo { mbtype: MBType::MBSkip, skip_run: skip_run - 1, dquant: false })
252 self.had_skip_run = false;
255 if ftype == FrameType::P {
256 idx = match mbtype_ref {
257 MBType::MBIntra => 0,
258 MBType::MBIntra16 => 1,
259 MBType::MBP16x16 => 2,
261 MBType::MBP16x8 => 4,
262 MBType::MBP8x16 => 5,
263 MBType::MBP16x16Mix => 6,
266 mbtype = br.read_cb(&self.ptype_cb[idx])?;
268 idx = match mbtype_ref {
269 MBType::MBIntra => 0,
270 MBType::MBIntra16 => 1,
271 MBType::MBForward => 2,
272 MBType::MBBackward => 3,
273 MBType::MBBidir => 4,
274 MBType::MBDirect => 5,
277 mbtype = br.read_cb(&self.btype_cb[idx])?;
279 let dquant = mbtype == MBType::Invalid;
281 mbtype = if ftype == FrameType::P { br.read_cb(&self.ptype_cb[idx])? }
282 else { br.read_cb(&self.btype_cb[idx])? };
284 Ok(MBInfo { mbtype: mbtype, skip_run: 0, dquant: dquant })
286 fn predict_b_mv(&self, sstate: &SState, mvi: &MVInfo, mbtype: MBType, mvs: &[MV], mbinfo: &Vec<RV34MBInfo>) -> (MV, MV) {
287 let mut mv_f = self.predict_b_mv_component(sstate, mvi, mbinfo, mbtype, true);
288 let mut mv_b = self.predict_b_mv_component(sstate, mvi, mbinfo, mbtype, false);
291 MBType::MBForward => { mv_f += mvs[0]; },
292 MBType::MBBackward => { mv_b += mvs[0]; },
302 fn quant_dc(&self, is_intra: bool, q: u8) -> u8 { RV40_QUANT_DC[if is_intra { 0 } else { 1 }][q as usize] }
305 struct RealVideo40Decoder {
307 info: Rc<NACodecInfo>,
311 impl RealVideo40Decoder {
314 bd: RealVideo40BR::new(),
315 info: Rc::new(DUMMY_CODEC_INFO),
316 dec: RV34Decoder::new(false, Box::new(RV40DSP::new())),
321 impl NADecoder for RealVideo40Decoder {
322 fn init(&mut self, info: Rc<NACodecInfo>) -> DecoderResult<()> {
323 if let NACodecTypeInfo::Video(vinfo) = info.get_properties() {
324 let fmt = formats::YUV420_FORMAT;
325 let myinfo = NACodecTypeInfo::Video(NAVideoInfo::new(0, 0, false, fmt));
326 self.info = Rc::new(NACodecInfo::new_ref(info.get_name(), myinfo, info.get_extradata()));
328 let edata = info.get_extradata().unwrap();
329 let src: &[u8] = &edata;
333 for i in 0..src.len() { print!(" {:02X}", src[i]); } println!("");
335 if src.len() < 2 { return Err(DecoderError::InvalidData); }
337 self.bd.width = vinfo.get_width();
338 self.bd.height = vinfo.get_height();
342 Err(DecoderError::InvalidData)
345 fn decode(&mut self, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
346 let src = pkt.get_buffer();
348 //println!(" decode frame size {}, {} slices", src.len(), src[0]+1);
350 let (bufinfo, ftype, ts) = self.dec.parse_frame(src.as_slice(), &mut self.bd)?;
352 let mut frm = NAFrame::new_from_pkt(pkt, self.info.clone(), bufinfo);
353 frm.set_keyframe(ftype == FrameType::I);
354 frm.set_frame_type(ftype);
355 frm.set_pts(Some(ts));
356 Ok(Rc::new(RefCell::new(frm)))
360 pub fn get_decoder() -> Box<NADecoder> {
361 Box::new(RealVideo40Decoder::new())
366 use test::dec_video::test_file_decoding;
369 // test_file_decoding("realmedia", "assets/RV/rv40_ralf.rmvb", Some(1000), true, false, /*None*/Some("rv40"));
370 test_file_decoding("realmedia", "assets/RV/rv40_weighted_mc.rmvb", Some(400), true, false, None/*Some("rv40")*/);
371 // test_file_decoding("realmedia", "assets/RV/rv40_weighted_mc_2.rmvb", Some(1000), true, false, /*None*/Some("rv40"));
376 const RV40_STANDARD_WIDTHS: [i16; 8] = [ 160, 172, 240, 320, 352, 640, 704, 0 ];
377 const RV40_STANDARD_HEIGHTS: [i16; 12] = [ 120, 132, 144, 240, 288, 480, -8, -10, 180, 360, 576, 0 ];
379 const RV40_QUANT_DC: [[u8; 32]; 2] = [
381 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
382 16, 17, 17, 18, 18, 18, 19, 19, 19, 20, 20, 20, 22, 22, 22, 22
384 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
385 16, 17, 18, 19, 20, 20, 21, 21, 22, 23, 23, 23, 24, 24, 24, 24
389 const RV40_AIC_PATTERNS: [u16; 20] = [
391 0x011, 0x111, 0x211, 0x511, 0x611,
392 0x022, 0x122, 0x222, 0x722,
398 const RV40_AIC_TOP_CODES: [u8; 16] = [
399 0x01, 0x05, 0x01, 0x00, 0x03, 0x3D, 0x1D, 0x02,
400 0x04, 0x3C, 0x3F, 0x1C, 0x0D, 0x3E, 0x0C, 0x01
402 const RV40_AIC_TOP_BITS: [u8; 16] = [
403 1, 4, 5, 5, 5, 7, 6, 5, 4, 7, 7, 6, 5, 7, 5, 3
406 const RV40_AIC_MODE1_CODES_DUMMY: [u8; 1] = [ 0 ];
407 const RV40_AIC_MODE1_BITS_DUMMY: [u8; 1] = [ 1 ];
409 const RV40_AIC_MODE1_CODES: [[u8; 9]; 90] = [
410 [ 0x01, 0x01, 0x01, 0x11, 0x00, 0x09, 0x03, 0x10, 0x05 ],
411 [ 0x09, 0x01, 0x01, 0x05, 0x11, 0x00, 0x03, 0x21, 0x20 ],
412 [ 0x01, 0x01, 0x01, 0x11, 0x09, 0x10, 0x05, 0x00, 0x03 ],
413 [ 0x01, 0x01, 0x00, 0x03, 0x21, 0x05, 0x09, 0x20, 0x11 ],
414 [ 0x01, 0x09, 0x00, 0x29, 0x08, 0x15, 0x03, 0x0B, 0x28 ],
415 [ 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x03, 0x02 ],
416 [ 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x01, 0x09, 0x08 ],
417 [ 0x01, 0x01, 0x01, 0x09, 0x01, 0x08, 0x00, 0x03, 0x05 ],
418 [ 0x01, 0x01, 0x01, 0x00, 0x05, 0x11, 0x09, 0x10, 0x03 ],
419 [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ],
421 [ 0x01, 0x01, 0x01, 0x05, 0x01, 0x00, 0x03, 0x09, 0x08 ],
422 [ 0x09, 0x01, 0x01, 0x05, 0x11, 0x00, 0x03, 0x21, 0x20 ],
423 [ 0x01, 0x01, 0x01, 0x0D, 0x05, 0x04, 0x00, 0x07, 0x0C ],
424 [ 0x01, 0x01, 0x00, 0x05, 0x11, 0x03, 0x09, 0x21, 0x20 ],
425 [ 0x05, 0x01, 0x01, 0x11, 0x00, 0x09, 0x03, 0x21, 0x20 ],
426 [ 0x09, 0x01, 0x01, 0x00, 0x05, 0x01, 0x03, 0x11, 0x10 ],
427 [ 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x03, 0x02 ],
428 [ 0x01, 0x01, 0x01, 0x09, 0x00, 0x05, 0x01, 0x03, 0x08 ],
429 [ 0x01, 0x01, 0x01, 0x09, 0x11, 0x05, 0x00, 0x10, 0x03 ],
430 [ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ],
432 [ 0x01, 0x00, 0x01, 0x09, 0x08, 0x15, 0x14, 0x0B, 0x03 ],
433 [ 0x0D, 0x01, 0x01, 0x05, 0x0C, 0x04, 0x01, 0x00, 0x07 ],
434 [ 0x01, 0x01, 0x01, 0x05, 0x00, 0x04, 0x03, 0x01, 0x01 ],
435 [ 0x05, 0x01, 0x01, 0x04, 0x19, 0x07, 0x18, 0x0D, 0x00 ],
436 [ 0x11, 0x09, 0x01, 0x21, 0x05, 0x20, 0x01, 0x00, 0x03 ],
437 [ 0x41, 0x01, 0x00, 0x05, 0x40, 0x03, 0x09, 0x21, 0x11 ],
438 [ 0x29, 0x01, 0x00, 0x28, 0x09, 0x15, 0x03, 0x08, 0x0B ],
439 [ 0x01, 0x00, 0x01, 0x11, 0x09, 0x10, 0x05, 0x01, 0x03 ],
440 [ 0x05, 0x01, 0x01, 0x04, 0x0D, 0x0C, 0x07, 0x00, 0x01 ],
441 [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ],
443 [ 0x01, 0x00, 0x03, 0x05, 0x11, 0x10, 0x25, 0x24, 0x13 ],
444 [ 0x21, 0x01, 0x01, 0x00, 0x11, 0x03, 0x05, 0x20, 0x09 ],
445 [ 0x01, 0x01, 0x01, 0x00, 0x09, 0x11, 0x10, 0x05, 0x03 ],
446 [ 0x21, 0x05, 0x01, 0x01, 0x09, 0x00, 0x11, 0x20, 0x03 ],
447 [ 0x05, 0x01, 0x00, 0x04, 0x01, 0x19, 0x07, 0x18, 0x0D ],
448 [ 0x11, 0x01, 0x00, 0x01, 0x09, 0x01, 0x03, 0x10, 0x05 ],
449 [ 0x1D, 0x01, 0x05, 0x0D, 0x0C, 0x04, 0x00, 0x1C, 0x0F ],
450 [ 0x05, 0x19, 0x01, 0x04, 0x00, 0x18, 0x1B, 0x1A, 0x07 ],
451 [ 0x09, 0x01, 0x00, 0x01, 0x05, 0x03, 0x11, 0x10, 0x01 ],
452 [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ],
454 [ 0x01, 0x00, 0x03, 0x41, 0x05, 0x40, 0x09, 0x11, 0x21 ],
455 [ 0x05, 0x01, 0x01, 0x19, 0x04, 0x07, 0x00, 0x18, 0x0D ],
456 [ 0x01, 0x01, 0x01, 0x05, 0x01, 0x04, 0x01, 0x00, 0x03 ],
457 [ 0x01, 0x05, 0x00, 0x0D, 0x01, 0x04, 0x07, 0x19, 0x18 ],
458 [ 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x03, 0x02 ],
459 [ 0x31, 0x01, 0x05, 0x19, 0x04, 0x07, 0x00, 0x30, 0x0D ],
460 [ 0x01, 0x00, 0x03, 0x11, 0x01, 0x05, 0x01, 0x09, 0x10 ],
461 [ 0x01, 0x05, 0x01, 0x11, 0x01, 0x10, 0x00, 0x03, 0x09 ],
462 [ 0x01, 0x09, 0x00, 0x29, 0x03, 0x08, 0x28, 0x15, 0x0B ],
463 [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ],
465 [ 0x01, 0x01, 0x00, 0x09, 0x15, 0x03, 0x08, 0x14, 0x0B ],
466 [ 0x11, 0x01, 0x01, 0x00, 0x09, 0x01, 0x03, 0x10, 0x05 ],
467 [ 0x01, 0x00, 0x03, 0x25, 0x11, 0x05, 0x10, 0x24, 0x13 ],
468 [ 0x11, 0x01, 0x00, 0x01, 0x09, 0x01, 0x05, 0x10, 0x03 ],
469 [ 0x05, 0x01, 0x00, 0x0D, 0x0C, 0x04, 0x0F, 0x1D, 0x1C ],
470 [ 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x03, 0x02 ],
471 [ 0x21, 0x01, 0x05, 0x09, 0x11, 0x00, 0x03, 0x41, 0x40 ],
472 [ 0x05, 0x01, 0x00, 0x1D, 0x1C, 0x0D, 0x0C, 0x0F, 0x04 ],
473 [ 0x05, 0x01, 0x00, 0x0D, 0x31, 0x04, 0x19, 0x30, 0x07 ],
474 [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ],
476 [ 0x01, 0x01, 0x00, 0x21, 0x05, 0x11, 0x03, 0x09, 0x20 ],
477 [ 0x01, 0x01, 0x00, 0x11, 0x03, 0x05, 0x01, 0x09, 0x10 ],
478 [ 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x03, 0x02 ],
479 [ 0x05, 0x01, 0x04, 0x19, 0x07, 0x0D, 0x00, 0x31, 0x30 ],
480 [ 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x03, 0x02 ],
481 [ 0x05, 0x01, 0x01, 0x11, 0x09, 0x00, 0x03, 0x21, 0x20 ],
482 [ 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x03, 0x02 ],
483 [ 0x01, 0x01, 0x01, 0x00, 0x01, 0x03, 0x01, 0x01, 0x02 ],
484 [ 0x09, 0x01, 0x00, 0x29, 0x08, 0x15, 0x03, 0x28, 0x0B ],
485 [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ],
487 [ 0x01, 0x01, 0x01, 0x05, 0x01, 0x04, 0x00, 0x01, 0x03 ],
488 [ 0x09, 0x01, 0x00, 0x29, 0x28, 0x15, 0x08, 0x03, 0x0B ],
489 [ 0x01, 0x00, 0x01, 0x11, 0x05, 0x10, 0x09, 0x01, 0x03 ],
490 [ 0x05, 0x04, 0x01, 0x1D, 0x0D, 0x0C, 0x1C, 0x00, 0x0F ],
491 [ 0x09, 0x11, 0x01, 0x41, 0x00, 0x40, 0x05, 0x03, 0x21 ],
492 [ 0x0D, 0x05, 0x01, 0x1D, 0x1C, 0x0C, 0x04, 0x00, 0x0F ],
493 [ 0x41, 0x09, 0x01, 0x40, 0x00, 0x11, 0x05, 0x03, 0x21 ],
494 [ 0x01, 0x01, 0x01, 0x05, 0x01, 0x04, 0x00, 0x01, 0x03 ],
495 [ 0x05, 0x04, 0x01, 0x0D, 0x01, 0x0C, 0x07, 0x01, 0x00 ],
496 [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ],
498 [ 0x05, 0x04, 0x01, 0x07, 0x19, 0x31, 0x30, 0x0D, 0x00 ],
499 [ 0x21, 0x01, 0x01, 0x00, 0x11, 0x09, 0x20, 0x05, 0x03 ],
500 [ 0x05, 0x01, 0x01, 0x04, 0x07, 0x0D, 0x0C, 0x00, 0x01 ],
501 [ 0x21, 0x09, 0x01, 0x00, 0x20, 0x05, 0x23, 0x22, 0x03 ],
502 [ 0x31, 0x0D, 0x01, 0x19, 0x05, 0x30, 0x04, 0x07, 0x00 ],
503 [ 0x31, 0x05, 0x01, 0x04, 0x19, 0x00, 0x0D, 0x30, 0x07 ],
504 [ 0x31, 0x01, 0x00, 0x0D, 0x05, 0x19, 0x04, 0x30, 0x07 ],
505 [ 0x01, 0x01, 0x01, 0x00, 0x01, 0x03, 0x02, 0x01, 0x01 ],
506 [ 0x01, 0x00, 0x01, 0x01, 0x05, 0x09, 0x08, 0x03, 0x01 ],
507 [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ],
509 static RV40_AIC_MODE1_BITS: [[u8; 9]; 90] = [
510 [ 1, 4, 2, 7, 4, 6, 4, 7, 5 ],
511 [ 5, 1, 3, 4, 6, 3, 3, 7, 7 ],
512 [ 1, 4, 2, 7, 6, 7, 5, 4, 4 ],
513 [ 1, 3, 3, 3, 7, 4, 5, 7, 6 ],
514 [ 2, 4, 2, 6, 4, 5, 2, 4, 6 ],
515 [ 7, 2, 3, 4, 7, 1, 5, 7, 7 ],
516 [ 5, 1, 3, 6, 5, 5, 2, 7, 7 ],
517 [ 2, 5, 1, 7, 3, 7, 5, 5, 6 ],
518 [ 2, 4, 1, 4, 5, 7, 6, 7, 4 ],
519 [ 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
521 [ 2, 1, 3, 6, 5, 5, 5, 7, 7 ],
522 [ 5, 1, 3, 4, 6, 3, 3, 7, 7 ],
523 [ 4, 1, 2, 6, 5, 5, 4, 5, 6 ],
524 [ 3, 1, 3, 4, 6, 3, 5, 7, 7 ],
525 [ 4, 1, 3, 6, 3, 5, 3, 7, 7 ],
526 [ 6, 1, 4, 4, 5, 2, 4, 7, 7 ],
527 [ 7, 1, 5, 7, 4, 3, 2, 7, 7 ],
528 [ 5, 3, 2, 7, 5, 6, 1, 5, 7 ],
529 [ 4, 1, 2, 6, 7, 5, 4, 7, 4 ],
530 [ 1, 0, 1, 0, 0, 0, 0, 0, 0 ],
532 [ 3, 3, 1, 5, 5, 6, 6, 5, 3 ],
533 [ 6, 2, 1, 5, 6, 5, 4, 4, 5 ],
534 [ 6, 4, 1, 7, 6, 7, 6, 3, 2 ],
535 [ 4, 3, 1, 4, 6, 4, 6, 5, 3 ],
536 [ 6, 5, 1, 7, 4, 7, 3, 3, 3 ],
537 [ 7, 2, 2, 3, 7, 2, 4, 6, 5 ],
538 [ 6, 2, 2, 6, 4, 5, 2, 4, 4 ],
539 [ 4, 4, 1, 7, 6, 7, 5, 2, 4 ],
540 [ 5, 4, 1, 5, 6, 6, 5, 4, 2 ],
541 [ 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
543 [ 2, 2, 2, 3, 5, 5, 6, 6, 5 ],
544 [ 7, 1, 3, 3, 6, 3, 4, 7, 5 ],
545 [ 2, 4, 1, 4, 6, 7, 7, 5, 4 ],
546 [ 7, 4, 3, 1, 5, 3, 6, 7, 3 ],
547 [ 4, 3, 3, 4, 1, 6, 4, 6, 5 ],
548 [ 7, 4, 4, 2, 6, 1, 4, 7, 5 ],
549 [ 5, 2, 3, 4, 4, 3, 2, 5, 4 ],
550 [ 3, 5, 2, 3, 2, 5, 5, 5, 3 ],
551 [ 6, 4, 4, 2, 5, 4, 7, 7, 1 ],
552 [ 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
554 [ 2, 2, 2, 7, 3, 7, 4, 5, 6 ],
555 [ 4, 1, 3, 6, 4, 4, 3, 6, 5 ],
556 [ 2, 4, 1, 7, 3, 7, 6, 6, 6 ],
557 [ 3, 4, 3, 5, 1, 4, 4, 6, 6 ],
558 [ 4, 5, 2, 7, 1, 7, 3, 7, 7 ],
559 [ 6, 2, 3, 5, 3, 3, 2, 6, 4 ],
560 [ 4, 4, 4, 7, 2, 5, 1, 6, 7 ],
561 [ 4, 5, 2, 7, 1, 7, 4, 4, 6 ],
562 [ 2, 4, 2, 6, 2, 4, 6, 5, 4 ],
563 [ 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
565 [ 1, 3, 3, 5, 6, 3, 5, 6, 5 ],
566 [ 7, 1, 4, 4, 6, 2, 4, 7, 5 ],
567 [ 2, 2, 2, 6, 5, 3, 5, 6, 5 ],
568 [ 7, 4, 4, 2, 6, 1, 5, 7, 4 ],
569 [ 3, 2, 2, 4, 4, 3, 4, 5, 5 ],
570 [ 7, 2, 5, 3, 7, 1, 4, 7, 7 ],
571 [ 6, 2, 3, 4, 5, 2, 2, 7, 7 ],
572 [ 3, 2, 2, 5, 5, 4, 4, 4, 3 ],
573 [ 3, 2, 2, 4, 6, 3, 5, 6, 3 ],
574 [ 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
576 [ 1, 3, 3, 7, 4, 6, 3, 5, 7 ],
577 [ 4, 1, 4, 7, 4, 5, 2, 6, 7 ],
578 [ 2, 4, 1, 7, 5, 7, 3, 7, 7 ],
579 [ 3, 2, 3, 5, 3, 4, 2, 6, 6 ],
580 [ 3, 5, 4, 7, 2, 7, 1, 7, 7 ],
581 [ 4, 1, 3, 6, 5, 3, 3, 7, 7 ],
582 [ 4, 2, 5, 7, 3, 7, 1, 7, 7 ],
583 [ 7, 4, 1, 7, 3, 7, 2, 5, 7 ],
584 [ 4, 2, 2, 6, 4, 5, 2, 6, 4 ],
585 [ 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
587 [ 3, 4, 1, 7, 6, 7, 6, 2, 6 ],
588 [ 4, 2, 2, 6, 6, 5, 4, 2, 4 ],
589 [ 4, 4, 1, 7, 5, 7, 6, 2, 4 ],
590 [ 3, 3, 2, 5, 4, 4, 5, 2, 4 ],
591 [ 4, 5, 2, 7, 2, 7, 3, 2, 6 ],
592 [ 4, 3, 2, 5, 5, 4, 3, 2, 4 ],
593 [ 7, 4, 2, 7, 2, 5, 3, 2, 6 ],
594 [ 4, 6, 2, 7, 3, 7, 6, 1, 6 ],
595 [ 5, 5, 1, 6, 4, 6, 5, 2, 4 ],
596 [ 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
598 [ 3, 3, 2, 3, 5, 6, 6, 4, 2 ],
599 [ 7, 1, 3, 3, 6, 5, 7, 4, 3 ],
600 [ 5, 4, 1, 5, 5, 6, 6, 4, 2 ],
601 [ 6, 4, 2, 2, 6, 3, 6, 6, 2 ],
602 [ 6, 4, 2, 5, 3, 6, 3, 3, 2 ],
603 [ 6, 3, 2, 3, 5, 2, 4, 6, 3 ],
604 [ 6, 2, 2, 4, 3, 5, 3, 6, 3 ],
605 [ 7, 5, 1, 7, 4, 7, 7, 3, 2 ],
606 [ 5, 5, 2, 3, 6, 7, 7, 5, 1 ],
607 [ 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
610 const RV40_AIC_MODE2_CODES: [[u16; 81]; 20] = [
612 0x0001, 0x0001, 0x0005, 0x01F5, 0x0011, 0x0049, 0x0000, 0x0048, 0x004B,
613 0x0035, 0x0003, 0x0034, 0x03C9, 0x01F4, 0x00C9, 0x004A, 0x0FD9, 0x03C8,
614 0x0010, 0x0037, 0x0001, 0x00C8, 0x0075, 0x01F7, 0x00CB, 0x0074, 0x0002,
615 0x01F6, 0x00CA, 0x01F1, 0x01F0, 0x1F81, 0x07F9, 0x1F80, 0x1F83, 0x07F8,
616 0x0077, 0x00F5, 0x0036, 0x07FB, 0x0076, 0x1F82, 0x00F4, 0x00F7, 0x07FA,
617 0x0071, 0x00F6, 0x03CB, 0x03CA, 0x0FD8, 0x00F1, 0x03F5, 0x1F8D, 0x07E5,
618 0x0013, 0x0031, 0x00F0, 0x0FDB, 0x00F3, 0x07E4, 0x0030, 0x01F3, 0x07E7,
619 0x03F4, 0x07E6, 0x0070, 0x3F19, 0x01F2, 0x3F18, 0x0FDA, 0x0033, 0x07E1,
620 0x01FD, 0x01FC, 0x0073, 0x01FF, 0x0FC5, 0x0FC4, 0x0FC7, 0x03F7, 0x0072,
622 0x0005, 0x0005, 0x0005, 0x0079, 0x0005, 0x000D, 0x001D, 0x0078, 0x0069,
623 0x0004, 0x0001, 0x0007, 0x0068, 0x001C, 0x001F, 0x0004, 0x006B, 0x000C,
624 0x0004, 0x001E, 0x0006, 0x006A, 0x0015, 0x000F, 0x0014, 0x0017, 0x0007,
625 0x0016, 0x000E, 0x0011, 0x0009, 0x00D1, 0x00D0, 0x0181, 0x00D3, 0x007B,
626 0x0010, 0x0013, 0x0004, 0x00D2, 0x0007, 0x0319, 0x0008, 0x007A, 0x00DD,
627 0x0019, 0x0006, 0x000B, 0x0065, 0x00DC, 0x0012, 0x0064, 0x0180, 0x00DF,
628 0x0006, 0x0018, 0x0001, 0x00DE, 0x001D, 0x00D9, 0x001B, 0x0067, 0x000A,
629 0x00D8, 0x00DB, 0x001C, 0x0318, 0x00DA, 0x0635, 0x0183, 0x0000, 0x00C5,
630 0x0066, 0x0061, 0x0035, 0x00C4, 0x0182, 0x0634, 0x031B, 0x00C7, 0x001F,
632 0x0005, 0x0001, 0x001D, 0x01C1, 0x0035, 0x00F1, 0x006D, 0x00F0, 0x0049,
633 0x0000, 0x0004, 0x0003, 0x00F3, 0x0048, 0x0034, 0x006C, 0x01C0, 0x01C3,
634 0x0007, 0x0006, 0x0001, 0x006F, 0x0002, 0x004B, 0x006E, 0x001C, 0x0005,
635 0x0069, 0x0068, 0x006B, 0x0037, 0x01C2, 0x00F2, 0x0395, 0x01CD, 0x00FD,
636 0x006A, 0x0036, 0x0015, 0x01CC, 0x0014, 0x0394, 0x004A, 0x00FC, 0x00FF,
637 0x0017, 0x0031, 0x00FE, 0x01CF, 0x0397, 0x00F9, 0x01CE, 0x0725, 0x0396,
638 0x0016, 0x0030, 0x0075, 0x0724, 0x00F8, 0x0727, 0x0033, 0x0391, 0x0390,
639 0x0011, 0x0032, 0x001F, 0x00FB, 0x0074, 0x0726, 0x00FA, 0x001E, 0x0077,
640 0x0019, 0x0018, 0x0004, 0x0010, 0x003D, 0x0076, 0x0071, 0x0013, 0x0001,
642 0x000D, 0x0019, 0x0011, 0x0015, 0x0061, 0x0019, 0x0014, 0x01AD, 0x0060,
643 0x0018, 0x0001, 0x0005, 0x001B, 0x0010, 0x0019, 0x0005, 0x0017, 0x0018,
644 0x0016, 0x0004, 0x0004, 0x0013, 0x000C, 0x0012, 0x001A, 0x0018, 0x0005,
645 0x000F, 0x001B, 0x0004, 0x001D, 0x0011, 0x001C, 0x0010, 0x000E, 0x001B,
646 0x0013, 0x001F, 0x001A, 0x0029, 0x0005, 0x0063, 0x001E, 0x0009, 0x0062,
647 0x0008, 0x0007, 0x0007, 0x0019, 0x0004, 0x001A, 0x0018, 0x006D, 0x0007,
648 0x001B, 0x0007, 0x001A, 0x006C, 0x0006, 0x0012, 0x0005, 0x006F, 0x000B,
649 0x006E, 0x0069, 0x001D, 0x0359, 0x0028, 0x002B, 0x002A, 0x001C, 0x00D5,
650 0x0358, 0x001F, 0x0001, 0x001E, 0x0068, 0x00D4, 0x00D7, 0x0019, 0x0000,
652 0x00B9, 0x0061, 0x0060, 0x00B8, 0x02B5, 0x01AD, 0x00BB, 0x0AF5, 0x0151,
653 0x0001, 0x0001, 0x0005, 0x0000, 0x0003, 0x0005, 0x0004, 0x0063, 0x0025,
654 0x00BA, 0x0004, 0x0007, 0x0062, 0x00A5, 0x0024, 0x006D, 0x0002, 0x006C,
655 0x02B4, 0x000D, 0x006F, 0x0027, 0x00A4, 0x0026, 0x01AC, 0x0150, 0x01AF,
656 0x01AE, 0x0021, 0x006E, 0x02B7, 0x0020, 0x0153, 0x0023, 0x00A7, 0x0152,
657 0x00A6, 0x0006, 0x000C, 0x0022, 0x01A9, 0x0019, 0x002D, 0x02B6, 0x01A8,
658 0x000F, 0x0007, 0x000E, 0x00A1, 0x0069, 0x002C, 0x0001, 0x01AB, 0x00A0,
659 0x02B1, 0x00A3, 0x002F, 0x0AF4, 0x02B0, 0x0AF7, 0x02B3, 0x0068, 0x015D,
660 0x0AF6, 0x01AA, 0x0055, 0x015C, 0x02B2, 0x0579, 0x0578, 0x015F, 0x00A2,
662 0x0905, 0x013D, 0x013C, 0x0904, 0x121D, 0x049D, 0x049C, 0x243D, 0x0907,
663 0x00ED, 0x0001, 0x0015, 0x0041, 0x013F, 0x0031, 0x0014, 0x025D, 0x025C,
664 0x013E, 0x000D, 0x0000, 0x0040, 0x0139, 0x0043, 0x0030, 0x0017, 0x0033,
665 0x0906, 0x0032, 0x0042, 0x00EC, 0x025F, 0x00EF, 0x025E, 0x049F, 0x0138,
666 0x0901, 0x013B, 0x0259, 0x121C, 0x049E, 0x0900, 0x0258, 0x243C, 0x121F,
667 0x0903, 0x003D, 0x00EE, 0x025B, 0x025A, 0x004D, 0x013A, 0x0902, 0x0245,
668 0x00E9, 0x0016, 0x00E8, 0x0499, 0x0125, 0x0244, 0x004C, 0x0498, 0x090D,
669 0x00EB, 0x003C, 0x0011, 0x049B, 0x049A, 0x0485, 0x00EA, 0x003F, 0x0124,
670 0x090C, 0x003E, 0x0039, 0x0095, 0x0247, 0x0246, 0x0484, 0x0094, 0x0038,
672 0x0F09, 0x00CD, 0x01FD, 0x0791, 0x1E6D, 0x0790, 0x03D9, 0x3CD1, 0x3CD0,
673 0x0075, 0x0001, 0x0001, 0x0035, 0x00CC, 0x0011, 0x0000, 0x03D8, 0x01FC,
674 0x03DB, 0x0010, 0x0003, 0x00CF, 0x03DA, 0x00CE, 0x0074, 0x0034, 0x0077,
675 0x0793, 0x0013, 0x0076, 0x0071, 0x03C5, 0x0070, 0x01FF, 0x0792, 0x01FE,
676 0x01F9, 0x0037, 0x00C9, 0x0F08, 0x01F8, 0x03C4, 0x00C8, 0x0F0B, 0x079D,
677 0x03C7, 0x0001, 0x0012, 0x0073, 0x00CB, 0x0005, 0x0036, 0x03C6, 0x0072,
678 0x007D, 0x0002, 0x00CA, 0x079C, 0x01FB, 0x00F5, 0x0031, 0x079F, 0x0F0A,
679 0x0F35, 0x079E, 0x01FA, 0x1E6C, 0x1E6F, 0x3CD3, 0x0799, 0x03C1, 0x1E6E,
680 0x3CD2, 0x0030, 0x00F4, 0x007C, 0x03C0, 0x03C3, 0x0798, 0x01E5, 0x00F7,
682 0x01A5, 0x0001, 0x001D, 0x0021, 0x00A1, 0x000D, 0x0061, 0x06B9, 0x00A0,
683 0x0060, 0x0001, 0x0005, 0x000C, 0x0020, 0x001C, 0x0004, 0x01A4, 0x01A7,
684 0x00A3, 0x001F, 0x001E, 0x0023, 0x0022, 0x002D, 0x002C, 0x0063, 0x0062,
685 0x1A81, 0x01A6, 0x01A1, 0x06B8, 0x06BB, 0x00A2, 0x06BA, 0x0D59, 0x06A5,
686 0x01A0, 0x000F, 0x006D, 0x06A4, 0x002F, 0x00AD, 0x006C, 0x06A7, 0x00AC,
687 0x0D58, 0x000E, 0x01A3, 0x00AF, 0x00AE, 0x006F, 0x01A2, 0x0D5B, 0x00A9,
688 0x0019, 0x0001, 0x0009, 0x00A8, 0x006E, 0x002E, 0x0000, 0x01AD, 0x00AB,
689 0x00AA, 0x0355, 0x0029, 0x1A80, 0x1A83, 0x1A82, 0x0354, 0x01AC, 0x0D5A,
690 0x1A8D, 0x01AF, 0x0357, 0x0D45, 0x0D44, 0x0D47, 0x1A8C, 0x06A6, 0x06A1,
692 0x0001, 0x0011, 0x0005, 0x0775, 0x00F9, 0x00F8, 0x0031, 0x0030, 0x0049,
693 0x00FB, 0x0010, 0x0033, 0x0EC9, 0x038D, 0x038C, 0x00FA, 0x038F, 0x0774,
694 0x0048, 0x0032, 0x0000, 0x01D5, 0x00E5, 0x038E, 0x00E4, 0x0013, 0x000D,
695 0x0389, 0x0777, 0x0388, 0x038B, 0x1DF9, 0x0EC8, 0x3BC9, 0x1DF8, 0x038A,
696 0x03B5, 0x0776, 0x00E7, 0x3BC8, 0x01D4, 0x3BCB, 0x0ECB, 0x0771, 0x0ECA,
697 0x01D7, 0x03B4, 0x01D6, 0x1DFB, 0x0EF5, 0x0770, 0x0EF4, 0x3BCA, 0x0773,
698 0x00E6, 0x03B7, 0x004B, 0x1DFA, 0x03B6, 0x0EF7, 0x00E1, 0x0EF6, 0x0EF1,
699 0x03B1, 0x01D1, 0x003D, 0x0EF0, 0x0772, 0x077D, 0x077C, 0x003C, 0x01D0,
700 0x03B0, 0x01D3, 0x003F, 0x03B3, 0x01D2, 0x0EF3, 0x077F, 0x00E0, 0x004A,
702 0x0015, 0x0049, 0x0014, 0x07D1, 0x03FD, 0x03FC, 0x01C1, 0x01C0, 0x00F1,
703 0x0017, 0x0001, 0x0001, 0x01C3, 0x0048, 0x004B, 0x0016, 0x0031, 0x01C2,
704 0x004A, 0x0011, 0x0000, 0x01CD, 0x00F0, 0x01CC, 0x0075, 0x0010, 0x000D,
705 0x03FF, 0x01CF, 0x01CE, 0x07D0, 0x0F81, 0x07D3, 0x1F1D, 0x0F80, 0x07D2,
706 0x01C9, 0x03FE, 0x0074, 0x07DD, 0x00F3, 0x1F1C, 0x07DC, 0x03F9, 0x07DF,
707 0x00F2, 0x00FD, 0x0077, 0x07DE, 0x07D9, 0x01C8, 0x07D8, 0x0F83, 0x03F8,
708 0x0030, 0x0076, 0x0013, 0x0F82, 0x00FC, 0x03FB, 0x0033, 0x03FA, 0x03E5,
709 0x03E4, 0x01CB, 0x0032, 0x1F1F, 0x03E7, 0x07DB, 0x07DA, 0x003D, 0x01CA,
710 0x07C5, 0x03E6, 0x0071, 0x0F8D, 0x07C4, 0x1F1E, 0x0F8C, 0x03E1, 0x01F5,
712 0x0019, 0x0065, 0x0018, 0x0351, 0x0350, 0x0353, 0x0021, 0x0020, 0x0064,
713 0x001D, 0x0005, 0x0005, 0x01A5, 0x0023, 0x0067, 0x0005, 0x0066, 0x0022,
714 0x001B, 0x0004, 0x0001, 0x0004, 0x001C, 0x0061, 0x001A, 0x0005, 0x0004,
715 0x0007, 0x002D, 0x0006, 0x002C, 0x01A4, 0x002F, 0x0352, 0x035D, 0x0060,
716 0x0001, 0x002E, 0x001F, 0x035C, 0x0000, 0x06B1, 0x01A7, 0x0029, 0x01A6,
717 0x0028, 0x0063, 0x0062, 0x035F, 0x01A1, 0x002B, 0x06B0, 0x06B3, 0x01A0,
718 0x0003, 0x006D, 0x001E, 0x035E, 0x006C, 0x06B2, 0x0002, 0x01A3, 0x01A2,
719 0x000D, 0x0005, 0x0007, 0x01AD, 0x006F, 0x002A, 0x006E, 0x0004, 0x0004,
720 0x000C, 0x0007, 0x0006, 0x000F, 0x000E, 0x00D5, 0x0009, 0x0006, 0x0007,
722 0x0065, 0x0181, 0x0064, 0x36C9, 0x06D5, 0x0DB5, 0x0379, 0x0180, 0x0183,
723 0x00D5, 0x001D, 0x001C, 0x0DB4, 0x0182, 0x0378, 0x00D4, 0x00D7, 0x06D4,
724 0x0067, 0x001F, 0x0001, 0x00D6, 0x00D1, 0x018D, 0x0066, 0x0001, 0x0000,
725 0x037B, 0x06D7, 0x037A, 0x0DB7, 0x36C8, 0x06D6, 0x0DB6, 0x1B79, 0x0DB1,
726 0x018C, 0x0365, 0x00D0, 0x1B78, 0x00D3, 0x1B7B, 0x0364, 0x06D1, 0x06D0,
727 0x018F, 0x018E, 0x00D2, 0x36CB, 0x0367, 0x0366, 0x06D3, 0x0DB0, 0x06D2,
728 0x0361, 0x06DD, 0x0189, 0x36CA, 0x0360, 0x36F5, 0x0188, 0x0DB3, 0x36F4,
729 0x0009, 0x0008, 0x0005, 0x06DC, 0x00DD, 0x018B, 0x00DC, 0x0004, 0x000B,
730 0x018A, 0x0061, 0x0003, 0x0363, 0x00DF, 0x06DF, 0x0362, 0x000A, 0x001E,
732 0x001D, 0x0061, 0x000D, 0x0D55, 0x06B9, 0x06B8, 0x01A5, 0x0021, 0x0020,
733 0x0023, 0x000C, 0x0060, 0x0D54, 0x00AD, 0x00AC, 0x0022, 0x00AF, 0x06BB,
734 0x000F, 0x001C, 0x0001, 0x002D, 0x0063, 0x01A4, 0x000E, 0x0001, 0x0005,
735 0x01A7, 0x06BA, 0x01A6, 0x06A5, 0x0D57, 0x0D56, 0x1ABD, 0x0D51, 0x00AE,
736 0x002C, 0x00A9, 0x002F, 0x0D50, 0x01A1, 0x1ABC, 0x06A4, 0x06A7, 0x06A6,
737 0x00A8, 0x06A1, 0x01A0, 0x1ABF, 0x0D53, 0x06A0, 0x0D52, 0x1ABE, 0x06A3,
738 0x0062, 0x002E, 0x0009, 0x0D5D, 0x01A3, 0x0D5C, 0x006D, 0x00AB, 0x06A2,
739 0x006C, 0x001F, 0x0001, 0x06AD, 0x0029, 0x01A2, 0x0028, 0x0004, 0x001E,
740 0x01AD, 0x006F, 0x0000, 0x01AC, 0x01AF, 0x06AC, 0x00AA, 0x006E, 0x0019,
742 0x0019, 0x007D, 0x0018, 0x01B5, 0x000D, 0x01B4, 0x007C, 0x007F, 0x01B7,
743 0x000C, 0x001B, 0x001A, 0x01B6, 0x000F, 0x00D5, 0x0019, 0x007E, 0x00D4,
744 0x0018, 0x001B, 0x0001, 0x000E, 0x0011, 0x0009, 0x0005, 0x0005, 0x0005,
745 0x00D7, 0x01B1, 0x0008, 0x01B0, 0x0079, 0x06FD, 0x0371, 0x0370, 0x00D6,
746 0x0078, 0x01B3, 0x0010, 0x0373, 0x0013, 0x06FC, 0x007B, 0x007A, 0x00D1,
747 0x00D0, 0x00D3, 0x0065, 0x0372, 0x06FF, 0x0064, 0x06FE, 0x037D, 0x00D2,
748 0x00DD, 0x0067, 0x0004, 0x037C, 0x0012, 0x01B2, 0x0007, 0x0066, 0x01BD,
749 0x0006, 0x0061, 0x0004, 0x01BC, 0x001A, 0x0060, 0x001D, 0x0004, 0x001C,
750 0x0063, 0x0001, 0x0007, 0x000B, 0x0000, 0x0062, 0x000A, 0x0005, 0x0007,
752 0x0069, 0x0045, 0x0068, 0x04BD, 0x0255, 0x04BC, 0x00E5, 0x00E4, 0x0031,
753 0x0030, 0x0019, 0x0001, 0x0121, 0x00E7, 0x00E6, 0x0033, 0x00E1, 0x00E0,
754 0x006B, 0x0018, 0x0001, 0x0044, 0x0032, 0x0047, 0x006A, 0x001B, 0x0005,
755 0x003D, 0x0046, 0x0015, 0x0041, 0x0120, 0x0123, 0x04BF, 0x0122, 0x0040,
756 0x003C, 0x00E3, 0x0014, 0x0254, 0x0043, 0x0975, 0x012D, 0x00E2, 0x00ED,
757 0x0042, 0x00EC, 0x004D, 0x0257, 0x0256, 0x0251, 0x04BE, 0x0974, 0x0250,
758 0x00EF, 0x00EE, 0x004C, 0x04B9, 0x012C, 0x04B8, 0x004F, 0x04BB, 0x0253,
759 0x003F, 0x0017, 0x0001, 0x0252, 0x00E9, 0x00E8, 0x00EB, 0x0000, 0x0003,
760 0x0016, 0x0002, 0x0004, 0x004E, 0x003E, 0x00EA, 0x0049, 0x000D, 0x0007,
762 0x000D, 0x01BD, 0x000C, 0x0D31, 0x0D30, 0x0D33, 0x0359, 0x0358, 0x002D,
763 0x0065, 0x001D, 0x001C, 0x0D32, 0x035B, 0x035A, 0x002C, 0x01BC, 0x0345,
764 0x000F, 0x001F, 0x0001, 0x002F, 0x0064, 0x01BF, 0x0067, 0x0001, 0x0005,
765 0x0066, 0x002E, 0x0061, 0x0029, 0x0695, 0x0694, 0x0697, 0x0696, 0x0060,
766 0x01BE, 0x0D3D, 0x0028, 0x1A49, 0x0344, 0x1A48, 0x1A4B, 0x0D3C, 0x0691,
767 0x002B, 0x01B9, 0x002A, 0x0D3F, 0x0690, 0x0347, 0x0D3E, 0x1A4A, 0x0346,
768 0x00D5, 0x0341, 0x0063, 0x0D39, 0x0340, 0x0D38, 0x01B8, 0x0D3B, 0x0D3A,
769 0x00D4, 0x0062, 0x0000, 0x0693, 0x01BB, 0x0343, 0x0342, 0x001E, 0x000E,
770 0x006D, 0x0009, 0x0001, 0x006C, 0x00D7, 0x034D, 0x01BA, 0x0008, 0x0004,
772 0x0075, 0x00CD, 0x0035, 0x03C1, 0x03C0, 0x07F9, 0x03C3, 0x1F8D, 0x00CC,
773 0x0074, 0x0011, 0x0010, 0x03C2, 0x0FD9, 0x01F1, 0x00CF, 0x03CD, 0x00CE,
774 0x0034, 0x0001, 0x0001, 0x0037, 0x00C9, 0x00C8, 0x0036, 0x0000, 0x0001,
775 0x0FD8, 0x03CC, 0x00CB, 0x01F0, 0x07F8, 0x03CF, 0x07FB, 0x07FA, 0x00CA,
776 0x01F3, 0x03CE, 0x00F5, 0x0FDB, 0x00F4, 0x07E5, 0x07E4, 0x07E7, 0x01F2,
777 0x07E6, 0x03C9, 0x01FD, 0x0FDA, 0x1F8C, 0x07E1, 0x1F8F, 0x1F8E, 0x03C8,
778 0x03CB, 0x0077, 0x0076, 0x0FC5, 0x03CA, 0x07E0, 0x00F7, 0x0FC4, 0x03F5,
779 0x00F6, 0x01FC, 0x0003, 0x03F4, 0x0071, 0x03F7, 0x00F1, 0x0013, 0x0031,
780 0x0030, 0x0070, 0x0005, 0x0012, 0x0073, 0x01FF, 0x0072, 0x007D, 0x0002,
782 0x0061, 0x0055, 0x0060, 0x02C9, 0x02C8, 0x02CB, 0x0171, 0x00B5, 0x0054,
783 0x0001, 0x0001, 0x0001, 0x0057, 0x0001, 0x0063, 0x001D, 0x0062, 0x0039,
784 0x006D, 0x0000, 0x0005, 0x0038, 0x0056, 0x00B4, 0x006C, 0x0003, 0x001C,
785 0x006F, 0x003B, 0x0002, 0x003A, 0x0170, 0x00B7, 0x0173, 0x0051, 0x006E,
786 0x0025, 0x0050, 0x0069, 0x02CA, 0x0024, 0x0027, 0x0172, 0x00B6, 0x00B1,
787 0x000D, 0x000C, 0x001F, 0x017D, 0x0026, 0x0068, 0x0053, 0x017C, 0x006B,
788 0x001E, 0x000F, 0x0004, 0x017F, 0x006A, 0x02F5, 0x0019, 0x0021, 0x0052,
789 0x02F4, 0x02F7, 0x0020, 0x0BCD, 0x05E5, 0x05E4, 0x0BCC, 0x0023, 0x00B0,
790 0x02F6, 0x00B3, 0x0022, 0x02F1, 0x02F0, 0x0BCF, 0x0BCE, 0x017E, 0x005D,
792 0x00BD, 0x0025, 0x01A1, 0x0159, 0x0299, 0x00BC, 0x0024, 0x0505, 0x0504,
793 0x01A0, 0x0001, 0x001D, 0x006D, 0x001C, 0x0001, 0x0005, 0x0027, 0x01A3,
794 0x0158, 0x001F, 0x001E, 0x01A2, 0x0026, 0x0021, 0x000D, 0x0020, 0x0023,
795 0x0298, 0x006C, 0x0022, 0x00BF, 0x00BE, 0x01AD, 0x002D, 0x029B, 0x00B9,
796 0x01AC, 0x00B8, 0x01AF, 0x029A, 0x006F, 0x015B, 0x006E, 0x0285, 0x0284,
797 0x01AE, 0x0019, 0x002C, 0x01A9, 0x01A8, 0x000C, 0x000F, 0x015A, 0x00BB,
798 0x000E, 0x0000, 0x0069, 0x01AB, 0x0018, 0x01AA, 0x0004, 0x0055, 0x00BA,
799 0x0507, 0x0145, 0x0054, 0x0506, 0x00A5, 0x0501, 0x00A4, 0x0057, 0x0500,
800 0x0A05, 0x0144, 0x00A7, 0x0287, 0x0286, 0x0503, 0x0147, 0x0A04, 0x0146,
802 0x0759, 0x0041, 0x00E5, 0x03BD, 0x0E9D, 0x012D, 0x012C, 0x3A1D, 0x03BC,
803 0x012F, 0x000D, 0x0040, 0x00E4, 0x03BF, 0x0043, 0x0042, 0x0758, 0x03BE,
804 0x00E7, 0x0001, 0x0000, 0x003D, 0x00E6, 0x0015, 0x0014, 0x0017, 0x003C,
805 0x743D, 0x012E, 0x03B9, 0x03B8, 0x0E9C, 0x03BB, 0x075B, 0x3A1C, 0x0E9F,
806 0x0129, 0x00E1, 0x0128, 0x0E9E, 0x012B, 0x075A, 0x00E0, 0x0E99, 0x0745,
807 0x3A1F, 0x03BA, 0x0744, 0x0E98, 0x1D0D, 0x03A5, 0x0E9B, 0x743C, 0x0E9A,
808 0x012A, 0x004D, 0x00E3, 0x0E85, 0x01D5, 0x0E84, 0x004C, 0x0747, 0x1D0C,
809 0x01D4, 0x003F, 0x0016, 0x0746, 0x03A4, 0x0741, 0x004F, 0x003E, 0x01D7,
810 0x0740, 0x000C, 0x0011, 0x004E, 0x00E2, 0x00ED, 0x00EC, 0x0049, 0x0048,
813 const RV40_AIC_MODE2_BITS: [[u8; 81]; 20] = [
815 1, 5, 4, 10, 6, 8, 5, 8, 8,
816 7, 5, 7, 11, 10, 9, 8, 13, 11,
817 6, 7, 3, 9, 8, 10, 9, 8, 5,
818 10, 9, 10, 10, 14, 12, 14, 14, 12,
819 8, 9, 7, 12, 8, 14, 9, 9, 12,
820 8, 9, 11, 11, 13, 9, 11, 14, 12,
821 6, 7, 9, 13, 9, 12, 7, 10, 12,
822 11, 12, 8, 15, 10, 15, 13, 7, 12,
823 10, 10, 8, 10, 13, 13, 13, 11, 8,
825 4, 6, 5, 11, 8, 10, 7, 11, 9,
826 4, 1, 4, 9, 7, 7, 5, 9, 10,
827 6, 7, 4, 9, 9, 10, 9, 9, 6,
828 9, 10, 9, 10, 12, 12, 13, 12, 11,
829 9, 9, 8, 12, 8, 14, 10, 11, 12,
830 7, 8, 10, 11, 12, 9, 11, 13, 12,
831 6, 7, 8, 12, 9, 12, 7, 11, 10,
832 12, 12, 9, 14, 12, 15, 13, 8, 12,
833 11, 11, 10, 12, 13, 15, 14, 12, 9,
835 5, 7, 6, 12, 9, 11, 8, 11, 10,
836 7, 5, 7, 11, 10, 9, 8, 12, 12,
837 5, 5, 1, 8, 7, 10, 8, 6, 4,
838 8, 8, 8, 9, 12, 11, 13, 12, 11,
839 8, 9, 8, 12, 8, 13, 10, 11, 11,
840 8, 9, 11, 12, 13, 11, 12, 14, 13,
841 8, 9, 10, 14, 11, 14, 9, 13, 13,
842 8, 9, 6, 11, 10, 14, 11, 6, 10,
843 6, 6, 4, 8, 9, 10, 10, 8, 5,
845 11, 7, 8, 10, 12, 9, 10, 14, 12,
846 7, 1, 5, 7, 8, 6, 4, 10, 9,
847 10, 5, 4, 8, 11, 8, 7, 6, 7,
848 11, 6, 7, 8, 10, 8, 10, 11, 9,
849 10, 8, 9, 13, 9, 12, 8, 11, 12,
850 11, 4, 7, 8, 9, 6, 8, 12, 9,
851 8, 5, 8, 12, 9, 10, 6, 12, 11,
852 12, 12, 10, 15, 13, 13, 13, 10, 13,
853 15, 10, 9, 10, 12, 13, 13, 10, 9,
855 11, 8, 8, 11, 13, 10, 11, 15, 12,
856 7, 1, 4, 7, 7, 5, 4, 8, 9,
857 11, 5, 5, 8, 11, 9, 8, 7, 8,
858 13, 7, 8, 9, 11, 9, 10, 12, 10,
859 10, 9, 8, 13, 9, 12, 9, 11, 12,
860 11, 5, 7, 9, 10, 6, 9, 13, 10,
861 7, 4, 7, 11, 8, 9, 5, 10, 11,
862 13, 11, 9, 15, 13, 15, 13, 8, 12,
863 15, 10, 10, 12, 13, 14, 14, 12, 11,
865 12, 9, 9, 12, 13, 11, 11, 14, 12,
866 8, 2, 5, 7, 9, 6, 5, 10, 10,
867 9, 4, 2, 7, 9, 7, 6, 5, 6,
868 12, 6, 7, 8, 10, 8, 10, 11, 9,
869 12, 9, 10, 13, 11, 12, 10, 14, 13,
870 12, 6, 8, 10, 10, 7, 9, 12, 10,
871 8, 5, 8, 11, 9, 10, 7, 11, 12,
872 8, 6, 5, 11, 11, 11, 8, 6, 9,
873 12, 6, 6, 8, 10, 10, 11, 8, 6,
875 13, 9, 10, 12, 14, 12, 11, 15, 15,
876 8, 1, 5, 7, 9, 6, 5, 11, 10,
877 11, 6, 5, 9, 11, 9, 8, 7, 8,
878 12, 6, 8, 8, 11, 8, 10, 12, 10,
879 10, 7, 9, 13, 10, 11, 9, 13, 12,
880 11, 3, 6, 8, 9, 4, 7, 11, 8,
881 8, 5, 9, 12, 10, 9, 7, 12, 13,
882 13, 12, 10, 14, 14, 15, 12, 11, 14,
883 15, 7, 9, 8, 11, 11, 12, 10, 9,
885 10, 5, 6, 9, 11, 7, 8, 12, 11,
886 8, 1, 4, 7, 9, 6, 4, 10, 10,
887 11, 6, 6, 9, 9, 9, 9, 8, 8,
888 14, 10, 10, 12, 12, 11, 12, 13, 12,
889 10, 7, 8, 12, 9, 11, 8, 12, 11,
890 13, 7, 10, 11, 11, 8, 10, 13, 11,
891 6, 3, 7, 11, 8, 9, 5, 10, 11,
892 11, 11, 9, 14, 14, 14, 11, 10, 13,
893 14, 10, 11, 13, 13, 13, 14, 12, 12,
895 2, 5, 3, 11, 8, 8, 6, 6, 7,
896 8, 5, 6, 12, 10, 10, 8, 10, 11,
897 7, 6, 2, 9, 8, 10, 8, 5, 4,
898 10, 11, 10, 10, 13, 12, 14, 13, 10,
899 10, 11, 8, 14, 9, 14, 12, 11, 12,
900 9, 10, 9, 13, 12, 11, 12, 14, 11,
901 8, 10, 7, 13, 10, 12, 8, 12, 12,
902 10, 9, 6, 12, 11, 11, 11, 6, 9,
903 10, 9, 6, 10, 9, 12, 11, 8, 7,
905 6, 8, 6, 12, 11, 11, 10, 10, 9,
906 6, 1, 3, 10, 8, 8, 6, 7, 10,
907 8, 6, 3, 10, 9, 10, 8, 6, 5,
908 11, 10, 10, 12, 13, 12, 14, 13, 12,
909 10, 11, 8, 12, 9, 14, 12, 11, 12,
910 9, 9, 8, 12, 12, 10, 12, 13, 11,
911 7, 8, 6, 13, 9, 11, 7, 11, 11,
912 11, 10, 7, 14, 11, 12, 12, 7, 10,
913 12, 11, 8, 13, 12, 14, 13, 11, 10,
915 7, 10, 7, 13, 13, 13, 11, 11, 10,
916 8, 5, 6, 12, 11, 10, 9, 10, 11,
917 7, 5, 1, 9, 8, 10, 7, 4, 4,
918 9, 11, 9, 11, 12, 11, 13, 13, 10,
919 9, 11, 8, 13, 9, 14, 12, 11, 12,
920 11, 10, 10, 13, 12, 11, 14, 14, 12,
921 9, 10, 8, 13, 10, 14, 9, 12, 12,
922 9, 7, 4, 12, 10, 11, 10, 6, 7,
923 9, 7, 4, 9, 9, 11, 9, 7, 5,
925 7, 9, 7, 14, 11, 12, 10, 9, 9,
926 8, 5, 5, 12, 9, 10, 8, 8, 11,
927 7, 5, 2, 8, 8, 9, 7, 4, 4,
928 10, 11, 10, 12, 14, 11, 12, 13, 12,
929 9, 10, 8, 13, 8, 13, 10, 11, 11,
930 9, 9, 8, 14, 10, 10, 11, 12, 11,
931 10, 11, 9, 14, 10, 14, 9, 12, 14,
932 6, 6, 3, 11, 8, 9, 8, 3, 6,
933 9, 7, 4, 10, 8, 11, 10, 6, 5,
935 6, 8, 7, 13, 12, 12, 10, 9, 9,
936 9, 7, 8, 13, 11, 11, 9, 11, 12,
937 7, 6, 1, 9, 8, 10, 7, 5, 4,
938 10, 12, 10, 12, 13, 13, 14, 13, 11,
939 9, 11, 9, 13, 10, 14, 12, 12, 12,
940 11, 12, 10, 14, 13, 12, 13, 14, 12,
941 8, 9, 7, 13, 10, 13, 8, 11, 12,
942 8, 6, 3, 12, 9, 10, 9, 4, 6,
943 10, 8, 5, 10, 10, 12, 11, 8, 6,
945 7, 10, 7, 12, 9, 12, 10, 10, 12,
946 9, 7, 7, 12, 9, 11, 6, 10, 11,
947 6, 6, 1, 9, 8, 9, 7, 4, 5,
948 11, 12, 9, 12, 10, 14, 13, 13, 11,
949 10, 12, 8, 13, 8, 14, 10, 10, 11,
950 11, 11, 10, 13, 14, 10, 14, 13, 11,
951 11, 10, 7, 13, 8, 12, 7, 10, 12,
952 7, 10, 4, 12, 6, 10, 8, 5, 8,
953 10, 7, 4, 9, 7, 10, 9, 6, 5,
955 7, 9, 7, 13, 12, 13, 10, 10, 8,
956 8, 5, 6, 11, 10, 10, 8, 10, 10,
957 7, 5, 2, 9, 8, 9, 7, 5, 3,
958 8, 9, 7, 9, 11, 11, 13, 11, 9,
959 8, 10, 7, 12, 9, 14, 11, 10, 10,
960 9, 10, 9, 12, 12, 12, 13, 14, 12,
961 10, 10, 9, 13, 11, 13, 9, 13, 12,
962 8, 7, 4, 12, 10, 10, 10, 6, 6,
963 7, 6, 3, 9, 8, 10, 9, 6, 3,
965 7, 10, 7, 13, 13, 13, 11, 11, 9,
966 8, 6, 6, 13, 11, 11, 9, 10, 11,
967 7, 6, 1, 9, 8, 10, 8, 5, 4,
968 8, 9, 8, 9, 12, 12, 12, 12, 8,
969 10, 13, 9, 14, 11, 14, 14, 13, 12,
970 9, 10, 9, 13, 12, 11, 13, 14, 11,
971 9, 11, 8, 13, 11, 13, 10, 13, 13,
972 9, 8, 5, 12, 10, 11, 11, 6, 7,
973 8, 7, 3, 8, 9, 11, 10, 7, 4,
975 8, 9, 7, 11, 11, 12, 11, 14, 9,
976 8, 6, 6, 11, 13, 10, 9, 11, 9,
977 7, 5, 1, 7, 9, 9, 7, 5, 3,
978 13, 11, 9, 10, 12, 11, 12, 12, 9,
979 10, 11, 9, 13, 9, 12, 12, 12, 10,
980 12, 11, 10, 13, 14, 12, 14, 14, 11,
981 11, 8, 8, 13, 11, 12, 9, 13, 11,
982 9, 10, 5, 11, 8, 11, 9, 6, 7,
983 7, 8, 4, 6, 8, 10, 8, 8, 5,
985 8, 10, 8, 13, 13, 13, 12, 11, 10,
986 5, 1, 3, 10, 7, 8, 6, 8, 9,
987 8, 7, 4, 9, 10, 11, 8, 7, 6,
988 8, 9, 7, 9, 12, 11, 12, 10, 8,
989 9, 10, 8, 13, 9, 9, 12, 11, 11,
990 7, 7, 6, 12, 9, 8, 10, 12, 8,
991 6, 7, 4, 12, 8, 13, 6, 9, 10,
992 13, 13, 9, 15, 14, 14, 15, 9, 11,
993 13, 11, 9, 13, 13, 15, 15, 12, 10,
995 10, 8, 9, 11, 12, 10, 8, 13, 13,
996 9, 2, 5, 7, 5, 4, 3, 8, 9,
997 11, 5, 5, 9, 8, 8, 6, 8, 8,
998 12, 7, 8, 10, 10, 9, 8, 12, 10,
999 9, 10, 9, 12, 7, 11, 7, 12, 12,
1000 9, 5, 8, 9, 9, 6, 6, 11, 10,
1001 6, 4, 7, 9, 5, 9, 3, 9, 10,
1002 13, 11, 9, 13, 10, 13, 10, 9, 13,
1003 14, 11, 10, 12, 12, 13, 11, 14, 11,
1005 11, 7, 8, 10, 12, 9, 9, 14, 10,
1006 9, 4, 7, 8, 10, 7, 7, 11, 10,
1007 8, 2, 2, 6, 8, 5, 5, 5, 6,
1008 15, 9, 10, 10, 12, 10, 11, 14, 12,
1009 9, 8, 9, 12, 9, 11, 8, 12, 11,
1010 14, 10, 11, 12, 13, 10, 12, 15, 12,
1011 9, 7, 8, 12, 9, 12, 7, 11, 13,
1012 9, 6, 5, 11, 10, 11, 7, 6, 9,
1013 11, 4, 5, 7, 8, 8, 8, 7, 7,
1017 const RV40_PTYPE_CODES: &[[u8; 8]; 7] = &[
1018 [ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00 ],
1019 [ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00 ],
1020 [ 0x0D, 0x05, 0x01, 0x04, 0x01, 0x00, 0x07, 0x0C ],
1021 [ 0x09, 0x11, 0x01, 0x00, 0x05, 0x03, 0x21, 0x20 ],
1022 [ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00 ],
1023 [ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00 ],
1024 [ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00 ]
1026 const RV40_PTYPE_BITS: &[[u8; 8]; 7] = &[
1027 [ 1, 2, 3, 6, 5, 4, 7, 7 ],
1028 [ 3, 1, 2, 7, 6, 5, 4, 7 ],
1029 [ 5, 4, 1, 4, 3, 3, 4, 5 ],
1030 [ 4, 5, 2, 2, 3, 2, 6, 6 ],
1031 [ 5, 6, 1, 4, 2, 3, 7, 7 ],
1032 [ 5, 6, 1, 4, 3, 2, 7, 7 ],
1033 [ 6, 3, 2, 7, 5, 4, 1, 7 ]
1035 const RV40_PTYPE_SYMS: &[MBType; 8] = &[
1042 MBType::MBP16x16Mix,
1046 const RV40_BTYPE_CODES: &[[u8; 7]; 6] = &[
1047 [ 0x01, 0x05, 0x00, 0x03, 0x11, 0x09, 0x10 ],
1048 [ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00 ],
1049 [ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00 ],
1050 [ 0x09, 0x01, 0x00, 0x01, 0x05, 0x03, 0x08 ],
1051 [ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00 ],
1052 [ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00 ]
1054 const RV40_BTYPE_BITS: &[[u8; 7]; 6] = &[
1055 [ 2, 3, 2, 2, 5, 4, 5 ],
1056 [ 4, 1, 3, 2, 6, 5, 6 ],
1057 [ 6, 4, 1, 2, 5, 3, 6 ],
1058 [ 5, 3, 3, 1, 4, 3, 5 ],
1059 [ 6, 5, 3, 2, 4, 1, 6 ],
1060 [ 6, 5, 3, 1, 4, 2, 6 ]
1062 const RV40_BTYPE_SYMS: &[MBType; 7] = &[