|
|
@@ -54,7 +54,6 @@ typedef struct { |
|
|
|
int type; |
|
|
|
int factor, fade_per_frame; |
|
|
|
int start_frame, nb_frames; |
|
|
|
unsigned int frame_index; |
|
|
|
int hsub, vsub, bpp; |
|
|
|
unsigned int black_level, black_level_scaled; |
|
|
|
uint8_t is_packed_rgb; |
|
|
@@ -278,7 +277,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)) |
|
|
|
&& (s->frame_index >= s->start_frame)) { |
|
|
|
&& (inlink->frame_count >= s->start_frame)) { |
|
|
|
// Time to start fading |
|
|
|
s->fade_state = VF_FADE_FADING; |
|
|
|
|
|
|
@@ -289,15 +288,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 = s->frame_index; |
|
|
|
s->start_frame = inlink->frame_count; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
if (s->fade_state == VF_FADE_FADING) { |
|
|
|
if (s->duration == 0) { |
|
|
|
// Fading based on frame count |
|
|
|
s->factor = (s->frame_index - s->start_frame) * s->fade_per_frame; |
|
|
|
if (s->frame_index > (s->start_frame + s->nb_frames)) { |
|
|
|
s->factor = (inlink->frame_count - s->start_frame) * s->fade_per_frame; |
|
|
|
if (inlink->frame_count > (s->start_frame + s->nb_frames)) { |
|
|
|
s->fade_state = VF_FADE_DONE; |
|
|
|
} |
|
|
|
|
|
|
@@ -342,8 +341,6 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
s->frame_index++; |
|
|
|
|
|
|
|
return ff_filter_frame(inlink->dst->outputs[0], frame); |
|
|
|
} |
|
|
|
|
|
|
|