Lines Matching refs:enc

57 static void ResetStats(VP8Encoder* const enc, int precalc_cost) {
58 VP8Proba* const proba = &enc->proba_;
73 static int FinalizeSkipProba(VP8Encoder* const enc) {
74 VP8Proba* const proba = &enc->proba_;
75 const int nb_mbs = enc->mb_w_ * enc->mb_h_;
92 static void ResetTokenStats(VP8Encoder* const enc) {
93 VP8Proba* const proba = &enc->proba_;
146 static int FinalizeTokenProbas(VP8Encoder* const enc) {
147 VP8Proba* const proba = &enc->proba_;
181 VP8Encoder* const enc, VP8Residual* const res) {
183 res->prob = enc->proba_.coeffs_[coeff_type];
184 res->stats = enc->proba_.stats_[coeff_type];
185 res->cost = enc->proba_.level_cost_[coeff_type];
478 static void ResetSSE(VP8Encoder* const enc) {
479 memset(enc->sse_, 0, sizeof(enc->sse_));
480 enc->sse_count_ = 0;
484 VP8Encoder* const enc = it->enc_;
488 enc->sse_[0] += VP8SSE16x16(in + Y_OFF, out + Y_OFF);
489 enc->sse_[1] += VP8SSE8x8(in + U_OFF, out + U_OFF);
490 enc->sse_[2] += VP8SSE8x8(in + V_OFF, out + V_OFF);
491 enc->sse_count_ += 16 * 16;
495 VP8Encoder* const enc = it->enc_;
497 WebPPicture* const pic = enc->pic_;
501 enc->block_count_[0] += (mb->type_ == 0);
502 enc->block_count_[1] += (mb->type_ == 1);
503 enc->block_count_[2] += (mb->skip_ != 0);
507 uint8_t* const info = &pic->extra_info[it->x_ + it->y_ * enc->mb_w_];
511 case 3: *info = enc->dqm_[mb->segment_].quant_; break;
542 int VP8EncLoop(VP8Encoder* const enc) {
546 const int dont_use_skip = !enc->proba_.use_skip_proba_;
547 const int rd_opt = enc->rd_opt_level_;
550 enc->mb_w_ * enc->mb_h_ * kAverageBytesPerMB / enc->num_parts_;
553 for (p = 0; p < enc->num_parts_; ++p) {
554 VP8BitWriterInit(enc->parts_ + p, bytes_per_parts);
557 ResetStats(enc, rd_opt != 0);
558 ResetSSE(enc);
560 VP8IteratorInit(enc, &it);
578 for (p = 0; p < enc->num_parts_; ++p) {
579 VP8BitWriterFinish(enc->parts_ + p);
582 if (enc->pic_->stats) {
585 enc->residual_bytes_[i][s] = (int)((it.bit_count_[s][i] + 7) >> 3);
600 static int OneStatPass(VP8Encoder* const enc, float q, int rd_opt, int nb_mbs,
614 VP8SetSegmentParams(enc, q); // setup segment quantizations and filters
616 ResetStats(enc, rd_opt != 0);
617 ResetTokenStats(enc);
619 VP8IteratorInit(enc, &it);
625 enc->proba_.nb_skip_++;
631 size += FinalizeSkipProba(enc);
632 size += FinalizeTokenProbas(enc);
633 size += enc->segment_hdr_.size_;
645 int VP8StatLoop(VP8Encoder* const enc) {
647 (enc->config_->target_size > 0 || enc->config_->target_PSNR > 0);
648 const int fast_probe = (enc->method_ < 2 && !do_search);
649 float q = enc->config_->quality;
654 nb_mbs = enc->mb_w_ * enc->mb_h_;
659 for (pass = 0; pass < enc->config_->pass; ++pass) {
660 const int rd_opt = (enc->method_ > 2);
661 OneStatPass(enc, q, rd_opt, nb_mbs, NULL);
667 for (pass = 0; pass < enc->config_->pass || (dqs[pass] > 0); ++pass) {
671 const int size = OneStatPass(enc, q, rd_opt, nb_mbs, &PSNR);
676 if (enc->config_->target_PSNR > 0) {
677 criterion = (PSNR < enc->config_->target_PSNR);
679 criterion = (size < enc->config_->target_size);