Lines Matching refs:s
37 void BZ2_bsInitWrite ( EState* s ) in BZ2_bsInitWrite() argument
39 s->bsLive = 0; in BZ2_bsInitWrite()
40 s->bsBuff = 0; in BZ2_bsInitWrite()
46 void bsFinishWrite ( EState* s ) in bsFinishWrite() argument
48 while (s->bsLive > 0) { in bsFinishWrite()
49 s->zbits[s->numZ] = (UChar)(s->bsBuff >> 24); in bsFinishWrite()
50 s->numZ++; in bsFinishWrite()
51 s->bsBuff <<= 8; in bsFinishWrite()
52 s->bsLive -= 8; in bsFinishWrite()
60 while (s->bsLive >= 8) { \
61 s->zbits[s->numZ] \
62 = (UChar)(s->bsBuff >> 24); \
63 s->numZ++; \
64 s->bsBuff <<= 8; \
65 s->bsLive -= 8; \
73 void bsW ( EState* s, Int32 n, UInt32 v ) in bsW() argument
76 s->bsBuff |= (v << (32 - s->bsLive - n)); in bsW()
77 s->bsLive += n; in bsW()
83 void bsPutUInt32 ( EState* s, UInt32 u ) in bsPutUInt32() argument
85 bsW ( s, 8, (u >> 24) & 0xffL ); in bsPutUInt32()
86 bsW ( s, 8, (u >> 16) & 0xffL ); in bsPutUInt32()
87 bsW ( s, 8, (u >> 8) & 0xffL ); in bsPutUInt32()
88 bsW ( s, 8, u & 0xffL ); in bsPutUInt32()
94 void bsPutUChar ( EState* s, UChar c ) in bsPutUChar() argument
96 bsW( s, 8, (UInt32)c ); in bsPutUChar()
106 void makeMaps_e ( EState* s ) in makeMaps_e() argument
109 s->nInUse = 0; in makeMaps_e()
111 if (s->inUse[i]) { in makeMaps_e()
112 s->unseqToSeq[i] = s->nInUse; in makeMaps_e()
113 s->nInUse++; in makeMaps_e()
120 void generateMTFValues ( EState* s ) in generateMTFValues() argument
150 UInt32* ptr = s->ptr; in generateMTFValues()
151 UChar* block = s->block; in generateMTFValues()
152 UInt16* mtfv = s->mtfv; in generateMTFValues()
154 makeMaps_e ( s ); in generateMTFValues()
155 EOB = s->nInUse+1; in generateMTFValues()
157 for (i = 0; i <= EOB; i++) s->mtfFreq[i] = 0; in generateMTFValues()
161 for (i = 0; i < s->nInUse; i++) yy[i] = (UChar) i; in generateMTFValues()
163 for (i = 0; i < s->nblock; i++) { in generateMTFValues()
166 j = ptr[i]-1; if (j < 0) j += s->nblock; in generateMTFValues()
167 ll_i = s->unseqToSeq[block[j]]; in generateMTFValues()
168 AssertD ( ll_i < s->nInUse, "generateMTFValues(2a)" ); in generateMTFValues()
179 s->mtfFreq[BZ_RUNB]++; in generateMTFValues()
182 s->mtfFreq[BZ_RUNA]++; in generateMTFValues()
206 mtfv[wr] = j+1; wr++; s->mtfFreq[j+1]++; in generateMTFValues()
217 s->mtfFreq[BZ_RUNB]++; in generateMTFValues()
220 s->mtfFreq[BZ_RUNA]++; in generateMTFValues()
228 mtfv[wr] = EOB; wr++; s->mtfFreq[EOB]++; in generateMTFValues()
230 s->nMTF = wr; in generateMTFValues()
239 void sendMTFValues ( EState* s ) in sendMTFValues() argument
259 UInt16* mtfv = s->mtfv; in sendMTFValues()
261 if (s->verbosity >= 3) in sendMTFValues()
264 s->nblock, s->nMTF, s->nInUse ); in sendMTFValues()
266 alphaSize = s->nInUse+2; in sendMTFValues()
269 s->len[t][v] = BZ_GREATER_ICOST; in sendMTFValues()
272 AssertH ( s->nMTF > 0, 3001 ); in sendMTFValues()
273 if (s->nMTF < 200) nGroups = 2; else in sendMTFValues()
274 if (s->nMTF < 600) nGroups = 3; else in sendMTFValues()
275 if (s->nMTF < 1200) nGroups = 4; else in sendMTFValues()
276 if (s->nMTF < 2400) nGroups = 5; else in sendMTFValues()
284 remF = s->nMTF; in sendMTFValues()
292 aFreq += s->mtfFreq[ge]; in sendMTFValues()
298 aFreq -= s->mtfFreq[ge]; in sendMTFValues()
302 if (s->verbosity >= 3) in sendMTFValues()
306 (100.0 * (float)aFreq) / (float)(s->nMTF) ); in sendMTFValues()
310 s->len[nPart-1][v] = BZ_LESSER_ICOST; else in sendMTFValues()
311 s->len[nPart-1][v] = BZ_GREATER_ICOST; in sendMTFValues()
328 s->rfreq[t][v] = 0; in sendMTFValues()
336 s->len_pack[v][0] = (s->len[1][v] << 16) | s->len[0][v]; in sendMTFValues()
337 s->len_pack[v][1] = (s->len[3][v] << 16) | s->len[2][v]; in sendMTFValues()
338 s->len_pack[v][2] = (s->len[5][v] << 16) | s->len[4][v]; in sendMTFValues()
348 if (gs >= s->nMTF) break; in sendMTFValues()
350 if (ge >= s->nMTF) ge = s->nMTF-1; in sendMTFValues()
366 cost01 += s->len_pack[icv][0]; \ in sendMTFValues()
367 cost23 += s->len_pack[icv][1]; \ in sendMTFValues()
368 cost45 += s->len_pack[icv][2]; \ in sendMTFValues()
391 for (t = 0; t < nGroups; t++) cost[t] += s->len[t][icv]; in sendMTFValues()
404 s->selector[nSelectors] = bt; in sendMTFValues()
413 # define BZ_ITUR(nn) s->rfreq[bt][ mtfv[gs+(nn)] ]++ in sendMTFValues()
431 s->rfreq[bt][ mtfv[i] ]++; in sendMTFValues()
436 if (s->verbosity >= 3) { in sendMTFValues()
450 BZ2_hbMakeCodeLengths ( &(s->len[t][0]), &(s->rfreq[t][0]), in sendMTFValues()
466 ll_i = s->selector[i]; in sendMTFValues()
476 s->selectorMtf[i] = j; in sendMTFValues()
485 if (s->len[t][i] > maxLen) maxLen = s->len[t][i]; in sendMTFValues()
486 if (s->len[t][i] < minLen) minLen = s->len[t][i]; in sendMTFValues()
490 BZ2_hbAssignCodes ( &(s->code[t][0]), &(s->len[t][0]), in sendMTFValues()
500 if (s->inUse[i * 16 + j]) inUse16[i] = True; in sendMTFValues()
503 nBytes = s->numZ; in sendMTFValues()
505 if (inUse16[i]) bsW(s,1,1); else bsW(s,1,0); in sendMTFValues()
510 if (s->inUse[i * 16 + j]) bsW(s,1,1); else bsW(s,1,0); in sendMTFValues()
513 if (s->verbosity >= 3) in sendMTFValues()
514 VPrintf1( " bytes: mapping %d, ", s->numZ-nBytes ); in sendMTFValues()
518 nBytes = s->numZ; in sendMTFValues()
519 bsW ( s, 3, nGroups ); in sendMTFValues()
520 bsW ( s, 15, nSelectors ); in sendMTFValues()
522 for (j = 0; j < s->selectorMtf[i]; j++) bsW(s,1,1); in sendMTFValues()
523 bsW(s,1,0); in sendMTFValues()
525 if (s->verbosity >= 3) in sendMTFValues()
526 VPrintf1( "selectors %d, ", s->numZ-nBytes ); in sendMTFValues()
529 nBytes = s->numZ; in sendMTFValues()
532 Int32 curr = s->len[t][0]; in sendMTFValues()
533 bsW ( s, 5, curr ); in sendMTFValues()
535 while (curr < s->len[t][i]) { bsW(s,2,2); curr++; /* 10 */ }; in sendMTFValues()
536 while (curr > s->len[t][i]) { bsW(s,2,3); curr--; /* 11 */ }; in sendMTFValues()
537 bsW ( s, 1, 0 ); in sendMTFValues()
541 if (s->verbosity >= 3) in sendMTFValues()
542 VPrintf1 ( "code lengths %d, ", s->numZ-nBytes ); in sendMTFValues()
545 nBytes = s->numZ; in sendMTFValues()
549 if (gs >= s->nMTF) break; in sendMTFValues()
551 if (ge >= s->nMTF) ge = s->nMTF-1; in sendMTFValues()
552 AssertH ( s->selector[selCtr] < nGroups, 3006 ); in sendMTFValues()
558 = &(s->len[s->selector[selCtr]][0]); in sendMTFValues()
560 = &(s->code[s->selector[selCtr]][0]); in sendMTFValues()
564 bsW ( s, \ in sendMTFValues()
584 bsW ( s, in sendMTFValues()
585 s->len [s->selector[selCtr]] [mtfv[i]], in sendMTFValues()
586 s->code [s->selector[selCtr]] [mtfv[i]] ); in sendMTFValues()
596 if (s->verbosity >= 3) in sendMTFValues()
597 VPrintf1( "codes %d\n", s->numZ-nBytes ); in sendMTFValues()
602 void BZ2_compressBlock ( EState* s, Bool is_last_block ) in BZ2_compressBlock() argument
604 if (s->nblock > 0) { in BZ2_compressBlock()
606 BZ_FINALISE_CRC ( s->blockCRC ); in BZ2_compressBlock()
607 s->combinedCRC = (s->combinedCRC << 1) | (s->combinedCRC >> 31); in BZ2_compressBlock()
608 s->combinedCRC ^= s->blockCRC; in BZ2_compressBlock()
609 if (s->blockNo > 1) s->numZ = 0; in BZ2_compressBlock()
611 if (s->verbosity >= 2) in BZ2_compressBlock()
614 s->blockNo, s->blockCRC, s->combinedCRC, s->nblock ); in BZ2_compressBlock()
616 BZ2_blockSort ( s ); in BZ2_compressBlock()
619 s->zbits = (UChar*) (&((UChar*)s->arr2)[s->nblock]); in BZ2_compressBlock()
622 if (s->blockNo == 1) { in BZ2_compressBlock()
623 BZ2_bsInitWrite ( s ); in BZ2_compressBlock()
624 bsPutUChar ( s, BZ_HDR_B ); in BZ2_compressBlock()
625 bsPutUChar ( s, BZ_HDR_Z ); in BZ2_compressBlock()
626 bsPutUChar ( s, BZ_HDR_h ); in BZ2_compressBlock()
627 bsPutUChar ( s, (UChar)(BZ_HDR_0 + s->blockSize100k) ); in BZ2_compressBlock()
630 if (s->nblock > 0) { in BZ2_compressBlock()
632 bsPutUChar ( s, 0x31 ); bsPutUChar ( s, 0x41 ); in BZ2_compressBlock()
633 bsPutUChar ( s, 0x59 ); bsPutUChar ( s, 0x26 ); in BZ2_compressBlock()
634 bsPutUChar ( s, 0x53 ); bsPutUChar ( s, 0x59 ); in BZ2_compressBlock()
637 bsPutUInt32 ( s, s->blockCRC ); in BZ2_compressBlock()
648 bsW(s,1,0); in BZ2_compressBlock()
650 bsW ( s, 24, s->origPtr ); in BZ2_compressBlock()
651 generateMTFValues ( s ); in BZ2_compressBlock()
652 sendMTFValues ( s ); in BZ2_compressBlock()
659 bsPutUChar ( s, 0x17 ); bsPutUChar ( s, 0x72 ); in BZ2_compressBlock()
660 bsPutUChar ( s, 0x45 ); bsPutUChar ( s, 0x38 ); in BZ2_compressBlock()
661 bsPutUChar ( s, 0x50 ); bsPutUChar ( s, 0x90 ); in BZ2_compressBlock()
662 bsPutUInt32 ( s, s->combinedCRC ); in BZ2_compressBlock()
663 if (s->verbosity >= 2) in BZ2_compressBlock()
664 VPrintf1( " final combined CRC = 0x%08x\n ", s->combinedCRC ); in BZ2_compressBlock()
665 bsFinishWrite ( s ); in BZ2_compressBlock()