Lines Matching defs:pdwvw
67 static int dwvw_decode_data (SF_PRIVATE *psf, DWVW_PRIVATE *pdwvw, int *ptr, int len) ;
68 static int dwvw_decode_load_bits (SF_PRIVATE *psf, DWVW_PRIVATE *pdwvw, int bit_count) ;
70 static int dwvw_encode_data (SF_PRIVATE *psf, DWVW_PRIVATE *pdwvw, const int *ptr, int len) ;
71 static void dwvw_encode_store_bits (SF_PRIVATE *psf, DWVW_PRIVATE *pdwvw, int data, int new_bits) ;
72 static void dwvw_read_reset (DWVW_PRIVATE *pdwvw) ;
80 { DWVW_PRIVATE *pdwvw ;
93 if ((pdwvw = calloc (1, sizeof (DWVW_PRIVATE))) == NULL)
96 psf->codec_data = (void*) pdwvw ;
97 pdwvw->bit_width = bitwidth ;
98 dwvw_read_reset (pdwvw) ;
120 dwvw_read_reset (pdwvw) ;
131 { DWVW_PRIVATE *pdwvw ;
135 pdwvw = (DWVW_PRIVATE*) psf->codec_data ;
141 dwvw_encode_data (psf, pdwvw, last_values, 12) ;
144 psf_fwrite (pdwvw->b.buffer, 1, pdwvw->b.index, psf) ;
155 { DWVW_PRIVATE *pdwvw ;
162 pdwvw = (DWVW_PRIVATE*) psf->codec_data ;
166 dwvw_read_reset (pdwvw) ;
188 { DWVW_PRIVATE *pdwvw ;
196 pdwvw = (DWVW_PRIVATE*) psf->codec_data ;
202 count = dwvw_decode_data (psf, pdwvw, iptr, readcount) ;
217 { DWVW_PRIVATE *pdwvw ;
223 pdwvw = (DWVW_PRIVATE*) psf->codec_data ;
228 count = dwvw_decode_data (psf, pdwvw, ptr, readcount) ;
242 { DWVW_PRIVATE *pdwvw ;
251 pdwvw = (DWVW_PRIVATE*) psf->codec_data ;
259 count = dwvw_decode_data (psf, pdwvw, iptr, readcount) ;
274 { DWVW_PRIVATE *pdwvw ;
283 pdwvw = (DWVW_PRIVATE*) psf->codec_data ;
291 count = dwvw_decode_data (psf, pdwvw, iptr, readcount) ;
305 dwvw_decode_data (SF_PRIVATE *psf, DWVW_PRIVATE *pdwvw, int *ptr, int len)
310 delta_width = pdwvw->last_delta_width ;
311 sample = pdwvw->last_sample ;
315 delta_width_modifier = dwvw_decode_load_bits (psf, pdwvw, -1) ;
318 if (delta_width_modifier < 0 || (pdwvw->b.end == 0 && count == 0))
321 if (delta_width_modifier && dwvw_decode_load_bits (psf, pdwvw, 1))
325 delta_width = (delta_width + delta_width_modifier + pdwvw->bit_width) % pdwvw->bit_width ;
330 { delta = dwvw_decode_load_bits (psf, pdwvw, delta_width - 1) | (1 << (delta_width - 1)) ;
331 delta_negative = dwvw_decode_load_bits (psf, pdwvw, 1) ;
332 if (delta == pdwvw->max_delta - 1)
333 delta += dwvw_decode_load_bits (psf, pdwvw, 1) ;
341 if (sample >= pdwvw->max_delta)
342 sample -= pdwvw->span ;
343 else if (sample < - pdwvw->max_delta)
344 sample += pdwvw->span ;
347 ptr [count] = arith_shift_left (sample, 32 - pdwvw->bit_width) ;
349 if (pdwvw->b.end == 0 && pdwvw->bit_count == 0)
353 pdwvw->last_delta_width = delta_width ;
354 pdwvw->last_sample = sample ;
356 pdwvw->samplecount += count ;
362 dwvw_decode_load_bits (SF_PRIVATE *psf, DWVW_PRIVATE *pdwvw, int bit_count)
374 bit_count = pdwvw->dwm_maxsize ;
378 while (pdwvw->bit_count < bit_count)
379 { if (pdwvw->b.index >= pdwvw->b.end)
380 { pdwvw->b.end = (int) psf_fread (pdwvw->b.buffer, 1, sizeof (pdwvw->b.buffer), psf) ;
381 pdwvw->b.index = 0 ;
385 if (bit_count < 8 && pdwvw->b.end == 0)
388 pdwvw->bits = arith_shift_left (pdwvw->bits, 8) ;
390 if (pdwvw->b.index < pdwvw->b.end)
391 { pdwvw->bits |= pdwvw->b.buffer [pdwvw->b.index] ;
392 pdwvw->b.index ++ ;
394 pdwvw->bit_count += 8 ;
399 { output = (pdwvw->bits >> (pdwvw->bit_count - bit_count)) & ((1 << bit_count) - 1) ;
400 pdwvw->bit_count -= bit_count ;
405 while (output < (pdwvw->dwm_maxsize))
406 { pdwvw->bit_count -= 1 ;
407 if (pdwvw->bits & (1 << pdwvw->bit_count))
416 dwvw_read_reset (DWVW_PRIVATE *pdwvw)
417 { int bitwidth = pdwvw->bit_width ;
419 memset (pdwvw, 0, sizeof (DWVW_PRIVATE)) ;
421 pdwvw->bit_width = bitwidth ;
422 pdwvw->dwm_maxsize = bitwidth / 2 ;
423 pdwvw->max_delta = 1 << (bitwidth - 1) ;
424 pdwvw->span = 1 << bitwidth ;
428 dwvw_encode_store_bits (SF_PRIVATE *psf, DWVW_PRIVATE *pdwvw, int data, int new_bits)
432 pdwvw->bits = arith_shift_left (pdwvw->bits, new_bits) | (data & (arith_shift_left (1, new_bits) - 1)) ;
433 pdwvw->bit_count += new_bits ;
436 while (pdwvw->bit_count >= 8)
437 { byte = pdwvw->bits >> (pdwvw->bit_count - 8) ;
438 pdwvw->bit_count -= 8 ;
439 pdwvw->b.buffer [pdwvw->b.index] = byte & 0xFF ;
440 pdwvw->b.index ++ ;
443 if (pdwvw->b.index > SIGNED_SIZEOF (pdwvw->b.buffer) - 4)
444 { psf_fwrite (pdwvw->b.buffer, 1, pdwvw->b.index, psf) ;
445 pdwvw->b.index = 0 ;
454 dump_bits (DWVW_PRIVATE *pdwvw)
457 for (k = 0 ; k < 10 && k < pdwvw->b.index ; k++)
460 { putchar (mask & pdwvw->b.buffer [k] ? '1' : '0') ;
466 for (k = pdwvw->bit_count - 1 ; k >= 0 ; k --)
467 putchar (pdwvw->bits & (1 << k) ? '1' : '0') ;
483 dwvw_encode_data (SF_PRIVATE *psf, DWVW_PRIVATE *pdwvw, const int *ptr, int len)
488 { delta = (ptr [count] >> (32 - pdwvw->bit_width)) - pdwvw->last_sample ;
493 if (delta < -pdwvw->max_delta)
494 delta = pdwvw->max_delta + (delta % pdwvw->max_delta) ;
495 else if (delta == -pdwvw->max_delta)
498 delta = pdwvw->max_delta - 1 ;
500 else if (delta > pdwvw->max_delta)
502 delta = pdwvw->span - delta ;
505 else if (delta == pdwvw->max_delta)
507 delta = pdwvw->max_delta - 1 ;
514 if (delta == pdwvw->max_delta - 1 && extra_bit == -1)
521 delta_width_modifier = (delta_width - pdwvw->last_delta_width) % pdwvw->bit_width ;
522 if (delta_width_modifier > pdwvw->dwm_maxsize)
523 delta_width_modifier -= pdwvw->bit_width ;
524 if (delta_width_modifier < -pdwvw->dwm_maxsize)
525 delta_width_modifier += pdwvw->bit_width ;
528 dwvw_encode_store_bits (psf, pdwvw, 0, abs (delta_width_modifier)) ;
529 if (abs (delta_width_modifier) != pdwvw->dwm_maxsize)
530 dwvw_encode_store_bits (psf, pdwvw, 1, 1) ;
534 dwvw_encode_store_bits (psf, pdwvw, 1, 1) ;
536 dwvw_encode_store_bits (psf, pdwvw, 0, 1) ;
540 { dwvw_encode_store_bits (psf, pdwvw, delta, abs (delta_width) - 1) ;
541 dwvw_encode_store_bits (psf, pdwvw, (delta_negative ? 1 : 0), 1) ;
546 dwvw_encode_store_bits (psf, pdwvw, extra_bit, 1) ;
548 pdwvw->last_sample = ptr [count] >> (32 - pdwvw->bit_width) ;
549 pdwvw->last_delta_width = delta_width ;
552 pdwvw->samplecount += count ;
559 { DWVW_PRIVATE *pdwvw ;
567 pdwvw = (DWVW_PRIVATE*) psf->codec_data ;
575 count = dwvw_encode_data (psf, pdwvw, iptr, writecount) ;
588 { DWVW_PRIVATE *pdwvw ;
594 pdwvw = (DWVW_PRIVATE*) psf->codec_data ;
599 count = dwvw_encode_data (psf, pdwvw, ptr, writecount) ;
613 { DWVW_PRIVATE *pdwvw ;
622 pdwvw = (DWVW_PRIVATE*) psf->codec_data ;
632 count = dwvw_encode_data (psf, pdwvw, iptr, writecount) ;
645 { DWVW_PRIVATE *pdwvw ;
654 pdwvw = (DWVW_PRIVATE*) psf->codec_data ;
664 count = dwvw_encode_data (psf, pdwvw, iptr, writecount) ;