|
1 | 1 | extern crate core; |
2 | 2 |
|
3 | | -use adder_codec_rs::codec::raw::stream::Raw; |
4 | | -use adder_codec_rs::codec::Codec; |
| 3 | +use adder_codec_core::codec::decoder::Decoder; |
| 4 | +use adder_codec_core::codec::raw::stream::{RawInput, RawOutput}; |
| 5 | +use adder_codec_core::codec::ReadCompression; |
5 | 6 | use adder_codec_rs::framer::driver::Framer; |
6 | 7 | use adder_codec_rs::framer::driver::FramerMode::INSTANTANEOUS; |
7 | 8 | use adder_codec_rs::framer::driver::{FrameSequence, FramerBuilder}; |
| 9 | +use bitstream_io::{BigEndian, BitReader}; |
8 | 10 | use std::fs::File; |
9 | 11 | use std::io; |
10 | | -use std::io::{BufWriter, Write}; |
| 12 | +use std::io::{BufReader, BufWriter, Write}; |
11 | 13 | use std::time::Instant; |
12 | 14 |
|
13 | 15 | fn main() { |
14 | 16 | let input_path = "/home/andrew/Downloads/hjkhjkl_v2.adder"; |
15 | | - let mut stream: Raw = Codec::new(); |
16 | | - stream.open_reader(input_path).expect("Invalid path"); |
17 | | - stream.decode_header().expect("Invalid header"); |
| 17 | + let tmp = File::open(input_path).unwrap(); |
| 18 | + let bufreader = BufReader::new(tmp); |
| 19 | + let mut compression = <RawInput as ReadCompression<BufReader<File>>>::new(); |
| 20 | + |
| 21 | + let mut bitreader = BitReader::endian(bufreader, BigEndian); |
| 22 | + let mut reader = Decoder::new(Box::new(compression), &mut bitreader); |
18 | 23 |
|
19 | 24 | let output_path = "/home/andrew/Downloads/temppp_out"; |
20 | 25 | let mut output_stream = BufWriter::new(File::create(output_path).unwrap()); |
21 | 26 |
|
22 | | - let reconstructed_frame_rate = f64::from(stream.tps / stream.ref_interval); |
| 27 | + let reconstructed_frame_rate = f64::from(reader.meta().tps / reader.meta().ref_interval); |
23 | 28 | println!("reconstructed_frame_rate: {reconstructed_frame_rate}"); |
24 | 29 | // For instantaneous reconstruction, make sure the frame rate matches the source video rate |
25 | 30 | // assert_eq!( |
26 | 31 | // stream.tps / stream.ref_interval, |
27 | 32 | // reconstructed_frame_rate as u32 |
28 | 33 | // ); |
29 | 34 |
|
30 | | - let mut frame_sequence: FrameSequence<u8> = FramerBuilder::new(stream.plane.clone(), 260) |
31 | | - .codec_version(stream.codec_version, stream.time_mode) |
32 | | - .time_parameters( |
33 | | - stream.tps, |
34 | | - stream.ref_interval, |
35 | | - stream.delta_t_max, |
36 | | - reconstructed_frame_rate, |
37 | | - ) |
38 | | - .mode(INSTANTANEOUS) |
39 | | - .source(stream.get_source_type(), stream.source_camera) |
40 | | - .finish(); |
| 35 | + let mut frame_sequence: FrameSequence<u8> = |
| 36 | + FramerBuilder::new(reader.meta().plane.clone(), 260) |
| 37 | + .codec_version(reader.meta().codec_version, reader.meta().time_mode) |
| 38 | + .time_parameters( |
| 39 | + reader.meta().tps, |
| 40 | + reader.meta().ref_interval, |
| 41 | + reader.meta().delta_t_max, |
| 42 | + reconstructed_frame_rate, |
| 43 | + ) |
| 44 | + .mode(INSTANTANEOUS) |
| 45 | + .source(reader.get_source_type(), reader.meta().source_camera) |
| 46 | + .finish(); |
41 | 47 |
|
42 | 48 | let mut now = Instant::now(); |
43 | 49 | let mut frame_count = 0; |
44 | 50 | loop { |
45 | | - match stream.decode_event() { |
| 51 | + match reader.digest_event(&mut bitreader) { |
46 | 52 | Ok(mut event) => { |
47 | 53 | if frame_sequence.ingest_event(&mut event) { |
48 | 54 | match frame_sequence.write_multi_frame_bytes(&mut output_stream) { |
|
0 commit comments