History

avfilter/f_ebur128: set output frame duration

Also produce output video timestamps that are consistent with 10 frames per second.

Paul B Mahol committed 3 years ago

Commit 81f658b1 parent 447bddd1 file · +5 −5Browse files

Unified · Split

libavfilter/f_ebur128.c+5−5
@@ -295,7 +295,6 @@ static int config_video_output(AVFilterLink *outlink) · 294 unmodified lines
295295 int i, x, y;
296296 uint8_t *p;
297297 AVFilterContext *ctx = outlink->src;
298− AVFilterLink *inlink = ctx->inputs[0];
299298 EBUR128Context *ebur128 = ctx->priv;
300299 AVFrame *outpicref;
301300
@@ -308,8 +307,8 @@ static int config_video_output(AVFilterLink *outlink) · 6 unmodified lines
308307 outlink->w = ebur128->w;
309308 outlink->h = ebur128->h;
310309 outlink->sample_aspect_ratio = (AVRational){1,1};
311− outlink->time_base = inlink->time_base;
312310 outlink->frame_rate = av_make_q(10, 1);
311+ outlink->time_base = av_inv_q(outlink->frame_rate);
313312
314313 #define PAD 8
315314
@@ -430,7 +429,7 @@ static int config_audio_input(AVFilterLink *inlink) · 114 unmodified lines
430429 * can be more complex to integrate in the one-sample loop of
431430 * filter_frame()). */
432431 if (ebur128->metadata || (ebur128->peak_mode & PEAK_MODE_TRUE_PEAKS))
433− ebur128->nb_samples = inlink->sample_rate / 10;
432+ ebur128->nb_samples = FFMAX(inlink->sample_rate / 10, 1);
434433 return 0;
435434 }
436435
@@ -735,7 +734,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *insamples) · 298 unmodified lines
735734 AVFilterLink *outlink = ctx->outputs[0];
736735 const int64_t pts = insamples->pts +
737736 av_rescale_q(idx_insample, (AVRational){ 1, inlink->sample_rate },
738− outlink->time_base);
737+ ctx->outputs[ebur128->do_video]->time_base);
739738
740739 ebur128->sample_count = 0;
741740
@@ -887,7 +886,8 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *insamples) · 145 unmodified lines
887886 }
888887
889888 /* set pts and push frame */
890− pic->pts = pts;
889+ pic->pts = av_rescale_q(pts, inlink->time_base, outlink->time_base);
890+ pic->duration = 1;
891891 clone = av_frame_clone(pic);
892892 if (!clone)
893893 return AVERROR(ENOMEM);

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t