, TimedEventQueue
event
는 특정 timeout
와 queue
으로 밀려있는 메커니즘이다. timeout
의 끝에서 event
과 관련된 기능은이며 일부 기능을 수행하는 입니다. AwesomePlayer
및 TimedEventQueue
의 관계로이 관계의 개요를 아래에서 찾으십시오. 안드로이드에서
, AwesomePlayer
는 video
및 audio
트랙 관련 경로의 급부상과 player
엔진의 전체 기능에 도움이되는 선수 엔진의 핵심 구현입니다. 이 외에도 AwesomePlayer
는 OMXCodec
즉 video decoder
구현 디스플레이 파이프 라인, 즉 SurfaceTexture
사이 즉 다리 video
트랙 용 SINK로서 기능한다. TimedEventQueue
에 들어가기 전에 간단한 조작 요약은 다음과 같습니다.
엔진은 pull
모델에서 작동하고 AwesomePlayer
은 read
호출을 통해 비디오 프레임을 디코더에서 가져옵니다. 비디오 프레임을 사용할 수있는 경우 AV Synchronization
로직이 나타나 프레임을 render
때 결정합니다. 프레임을 렌더링 할 준비가되면 mVideoRenderer->render
호출을 통해 SurfaceTexture
모듈로 전달됩니다.
TimedEventQueue
에 이르기까지, AwesomePlayer
은이 개념을 사용하여 전술 한 기능성을 달성한다. start
이 호출되면 postVideoEvent_l()
이 호출됩니다. 기본적으로 안드로이드 트리에는이 이벤트가 트리거 된 후 시간 지연이 구현됩니다. 이 이벤트가 트리거되면 해당 기능이 호출됩니다. 이 경우 onVideoEvent
이 호출되어 차단 read
호출이 진행됩니다. 비디오 프레임 10 밀리 초보다 잠이 스레드를 강제 (10)에 의해, MS가, 다음 다른 postVideoEvent_l(10000)
트리거되는 오디오 트랙의 타임 스탬프보다 이전 인 경우, 비디오 버퍼 후
는 수신되는 onVideoEvent
후 다시 트리거됩니다.비디오 프레임 rendered
후 마찬가지로, 다음 AwesomePlayer
시간 기본 동안 잠을 다시 블록 read
호출 올 다른 postVideoEvent_l()
을 트리거한다.
고맙습니다 ...이 주제에 대한 참조를 제안하면 매우 도움이 될 것입니다 ... 감사합니다 ... – Kiran
@KiranKumarManku 참고로, 책을 찾고 있다면 개인적으로 나는 잘 모릅니다. 이 수준에서 설명하는 책이 있다면. 차선책은 코드를 읽고 자신의 이해를 도출하거나 코드에 손가락이 깊숙한 사람으로부터 동일한 정보를 얻는 것입니다. 이것은 내가이 코드에 대한 저의 작업을 토대로하는 제 의견에 담으려고 노력한 것입니다. – Ganesh