一般來說,TimedEventQueue
是通過該event
與特定timeout
被推入queue
的機構。在timeout
的末尾,與event
相關聯的功能是被調用,其將執行一些功能。關於AwesomePlayer
和TimedEventQueue
的關係,請在下面找到這種關係的概述。
在Android中,AwesomePlayer
的核心是實現其滋生的video
和audio
音軌相關路徑,並在player
發動機的整體運作,幫助玩家引擎。
除此之外,AwesomePlayer
用作SINK爲video
軌道即橋OMXCodec
即video decoder
執行和顯示流水線即SurfaceTexture
之間。在進入TimedEventQueue
之前,操作的簡要概述如下。
player
引擎工作在pull
模型和AwesomePlayer
從解碼器通過read
呼叫拉動視頻幀。一旦有一個視頻幀可用,AV Synchronization
邏輯進入圖片,這將決定什麼時候render
幀。一旦框架準備好呈現,它將通過mVideoRenderer->render
調用傳遞給SurfaceTexture
模塊。
來到TimedEventQueue
,AwesomePlayer
使用這個概念來實現上述功能。當調用start
時,調用postVideoEvent_l()
。默認情況下,在觸發此事件之後,android樹中會實現一段時間延遲。當這個事件被觸發時,調用相應的函數。在這種情況下,onVideoEvent
被調用,然後進行阻塞read
調用。
視頻緩衝後收到,如果視頻幀比音軌時間戳 10毫秒,然後又postVideoEvent_l(10000)
被觸發,這將迫使該線程睡眠10 ms的時間較早,在這之後onVideoEvent
再次觸發。
類似地,後一視頻幀是rendered
,然後AwesomePlayer
將觸發另一postVideoEvent_l()
這將睡默認一段時間,再回來與塊中read
呼叫。
非常感謝您......如果您爲此主題提供任何參考建議,這將非常有幫助......謝謝...... – Kiran 2013-03-28 19:19:58
@KiranKumarManku通過參考,如果您正在尋找一本書,我個人不知道如果有一本書在這個層面解釋。接下來最好的辦法是閱讀代碼,並繪製自己的理解,或從深入代碼的人那裏獲取相同的信息。這是我在我的評論中試圖捕獲的內容,這是基於我關於此代碼的工作。 – Ganesh 2013-03-28 23:23:08