Home | History | Annotate | Download | only in enc

Lines Matching refs:rd

54                            const VP8ModeScore* const rd) {
70 (int)rd->D, (int)rd->SD, (int)rd->R, (int)rd->H, (int)rd->nz,
71 (int)rd->score);
73 printf("Mode: %d\n", rd->mode_i16);
75 for (i = 0; i < 16; ++i) printf("%3d ", rd->y_dc_levels[i]);
79 for (i = 0; i < 16; ++i) printf("%d ", rd->modes_i4[i]);
85 printf("%4d ", rd->y_ac_levels[j][i]);
90 printf("uv_levels (mode=%d):\n", rd->mode_uv);
93 printf("%4d ", rd->uv_levels[j][i]);
488 static void InitScore(VP8ModeScore* const rd) {
489 rd->D = 0;
490 rd->SD = 0;
491 rd->R = 0;
492 rd->H = 0;
493 rd->nz = 0;
494 rd->score = MAX_COST;
527 score_t score; // partial RD score
540 static WEBP_INLINE void SetRDScore(int lambda, VP8ModeScore* const rd) {
542 rd->score = (rd->R + rd->H) * lambda + 256 * (rd->D + rd->SD);
717 VP8ModeScore* const rd,
732 nz |= VP8EncQuantizeBlockWHT(dc_tmp, rd->y_dc_levels, &dqm->y2_) << 24;
741 TrellisQuantizeBlock(enc, tmp[n], rd->y_ac_levels[n], ctx, 0,
744 rd->y_ac_levels[n][0] = 0;
753 nz |= VP8EncQuantizeBlock(tmp[n], rd->y_ac_levels[n], &dqm->y1_) << n;
754 assert(rd->y_ac_levels[n][0] == 0);
791 static int ReconstructUV(VP8EncIterator* const it, VP8ModeScore* const rd,
811 TrellisQuantizeBlock(enc, tmp[n], rd->uv_levels[n], ctx, 2,
820 nz |= VP8EncQuantizeBlock(tmp[n], rd->uv_levels[n], &dqm->uv_) << n;
831 // RD-opt decision. Reconstruct each modes, evalue distortion and bit-cost.
832 // Pick the mode is lower RD-cost = Rate + lambda * Distortion.
868 static void PickBestIntra16(VP8EncIterator* const it, VP8ModeScore* const rd) {
877 rd->mode_i16 = -1;
885 // Measure RD-score
897 // Since we always examine Intra16 first, we can overwrite *rd directly.
899 if (mode == 0 || rd16.score < rd->score) {
900 CopyScore(rd, &rd16);
901 rd->mode_i16 = mode;
902 rd->nz = nz;
903 memcpy(rd->y_ac_levels, rd16.y_ac_levels, sizeof(rd16.y_ac_levels));
904 memcpy(rd->y_dc_levels, rd16.y_dc_levels, sizeof(rd16.y_dc_levels));
908 SetRDScore(dqm->lambda_mode_, rd); // finalize score for mode decision.
909 VP8SetIntra16Mode(it, rd->mode_i16);
914 if ((rd->nz & 0xffff) == 0 && rd->D > dqm->min_disto_) {
915 StoreMaxDelta(dqm, rd->y_dc_levels);
931 static int PickBestIntra4(VP8EncIterator* const it, VP8ModeScore* const rd) {
955 const uint16_t* const mode_costs = GetCostModeI4(it, rd->modes_i4);
969 // Compute RD-score
990 if (rd_best.score >= rd->score) {
1001 rd->modes_i4[it->i4_] = best_mode;
1006 CopyScore(rd, &rd_best);
1007 VP8SetIntra4Mode(it, rd->modes_i4);
1009 memcpy(rd->y_ac_levels, rd_best.y_ac_levels, sizeof(rd->y_ac_levels));
1015 static void PickBestUV(VP8EncIterator* const it, VP8ModeScore* const rd) {
1025 rd->mode_uv = -1;
1033 // Compute RD-score
1045 rd->mode_uv = mode;
1046 memcpy(rd->uv_levels, rd_uv.uv_levels, sizeof(rd->uv_levels));
1050 VP8SetIntraUVMode(it, rd->mode_uv);
1051 AddScore(rd, &rd_best);
1057 static void SimpleQuantize(VP8EncIterator* const it, VP8ModeScore* const rd) {
1063 nz = ReconstructIntra16(it, rd, it->yuv_out_ + Y_OFF, it->preds_[0]);
1072 nz |= ReconstructIntra4(it, rd->y_ac_levels[it->i4_],
1077 nz |= ReconstructUV(it, rd, it->yuv_out_ + U_OFF, it->mb_->uv_mode_);
1078 rd->nz = nz;
1137 int VP8Decimate(VP8EncIterator* const it, VP8ModeScore* const rd,
1142 InitScore(rd);
1151 PickBestIntra16(it, rd);
1153 PickBestIntra4(it, rd);
1155 PickBestUV(it, rd);
1158 SimpleQuantize(it, rd);
1164 SimpleQuantize(it, rd);
1166 is_skipped = (rd->nz == 0);