读书人

Android多媒体开发【七】- AwesomePla

发布时间: 2012-11-07 09:56:10 作者: rapoo

Android多媒体开发【7】-- AwesomePlayer中TimedEventQueue-event事件调度器

上文已经大概介绍了播放器的几大主要部分,但是有了这些功能组件也不能叫做播放器。需要某种方式将这些单独的功能组件驱动起来,形成一个整体的功能。

视频处理过程中有很多都是十分耗时的,如果都放在一个大的线程空间中。用户体验的效果可想而知。所以通常都是做异步操作。

AwesomePlayer是通过event事件调度来实现这些功能之间的驱动和调用的。

AwesomePlayer中的内部变量


1.先来看TimedEventQueue的内部结构,TimedEventQueue内部有一个 List<QueueItem>,每个QueueItem包含enent和时间

status_t AwesomePlayer::prepareAsync_l() {    if (mFlags & PREPARING) {        return UNKNOWN_ERROR;  // async prepare already pending    }    if (!mQueueStarted) {        mQueue.start();        mQueueStarted = true;    }    modifyFlags(PREPARING, SET);    mAsyncPrepareEvent = new AwesomeEvent(            this, &AwesomePlayer::onPrepareAsyncEvent);    mQueue.postEvent(mAsyncPrepareEvent);    return OK;}

他并没有实际的调用onPrepareAsyncEvent()真正的功能函数,他只是把mQueue start之后,然后创建个mAsyncPrepareEvent事件,把它插入到mQueue之中就不管了,具体调用是由mQueue中的threadEntry线程来做。





读书人网 >多媒体

热点推荐