2013-03-27 7 views
0

Android에서 동영상을 재생하는 동안 교환되는 메시지의 흐름을 분석하려고합니다. 그렇게하면서이 이미지를 보았습니다. Android Media Player의 이벤트는 무엇을 의미합니까?

http://img521.imageshack.us/img521/3585/capturehb.png

은 그 때 나는 AwesomePlayer 및 TimedEventQueue의 소스 파일을 통해 갔다. 나는 그 파일에서 이벤트가 의미하는 것을 얻을 수 없다. 이에 대한 도움을 주시면 감사하겠습니다.
감사합니다.

TimedEventQueue 소스 파일 링크는 아래에 첨부되어 있습니다. 일반적

https://github.com/cozybit/aosp-frameworks-base/blob/master/media/libstagefright/TimedEventQueue.cpp

답변

2

, TimedEventQueueevent는 특정 timeoutqueue으로 밀려있는 메커니즘이다. timeout의 끝에서 event과 관련된 기능은이며 일부 기능을 수행하는 입니다. AwesomePlayerTimedEventQueue의 관계로이 관계의 개요를 아래에서 찾으십시오. 안드로이드에서

, AwesomePlayervideoaudio 트랙 관련 경로의 급부상과 player 엔진의 전체 기능에 도움이되는 선수 ​​엔진의 핵심 구현입니다.

이 외에도 AwesomePlayerOMXCodecvideo decoder 구현 디스플레이 파이프 라인, 즉 SurfaceTexture 사이 즉 다리 video 트랙 용 SINK로서 기능한다. TimedEventQueue에 들어가기 전에 간단한 조작 요약은 다음과 같습니다.

엔진은 pull 모델에서 작동하고 AwesomePlayerread 호출을 통해 비디오 프레임을 디코더에서 가져옵니다. 비디오 프레임을 사용할 수있는 경우 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()을 트리거한다.

+0

고맙습니다 ...이 주제에 대한 참조를 제안하면 매우 도움이 될 것입니다 ... 감사합니다 ... – Kiran

+0

@KiranKumarManku 참고로, 책을 찾고 있다면 개인적으로 나는 잘 모릅니다. 이 수준에서 설명하는 책이 있다면. 차선책은 코드를 읽고 자신의 이해를 도출하거나 코드에 손가락이 깊숙한 사람으로부터 동일한 정보를 얻는 것입니다. 이것은 내가이 코드에 대한 저의 작업을 토대로하는 제 의견에 담으려고 노력한 것입니다. – Ganesh

관련 문제