replace vec.truncate(0) with vec.clear()
[nihav.git] / nihav-codec-support / src / vq / mod.rs
CommitLineData
971ae306
KS
1//! Vector quantisation routines.
2mod generic_elbg;
3mod generic_mediancut;
4
5pub trait VQElement: Sized+Copy+PartialEq {
6 fn dist(&self, rval: Self) -> u32;
7 fn min_cw() -> Self;
8 fn max_cw() -> Self;
9 fn min(&self, rval: Self) -> Self;
10 fn max(&self, rval: Self) -> Self;
11 fn num_components() -> usize;
12 fn sort_by_component(arr: &mut [Self], component: usize);
13 fn max_dist_component(min: &Self, max: &Self) -> usize;
14}
15
16pub trait VQElementSum<T: VQElement> {
17 fn zero() -> Self;
18 fn add(&mut self, rval: T, count: u64);
19 fn get_centroid(&self) -> T;
20}
21
22pub use self::generic_elbg::ELBG;
23pub use self::generic_mediancut::quantise_median_cut;