Commit 327c439f authored by Derek Buitenhuis's avatar Derek Buitenhuis

timefilter: Handle memory allocation failure

Signed-off-by: 's avatarDerek Buitenhuis <derek.buitenhuis@gmail.com>
parent e7891305
...@@ -190,6 +190,10 @@ static int start_jack(AVFormatContext *context) ...@@ -190,6 +190,10 @@ static int start_jack(AVFormatContext *context)
period = (double) self->buffer_size / self->sample_rate; period = (double) self->buffer_size / self->sample_rate;
o = 2 * M_PI * 1.5 * period; /// bandwidth: 1.5Hz o = 2 * M_PI * 1.5 * period; /// bandwidth: 1.5Hz
self->timefilter = ff_timefilter_new (1.0 / self->sample_rate, sqrt(2 * o), o * o); self->timefilter = ff_timefilter_new (1.0 / self->sample_rate, sqrt(2 * o), o * o);
if (!self->timefilter) {
jack_client_close(self->client);
return AVERROR(ENOMEM);
}
/* Create FIFO buffers */ /* Create FIFO buffers */
self->filled_pkts = av_fifo_alloc(FIFO_PACKETS_NUM * sizeof(AVPacket)); self->filled_pkts = av_fifo_alloc(FIFO_PACKETS_NUM * sizeof(AVPacket));
......
...@@ -42,6 +42,10 @@ TimeFilter *ff_timefilter_new(double clock_period, ...@@ -42,6 +42,10 @@ TimeFilter *ff_timefilter_new(double clock_period,
double feedback3_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->clock_period = clock_period;
self->feedback2_factor = feedback2_factor; self->feedback2_factor = feedback2_factor;
self->feedback3_factor = feedback3_factor; self->feedback3_factor = feedback3_factor;
...@@ -105,6 +109,10 @@ int main(void) ...@@ -105,6 +109,10 @@ int main(void)
for (par1 = bestpar1 * 0.8; par1 <= bestpar1 * 1.21; par1 += bestpar1 * 0.05) { for (par1 = bestpar1 * 0.8; par1 <= bestpar1 * 1.21; par1 += bestpar1 * 0.05) {
double error = 0; double error = 0;
TimeFilter *tf = ff_timefilter_new(1, par0, par1); 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++) { for (i = 0; i < SAMPLES; i++) {
double filtered; double filtered;
filtered = ff_timefilter_update(tf, samples[i], 1); filtered = ff_timefilter_update(tf, samples[i], 1);
......
...@@ -56,6 +56,8 @@ typedef struct TimeFilter TimeFilter; ...@@ -56,6 +56,8 @@ typedef struct TimeFilter TimeFilter;
* @param clock_period period of the hardware clock in seconds * @param clock_period period of the hardware clock in seconds
* (for example 1.0/44100) * (for example 1.0/44100)
* *
* @return a pointer to a TimeFilter struct, or NULL on error
*
* For more details about these parameters and background concepts please see: * For more details about these parameters and background concepts please see:
* http://www.kokkinizita.net/papers/usingdll.pdf * http://www.kokkinizita.net/papers/usingdll.pdf
*/ */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment