[FFmpeg-devel] [PATCH v2 1/4] timefilter: Handle memory allocation failure
Stefano Sabatini
stefasab at gmail.com
Fri Oct 25 19:15:18 CEST 2013
On date Friday 2013-10-25 14:56:20 +0100, Derek Buitenhuis encoded:
> Signed-off-by: Derek Buitenhuis <derek.buitenhuis at gmail.com>
> ---
> libavdevice/jack_audio.c | 4 ++++
> libavdevice/timefilter.c | 8 ++++++++
> libavdevice/timefilter.h | 2 ++
> libavdevice/v4l2.c | 2 ++
> 4 files changed, 16 insertions(+)
>
> diff --git a/libavdevice/jack_audio.c b/libavdevice/jack_audio.c
> index bd6a770..5ba6731 100644
> --- a/libavdevice/jack_audio.c
> +++ b/libavdevice/jack_audio.c
> @@ -188,6 +188,10 @@ static int start_jack(AVFormatContext *context)
>
> /* Create time filter */
> self->timefilter = ff_timefilter_new (1.0 / self->sample_rate, self->buffer_size, 1.5);
> + if (!self->timefilter) {
> + jack_client_close(self->client);
> + return AVERROR(ENOMEM);
> + }
>
> /* Create FIFO buffers */
> self->filled_pkts = av_fifo_alloc(FIFO_PACKETS_NUM * sizeof(AVPacket));
> diff --git a/libavdevice/timefilter.c b/libavdevice/timefilter.c
> index 424e492..b4133e0 100644
> --- a/libavdevice/timefilter.c
> +++ b/libavdevice/timefilter.c
> @@ -49,6 +49,10 @@ TimeFilter *ff_timefilter_new(double time_base,
> {
> TimeFilter *self = av_mallocz(sizeof(TimeFilter));
> double o = 2 * M_PI * bandwidth * period * time_base;
> +
> + if (!self)
> + return NULL;
> +
> self->clock_period = time_base;
> self->feedback2_factor = qexpneg(M_SQRT2 * o);
> self->feedback3_factor = qexpneg(o * o) / period;
> @@ -121,6 +125,10 @@ int main(void)
> 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 alocate memory for timefilter.\n");
> + exit(1);
> + }
> for (i = 0; i < SAMPLES; i++) {
> double filtered;
> filtered = ff_timefilter_update(tf, samples[i], i ? (samplet[i] - samplet[i-1]) : 1);
> diff --git a/libavdevice/timefilter.h b/libavdevice/timefilter.h
> index 6662959..a59c302 100644
> --- a/libavdevice/timefilter.h
> +++ b/libavdevice/timefilter.h
> @@ -58,6 +58,8 @@ typedef struct TimeFilter TimeFilter;
> * @param period expected update interval, in input units
> * @param brandwidth filtering bandwidth, in Hz
> *
> + * @return a pointer to a TimeFilter struct, or NULL on error.
> + *
nit: drop final dot
> * For more details about these parameters and background concepts please see:
> * http://www.kokkinizita.net/papers/usingdll.pdf
> */
> diff --git a/libavdevice/v4l2.c b/libavdevice/v4l2.c
> index 1b2ede4..cb962b7 100644
> --- a/libavdevice/v4l2.c
> +++ b/libavdevice/v4l2.c
> @@ -455,6 +455,8 @@ static int init_convert_timestamp(AVFormatContext *ctx, int64_t ts)
> av_log(ctx, AV_LOG_INFO, "Detected monotonic timestamps, converting\n");
> /* microseconds instead of seconds, MHz instead of Hz */
> s->timefilter = ff_timefilter_new(1, period, 1.0E-6);
> + if (!s->timefilter)
> + return AVERROR(ENOMEM);
> s->ts_mode = V4L_TS_CONVERT_READY;
> return 0;
> }
LGTM.
--
FFmpeg = Frenzy and Freak Minimal Pacific Everlasting Gem
More information about the ffmpeg-devel
mailing list