summaryrefslogtreecommitdiff
path: root/liboil/ref
diff options
context:
space:
mode:
authorDavid Schleef <ds@ginger.bigkitten.com>2008-02-17 19:05:42 -0800
committerDavid Schleef <ds@ginger.bigkitten.com>2008-02-17 19:05:42 -0800
commitf06e19392112ec45b4d9d9eaf4524fb31cee5298 (patch)
tree9cdae68b50894df3f7fbe97e84c530af95f47f04 /liboil/ref
parentfa9b21eeba8b57531db1219325e0357c78b43ee3 (diff)
downloadliboil-f06e19392112ec45b4d9d9eaf4524fb31cee5298.tar.gz
Add oil_avg_*xn_u8() classes
Diffstat (limited to 'liboil/ref')
-rw-r--r--liboil/ref/wavelet.c57
1 files changed, 57 insertions, 0 deletions
diff --git a/liboil/ref/wavelet.c b/liboil/ref/wavelet.c
index f50772f..77f5e54 100644
--- a/liboil/ref/wavelet.c
+++ b/liboil/ref/wavelet.c
@@ -153,6 +153,12 @@ OIL_DEFINE_CLASS_FULL (add2_rshift_add_s16, "int16_t *d, int16_t *s1, "
"int16_t *s2, int16_t *s3, int16_t *s4_2, int n", add2_test);
OIL_DEFINE_CLASS_FULL (add2_rshift_sub_s16, "int16_t *d, int16_t *s1, "
"int16_t *s2, int16_t *s3, int16_t *s4_2, int n", add2_test);
+OIL_DEFINE_CLASS (avg2_8xn_u8, "uint8_t *d_8xn, int ds1, "
+ "uint8_t *s1_8xn, int ss1, uint8_t *s2_8xn, int ss2, int n");
+OIL_DEFINE_CLASS (avg2_12xn_u8, "uint8_t *d_12xn, int ds1, "
+ "uint8_t *s1_12xn, int ss1, uint8_t *s2_12xn, int ss2, int n");
+OIL_DEFINE_CLASS (avg2_16xn_u8, "uint8_t *d_16xn, int ds1, "
+ "uint8_t *s1_16xn, int ss1, uint8_t *s2_16xn, int ss2, int n");
void
deinterleave_ref (int16_t *d_2xn, int16_t *s_2xn, int n)
@@ -872,3 +878,54 @@ add2_rshift_sub_s16_ref (int16_t *d, int16_t *s1, int16_t *s2, int16_t *s3,
}
OIL_DEFINE_IMPL_REF (add2_rshift_sub_s16_ref, add2_rshift_sub_s16);
+void
+avg2_8xn_u8_ref (uint8_t *d, int ds1, uint8_t *s1, int ss1,
+ uint8_t *s2, int ss2, int n)
+{
+ int i;
+ int j;
+ for(j=0;j<n;j++){
+ for(i=0;i<8;i++){
+ d[i] = (s1[i] + s2[i] + 1)>>1;
+ }
+ s1 += ss1;
+ s2 += ss2;
+ d += ds1;
+ }
+}
+OIL_DEFINE_IMPL_REF (avg2_8xn_u8_ref, avg2_8xn_u8);
+
+void
+avg2_12xn_u8_ref (uint8_t *d, int ds1, uint8_t *s1, int ss1,
+ uint8_t *s2, int ss2, int n)
+{
+ int i;
+ int j;
+ for(j=0;j<n;j++){
+ for(i=0;i<12;i++){
+ d[i] = (s1[i] + s2[i] + 1)>>1;
+ }
+ s1 += ss1;
+ s2 += ss2;
+ d += ds1;
+ }
+}
+OIL_DEFINE_IMPL_REF (avg2_12xn_u8_ref, avg2_12xn_u8);
+
+void
+avg2_16xn_u8_ref (uint8_t *d, int ds1, uint8_t *s1, int ss1,
+ uint8_t *s2, int ss2, int n)
+{
+ int i;
+ int j;
+ for(j=0;j<n;j++){
+ for(i=0;i<16;i++){
+ d[i] = (s1[i] + s2[i] + 1)>>1;
+ }
+ s1 += ss1;
+ s2 += ss2;
+ d += ds1;
+ }
+}
+OIL_DEFINE_IMPL_REF (avg2_16xn_u8_ref, avg2_16xn_u8);
+