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;
|
AVFilterContext *dstctx = link->dst;
|
||||||
AVFilterPad *dst = link->dstpad;
|
AVFilterPad *dst = link->dstpad;
|
||||||
int ret;
|
int ret;
|
||||||
AVFilterCommand *cmd= link->dst->command_queue;
|
|
||||||
int64_t pts;
|
int64_t pts;
|
||||||
|
|
||||||
if (!(filter_frame = dst->filter_frame))
|
if (!(filter_frame = dst->filter_frame))
|
||||||
@ -1112,14 +1111,7 @@ static int ff_filter_frame_framed(AVFilterLink *link, AVFrame *frame)
|
|||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
while(cmd && cmd->time <= frame->pts * av_q2d(link->time_base)){
|
ff_inlink_process_commands(link, frame);
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
pts = frame->pts;
|
pts = frame->pts;
|
||||||
if (dstctx->enable_str) {
|
if (dstctx->enable_str) {
|
||||||
@ -1568,6 +1560,21 @@ int ff_inlink_make_frame_writable(AVFilterLink *link, AVFrame **rframe)
|
|||||||
return 0;
|
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)
|
const AVClass *avfilter_get_class(void)
|
||||||
{
|
{
|
||||||
return &avfilter_class;
|
return &avfilter_class;
|
||||||
|
@ -39,6 +39,13 @@
|
|||||||
*/
|
*/
|
||||||
void ff_filter_set_ready(AVFilterContext *filter, unsigned priority);
|
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.
|
* Make sure a frame is writable.
|
||||||
* This is similar to av_frame_make_writable() except it uses the link's
|
* This is similar to av_frame_make_writable() except it uses the link's
|
||||||
|
Loading…
x
Reference in New Issue
Block a user