Home | History | Annotate | Download | only in server

Lines Matching defs:re

35 void rate_estimator_destroy(struct rate_estimator *re)
37 if (re)
38 free(re);
45 struct rate_estimator *re;
47 re = (struct rate_estimator *)calloc(1, sizeof(*re));
48 if (re == NULL)
51 re->window_size = *window_size;
52 re->estimated_rate = rate;
53 re->smooth_factor = smooth_factor;
55 return re;
58 void rate_estimator_add_frames(struct rate_estimator *re, int fr)
60 re->level_diff += fr;
63 double rate_estimator_get_rate(struct rate_estimator *re)
65 return re->estimated_rate;
68 void rate_estimator_reset_rate(struct rate_estimator *re, unsigned int rate)
70 re->estimated_rate = rate;
71 least_square_reset(&re->lsq);
72 re->window_start_ts.tv_sec = 0;
73 re->window_start_ts.tv_nsec = 0;
74 re->window_frames = 0;
75 re->level_diff = 0;
76 re->last_level = 0;
79 int rate_estimator_check(struct rate_estimator *re, int level,
85 if ((re->window_start_ts.tv_sec == 0) || (level == 0)) {
86 re->window_start_ts = *now;
87 re->window_frames = 0;
88 re->level_diff = 0;
89 re->last_level = level;
93 subtract_timespecs(now, &re->window_start_ts, &td);
94 re->window_frames += abs(re->last_level - level + re->level_diff);
95 re->level_diff = 0;
96 re->last_level = level;
98 least_square_add_sample(&re->lsq,
100 re->window_frames);
101 if (timespec_after(&td, &re->window_size) &&
102 re->lsq.num_samples > 1) {
103 double rate = least_square_best_fit_slope(&re->lsq);
104 if (fabs(re->estimated_rate - rate) < MAX_RATE_SKEW)
105 re->estimated_rate = rate * (1 - re->smooth_factor) +
106 re->smooth_factor * re->estimated_rate;
107 least_square_reset(&re->lsq);
108 re->window_start_ts = *now;
109 re->window_frames = 0;