`
ai_longyu
  • 浏览: 480490 次
社区版块
存档分类
最新评论

NuPlayer reset处理流程

 
阅读更多
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框架

    android NuPlayer多媒体框架,描述了NuPlayer到mediacodec、acodec、OMX整个播放的数据流和控制流

    android4.0nuplayer框架介绍

    android4.0的nuplayer框架,提供完整的流程图框架和详细的介绍

    音视同步机制

    lip sync. 系统中音视频同步机制的设计与实现。 详细说明了,唇音同步

    MeidaPlayer流程.7z

    MediaPlayer从java层到native层的详细流程图,主要包括了setDataSource()、prepareAsync()、start()的调用流程;中间还涵盖了整体的消息机制,播放器选择(播放工厂、打分机制)、NuPlayer的创建、不同资源类型的选择...

    android multimedia framework overview

    android多媒体框架概述(高通),主要包括MediaCodec、MediaCodec Call Flows、NuPlayer、ExoPlayer、MediaRecorder、MediaRecorder Call Flow

    Android HTTPStreamming

    Android流媒体协议http播放网络视频,通过URL地址向网络请求数据,然后通过nuplayer播放网络视频

    流媒体协议RTSP、HTTP、HTTPS、SDP四种区别解析

    流媒体在Android中有nuplayer来实现的,下面先来讲流媒体传输协议,了解了基本协议,本文主要讲解RTSP,HTTP,HTTPS, SDP四种协议,一起来看看了解下,仅供参考

Global site tag (gtag.js) - Google Analytics