一般来说,TimedEventQueue
是一种将 anevent
推入queue
具有特定的机制timeout
。在 结束时,将调用timeout
与 相关联的函数,该函数event
将执行一些功能。来到 和 的关系,请在下面找到该关系的概述。AwesomePlayer
TimedEventQueue
在 Android 中,AwesomePlayer
是播放器引擎的核心实现,它产生video
和audio
跟踪相关路径,并有助于player
引擎的整体运行。
除此之外,它还用作轨道AwesomePlayer
的SINK ,即ie实现和显示管道 ie之间的桥梁。在进入之前,简单的操作总结如下。video
OMXCodec
video decoder
SurfaceTexture
TimedEventQueue
该player
引擎在pull
模型中工作,并通过调用AwesomePlayer
从解码器中提取视频帧。read
一旦视频帧可用,AV Synchronization
逻辑就会进入画面,决定何时render
播放该帧。一旦准备好渲染帧,就会通过调用将其传递给SurfaceTexture
模块mVideoRenderer->render
。
Coming to TimedEventQueue
,AwesomePlayer
使用这个概念来实现上述功能。当start
调用 a时postVideoEvent_l()
,调用 a。默认情况下,在 android 树中实现了一个时间延迟,之后触发此事件。当该事件被触发时,相应的函数被调用。在这种情况下,onVideoEvent
被调用,然后将继续进行阻塞read
调用。
接收到视频缓冲区后,如果视频帧比音轨时间戳早10 毫秒,则postVideoEvent_l(10000)
触发另一个,这将迫使该线程再休眠 10 毫秒,之后onVideoEvent
再次触发。
类似地,在一个视频帧rendered
之后,AwesomePlayer
将触发另一个视频帧,该帧将默认postVideoEvent_l()
休眠一段时间并返回并再次阻塞呼叫。read