]> git.sesse.net Git - ffmpeg/blobdiff - libavfilter/af_aresample.c
Merge remote-tracking branch 'tjoppen/fuzz_fixes'
[ffmpeg] / libavfilter / af_aresample.c
index 9af50cf208131c4cc19250715b0656285ed1732a..cd9d80e54190a5c7078c57ca989a876c51f2ee7d 100644 (file)
@@ -83,6 +83,7 @@ static int config_output(AVFilterLink *outlink)
         aresample->out_rate = outlink->sample_rate;
     else
         outlink->sample_rate = aresample->out_rate;
+    outlink->time_base = (AVRational) {1, aresample->out_rate};
 
     //TODO: make the resampling parameters configurable
     aresample->resample = av_resample_init(aresample->out_rate, inlink->sample_rate,
@@ -270,13 +271,14 @@ static void filter_samples(AVFilterLink *inlink, AVFilterBufferRef *insamplesref
 
         aresample->outsamplesref =
             avfilter_get_audio_buffer(outlink, AV_PERM_WRITE, requested_out_nb_samples);
-        avfilter_copy_buffer_ref_props(aresample->outsamplesref, insamplesref);
-        aresample->outsamplesref->pts =
-            insamplesref->pts / inlink->sample_rate * outlink->sample_rate;
-        aresample->outsamplesref->audio->sample_rate = outlink->sample_rate;
         outlink->out_buf = aresample->outsamplesref;
     }
 
+    avfilter_copy_buffer_ref_props(aresample->outsamplesref, insamplesref);
+    aresample->outsamplesref->audio->sample_rate = outlink->sample_rate;
+    aresample->outsamplesref->pts =
+        av_rescale(outlink->sample_rate, insamplesref->pts, inlink->sample_rate);
+
     /* av_resample() works with planar audio buffers */
     if (!inlink->planar && nb_channels > 1) {
         int16_t *out[8];
@@ -334,12 +336,12 @@ AVFilter avfilter_af_aresample = {
     .query_formats = query_formats,
     .priv_size     = sizeof(AResampleContext),
 
-    .inputs    = (AVFilterPad[]) {{ .name            = "default",
+    .inputs    = (const AVFilterPad[]) {{ .name      = "default",
                                     .type            = AVMEDIA_TYPE_AUDIO,
                                     .filter_samples  = filter_samples,
                                     .min_perms       = AV_PERM_READ, },
                                   { .name = NULL}},
-    .outputs   = (AVFilterPad[]) {{ .name            = "default",
+    .outputs   = (const AVFilterPad[]) {{ .name      = "default",
                                     .config_props    = config_output,
                                     .type            = AVMEDIA_TYPE_AUDIO, },
                                   { .name = NULL}},