mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-11-26 19:01:44 +02:00
lavfi: add ff_inlink_process_commands().
This commit is contained in:
parent
846f142134
commit
0e3d2496e2
@ -1100,7 +1100,6 @@ static int ff_filter_frame_framed(AVFilterLink *link, AVFrame *frame)
|
||||
AVFilterContext *dstctx = link->dst;
|
||||
AVFilterPad *dst = link->dstpad;
|
||||
int ret;
|
||||
AVFilterCommand *cmd= link->dst->command_queue;
|
||||
int64_t pts;
|
||||
|
||||
if (!(filter_frame = dst->filter_frame))
|
||||
@ -1112,14 +1111,7 @@ static int ff_filter_frame_framed(AVFilterLink *link, AVFrame *frame)
|
||||
goto fail;
|
||||
}
|
||||
|
||||
while(cmd && cmd->time <= frame->pts * av_q2d(link->time_base)){
|
||||
av_log(link->dst, AV_LOG_DEBUG,
|
||||
"Processing command time:%f command:%s arg:%s\n",
|
||||
cmd->time, cmd->command, cmd->arg);
|
||||
avfilter_process_command(link->dst, cmd->command, cmd->arg, 0, 0, cmd->flags);
|
||||
ff_command_queue_pop(link->dst);
|
||||
cmd= link->dst->command_queue;
|
||||
}
|
||||
ff_inlink_process_commands(link, frame);
|
||||
|
||||
pts = frame->pts;
|
||||
if (dstctx->enable_str) {
|
||||
@ -1568,6 +1560,21 @@ int ff_inlink_make_frame_writable(AVFilterLink *link, AVFrame **rframe)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int ff_inlink_process_commands(AVFilterLink *link, const AVFrame *frame)
|
||||
{
|
||||
AVFilterCommand *cmd = link->dst->command_queue;
|
||||
|
||||
while(cmd && cmd->time <= frame->pts * av_q2d(link->time_base)){
|
||||
av_log(link->dst, AV_LOG_DEBUG,
|
||||
"Processing command time:%f command:%s arg:%s\n",
|
||||
cmd->time, cmd->command, cmd->arg);
|
||||
avfilter_process_command(link->dst, cmd->command, cmd->arg, 0, 0, cmd->flags);
|
||||
ff_command_queue_pop(link->dst);
|
||||
cmd= link->dst->command_queue;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
const AVClass *avfilter_get_class(void)
|
||||
{
|
||||
return &avfilter_class;
|
||||
|
@ -39,6 +39,13 @@
|
||||
*/
|
||||
void ff_filter_set_ready(AVFilterContext *filter, unsigned priority);
|
||||
|
||||
/**
|
||||
* Process the commands queued in the link up to the time of the frame.
|
||||
* Commands will trigger the process_command() callback.
|
||||
* @return >= 0 or AVERROR code.
|
||||
*/
|
||||
int ff_inlink_process_commands(AVFilterLink *link, const AVFrame *frame);
|
||||
|
||||
/**
|
||||
* Make sure a frame is writable.
|
||||
* This is similar to av_frame_make_writable() except it uses the link's
|
||||
|
Loading…
Reference in New Issue
Block a user