在C中的特定时间执行操作
我有一个while循环,它通过检索每一帧来解码视频文件,所以类似这样:在C中的特定时间执行操作,c,linux,C,Linux,我有一个while循环,它通过检索每一帧来解码视频文件,所以类似这样: while (get_frame(codec_ctx, format_ctx, video_stream, frame) != 0) { ... } 现在,一旦检索到一个帧,它需要在将来的某个时间点(根据帧的时间戳)绘制到屏幕上。如何实现这一点?有什么方法可以设置在特定时间执行回调吗?使用select(2)等待,直到您需要绘制帧(或者直到您需要执行其他操作,由传递给select()的一个FD所指示)。您可以将
while (get_frame(codec_ctx, format_ctx, video_stream, frame) != 0) {
...
}
现在,一旦检索到一个帧,它需要在将来的某个时间点(根据帧的时间戳)绘制到屏幕上。如何实现这一点?有什么方法可以设置在特定时间执行回调吗?使用select(2)
等待,直到您需要绘制帧(或者直到您需要执行其他操作,由传递给select()
的一个FD所指示)。您可以将(帧、时间)对推送到队列上,然后让一个单独的线程执行以下算法:
loop {
time, frame = pop(queue);
wait_until(time);
display(frame);
}
其中,
pop
等待一个项目被推到队列上,如果它是空的。我建议使用poll
,我觉得这比select
更现代