summaryrefslogtreecommitdiffstats
path: root/ext/tarkin/wavelet_coeff.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/tarkin/wavelet_coeff.c')
-rw-r--r--ext/tarkin/wavelet_coeff.c737
1 files changed, 372 insertions, 365 deletions
diff --git a/ext/tarkin/wavelet_coeff.c b/ext/tarkin/wavelet_coeff.c
index 581f48f0..95da5cad 100644
--- a/ext/tarkin/wavelet_coeff.c
+++ b/ext/tarkin/wavelet_coeff.c
@@ -11,500 +11,507 @@
#define GRAY_CODES 1
#if defined(GRAY_CODES)
-static inline
-uint16_t binary_to_gray (uint16_t x) { return x ^ (x >> 1); }
+static inline uint16_t
+binary_to_gray (uint16_t x)
+{
+ return x ^ (x >> 1);
+}
+
+static inline uint16_t
+gray_to_binary (uint16_t x)
+{
+ int i;
-static inline
-uint16_t gray_to_binary (uint16_t x)
-{ int i; for (i=1; i<16; i+=i) x ^= x >> i; return x; }
+ for (i = 1; i < 16; i += i)
+ x ^= x >> i;
+ return x;
+}
#endif
-static inline
-void encode_coeff (ENTROPY_CODER significand_bitstream [],
- ENTROPY_CODER insignificand_bitstream [],
- TYPE coeff)
+static inline void
+encode_coeff (ENTROPY_CODER significand_bitstream[],
+ ENTROPY_CODER insignificand_bitstream[], TYPE coeff)
{
- int sign = (coeff >> (8*sizeof(TYPE)-1)) & 1;
+ int sign = (coeff >> (8 * sizeof (TYPE) - 1)) & 1;
+
#if defined(GRAY_CODES)
- TYPE significance = binary_to_gray(coeff);
+ TYPE significance = binary_to_gray (coeff);
#else
- static TYPE mask [2] = { 0, ~0 };
- TYPE significance = coeff ^ mask[sign];
+ static TYPE mask[2] = { 0, ~0 };
+ TYPE significance = coeff ^ mask[sign];
#endif
- int i = TYPE_BITS;
+ int i = TYPE_BITS;
- do {
- i--;
- OUTPUT_BIT(&significand_bitstream[i], (significance >> i) & 1);
- } while (!((significance >> i) & 1) && i > 0);
+ do {
+ i--;
+ OUTPUT_BIT (&significand_bitstream[i], (significance >> i) & 1);
+ } while (!((significance >> i) & 1) && i > 0);
- OUTPUT_BIT(&significand_bitstream[i], sign);
+ OUTPUT_BIT (&significand_bitstream[i], sign);
- while (--i >= 0)
- OUTPUT_BIT(&insignificand_bitstream[i], (significance >> i) & 1);
+ while (--i >= 0)
+ OUTPUT_BIT (&insignificand_bitstream[i], (significance >> i) & 1);
}
-static inline
-TYPE decode_coeff (ENTROPY_CODER significand_bitstream [],
- ENTROPY_CODER insignificand_bitstream [])
+static inline TYPE
+decode_coeff (ENTROPY_CODER significand_bitstream[],
+ ENTROPY_CODER insignificand_bitstream[])
{
#if !defined(GRAY_CODES)
- static TYPE mask [2] = { 0, ~0 };
+ static TYPE mask[2] = { 0, ~0 };
#endif
- TYPE significance = 0;
- int sign;
- int i = TYPE_BITS;
+ TYPE significance = 0;
+ int sign;
+ int i = TYPE_BITS;
- do {
- i--;
- significance |= INPUT_BIT(&significand_bitstream[i]) << i;
+ do {
+ i--;
+ significance |= INPUT_BIT (&significand_bitstream[i]) << i;
/* if (ENTROPY_CODER_EOS(&significand_bitstream[i])) */
/* return 0; */
- } while (!significance && i > 0);
+ } while (!significance && i > 0);
- sign = INPUT_BIT(&significand_bitstream[i]);
+ sign = INPUT_BIT (&significand_bitstream[i]);
/* if (ENTROPY_CODER_EOS(&significand_bitstream[i])) */
/* return 0; */
- while (--i >= 0)
- significance |= INPUT_BIT(&insignificand_bitstream[i]) << i;
+ while (--i >= 0)
+ significance |= INPUT_BIT (&insignificand_bitstream[i]) << i;
#if defined(GRAY_CODES)
- significance |= sign << (8*sizeof(TYPE)-1);
- return gray_to_binary(significance);
+ significance |= sign << (8 * sizeof (TYPE) - 1);
+ return gray_to_binary (significance);
#else
- return (significance ^ mask[sign]);
+ return (significance ^ mask[sign]);
#endif
}
-static inline
-uint32_t skip_0coeffs (Wavelet3DBuf* buf,
- ENTROPY_CODER s_stream [],
- ENTROPY_CODER i_stream [],
- uint32_t limit)
+static inline uint32_t
+skip_0coeffs (Wavelet3DBuf * buf,
+ ENTROPY_CODER s_stream[], ENTROPY_CODER i_stream[], uint32_t limit)
{
- int i;
- uint32_t skip = limit;
-
- for (i=0; i<TYPE_BITS; i++) {
- if (ENTROPY_CODER_SYMBOL(&s_stream[i]) != 0) {
- return 0;
- } else {
- uint32_t runlength = ENTROPY_CODER_RUNLENGTH(&s_stream[i]);
- if (i==0)
- runlength /= 2; /* sign bits are in this bitplane ... */
- if (skip > runlength)
- skip = runlength;
- if (skip <= 2)
- return 0;
- }
- }
-
- ENTROPY_CODER_SKIP(&s_stream[0], 2*skip); /* kill sign+significance bits */
-
- for (i=1; i<TYPE_BITS; i++)
- ENTROPY_CODER_SKIP(&s_stream[i], skip);
-
- return skip;
+ int i;
+ uint32_t skip = limit;
+
+ for (i = 0; i < TYPE_BITS; i++) {
+ if (ENTROPY_CODER_SYMBOL (&s_stream[i]) != 0) {
+ return 0;
+ } else {
+ uint32_t runlength = ENTROPY_CODER_RUNLENGTH (&s_stream[i]);
+
+ if (i == 0)
+ runlength /= 2; /* sign bits are in this bitplane ... */
+ if (skip > runlength)
+ skip = runlength;
+ if (skip <= 2)
+ return 0;
+ }
+ }
+
+ ENTROPY_CODER_SKIP (&s_stream[0], 2 * skip); /* kill sign+significance bits */
+
+ for (i = 1; i < TYPE_BITS; i++)
+ ENTROPY_CODER_SKIP (&s_stream[i], skip);
+
+ return skip;
}
#if 1
-static inline
-void encode_quadrant (const Wavelet3DBuf* buf,
- int level, int quadrant, uint32_t w, uint32_t h, uint32_t f,
- ENTROPY_CODER significand_bitstream [],
- ENTROPY_CODER insignificand_bitstream [])
+static inline void
+encode_quadrant (const Wavelet3DBuf * buf,
+ int level, int quadrant, uint32_t w, uint32_t h, uint32_t f,
+ ENTROPY_CODER significand_bitstream[],
+ ENTROPY_CODER insignificand_bitstream[])
{
- uint32_t x, y, z;
-
- for (z=0; z<f; z++) {
- for (y=0; y<h; y++) {
- for (x=0; x<w; x++) {
- unsigned int index = buf->offset [level] [quadrant]
- + z * buf->width * buf->height
- + y * buf->width + x;
-
- encode_coeff (significand_bitstream, insignificand_bitstream,
- buf->data [index]);
- }
+ uint32_t x, y, z;
+
+ for (z = 0; z < f; z++) {
+ for (y = 0; y < h; y++) {
+ for (x = 0; x < w; x++) {
+ unsigned int index = buf->offset[level][quadrant]
+ + z * buf->width * buf->height + y * buf->width + x;
+
+ encode_coeff (significand_bitstream, insignificand_bitstream,
+ buf->data[index]);
}
- }
+ }
+ }
}
-static
-void encode_coefficients (const Wavelet3DBuf* buf,
- ENTROPY_CODER s_stream [],
- ENTROPY_CODER i_stream [])
+static void
+encode_coefficients (const Wavelet3DBuf * buf,
+ ENTROPY_CODER s_stream[], ENTROPY_CODER i_stream[])
{
- int level;
-
- encode_coeff (s_stream, i_stream, buf->data[0]);
-
- for (level=0; level<buf->scales-1; level++) {
- uint32_t w, h, f, w1, h1, f1;
-
- w = buf->w [level];
- h = buf->h [level];
- f = buf->f [level];
- w1 = buf->w [level+1] - w;
- h1 = buf->h [level+1] - h;
- f1 = buf->f [level+1] - f;
-
- if (w1 > 0) encode_quadrant(buf,level,1,w1,h,f,s_stream,i_stream);
- if (h1 > 0) encode_quadrant(buf,level,2,w,h1,f,s_stream,i_stream);
- if (f1 > 0) encode_quadrant(buf,level,3,w,h,f1,s_stream,i_stream);
- if (w1 > 0 && h1 > 0) encode_quadrant(buf,level,4,w1,h1,f,s_stream,i_stream);
- if (w1 > 0 && f1 > 0) encode_quadrant(buf,level,5,w1,h,f1,s_stream,i_stream);
- if (h1 > 0 && f1 > 0) encode_quadrant(buf,level,6,w,h1,f1,s_stream,i_stream);
- if (h1 > 0 && f1 > 0 && f1 > 0)
- encode_quadrant (buf,level,7,w1,h1,f1,s_stream,i_stream);
- }
+ int level;
+
+ encode_coeff (s_stream, i_stream, buf->data[0]);
+
+ for (level = 0; level < buf->scales - 1; level++) {
+ uint32_t w, h, f, w1, h1, f1;
+
+ w = buf->w[level];
+ h = buf->h[level];
+ f = buf->f[level];
+ w1 = buf->w[level + 1] - w;
+ h1 = buf->h[level + 1] - h;
+ f1 = buf->f[level + 1] - f;
+
+ if (w1 > 0)
+ encode_quadrant (buf, level, 1, w1, h, f, s_stream, i_stream);
+ if (h1 > 0)
+ encode_quadrant (buf, level, 2, w, h1, f, s_stream, i_stream);
+ if (f1 > 0)
+ encode_quadrant (buf, level, 3, w, h, f1, s_stream, i_stream);
+ if (w1 > 0 && h1 > 0)
+ encode_quadrant (buf, level, 4, w1, h1, f, s_stream, i_stream);
+ if (w1 > 0 && f1 > 0)
+ encode_quadrant (buf, level, 5, w1, h, f1, s_stream, i_stream);
+ if (h1 > 0 && f1 > 0)
+ encode_quadrant (buf, level, 6, w, h1, f1, s_stream, i_stream);
+ if (h1 > 0 && f1 > 0 && f1 > 0)
+ encode_quadrant (buf, level, 7, w1, h1, f1, s_stream, i_stream);
+ }
}
-static inline
-void decode_quadrant (Wavelet3DBuf* buf,
- int level, int quadrant, uint32_t w, uint32_t h, uint32_t f,
- ENTROPY_CODER s_stream [],
- ENTROPY_CODER i_stream [])
+static inline void
+decode_quadrant (Wavelet3DBuf * buf,
+ int level, int quadrant, uint32_t w, uint32_t h, uint32_t f,
+ ENTROPY_CODER s_stream[], ENTROPY_CODER i_stream[])
{
- uint32_t x, y, z;
+ uint32_t x, y, z;
- z = 0;
- do {
- y = 0;
+ z = 0;
+ do {
+ y = 0;
+ do {
+ x = 0;
do {
- x = 0;
- do {
- uint32_t skip;
- uint32_t index = buf->offset [level] [quadrant]
- + z * buf->width * buf->height
- + y * buf->width + x;
-
- buf->data [index] = decode_coeff (s_stream, i_stream);
-
- skip = skip_0coeffs (buf, s_stream, i_stream,
- (w-x-1)+(h-y-1)*w+(f-z-1)*w*h);
- if (skip > 0) {
- x += skip;
- while (x >= w) {
- y++; x -= w;
- while (y >= h) {
- z++; y -= h;
- if (z >= f)
- return;
- }
- }
- }
- x++;
- } while (x < w);
- y++;
- } while (y < h);
- z++;
- } while (z < f);
+ uint32_t skip;
+ uint32_t index = buf->offset[level][quadrant]
+ + z * buf->width * buf->height + y * buf->width + x;
+
+ buf->data[index] = decode_coeff (s_stream, i_stream);
+
+ skip = skip_0coeffs (buf, s_stream, i_stream,
+ (w - x - 1) + (h - y - 1) * w + (f - z - 1) * w * h);
+ if (skip > 0) {
+ x += skip;
+ while (x >= w) {
+ y++;
+ x -= w;
+ while (y >= h) {
+ z++;
+ y -= h;
+ if (z >= f)
+ return;
+ }
+ }
+ }
+ x++;
+ } while (x < w);
+ y++;
+ } while (y < h);
+ z++;
+ } while (z < f);
}
-static
-void decode_coefficients (Wavelet3DBuf* buf,
- ENTROPY_CODER s_stream [],
- ENTROPY_CODER i_stream [])
+static void
+decode_coefficients (Wavelet3DBuf * buf,
+ ENTROPY_CODER s_stream[], ENTROPY_CODER i_stream[])
{
- int level;
-
- buf->data[0] = decode_coeff (s_stream, i_stream);
-
- for (level=0; level<buf->scales-1; level++) {
- uint32_t w, h, f, w1, h1, f1;
-
- w = buf->w [level];
- h = buf->h [level];
- f = buf->f [level];
- w1 = buf->w [level+1] - w;
- h1 = buf->h [level+1] - h;
- f1 = buf->f [level+1] - f;
-
- if (w1 > 0) decode_quadrant(buf,level,1,w1,h,f,s_stream,i_stream);
- if (h1 > 0) decode_quadrant(buf,level,2,w,h1,f,s_stream,i_stream);
- if (f1 > 0) decode_quadrant(buf,level,3,w,h,f1,s_stream,i_stream);
- if (w1 > 0 && h1 > 0) decode_quadrant(buf,level,4,w1,h1,f,s_stream,i_stream);
- if (w1 > 0 && f1 > 0) decode_quadrant(buf,level,5,w1,h,f1,s_stream,i_stream);
- if (h1 > 0 && f1 > 0) decode_quadrant(buf,level,6,w,h1,f1,s_stream,i_stream);
- if (h1 > 0 && f1 > 0 && f1 > 0)
- decode_quadrant (buf,level,7,w1,h1,f1,s_stream,i_stream);
- }
+ int level;
+
+ buf->data[0] = decode_coeff (s_stream, i_stream);
+
+ for (level = 0; level < buf->scales - 1; level++) {
+ uint32_t w, h, f, w1, h1, f1;
+
+ w = buf->w[level];
+ h = buf->h[level];
+ f = buf->f[level];
+ w1 = buf->w[level + 1] - w;
+ h1 = buf->h[level + 1] - h;
+ f1 = buf->f[level + 1] - f;
+
+ if (w1 > 0)
+ decode_quadrant (buf, level, 1, w1, h, f, s_stream, i_stream);
+ if (h1 > 0)
+ decode_quadrant (buf, level, 2, w, h1, f, s_stream, i_stream);
+ if (f1 > 0)
+ decode_quadrant (buf, level, 3, w, h, f1, s_stream, i_stream);
+ if (w1 > 0 && h1 > 0)
+ decode_quadrant (buf, level, 4, w1, h1, f, s_stream, i_stream);
+ if (w1 > 0 && f1 > 0)
+ decode_quadrant (buf, level, 5, w1, h, f1, s_stream, i_stream);
+ if (h1 > 0 && f1 > 0)
+ decode_quadrant (buf, level, 6, w, h1, f1, s_stream, i_stream);
+ if (h1 > 0 && f1 > 0 && f1 > 0)
+ decode_quadrant (buf, level, 7, w1, h1, f1, s_stream, i_stream);
+ }
}
#else
-static
-void encode_coefficients (const Wavelet3DBuf* buf,
- ENTROPY_CODER s_stream [],
- ENTROPY_CODER i_stream [])
+static void
+encode_coefficients (const Wavelet3DBuf * buf,
+ ENTROPY_CODER s_stream[], ENTROPY_CODER i_stream[])
{
- uint32_t i;
+ uint32_t i;
- for (i=0; i<buf->width*buf->height*buf->frames; i++)
- encode_coeff(s_stream, i_stream, buf->data[i]);
+ for (i = 0; i < buf->width * buf->height * buf->frames; i++)
+ encode_coeff (s_stream, i_stream, buf->data[i]);
}
-static
-void decode_coefficients (Wavelet3DBuf* buf,
- ENTROPY_CODER s_stream [],
- ENTROPY_CODER i_stream [])
+static void
+decode_coefficients (Wavelet3DBuf * buf,
+ ENTROPY_CODER s_stream[], ENTROPY_CODER i_stream[])
{
- uint32_t i;
+ uint32_t i;
- for (i=0; i<buf->width*buf->height*buf->frames; i++) {
- uint32_t skip;
+ for (i = 0; i < buf->width * buf->height * buf->frames; i++) {
+ uint32_t skip;
- buf->data[i] = decode_coeff(s_stream, i_stream);
+ buf->data[i] = decode_coeff (s_stream, i_stream);
- skip = skip_0coeffs (buf, s_stream, i_stream,
- buf->width*buf->height*buf->frames - i);
- i += skip;
- }
+ skip = skip_0coeffs (buf, s_stream, i_stream,
+ buf->width * buf->height * buf->frames - i);
+ i += skip;
+ }
}
#endif
-static
-uint32_t setup_limittabs (ENTROPY_CODER significand_bitstream [],
- ENTROPY_CODER insignificand_bitstream [],
- uint32_t significand_limittab [],
- uint32_t insignificand_limittab [],
- uint32_t limit)
+static uint32_t
+setup_limittabs (ENTROPY_CODER significand_bitstream[],
+ ENTROPY_CODER insignificand_bitstream[],
+ uint32_t significand_limittab[],
+ uint32_t insignificand_limittab[], uint32_t limit)
{
- uint32_t significand_limit;
- uint32_t insignificand_limit;
- uint32_t byte_count;
- int i;
-
- assert (limit > 2 * TYPE_BITS * sizeof(uint32_t)); /* limit too small */
-
- printf ("%s: limit == %u\n", __FUNCTION__, limit);
- byte_count = 2 * TYPE_BITS * sizeof(uint32_t); /* 2 binary coded limittabs */
- limit -= byte_count;
- printf ("%s: rem. limit == %u\n", __FUNCTION__, limit);
-
- significand_limit = limit * 7 / 8;
- insignificand_limit = limit - significand_limit;
-
- printf ("%s: limit == %u\n", __FUNCTION__, limit);
- printf ("significand limit == %u\n", significand_limit);
- printf ("insignificand limit == %u\n", insignificand_limit);
-
- for (i=TYPE_BITS-1; i>=0; i--) {
- uint32_t s_bytes, i_bytes;
-
- if (i > 0) {
- significand_limittab[i] = (significand_limit + 1) / 2;
- insignificand_limittab[i] = (insignificand_limit + 1) / 2;
- } else {
- significand_limittab[0] = significand_limit;
- insignificand_limittab[0] = insignificand_limit;
- }
+ uint32_t significand_limit;
+ uint32_t insignificand_limit;
+ uint32_t byte_count;
+ int i;
+
+ assert (limit > 2 * TYPE_BITS * sizeof (uint32_t)); /* limit too small */
+
+ printf ("%s: limit == %u\n", __FUNCTION__, limit);
+ byte_count = 2 * TYPE_BITS * sizeof (uint32_t); /* 2 binary coded limittabs */
+ limit -= byte_count;
+ printf ("%s: rem. limit == %u\n", __FUNCTION__, limit);
+
+ significand_limit = limit * 7 / 8;
+ insignificand_limit = limit - significand_limit;
- s_bytes = ENTROPY_ENCODER_FLUSH(&significand_bitstream[i]);
- i_bytes = ENTROPY_ENCODER_FLUSH(&insignificand_bitstream[i]);
+ printf ("%s: limit == %u\n", __FUNCTION__, limit);
+ printf ("significand limit == %u\n", significand_limit);
+ printf ("insignificand limit == %u\n", insignificand_limit);
- if (s_bytes < significand_limittab[i])
- significand_limittab[i] = s_bytes;
+ for (i = TYPE_BITS - 1; i >= 0; i--) {
+ uint32_t s_bytes, i_bytes;
- if (i_bytes < insignificand_limittab[i])
- insignificand_limittab[i] = i_bytes;
+ if (i > 0) {
+ significand_limittab[i] = (significand_limit + 1) / 2;
+ insignificand_limittab[i] = (insignificand_limit + 1) / 2;
+ } else {
+ significand_limittab[0] = significand_limit;
+ insignificand_limittab[0] = insignificand_limit;
+ }
- byte_count += significand_limittab[i];
- byte_count += insignificand_limittab[i];
+ s_bytes = ENTROPY_ENCODER_FLUSH (&significand_bitstream[i]);
+ i_bytes = ENTROPY_ENCODER_FLUSH (&insignificand_bitstream[i]);
- printf ("insignificand_limittab[%i] == %u / %u\n",
- i, insignificand_limittab[i], i_bytes);
- printf (" significand_limittab[%i] == %u / %u\n",
- i, significand_limittab[i], s_bytes);
+ if (s_bytes < significand_limittab[i])
+ significand_limittab[i] = s_bytes;
- significand_limit -= significand_limittab[i];
- insignificand_limit -= insignificand_limittab[i];
- }
+ if (i_bytes < insignificand_limittab[i])
+ insignificand_limittab[i] = i_bytes;
- printf ("byte_count == %u\n", byte_count);
+ byte_count += significand_limittab[i];
+ byte_count += insignificand_limittab[i];
- return byte_count;
+ printf ("insignificand_limittab[%i] == %u / %u\n",
+ i, insignificand_limittab[i], i_bytes);
+ printf (" significand_limittab[%i] == %u / %u\n",
+ i, significand_limittab[i], s_bytes);
+
+ significand_limit -= significand_limittab[i];
+ insignificand_limit -= insignificand_limittab[i];
+ }
+
+ printf ("byte_count == %u\n", byte_count);
+
+ return byte_count;
}
/**
* write 'em binary for now, should be easy to compress ...
*/
-static
-uint8_t* write_limittabs (uint8_t *bitstream,
- uint32_t significand_limittab [],
- uint32_t insignificand_limittab [])
+static uint8_t *
+write_limittabs (uint8_t * bitstream,
+ uint32_t significand_limittab[], uint32_t insignificand_limittab[])
{
- int i;
+ int i;
- for (i=0; i<TYPE_BITS; i++) {
- *(uint32_t*) bitstream = significand_limittab[i];
- bitstream += 4;
- }
+ for (i = 0; i < TYPE_BITS; i++) {
+ *(uint32_t *) bitstream = significand_limittab[i];
+ bitstream += 4;
+ }
- for (i=0; i<TYPE_BITS; i++) {
- *(uint32_t*) bitstream = insignificand_limittab[i];
- bitstream += 4;
- }
+ for (i = 0; i < TYPE_BITS; i++) {
+ *(uint32_t *) bitstream = insignificand_limittab[i];
+ bitstream += 4;
+ }
- return bitstream;
+ return bitstream;
}
-static
-uint8_t* read_limittabs (uint8_t *bitstream,
- uint32_t significand_limittab [],
- uint32_t insignificand_limittab [])
+static uint8_t *
+read_limittabs (uint8_t * bitstream,
+ uint32_t significand_limittab[], uint32_t insignificand_limittab[])
{
- int i;
-
- for (i=0; i<TYPE_BITS; i++) {
- significand_limittab[i] = *(uint32_t*) bitstream;
- printf ("significand_limittab[%i] == %u\n", i, significand_limittab[i]);
- bitstream += 4;
- }
-
- for (i=0; i<TYPE_BITS; i++) {
- insignificand_limittab[i] = *(uint32_t*) bitstream;
- printf ("insignificand_limittab[%i] == %u\n", i, insignificand_limittab[i]);
- bitstream += 4;
- }
-
- return bitstream;
+ int i;
+
+ for (i = 0; i < TYPE_BITS; i++) {
+ significand_limittab[i] = *(uint32_t *) bitstream;
+ printf ("significand_limittab[%i] == %u\n", i, significand_limittab[i]);
+ bitstream += 4;
+ }
+
+ for (i = 0; i < TYPE_BITS; i++) {
+ insignificand_limittab[i] = *(uint32_t *) bitstream;
+ printf ("insignificand_limittab[%i] == %u\n", i,
+ insignificand_limittab[i]);
+ bitstream += 4;
+ }
+
+ return bitstream;
}
/**
* concatenate entropy coder bitstreams
*/
-static
-void merge_bitstreams (uint8_t *bitstream,
- ENTROPY_CODER significand_bitstream [],
- ENTROPY_CODER insignificand_bitstream [],
- uint32_t significand_limittab [],
- uint32_t insignificand_limittab [])
+static void
+merge_bitstreams (uint8_t * bitstream,
+ ENTROPY_CODER significand_bitstream[],
+ ENTROPY_CODER insignificand_bitstream[],
+ uint32_t significand_limittab[], uint32_t insignificand_limittab[])
{
- int i;
+ int i;
- for (i=TYPE_BITS-1; i>=0; i--) {
- memcpy (bitstream,
- ENTROPY_CODER_BITSTREAM(&significand_bitstream[i]),
- significand_limittab[i]);
+ for (i = TYPE_BITS - 1; i >= 0; i--) {
+ memcpy (bitstream,
+ ENTROPY_CODER_BITSTREAM (&significand_bitstream[i]),
+ significand_limittab[i]);
- bitstream += significand_limittab[i];
- }
+ bitstream += significand_limittab[i];
+ }
- for (i=TYPE_BITS-1; i>=0; i--) {
- memcpy (bitstream,
- ENTROPY_CODER_BITSTREAM(&insignificand_bitstream[i]),
- insignificand_limittab[i]);
+ for (i = TYPE_BITS - 1; i >= 0; i--) {
+ memcpy (bitstream,
+ ENTROPY_CODER_BITSTREAM (&insignificand_bitstream[i]),
+ insignificand_limittab[i]);
- bitstream += insignificand_limittab[i];
- }
+ bitstream += insignificand_limittab[i];
+ }
}
-static
-void split_bitstreams (uint8_t *bitstream,
- ENTROPY_CODER significand_bitstream [],
- ENTROPY_CODER insignificand_bitstream [],
- uint32_t significand_limittab [],
- uint32_t insignificand_limittab [])
+static void
+split_bitstreams (uint8_t * bitstream,
+ ENTROPY_CODER significand_bitstream[],
+ ENTROPY_CODER insignificand_bitstream[],
+ uint32_t significand_limittab[], uint32_t insignificand_limittab[])
{
- uint32_t byte_count;
- int i;
-
- for (i=TYPE_BITS-1; i>=0; i--) {
- byte_count = significand_limittab[i];
- ENTROPY_DECODER_INIT(&significand_bitstream[i], bitstream, byte_count);
- bitstream += byte_count;
- }
-
- for (i=TYPE_BITS-1; i>=0; i--) {
- byte_count = insignificand_limittab[i];
- ENTROPY_DECODER_INIT(&insignificand_bitstream[i], bitstream, byte_count);
- bitstream += byte_count;
- }
+ uint32_t byte_count;
+ int i;
+
+ for (i = TYPE_BITS - 1; i >= 0; i--) {
+ byte_count = significand_limittab[i];
+ ENTROPY_DECODER_INIT (&significand_bitstream[i], bitstream, byte_count);
+ bitstream += byte_count;
+ }
+
+ for (i = TYPE_BITS - 1; i >= 0; i--) {
+ byte_count = insignificand_limittab[i];
+ ENTROPY_DECODER_INIT (&insignificand_bitstream[i], bitstream, byte_count);
+ bitstream += byte_count;
+ }
}
-int wavelet_3d_buf_encode_coeff (const Wavelet3DBuf* buf,
- uint8_t *bitstream,
- uint32_t limit)
+int
+wavelet_3d_buf_encode_coeff (const Wavelet3DBuf * buf,
+ uint8_t * bitstream, uint32_t limit)
{
- ENTROPY_CODER significand_bitstream [TYPE_BITS];
- ENTROPY_CODER insignificand_bitstream [TYPE_BITS];
- uint32_t significand_limittab [TYPE_BITS];
- uint32_t insignificand_limittab [TYPE_BITS];
- uint32_t byte_count;
- int i;
+ ENTROPY_CODER significand_bitstream[TYPE_BITS];
+ ENTROPY_CODER insignificand_bitstream[TYPE_BITS];
+ uint32_t significand_limittab[TYPE_BITS];
+ uint32_t insignificand_limittab[TYPE_BITS];
+ uint32_t byte_count;
+ int i;
- for (i=0; i<TYPE_BITS; i++)
- ENTROPY_ENCODER_INIT(&significand_bitstream[i], limit);
- for (i=0; i<TYPE_BITS; i++)
- ENTROPY_ENCODER_INIT(&insignificand_bitstream[i], limit);
+ for (i = 0; i < TYPE_BITS; i++)
+ ENTROPY_ENCODER_INIT (&significand_bitstream[i], limit);
+ for (i = 0; i < TYPE_BITS; i++)
+ ENTROPY_ENCODER_INIT (&insignificand_bitstream[i], limit);
- encode_coefficients (buf, significand_bitstream, insignificand_bitstream);
+ encode_coefficients (buf, significand_bitstream, insignificand_bitstream);
- byte_count = setup_limittabs (significand_bitstream, insignificand_bitstream,
- significand_limittab, insignificand_limittab,
- limit);
+ byte_count = setup_limittabs (significand_bitstream, insignificand_bitstream,
+ significand_limittab, insignificand_limittab, limit);
- bitstream = write_limittabs (bitstream,
- significand_limittab, insignificand_limittab);
+ bitstream = write_limittabs (bitstream,
+ significand_limittab, insignificand_limittab);
- merge_bitstreams (bitstream, significand_bitstream, insignificand_bitstream,
- significand_limittab, insignificand_limittab);
+ merge_bitstreams (bitstream, significand_bitstream, insignificand_bitstream,
+ significand_limittab, insignificand_limittab);
- for (i=0; i<TYPE_BITS; i++) {
- ENTROPY_ENCODER_DONE(&significand_bitstream[i]);
- ENTROPY_ENCODER_DONE(&insignificand_bitstream[i]);
- }
+ for (i = 0; i < TYPE_BITS; i++) {
+ ENTROPY_ENCODER_DONE (&significand_bitstream[i]);
+ ENTROPY_ENCODER_DONE (&insignificand_bitstream[i]);
+ }
- return byte_count;
+ return byte_count;
}
-void wavelet_3d_buf_decode_coeff (Wavelet3DBuf* buf,
- uint8_t *bitstream,
- uint32_t byte_count)
+void
+wavelet_3d_buf_decode_coeff (Wavelet3DBuf * buf,
+ uint8_t * bitstream, uint32_t byte_count)
{
- ENTROPY_CODER significand_bitstream [TYPE_BITS];
- ENTROPY_CODER insignificand_bitstream [TYPE_BITS];
- uint32_t significand_limittab [TYPE_BITS];
- uint32_t insignificand_limittab [TYPE_BITS];
- int i;
+ ENTROPY_CODER significand_bitstream[TYPE_BITS];
+ ENTROPY_CODER insignificand_bitstream[TYPE_BITS];
+ uint32_t significand_limittab[TYPE_BITS];
+ uint32_t insignificand_limittab[TYPE_BITS];
+ int i;
- memset (buf->data, 0,
- buf->width * buf->height * buf->frames * sizeof(TYPE));
+ memset (buf->data, 0, buf->width * buf->height * buf->frames * sizeof (TYPE));
- bitstream = read_limittabs (bitstream,
- significand_limittab, insignificand_limittab);
+ bitstream = read_limittabs (bitstream,
+ significand_limittab, insignificand_limittab);
- split_bitstreams (bitstream, significand_bitstream, insignificand_bitstream,
- significand_limittab, insignificand_limittab);
+ split_bitstreams (bitstream, significand_bitstream, insignificand_bitstream,
+ significand_limittab, insignificand_limittab);
- decode_coefficients (buf, significand_bitstream, insignificand_bitstream);
+ decode_coefficients (buf, significand_bitstream, insignificand_bitstream);
- for (i=0; i<TYPE_BITS; i++) {
- ENTROPY_DECODER_DONE(&significand_bitstream[i]);
- ENTROPY_DECODER_DONE(&insignificand_bitstream[i]);
- }
+ for (i = 0; i < TYPE_BITS; i++) {
+ ENTROPY_DECODER_DONE (&significand_bitstream[i]);
+ ENTROPY_DECODER_DONE (&insignificand_bitstream[i]);
+ }
}
-
-