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