一般来说,TimedEventQueue是一种将 anevent推入queue具有特定的机制timeout。在 结束时,将调用timeout与 相关联的函数,该函数event将执行一些功能。来到 和 的关系,请在下面找到该关系的概述。AwesomePlayerTimedEventQueue
在 Android 中,AwesomePlayer是播放器引擎的核心实现,它产生video和audio跟踪相关路径,并有助于player引擎的整体运行。
除此之外,它还用作轨道AwesomePlayer的SINK ,即ie实现和显示管道 ie之间的桥梁。在进入之前,简单的操作总结如下。videoOMXCodecvideo decoderSurfaceTextureTimedEventQueue
该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