Lines Matching refs:it

22 static void InitLeft(VP8EncIterator* const it) {
23 it->y_left_[-1] = it->u_left_[-1] = it->v_left_[-1] =
24 (it->y_ > 0) ? 129 : 127;
25 memset(it->y_left_, 129, 16);
26 memset(it->u_left_, 129, 8);
27 memset(it->v_left_, 129, 8);
28 it->left_nz_[8] = 0;
31 static void InitTop(VP8EncIterator* const it) {
32 const VP8Encoder* const enc = it->enc_;
38 void VP8IteratorSetRow(VP8EncIterator* const it, int y) {
39 VP8Encoder* const enc = it->enc_;
40 it->x_ = 0;
41 it->y_ = y;
42 it->bw_ = &enc->parts_[y & (enc->num_parts_ - 1)];
43 it->preds_ = enc->preds_ + y * 4 * enc->preds_w_;
44 it->nz_ = enc->nz_;
45 it->mb_ = enc->mb_info_ + y * enc->mb_w_;
46 it->y_top_ = enc->y_top_;
47 it->uv_top_ = enc->uv_top_;
48 InitLeft(it);
51 void VP8IteratorReset(VP8EncIterator* const it) {
52 VP8Encoder* const enc = it->enc_;
53 VP8IteratorSetRow(it, 0);
54 VP8IteratorSetCountDown(it, enc->mb_w_ * enc->mb_h_); // default
55 InitTop(it);
56 InitLeft(it);
57 memset(it->bit_count_, 0, sizeof(it->bit_count_));
58 it->do_trellis_ = 0;
61 void VP8IteratorSetCountDown(VP8EncIterator* const it, int count_down) {
62 it->count_down_ = it->count_down0_ = count_down;
65 int VP8IteratorIsDone(const VP8EncIterator* const it) {
66 return (it->count_down_ <= 0);
69 void VP8IteratorInit(VP8Encoder* const enc, VP8EncIterator* const it) {
70 it->enc_ = enc;
71 it->y_stride_ = enc->pic_->y_stride;
72 it->uv_stride_ = enc->pic_->uv_stride;
73 it->yuv_in_ = (uint8_t*)DO_ALIGN(it->yuv_mem_);
74 it->yuv_out_ = it->yuv_in_ + YUV_SIZE;
75 it->yuv_out2_ = it->yuv_out_ + YUV_SIZE;
76 it->yuv_p_ = it->yuv_out2_ + YUV_SIZE;
77 it->lf_stats_ = enc->lf_stats_;
78 it->percent0_ = enc->percent_;
79 it->y_left_ = (uint8_t*)DO_ALIGN(it->yuv_left_mem_ + 1);
80 it->u_left_ = it->y_left_ + 16 + 16;
81 it->v_left_ = it->u_left_ + 16;
82 VP8IteratorReset(it);
85 int VP8IteratorProgress(const VP8EncIterator* const it, int delta) {
86 VP8Encoder* const enc = it->enc_;
88 const int done = it->count_down0_ - it->count_down_;
89 const int percent = (it->count_down0_ <= 0)
90 ? it->percent0_
91 : it->percent0_ + delta * done / it->count_down0_;
127 void VP8IteratorImport(VP8EncIterator* const it, uint8_t* tmp_32) {
128 const VP8Encoder* const enc = it->enc_;
129 const int x = it->x_, y = it->y_;
139 ImportBlock(ysrc, pic->y_stride, it->yuv_in_ + Y_OFF, w, h, 16);
140 ImportBlock(usrc, pic->uv_stride, it->yuv_in_ + U_OFF, uv_w, uv_h, 8);
141 ImportBlock(vsrc, pic->uv_stride, it->yuv_in_ + V_OFF, uv_w, uv_h, 8);
147 InitLeft(it);
150 it->y_left_[-1] = it->u_left_[-1] = it->v_left_[-1] = 127;
152 it->y_left_[-1] = ysrc[- 1 - pic->y_stride];
153 it->u_left_[-1] = usrc[- 1 - pic->uv_stride];
154 it->v_left_[-1] = vsrc[- 1 - pic->uv_stride];
156 ImportLine(ysrc - 1, pic->y_stride, it->y_left_, h, 16);
157 ImportLine(usrc - 1, pic->uv_stride, it->u_left_, uv_h, 8);
158 ImportLine(vsrc - 1, pic->uv_stride, it->v_left_, uv_h, 8);
161 it->y_top_ = tmp_32 + 0;
162 it->uv_top_ = tmp_32 + 16;
184 void VP8IteratorExport(const VP8EncIterator* const it) {
185 const VP8Encoder* const enc = it->enc_;
187 const int x = it->x_, y = it->y_;
188 const uint8_t* const ysrc = it->yuv_out_ + Y_OFF;
189 const uint8_t* const usrc = it->yuv_out_ + U_OFF;
190 const uint8_t* const vsrc = it->yuv_out_ + V_OFF;
230 void VP8IteratorNzToBytes(VP8EncIterator* const it) {
231 const int tnz = it->nz_[0], lnz = it->nz_[-1];
232 int* const top_nz = it->top_nz_;
233 int* const left_nz = it->left_nz_;
263 void VP8IteratorBytesToNz(VP8EncIterator* const it) {
265 const int* const top_nz = it->top_nz_;
266 const int* const left_nz = it->left_nz_;
278 *it->nz_ = nz;
286 void VP8IteratorSaveBoundary(VP8EncIterator* const it) {
287 VP8Encoder* const enc = it->enc_;
288 const int x = it->x_, y = it->y_;
289 const uint8_t* const ysrc = it->yuv_out_ + Y_OFF;
290 const uint8_t* const uvsrc = it->yuv_out_ + U_OFF;
294 it->y_left_[i] = ysrc[15 + i * BPS];
297 it->u_left_[i] = uvsrc[7 + i * BPS];
298 it->v_left_[i] = uvsrc[15 + i * BPS];
301 it->y_left_[-1] = it->y_top_[15];
302 it->u_left_[-1] = it->uv_top_[0 + 7];
303 it->v_left_[-1] = it->uv_top_[8 + 7];
306 memcpy(it->y_top_, ysrc + 15 * BPS, 16);
307 memcpy(it->uv_top_, uvsrc + 7 * BPS, 8 + 8);
311 int VP8IteratorNext(VP8EncIterator* const it) {
312 it->preds_ += 4;
313 it->mb_ += 1;
314 it->nz_ += 1;
315 it->y_top_ += 16;
316 it->uv_top_ += 16;
317 it->x_ += 1;
318 if (it->x_ == it->enc_->mb_w_) {
319 VP8IteratorSetRow(it, ++it->y_);
321 return (0 < --it->count_down_);
327 void VP8SetIntra16Mode(const VP8EncIterator* const it, int mode) {
328 uint8_t* preds = it->preds_;
332 preds += it->enc_->preds_w_;
334 it->mb_->type_ = 1;
337 void VP8SetIntra4Mode(const VP8EncIterator* const it, const uint8_t* modes) {
338 uint8_t* preds = it->preds_;
342 preds += it->enc_->preds_w_;
345 it->mb_->type_ = 0;
348 void VP8SetIntraUVMode(const VP8EncIterator* const it, int mode) {
349 it->mb_->uv_mode_ = mode;
352 void VP8SetSkip(const VP8EncIterator* const it, int skip) {
353 it->mb_->skip_ = skip;
356 void VP8SetSegment(const VP8EncIterator* const it, int segment) {
357 it->mb_->segment_ = segment;
399 void VP8IteratorStartI4(VP8EncIterator* const it) {
400 const VP8Encoder* const enc = it->enc_;
403 it->i4_ = 0; // first 4x4 sub-block
404 it->i4_top_ = it->i4_boundary_ + VP8TopLeftI4[0];
408 it->i4_boundary_[i] = it->y_left_[15 - i];
411 it->i4_boundary_[17 + i] = it->y_top_[i];
414 if (it->x_ < enc->mb_w_ - 1) {
416 it->i4_boundary_[17 + i] = it->y_top_[i];
420 it->i4_boundary_[17 + i] = it->i4_boundary_[17 + 15];
423 VP8IteratorNzToBytes(it); // import the non-zero context
426 int VP8IteratorRotateI4(VP8EncIterator* const it,
428 const uint8_t* const blk = yuv_out + VP8Scan[it->i4_];
429 uint8_t* const top = it->i4_top_;
436 if ((it->i4_ & 3) != 3) { // if not on the right sub-blocks #3, #7, #11, #15
446 ++it->i4_;
447 if (it->i4_ == 16) { // we're done
451 it->i4_top_ = it->i4_boundary_ + VP8TopLeftI4[it->i4_];