Browse code

avfilter/af_headphone: add missing error check

Signed-off-by: Paul B Mahol <onemda@gmail.com>

Paul B Mahol authored on 2017/11/20 21:37:24
Showing 1 changed files
... ...
@@ -324,16 +324,19 @@ static int read_ir(AVFilterLink *inlink, AVFrame *frame)
324 324
 {
325 325
     AVFilterContext *ctx = inlink->dst;
326 326
     HeadphoneContext *s = ctx->priv;
327
-    int ir_len, max_ir_len, input_number;
327
+    int ir_len, max_ir_len, input_number, ret;
328 328
 
329 329
     for (input_number = 0; input_number < s->nb_inputs; input_number++)
330 330
         if (inlink == ctx->inputs[input_number])
331 331
             break;
332 332
 
333
-    av_audio_fifo_write(s->in[input_number].fifo, (void **)frame->extended_data,
334
-                        frame->nb_samples);
333
+    ret = av_audio_fifo_write(s->in[input_number].fifo, (void **)frame->extended_data,
334
+                             frame->nb_samples);
335 335
     av_frame_free(&frame);
336 336
 
337
+    if (ret < 0)
338
+        return ret;
339
+
337 340
     ir_len = av_audio_fifo_size(s->in[input_number].fifo);
338 341
     max_ir_len = 65536;
339 342
     if (ir_len > max_ir_len) {
... ...
@@ -572,13 +575,16 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in)
572 572
     AVFilterLink *outlink = ctx->outputs[0];
573 573
     int ret = 0;
574 574
 
575
-    av_audio_fifo_write(s->in[0].fifo, (void **)in->extended_data,
576
-                        in->nb_samples);
575
+    ret = av_audio_fifo_write(s->in[0].fifo, (void **)in->extended_data,
576
+                             in->nb_samples);
577 577
     if (s->pts == AV_NOPTS_VALUE)
578 578
         s->pts = in->pts;
579 579
 
580 580
     av_frame_free(&in);
581 581
 
582
+    if (ret < 0)
583
+        return ret;
584
+
582 585
     if (!s->have_hrirs && s->eof_hrirs) {
583 586
         ret = convert_coeffs(ctx, inlink);
584 587
         if (ret < 0)
... ...
@@ -589,10 +595,11 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in)
589 589
         while (av_audio_fifo_size(s->in[0].fifo) >= s->size) {
590 590
             ret = headphone_frame(s, outlink);
591 591
             if (ret < 0)
592
-                break;
592
+                return ret;
593 593
         }
594 594
     }
595
-    return ret;
595
+
596
+    return 0;
596 597
 }
597 598
 
598 599
 static int query_formats(AVFilterContext *ctx)