[Android] Client->NuPlayer

@startuml

left to right direction

package libmediaplayerservice{

    class Client{
         1 void MediaPlayerService::Client::disconnect() 1 
         2 status_t MediaPlayerService::Client::reset() 1 
    }

    class NuPlayerDriver{
         1 status_t NuPlayerDriver::reset() 1 
    }

    class NuPlayer{
         1 void NuPlayer::resetAsync() 2,4 
         2 void NuPlayer::performDecoderFlush(FlushCommand audio, FlushCommand video) 3 
         3 void NuPlayer::flushDecoder(bool audio, bool needShutdown=FLUSH_CMD_SHUTDOWN) 1 
         4 void NuPlayer::performReset()
         5 void NuPlayer::handleFlushComplete(bool audio, bool isDecoder) 2 
    }

    class AudioSink{
         responsible for audio output, if use DecoderPassThrough as audio decoder
         this will use audiotrack passthrough mode, otherwise , this will used to output pcm
    }

    class Source{
         NuPlayerSource.h
    }

    class HTTPLiveSource{
         gui/Surface.h
         hls use this , eg.NuPlayer: setDataSourceAsync HTTPLiveSource http://127.0.0.1:4455/src7/vod_0.m3u8

    }

    class Surface{
         gui/Surface.h
    }

    class DecoderPassThrough{
        NuPlayerDecoderPassThrough.h
    }

    class Decoder{
         NuPlayerDecoder.h
         1 void NuPlayer::Decoder::onFlush() 5 
         2 void NuPlayer::Decoder::onShutdown(bool notifyComplete) 1 
    }

    class CCDecoder{
         NuPlayerCCDecoder.h
        responsible for codec info parse
    }

    class Renderer{
         NuPlayerRenderer.h
         responsible for A/V sync
    }

}

package libaudioclient{
    class AudioTrack{
    }
}

package libstagefright{
    class MediaCodec{
        responsible for hardware codec
         1 status_t MediaCodec::release() 1 
    }
}

package mediaserver{
    class mediaserverMediaCodec{
         1 status_t MediaCodec::OnShutdown(const Message& msg) 2 
         2 status_t MediaCodec::Stop(bool keepComponentAllocated, bool byDisposing) 1 
    }
    class ResourceCenter{
         1 void ResourceCenter::DeallocateAll()
    }
}

NuPlayerDriver --> NuPlayer
AudioSink --> AudioTrack
NuPlayer --> NuPlayerDriver
NuPlayer --> AudioSink
Client --> NuPlayerDriver
NuPlayer -->  Source
NuPlayer -->  Surface
NuPlayer --> "video/audio" Decoder
NuPlayer --> "audio" DecoderPassThrough
Decoder -->  CCDecoder
Decoder -->  MediaCodec
Decoder --> "notify" NuPlayer
NuPlayer --> Renderer
MediaCodec --> mediaserverMediaCodec
mediaserverMediaCodec --> ResourceCenter
Source <|.. HTTPLiveSource


@enduml

你可能感兴趣的:(Android,framework,android)