Lines Matching refs:pdec

53 static void build_subblock_pattern(struct pwc_dec23_private *pdec)  in build_subblock_pattern()  argument
74 pdec->table_subblock[i][j] = temp_values[j]; in build_subblock_pattern()
80 static void build_bit_powermask_table(struct pwc_dec23_private *pdec) in build_bit_powermask_table() argument
88 p = pdec->table_bitpowermask[bit]; in build_bit_powermask_table()
154 static void fill_table_dc00_d800(struct pwc_dec23_private *pdec) in fill_table_dc00_d800() argument
163 pdec->table_dc00[i] = offset1 & ~(ONE_HALF); in fill_table_dc00_d800()
164 pdec->table_d800[i] = offset2; in fill_table_dc00_d800()
300 struct pwc_dec23_private *pdec = &pdev->dec23; in pwc_dec23_init() local
302 mutex_init(&pdec->lock); in pwc_dec23_init()
304 if (pdec->last_cmd_valid && pdec->last_cmd == cmd[2]) in pwc_dec23_init()
310 pdec->nbits = 7; /* More bits, mean more bits to encode the stream, but better quality */ in pwc_dec23_init()
312 pdec->nbits = 8; in pwc_dec23_init()
314 pdec->nbits = 6; in pwc_dec23_init()
317 build_table_color(KiaraRomTable[version][0], pdec->table_0004_pass1, pdec->table_8004_pass1); in pwc_dec23_init()
318 build_table_color(KiaraRomTable[version][1], pdec->table_0004_pass2, pdec->table_8004_pass2); in pwc_dec23_init()
324 pdec->nbits = 7; in pwc_dec23_init()
326 pdec->nbits = 8; in pwc_dec23_init()
328 pdec->nbits = 6; in pwc_dec23_init()
331 build_table_color(TimonRomTable[version][0], pdec->table_0004_pass1, pdec->table_8004_pass1); in pwc_dec23_init()
332 build_table_color(TimonRomTable[version][1], pdec->table_0004_pass2, pdec->table_8004_pass2); in pwc_dec23_init()
336 shift = 8 - pdec->nbits; in pwc_dec23_init()
337 pdec->scalebits = SCALEBITS - shift; in pwc_dec23_init()
338 pdec->nbitsmask = 0xFF >> shift; in pwc_dec23_init()
340 fill_table_dc00_d800(pdec); in pwc_dec23_init()
341 build_subblock_pattern(pdec); in pwc_dec23_init()
342 build_bit_powermask_table(pdec); in pwc_dec23_init()
354 pdec->last_cmd = cmd[2]; in pwc_dec23_init()
355 pdec->last_cmd_valid = 1; in pwc_dec23_init()
469 #define fill_nbits(pdec, nbits_wanted) do { \ argument
470 while (pdec->nbits_in_reservoir<(nbits_wanted)) \
472 pdec->reservoir |= (*(pdec->stream)++) << (pdec->nbits_in_reservoir); \
473 pdec->nbits_in_reservoir += 8; \
477 #define skip_nbits(pdec, nbits_to_skip) do { \ argument
478 pdec->reservoir >>= (nbits_to_skip); \
479 pdec->nbits_in_reservoir -= (nbits_to_skip); \
482 #define get_nbits(pdec, nbits_wanted, result) do { \ argument
483 fill_nbits(pdec, nbits_wanted); \
484 result = (pdec->reservoir) & ((1U<<(nbits_wanted))-1); \
485 skip_nbits(pdec, nbits_wanted); \
488 #define __get_nbits(pdec, nbits_wanted, result) do { \ argument
489 result = (pdec->reservoir) & ((1U<<(nbits_wanted))-1); \
490 skip_nbits(pdec, nbits_wanted); \
493 #define look_nbits(pdec, nbits_wanted) \ argument
494 ((pdec->reservoir) & ((1U<<(nbits_wanted))-1))
499 static void decode_block(struct pwc_dec23_private *pdec, in decode_block() argument
507 fill_nbits(pdec, 16); in decode_block()
508 __get_nbits(pdec, pdec->nbits, primary_color); in decode_block()
510 if (look_nbits(pdec,2) == 0) { in decode_block()
511 skip_nbits(pdec, 2); in decode_block()
514 pdec->temp_colors[i] = pdec->table_dc00[primary_color]; in decode_block()
521 pdec->temp_colors[i] = pdec->table_d800[primary_color]; in decode_block()
523 __get_nbits(pdec, 3, channel_v); in decode_block()
541 fill_nbits(pdec, 16); in decode_block()
542 htable_idx = look_nbits(pdec, 6); in decode_block()
546 skip_nbits(pdec, 2); in decode_block()
557 skip_nbits(pdec, 3); in decode_block()
559 __get_nbits(pdec, 4, yyyy); in decode_block()
565 __get_nbits(pdec, nbits+1, col1); in decode_block()
568 mask = pdec->table_bitpowermask[nbits][col1]; in decode_block()
572 block = pdec->table_subblock[rows]; in decode_block()
574 pdec->temp_colors[i] += block[MulIdx[offset1][i]]; in decode_block()
586 block = pdec->table_subblock[rows]; in decode_block()
588 pdec->temp_colors[i] += block[MulIdx[offset1][i]]; in decode_block()
591 skip_nbits(pdec, shift); in decode_block()
598 static void DecompressBand23(struct pwc_dec23_private *pdec, in DecompressBand23() argument
610 pdec->reservoir = 0; in DecompressBand23()
611 pdec->nbits_in_reservoir = 0; in DecompressBand23()
612 pdec->stream = rawyuv + 1; /* The first byte of the stream is skipped */ in DecompressBand23()
614 get_nbits(pdec, 4, compression_index); in DecompressBand23()
619 ptable0004 = pdec->table_0004_pass1[compression_index]; in DecompressBand23()
620 ptable8004 = pdec->table_8004_pass1[compression_index]; in DecompressBand23()
624 decode_block(pdec, ptable0004, ptable8004); in DecompressBand23()
625 copy_image_block_Y(pdec->temp_colors, planar_y, real_image_width, pdec->scalebits); in DecompressBand23()
633 ptable0004 = pdec->table_0004_pass2[compression_index]; in DecompressBand23()
634 ptable8004 = pdec->table_8004_pass2[compression_index]; in DecompressBand23()
638 decode_block(pdec, ptable0004, ptable8004); in DecompressBand23()
639 copy_image_block_CrCb(pdec->temp_colors, planar_u, real_image_width/2, pdec->scalebits); in DecompressBand23()
641 decode_block(pdec, ptable0004, ptable8004); in DecompressBand23()
642 copy_image_block_CrCb(pdec->temp_colors, planar_v, real_image_width/2, pdec->scalebits); in DecompressBand23()
663 struct pwc_dec23_private *pdec = &pdev->dec23; in pwc_dec23_decompress() local
671 mutex_lock(&pdec->lock); in pwc_dec23_decompress()
682 DecompressBand23(pdec, src, in pwc_dec23_decompress()
690 mutex_unlock(&pdec->lock); in pwc_dec23_decompress()