summaryrefslogtreecommitdiff
path: root/libavfilter/vf_fade.c
diff options
context:
space:
mode:
authorNicolas George <george@nsup.org>2016-08-30 15:28:41 +0200
committerNicolas George <george@nsup.org>2016-11-13 10:41:16 +0100
commit183ce55b0de0a597b838d08bbac67f54c27ed42f (patch)
treeffd40aaf4f522d18b6b87b35e1b49f276cff913d /libavfilter/vf_fade.c
parent22aa649c13b452f11353958a51f073f5fbc3bcaa (diff)
lavfi: split frame_count between input and output.
AVFilterLink.frame_count is supposed to count the number of frames that were passed on the link, but with min_samples, that number is not always the same for the source and destination filters. With the addition of a FIFO on the link, the difference will become more significant. Split the variable in two: frame_count_in counts the number of frames that entered the link, frame_count_out counts the number of frames that were sent to the destination filter.
Diffstat (limited to 'libavfilter/vf_fade.c')
-rw-r--r--libavfilter/vf_fade.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/libavfilter/vf_fade.c b/libavfilter/vf_fade.c
index 0496645c97..c30c41db0d 100644
--- a/libavfilter/vf_fade.c
+++ b/libavfilter/vf_fade.c
@@ -300,7 +300,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame)
if (s->fade_state == VF_FADE_WAITING) {
s->factor=0;
if (frame_timestamp >= s->start_time/(double)AV_TIME_BASE
- && inlink->frame_count >= s->start_frame) {
+ && inlink->frame_count_out >= s->start_frame) {
// Time to start fading
s->fade_state = VF_FADE_FADING;
@@ -311,15 +311,15 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame)
// Save start frame in case we are starting based on time and fading based on frames
if (s->start_time != 0 && s->start_frame == 0) {
- s->start_frame = inlink->frame_count;
+ s->start_frame = inlink->frame_count_out;
}
}
}
if (s->fade_state == VF_FADE_FADING) {
if (s->duration == 0) {
// Fading based on frame count
- s->factor = (inlink->frame_count - s->start_frame) * s->fade_per_frame;
- if (inlink->frame_count > s->start_frame + s->nb_frames) {
+ s->factor = (inlink->frame_count_out - s->start_frame) * s->fade_per_frame;
+ if (inlink->frame_count_out > s->start_frame + s->nb_frames) {
s->fade_state = VF_FADE_DONE;
}