mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-28 20:53:54 +02:00
lavfi: move AVFilterLink.current_pts(_us) to FilterLink
This commit is contained in:
parent
7f17e0e6dd
commit
d6318a244d
@ -228,8 +228,8 @@ static void update_link_current_pts(FilterLinkInternal *li, int64_t pts)
|
||||
|
||||
if (pts == AV_NOPTS_VALUE)
|
||||
return;
|
||||
link->current_pts = pts;
|
||||
link->current_pts_us = av_rescale_q(pts, link->time_base, AV_TIME_BASE_Q);
|
||||
li->l.current_pts = pts;
|
||||
li->l.current_pts_us = av_rescale_q(pts, link->time_base, AV_TIME_BASE_Q);
|
||||
/* TODO use duration */
|
||||
if (link->graph && li->age_index >= 0)
|
||||
ff_avfilter_graph_update_heap(link->graph, li);
|
||||
@ -349,8 +349,8 @@ int ff_filter_config_links(AVFilterContext *filter)
|
||||
}
|
||||
|
||||
inlink = link->src->nb_inputs ? link->src->inputs[0] : NULL;
|
||||
link->current_pts =
|
||||
link->current_pts_us = AV_NOPTS_VALUE;
|
||||
li->l.current_pts =
|
||||
li->l.current_pts_us = AV_NOPTS_VALUE;
|
||||
|
||||
switch (li->init_state) {
|
||||
case AVLINK_INIT:
|
||||
@ -503,7 +503,7 @@ static int64_t guess_status_pts(AVFilterContext *ctx, int status, AVRational lin
|
||||
for (i = 0; i < ctx->nb_inputs; i++) {
|
||||
FilterLinkInternal * const li = ff_link_internal(ctx->inputs[i]);
|
||||
if (li->status_out == status)
|
||||
r = FFMIN(r, av_rescale_q(ctx->inputs[i]->current_pts, ctx->inputs[i]->time_base, link_time_base));
|
||||
r = FFMIN(r, av_rescale_q(li->l.current_pts, ctx->inputs[i]->time_base, link_time_base));
|
||||
}
|
||||
if (r < INT64_MAX)
|
||||
return r;
|
||||
@ -1396,7 +1396,7 @@ int ff_filter_activate(AVFilterContext *filter)
|
||||
int ff_inlink_acknowledge_status(AVFilterLink *link, int *rstatus, int64_t *rpts)
|
||||
{
|
||||
FilterLinkInternal * const li = ff_link_internal(link);
|
||||
*rpts = link->current_pts;
|
||||
*rpts = li->l.current_pts;
|
||||
if (ff_framequeue_queued_frames(&li->fifo))
|
||||
return *rstatus = 0;
|
||||
if (li->status_out)
|
||||
@ -1405,7 +1405,7 @@ int ff_inlink_acknowledge_status(AVFilterLink *link, int *rstatus, int64_t *rpts
|
||||
return *rstatus = 0;
|
||||
*rstatus = li->status_out = li->status_in;
|
||||
update_link_current_pts(li, li->status_in_pts);
|
||||
*rpts = link->current_pts;
|
||||
*rpts = li->l.current_pts;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -600,18 +600,6 @@ struct AVFilterLink {
|
||||
*/
|
||||
struct AVFilterGraph *graph;
|
||||
|
||||
/**
|
||||
* Current timestamp of the link, as defined by the most recent
|
||||
* frame(s), in link time_base units.
|
||||
*/
|
||||
int64_t current_pts;
|
||||
|
||||
/**
|
||||
* Current timestamp of the link, as defined by the most recent
|
||||
* frame(s), in AV_TIME_BASE units.
|
||||
*/
|
||||
int64_t current_pts_us;
|
||||
|
||||
/**
|
||||
* Frame rate of the stream on the link, or 1/0 if unknown or variable;
|
||||
* if left to 0/0, will be automatically copied from the first input
|
||||
|
@ -1326,7 +1326,7 @@ static void heap_bubble_up(FFFilterGraph *graph,
|
||||
|
||||
while (index) {
|
||||
int parent = (index - 1) >> 1;
|
||||
if (links[parent]->l.pub.current_pts_us >= li->l.pub.current_pts_us)
|
||||
if (links[parent]->l.current_pts_us >= li->l.current_pts_us)
|
||||
break;
|
||||
links[index] = links[parent];
|
||||
links[index]->age_index = index;
|
||||
@ -1348,9 +1348,9 @@ static void heap_bubble_down(FFFilterGraph *graph,
|
||||
if (child >= graph->sink_links_count)
|
||||
break;
|
||||
if (child + 1 < graph->sink_links_count &&
|
||||
links[child + 1]->l.pub.current_pts_us < links[child]->l.pub.current_pts_us)
|
||||
links[child + 1]->l.current_pts_us < links[child]->l.current_pts_us)
|
||||
child++;
|
||||
if (li->l.pub.current_pts_us < links[child]->l.pub.current_pts_us)
|
||||
if (li->l.current_pts_us < links[child]->l.current_pts_us)
|
||||
break;
|
||||
links[index] = links[child];
|
||||
links[index]->age_index = index;
|
||||
|
@ -258,8 +258,9 @@ static int draw_items(AVFilterContext *ctx,
|
||||
size_t frames)
|
||||
{
|
||||
GraphMonitorContext *s = ctx->priv;
|
||||
FilterLink *fl = ff_filter_link(l);
|
||||
int64_t previous_pts_us = s->cache[s->cache_index].previous_pts_us;
|
||||
int64_t current_pts_us = l->current_pts_us;
|
||||
int64_t current_pts_us = fl->current_pts_us;
|
||||
const int flags = s->flags;
|
||||
const int mode = s->mode;
|
||||
char buffer[1024] = { 0 };
|
||||
@ -368,7 +369,7 @@ static int draw_items(AVFilterContext *ctx,
|
||||
xpos += len * 8;
|
||||
}
|
||||
|
||||
s->cache[s->cache_index].previous_pts_us = l->current_pts_us;
|
||||
s->cache[s->cache_index].previous_pts_us = current_pts_us;
|
||||
|
||||
if (s->cache_index + 1 >= s->cache_size / sizeof(*(s->cache))) {
|
||||
void *ptr = av_fast_realloc(s->cache, &s->cache_size, s->cache_size * 2);
|
||||
|
@ -42,6 +42,18 @@
|
||||
typedef struct FilterLink {
|
||||
AVFilterLink pub;
|
||||
|
||||
/**
|
||||
* Current timestamp of the link, as defined by the most recent
|
||||
* frame(s), in link time_base units.
|
||||
*/
|
||||
int64_t current_pts;
|
||||
|
||||
/**
|
||||
* Current timestamp of the link, as defined by the most recent
|
||||
* frame(s), in AV_TIME_BASE units.
|
||||
*/
|
||||
int64_t current_pts_us;
|
||||
|
||||
/**
|
||||
* Minimum number of samples to filter at once.
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user