#include "libavutil/common.h"
#include "libavutil/mem.h"
-#include "config.h"
+
#include "timefilter.h"
struct TimeFilter {
- /// Delay Locked Loop data. These variables refer to mathematical
- /// concepts described in: http://www.kokkinizita.net/papers/usingdll.pdf
+ // Delay Locked Loop data. These variables refer to mathematical
+ // concepts described in: http://www.kokkinizita.net/papers/usingdll.pdf
double cycle_time;
double feedback2_factor;
double feedback3_factor;
double feedback2_factor,
double feedback3_factor)
{
- TimeFilter *self = av_mallocz(sizeof(TimeFilter));
+ TimeFilter *self = av_mallocz(sizeof(TimeFilter));
+
+ if (!self)
+ return NULL;
+
self->clock_period = clock_period;
self->feedback2_factor = feedback2_factor;
self->feedback3_factor = feedback3_factor;
{
self->count++;
if (self->count == 1) {
- /// init loop
self->cycle_time = system_time;
} else {
double loop_error;
self->cycle_time += self->clock_period * period;
- /// calculate loop error
loop_error = system_time - self->cycle_time;
- /// update loop
self->cycle_time += FFMAX(self->feedback2_factor, 1.0 / self->count) * loop_error;
self->clock_period += self->feedback3_factor * loop_error / period;
}
#include "libavutil/lfg.h"
#define LFG_MAX ((1LL << 32) - 1)
-#undef printf
-
int main(void)
{
AVLFG prng;
#define SAMPLES 1000
double ideal[SAMPLES];
double samples[SAMPLES];
-#if 1
for (n0 = 0; n0 < 40; n0 = 2 * n0 + 1) {
for (n1 = 0; n1 < 10; n1 = 2 * n1 + 1) {
-#else
- {
- {
- n0 = 7;
- n1 = 1;
-#endif
double best_error = 1000000000;
double bestpar0 = 1;
double bestpar1 = 0.001;
for (par1 = bestpar1 * 0.8; par1 <= bestpar1 * 1.21; par1 += bestpar1 * 0.05) {
double error = 0;
TimeFilter *tf = ff_timefilter_new(1, par0, par1);
+ if (!tf) {
+ printf("Could not allocate memory for timefilter.\n");
+ exit(1);
+ }
for (i = 0; i < SAMPLES; i++) {
double filtered;
filtered = ff_timefilter_update(tf, samples[i], 1);