1 mod threaded;
2 mod immediate;
3 
4 #[cfg(not(any(target_arch = "asmjs", target_arch = "wasm32")))]
5 pub use self::threaded::ThreadedWorker as PlatformWorker;
6 #[cfg(any(target_arch = "asmjs", target_arch = "wasm32"))]
7 pub use self::immediate::ImmediateWorker as PlatformWorker;
8 
9 use error::Result;
10 use parser::Component;
11 use std::sync::Arc;
12 
13 pub struct RowData {
14     pub index: usize,
15     pub component: Component,
16     pub quantization_table: Arc<[u16; 64]>,
17 }
18 
19 pub trait Worker: Sized {
new() -> Result<Self>20     fn new() -> Result<Self>;
start(&mut self, row_data: RowData) -> Result<()>21     fn start(&mut self, row_data: RowData) -> Result<()>;
append_row(&mut self, row: (usize, Vec<i16>)) -> Result<()>22     fn append_row(&mut self, row: (usize, Vec<i16>)) -> Result<()>;
get_result(&mut self, index: usize) -> Result<Vec<u8>>23     fn get_result(&mut self, index: usize) -> Result<Vec<u8>>;
24 }
25