1.NuPlayerDriver::reset()
2.NuPlayer::resetAsync()
发送kWhatReset消息
3.kWhatReset消息的处理
NuPlayer::onMessageReceived
case kWhatReset:
(1)如果mFlushingAudio或者mFlushingVideo是AWAITING_DISCONTINUITY状态,执行
(2)如果正在flushing,则推迟执行reset
(3)如果mAudioDecoder == NULL && mVideoDecoder == NULL,则表示已经执行完reset,则调用
finishReset()
(4)执行audio的flushDecoder
(5)执行video的flushDecoder
(6)设置变量mResetInProgress为true
4.NuPlayer::finishReset()
(1)执行mSource->stop();
(2)执行driver->notifyResetComplete()
4.1 NuPlayer::RTSPSource::stop()
stop函数发送消息后,断开与服务器的连接需要及时执行完成,否则会超时导致ANR。
4.2 处理kWhatDisconnect消息
4.3 NuPlayer::RTSPSource::finishDisconnectIfPossible
5.NuPlayerDriver::notifyResetComplete()
设置mResetInProgress为false,则1.中的等待完成,即reset执行结束
6.NuPlayer::flushDecoder
7.NuPlayer::Decoder::signalFlush()
调用mCodec->signalFlush(); 调用的是ACodec的signalFlush函数
8.ACodec::signalFlush()
发送kWhatFlush消息
9.ACodec::UninitializedState::onMessageReceived
case ACodec::kWhatFlush:
发送ACodec::kWhatFlushCompleted消息
10.对ACodec::kWhatFlushCompleted消息的处理位于NuPlayer类中
11.finishFlushIfPossible的处理
分享到:
相关推荐
android NuPlayer多媒体框架,描述了NuPlayer到mediacodec、acodec、OMX整个播放的数据流和控制流
android4.0的nuplayer框架,提供完整的流程图框架和详细的介绍
lip sync. 系统中音视频同步机制的设计与实现。 详细说明了,唇音同步
MediaPlayer从java层到native层的详细流程图,主要包括了setDataSource()、prepareAsync()、start()的调用流程;中间还涵盖了整体的消息机制,播放器选择(播放工厂、打分机制)、NuPlayer的创建、不同资源类型的选择...
android多媒体框架概述(高通),主要包括MediaCodec、MediaCodec Call Flows、NuPlayer、ExoPlayer、MediaRecorder、MediaRecorder Call Flow
Android流媒体协议http播放网络视频,通过URL地址向网络请求数据,然后通过nuplayer播放网络视频
流媒体在Android中有nuplayer来实现的,下面先来讲流媒体传输协议,了解了基本协议,本文主要讲解RTSP,HTTP,HTTPS, SDP四种协议,一起来看看了解下,仅供参考