• Home
  • Raw
  • Download

Lines Matching refs:enc

57 static void ResetStats(VP8Encoder* const enc) {  in ResetStats()  argument
58 VP8Proba* const proba = &enc->proba_; in ResetStats()
73 static int FinalizeSkipProba(VP8Encoder* const enc) { in FinalizeSkipProba() argument
74 VP8Proba* const proba = &enc->proba_; in FinalizeSkipProba()
75 const int nb_mbs = enc->mb_w_ * enc->mb_h_; in FinalizeSkipProba()
92 static void ResetTokenStats(VP8Encoder* const enc) { in ResetTokenStats() argument
93 VP8Proba* const proba = &enc->proba_; in ResetTokenStats()
223 static void SetSegmentProbas(VP8Encoder* const enc) { in SetSegmentProbas() argument
227 for (n = 0; n < enc->mb_w_ * enc->mb_h_; ++n) { in SetSegmentProbas()
228 const VP8MBInfo* const mb = &enc->mb_info_[n]; in SetSegmentProbas()
231 if (enc->pic_->stats != NULL) { in SetSegmentProbas()
233 enc->pic_->stats->segment_size[n] = p[n]; in SetSegmentProbas()
236 if (enc->segment_hdr_.num_segments_ > 1) { in SetSegmentProbas()
237 uint8_t* const probas = enc->proba_.segments_; in SetSegmentProbas()
242 enc->segment_hdr_.update_map_ = in SetSegmentProbas()
244 enc->segment_hdr_.size_ = in SetSegmentProbas()
250 enc->segment_hdr_.update_map_ = 0; in SetSegmentProbas()
251 enc->segment_hdr_.size_ = 0; in SetSegmentProbas()
259 VP8Encoder* const enc, VP8Residual* const res) { in InitResidual() argument
261 res->prob = enc->proba_.coeffs_[coeff_type]; in InitResidual()
262 res->stats = enc->proba_.stats_[coeff_type]; in InitResidual()
263 res->cost = enc->proba_.level_cost_[coeff_type]; in InitResidual()
332 VP8Encoder* const enc = it->enc_; in VP8GetCostLuma4() local
336 InitResidual(0, 3, enc, &res); in VP8GetCostLuma4()
345 VP8Encoder* const enc = it->enc_; in VP8GetCostLuma16() local
352 InitResidual(0, 1, enc, &res); in VP8GetCostLuma16()
357 InitResidual(1, 0, enc, &res); in VP8GetCostLuma16()
371 VP8Encoder* const enc = it->enc_; in VP8GetCostUV() local
377 InitResidual(0, 2, enc, &res); in VP8GetCostUV()
473 VP8Encoder* const enc = it->enc_; in CodeResiduals() local
479 InitResidual(0, 1, enc, &res); in CodeResiduals()
483 InitResidual(1, 0, enc, &res); in CodeResiduals()
485 InitResidual(0, 3, enc, &res); in CodeResiduals()
499 InitResidual(0, 2, enc, &res); in CodeResiduals()
524 VP8Encoder* const enc = it->enc_; in RecordResiduals() local
529 InitResidual(0, 1, enc, &res); in RecordResiduals()
533 InitResidual(1, 0, enc, &res); in RecordResiduals()
535 InitResidual(0, 3, enc, &res); in RecordResiduals()
548 InitResidual(0, 2, enc, &res); in RecordResiduals()
572 VP8Encoder* const enc = it->enc_; in RecordTokens() local
577 InitResidual(0, 1, enc, &res); in RecordTokens()
583 InitResidual(1, 0, enc, &res); in RecordTokens()
585 InitResidual(0, 3, enc, &res); in RecordTokens()
601 InitResidual(0, 2, enc, &res); in RecordTokens()
632 static void ResetSSE(VP8Encoder* const enc) { in ResetSSE() argument
633 enc->sse_[0] = 0; in ResetSSE()
634 enc->sse_[1] = 0; in ResetSSE()
635 enc->sse_[2] = 0; in ResetSSE()
637 enc->sse_count_ = 0; in ResetSSE()
641 VP8Encoder* const enc = it->enc_; in StoreSSE() local
645 enc->sse_[0] += VP8SSE16x16(in + Y_OFF, out + Y_OFF); in StoreSSE()
646 enc->sse_[1] += VP8SSE8x8(in + U_OFF, out + U_OFF); in StoreSSE()
647 enc->sse_[2] += VP8SSE8x8(in + V_OFF, out + V_OFF); in StoreSSE()
648 enc->sse_count_ += 16 * 16; in StoreSSE()
652 VP8Encoder* const enc = it->enc_; in StoreSideInfo() local
654 WebPPicture* const pic = enc->pic_; in StoreSideInfo()
658 enc->block_count_[0] += (mb->type_ == 0); in StoreSideInfo()
659 enc->block_count_[1] += (mb->type_ == 1); in StoreSideInfo()
660 enc->block_count_[2] += (mb->skip_ != 0); in StoreSideInfo()
664 uint8_t* const info = &pic->extra_info[it->x_ + it->y_ * enc->mb_w_]; in StoreSideInfo()
668 case 3: *info = enc->dqm_[mb->segment_].quant_; break; in StoreSideInfo()
693 static void SetLoopParams(VP8Encoder* const enc, float q) { in SetLoopParams() argument
701 VP8SetSegmentParams(enc, q); // setup segment quantizations and filters in SetLoopParams()
702 SetSegmentProbas(enc); // compute segment probabilities in SetLoopParams()
704 ResetStats(enc); in SetLoopParams()
705 ResetTokenStats(enc); in SetLoopParams()
707 ResetSSE(enc); in SetLoopParams()
710 static int OneStatPass(VP8Encoder* const enc, float q, VP8RDLevel rd_opt, in OneStatPass() argument
717 SetLoopParams(enc, q); in OneStatPass()
719 VP8IteratorInit(enc, &it); in OneStatPass()
725 enc->proba_.nb_skip_++; in OneStatPass()
733 size += FinalizeSkipProba(enc); in OneStatPass()
734 size += FinalizeTokenProbas(&enc->proba_); in OneStatPass()
735 size += enc->segment_hdr_.size_; in OneStatPass()
747 static int StatLoop(VP8Encoder* const enc) { in StatLoop() argument
748 const int method = enc->method_; in StatLoop()
749 const int do_search = enc->do_search_; in StatLoop()
751 float q = enc->config_->quality; in StatLoop()
752 const int max_passes = enc->config_->pass; in StatLoop()
755 const int final_percent = enc->percent_ + task_percent; in StatLoop()
760 nb_mbs = enc->mb_w_ * enc->mb_h_; in StatLoop()
773 if (!OneStatPass(enc, q, rd_opt, nb_mbs, NULL, percent_per_pass)) { in StatLoop()
782 const int size = OneStatPass(enc, q, RD_OPT_BASIC, nb_mbs, &PSNR, in StatLoop()
788 if (enc->config_->target_PSNR > 0) { in StatLoop()
789 criterion = (PSNR < enc->config_->target_PSNR); in StatLoop()
791 criterion = (size < enc->config_->target_size); in StatLoop()
801 VP8CalculateLevelCosts(&enc->proba_); // finalize costs in StatLoop()
802 return WebPReportProgress(enc->pic_, final_percent, &enc->percent_); in StatLoop()
811 static int PreLoopInitialize(VP8Encoder* const enc) { in PreLoopInitialize() argument
814 const int average_bytes_per_MB = kAverageBytesPerMB[enc->base_quant_ >> 4]; in PreLoopInitialize()
816 enc->mb_w_ * enc->mb_h_ * average_bytes_per_MB / enc->num_parts_; in PreLoopInitialize()
818 for (p = 0; ok && p < enc->num_parts_; ++p) { in PreLoopInitialize()
819 ok = VP8BitWriterInit(enc->parts_ + p, bytes_per_parts); in PreLoopInitialize()
821 if (!ok) VP8EncFreeBitWriters(enc); // malloc error occurred in PreLoopInitialize()
826 VP8Encoder* const enc = it->enc_; in PostLoopFinalize() local
829 for (p = 0; p < enc->num_parts_; ++p) { in PostLoopFinalize()
830 VP8BitWriterFinish(enc->parts_ + p); in PostLoopFinalize()
831 ok &= !enc->parts_[p].error_; in PostLoopFinalize()
836 if (enc->pic_->stats) { // finalize byte counters... in PostLoopFinalize()
840 enc->residual_bytes_[i][s] = (int)((it->bit_count_[s][i] + 7) >> 3); in PostLoopFinalize()
847 VP8EncFreeBitWriters(enc); in PostLoopFinalize()
864 int VP8EncLoop(VP8Encoder* const enc) { in VP8EncLoop() argument
866 int ok = PreLoopInitialize(enc); in VP8EncLoop()
869 StatLoop(enc); // stats-collection loop in VP8EncLoop()
871 VP8IteratorInit(enc, &it); in VP8EncLoop()
875 const int dont_use_skip = !enc->proba_.use_skip_proba_; in VP8EncLoop()
876 const VP8RDLevel rd_opt = enc->rd_opt_level_; in VP8EncLoop()
887 if (enc->use_layer_) { in VP8EncLoop()
904 int VP8EncTokenLoop(VP8Encoder* const enc) { in VP8EncTokenLoop() argument
907 const int max_count = (enc->mb_w_ * enc->mb_h_) >> 3; in VP8EncTokenLoop()
910 VP8Proba* const proba = &enc->proba_; in VP8EncTokenLoop()
911 const VP8RDLevel rd_opt = enc->rd_opt_level_; in VP8EncTokenLoop()
913 assert(enc->num_parts_ == 1); in VP8EncTokenLoop()
914 assert(enc->use_tokens_); in VP8EncTokenLoop()
917 assert(!enc->do_search_); // TODO(skal): handle pass and dichotomy in VP8EncTokenLoop()
919 SetLoopParams(enc, enc->config_->quality); in VP8EncTokenLoop()
921 ok = PreLoopInitialize(enc); in VP8EncTokenLoop()
924 VP8IteratorInit(enc, &it); in VP8EncTokenLoop()
935 RecordTokens(&it, &info, &enc->tokens_); in VP8EncTokenLoop()
937 if (enc->use_layer_) { in VP8EncTokenLoop()
947 ok = ok && WebPReportProgress(enc->pic_, enc->percent_ + 20, &enc->percent_); in VP8EncTokenLoop()
951 ok = VP8EmitTokens(&enc->tokens_, enc->parts_ + 0, in VP8EncTokenLoop()
960 int VP8EncTokenLoop(VP8Encoder* const enc) { in VP8EncTokenLoop() argument
961 (void)enc; in VP8EncTokenLoop()