在C中的特定时间执行操作

时间:2012-04-12 15:30:17

标签: c linux

我有一个while循环,它通过检索每个帧来解码视频文件,所以像这样:

while (get_frame(codec_ctx, format_ctx, video_stream, frame) != 0) {
      ...
 }

现在,一旦检索到一个帧,就需要在未来的某个时刻将其绘制到屏幕上(根据帧的时间戳)。如何实现?是否有一些方法可以设置在特定时间执行的回调?

2 个答案:

答案 0 :(得分:1)

您可以将(帧,时间)对推送到队列,然后让一个单独的线程执行以下算法:

loop {
    time, frame = pop(queue);
    wait_until(time);
    display(frame);
}

其中pop等待项目被推入队列(如果它是空的。

答案 1 :(得分:0)

使用select(2)等待,直到您需要绘制框架(或者直到您需要执行其他操作,由传递给select()的某个FD指示的内容表示。)

相关问题