diff --git a/design/codec_hdi/adapt_hdi_2.0.md b/design/codec_hdi/adapt_hdi_2.0.md index e78cdff57a83ecd0635aa634bfbd5a278eb44a6b..ae3b34057eafe51aa9bfff2890ed78c1ba5833c8 100644 --- a/design/codec_hdi/adapt_hdi_2.0.md +++ b/design/codec_hdi/adapt_hdi_2.0.md @@ -83,7 +83,7 @@ class CodecCapability { class PluginDef { incaps mime(h264)/bitrate outcaps mime(yuv)/bitrate - creator // CodecAdapter(name), name is CodecCapability name + creator // HdiAdapter(name), name is CodecCapability name } ``` @@ -92,7 +92,7 @@ class PluginDef { ```plantuml participant CodecFilter participant PluginManager -participant CodecAdapter +participant HdiAdapter box "HDI_Interface" participant ComponentManager participant Component @@ -100,48 +100,46 @@ participant ComponentCallback end box PluginManager -> PluginManager : ctor -PluginManager -> CodecAdapter : RegisterOneCodecPackage -CodecAdapter -> PluginManager : AddPackage(PackageName) -CodecAdapter -> ComponentManager : GetComponentManager -CodecAdapter -> ComponentManager : GetComponentNumber -CodecAdapter -> ComponentManager : GetComponentCapabilityList -CodecAdapter -> PluginManager : AddPlugin(PluginDef) +PluginManager -> HdiAdapter : RegisterOneCodecPackage +HdiAdapter -> PluginManager : AddPackage(PackageName) +HdiAdapter -> ComponentManager : GetComponentManager +HdiAdapter -> ComponentManager : GetComponentNumber +HdiAdapter -> ComponentManager : GetComponentCapabilityList +HdiAdapter -> PluginManager : AddPlugin(PluginDef) CodecFilter -> CodecFilter : Prepare() CodecFilter -> CodecFilter : Negotiate() -CodecFilter -> CodecAdapter : get plugin list for H264,CreatePlugin -CodecAdapter -> CodecAdapter : ctor -CodecFilter -> CodecAdapter : filter.Negotiate() : plugin -> Init() -CodecAdapter -> Component : CreateComponent() -CodecAdapter -> ComponentCallback : CreateComponentCallback() -CodecAdapter -> Component : GetComponentVersion() -CodecFilter -> CodecAdapter : filter.Configure() : plugin -> SetParameter() -CodecAdapter -> CodecAdapter : save tag value used to config omx port -CodecFilter -> CodecAdapter : filter.Configure() : plugin -> GetParameter() -CodecAdapter -> Component : ConfigOmxPortDefine() -CodecAdapter -> Component : get in buffer size and count from omx -CodecAdapter -> Component : get out buffer size and count from omx -CodecAdapter -> CodecFilter : send omx buffer count to filter -CodecFilter -> CodecAdapter : filter.Configure() : plugin -> QueueOutputBuffer() // queue all output buffer down -CodecFilter -> CodecAdapter : filter.Configure() : plugin -> Prepare() -CodecAdapter -> Component : UseBufferOnInputPort(size, count) // allocate and use buffer -CodecAdapter -> Component : UseBufferOnOutputPort(size, count) // allocate and use buffer -CodecAdapter -> Component : set component status : OMX_StateIdle and wait callback -CodecFilter -> CodecAdapter : filter.Configure() : plugin -> Start() -CodecAdapter -> Component : set component status : OMX_StateExecuting -CodecAdapter -> Component : FillAllTheBuffer() : for { FillThisBuffer() } -CodecFilter -> CodecAdapter : filter.Configure() : start new thread : plugin -> QueueInputBuffer() -CodecAdapter -> Component : translate plugin buffer to omx and EmptyThisBuffer() -CodecAdapter -> CodecFilter : OnInputBufferDone() -ComponentCallback -> CodecAdapter : callback : EmptyBufferDone( unUsedInBufferId_.push_back(buffer->bufferId) ) -ComponentCallback -> CodecAdapter : callback: FillBufferDone( translate omx buffer to plugin ) -CodecAdapter -> CodecFilter : OnOutputBufferDone() -CodecFilter -> CodecAdapter : filter.Configure() : start new thread : plugin -> QueueOutputBuffer() -CodecAdapter -> CodecAdapter : outBufferQ_.Push(outputBuffers) +CodecFilter -> HdiAdapter : get plugin list for H264,CreatePlugin +HdiAdapter -> HdiAdapter : ctor +CodecFilter -> HdiAdapter : filter.Negotiate() : plugin -> Init() +HdiAdapter -> Component : CreateComponent() +HdiAdapter -> ComponentCallback : CreateComponentCallback() +HdiAdapter -> Component : GetComponentVersion() +CodecFilter -> HdiAdapter : filter.Configure() : plugin -> SetParameter() +HdiAdapter -> HdiAdapter : save tag value used to config omx port +CodecFilter -> HdiAdapter : filter.Configure() : plugin -> GetParameter() +HdiAdapter -> Component : ConfigOmx() +HdiAdapter -> Component : GetBufferInfoOnPort( get buffer size and count from omx ) +HdiAdapter -> CodecFilter : send omx buffer count and size to filter +CodecFilter -> HdiAdapter : filter.Configure() : plugin -> QueueOutputBuffer() // queue all output buffer down +HdiAdapter -> HdiAdapter : outBufferQ_.Push(outputBuffers) +CodecFilter -> HdiAdapter : filter.Configure() : plugin -> Prepare() +HdiAdapter -> Component : UseBufferOnInputPort(size, count) // allocate and use buffer +HdiAdapter -> Component : UseBufferOnOutputPort(size, count) // allocate and use buffer +HdiAdapter -> Component : set component status : OMX_StateIdle and wait callback +CodecFilter -> HdiAdapter : filter.Configure() : plugin -> Start() +HdiAdapter -> Component : set component status : OMX_StateExecuting +HdiAdapter -> Component : FillAllTheBuffer() : for { FillThisBuffer() } +CodecFilter -> HdiAdapter : filter.Configure() : start new thread : plugin -> QueueInputBuffer() +HdiAdapter -> Component : translate PluginBuffer to OmxBuffer and call EmptyThisBuffer() +HdiAdapter -> CodecFilter : OnInputBufferDone() +ComponentCallback -> HdiAdapter : callback : EmptyBufferDone( unUsedInBufferId_.push_back(buffer->bufferId) ) +ComponentCallback -> HdiAdapter : callback: FillBufferDone( translate OmxBuf to PluginBuf, and send free outBuffer to HDI ) +HdiAdapter -> CodecFilter : OnOutputBufferDone() CodecFilter -> CodecFilter : Start() -CodecFilter -> CodecAdapter : filter.Stop() : plugin -> Flush() -CodecAdapter -> Component : SendCommand( OMX_CommandFlush ) -CodecFilter -> CodecAdapter : filter.Stop() : plugin -> Stop() -CodecAdapter -> Component : SendCommand( OMX_StatePause ) +CodecFilter -> HdiAdapter : filter.Stop() : plugin -> Flush() +HdiAdapter -> Component : Flush( SendCommand OMX_CommandFlush ) +CodecFilter -> HdiAdapter : filter.Stop() : plugin -> Stop() +HdiAdapter -> Component : Stop( SendCommand OMX_StateIdle ) ``` ConfigOmxPortDefine()