/*
- * Copyright (C) 2005-2006 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2005-2007 Andre Noll <maan@systemlinux.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
#include "para.h"
#include "compress_filter.cmdline.h"
#include "list.h"
+#include "sched.h"
#include "filter.h"
#include "string.h"
>> gain_shift;
if (unlikely(adjusted_sample > 32767)) {
adjusted_sample = 32767;
- pcd->current_gain = (pcd->current_gain +
- (1 << pcd->conf->inertia_arg)) / 2;
+ pcd->current_gain = (3 * pcd->current_gain +
+ (1 << pcd->conf->inertia_arg)) / 4;
pcd->peak = 0;
} else
if (adjusted_sample > pcd->peak)
>> gain_shift);
if (unlikely(adjusted_sample < -32768)) {
adjusted_sample = -32768;
- pcd->current_gain = (pcd->current_gain +
- (1 << pcd->conf->inertia_arg)) / 2;
+ pcd->current_gain = (3 * pcd->current_gain +
+ (1 << pcd->conf->inertia_arg)) / 4;
pcd->peak = 0;
} else
if (-adjusted_sample > pcd->peak)
pcd->max_gain = 1 << (pcd->conf->inertia_arg + pcd->conf->aggressiveness_arg);
}
-/** the init function of the compress filter */
+/**
+ * the init function of the compress filter
+ *
+ * \param f pointer to the struct to initialize
+ */
void compress_init(struct filter *f)
{
f->open = open_compress;