void oggpack_adv(oggpack_buffer *b,int bits){ //printf("Entering oggpack_adv\n"); bits+=b->endbit; // b->ptr+=bits/8; incr_ptr(&b->ptr, bits/8); b->endbyte+=bits/8; b->endbit=bits&7; }
REAL matrD2::mult_line(size_t J, extvec::const_iterator b_begin, extvec::const_iterator b_end) { if (mask_solved_undefined->get(J)) return REAL(0); REAL res = REAL(0); extvec::const_iterator p; bool b[10]; bool flag = false; mask->get10(J, b); // // dxdx // // u_{i,j} - 2 u_{i+1,j} + u_{i+2,j} if (FIRST_X) { p = b_begin + J - 1; flag = incr_ptr(p,J,mask_solved_undefined); if (flag) { CHECK_PTR(p) res += *p * _hx4; // 1; else assert(0); } flag = incr_ptr(p,J+1,mask_solved_undefined); if (flag) { CHECK_PTR(p) res += -2 * (*p) * _hx4; // -2; else assert(0); }
/* bits <= 32 */ long oggpack_read(oggpack_buffer *b,int bits) { long ret; unsigned long m=mask[bits]; bits+=b->endbit; if(b->endbyte+4>=b->storage) { /* not the main path */ ret=-1L; if(b->endbyte*8+bits>b->storage*8)goto overflow; } //ret=b->ptr[0]>>b->endbit; ret=(incr_ptr_getbyte(b->ptr,0) & 0x000000FF)>>b->endbit; if(bits>8) { //ret|=b->ptr[1]<<(8-b->endbit); ret|=(incr_ptr_getbyte(b->ptr,1) & 0x000000FF)<<(8-b->endbit); if(bits>16) { ret|=(incr_ptr_getbyte(b->ptr,2) & 0x000000FF)<<(16-b->endbit); if(bits>24) { ret|=(incr_ptr_getbyte(b->ptr,3) & 0x000000FF)<<(24-b->endbit); if(bits>32 && b->endbit) { ret|=(incr_ptr_getbyte(b->ptr,4) & 0x000000FF)<<(32-b->endbit); } } } } ret&=m; overflow: //b->ptr+=bits/8; incr_ptr(&b->ptr,bits/8); b->endbyte+=bits/8; b->endbit=bits&7; return(ret); }
CHECK_PTR(p) res += *p * _hx4; // 1; else assert(0); } flag = incr_ptr(p,J+1,mask_solved_undefined); if (flag) { CHECK_PTR(p) res += -2 * (*p) * _hx4; // -2; else assert(0); } flag = incr_ptr(p,J+2,mask_solved_undefined); if (flag) { CHECK_PTR(p) res += *p * _hx4; // 1; else assert(0); } } // - 2 u_{i-1,j} + 4 u_{i,j} - 2 u_{i+1,j} if (SECOND_X) { p = b_begin + J - 1 - 1;