summaryrefslogtreecommitdiffstats
path: root/ext/tarkin/wavelet.h
diff options
context:
space:
mode:
Diffstat (limited to 'ext/tarkin/wavelet.h')
-rw-r--r--ext/tarkin/wavelet.h55
1 files changed, 55 insertions, 0 deletions
diff --git a/ext/tarkin/wavelet.h b/ext/tarkin/wavelet.h
new file mode 100644
index 00000000..914c2799
--- /dev/null
+++ b/ext/tarkin/wavelet.h
@@ -0,0 +1,55 @@
+#ifndef __WAVELET_H
+#define __WAVELET_H
+
+#include <stdint.h>
+
+
+typedef struct {
+ TYPE *data;
+ uint32_t width;
+ uint32_t height;
+ uint32_t frames;
+ uint32_t scales;
+ uint32_t *w;
+ uint32_t *h;
+ uint32_t *f;
+ uint32_t (*offset)[8];
+ TYPE *scratchbuf;
+} Wavelet3DBuf;
+
+
+extern Wavelet3DBuf* wavelet_3d_buf_new (uint32_t width, uint32_t height,
+ uint32_t frames);
+
+extern void wavelet_3d_buf_destroy (Wavelet3DBuf* buf);
+
+/**
+ * transform buf->data
+ * a_moments is the number of vanishing moments of the analyzing
+ * highpass filter,
+ * s_moments the one of the synthesizing lowpass filter.
+ */
+extern void wavelet_3d_buf_fwd_xform (Wavelet3DBuf* buf,
+ int a_moments, int s_moments);
+extern void wavelet_3d_buf_inv_xform (Wavelet3DBuf* buf,
+ int a_moments, int s_moments);
+
+extern int wavelet_3d_buf_encode_coeff (const Wavelet3DBuf* buf,
+ uint8_t *bitstream,
+ uint32_t limit);
+
+extern void wavelet_3d_buf_decode_coeff (Wavelet3DBuf* buf,
+ uint8_t *bitstream,
+ uint32_t limit);
+
+#if defined(DBG_XFORM)
+extern void wavelet_3d_buf_dump (char *fmt,
+ uint32_t first_frame_in_buf,
+ uint32_t id,
+ Wavelet3DBuf* buf,
+ int16_t offset);
+#else
+#define wavelet_3d_buf_dump(x...)
+#endif
+
+#endif