媒體處理參考設(shè)計(jì)說明_第1頁(yè)
媒體處理參考設(shè)計(jì)說明_第2頁(yè)
媒體處理參考設(shè)計(jì)說明_第3頁(yè)
媒體處理參考設(shè)計(jì)說明_第4頁(yè)
媒體處理參考設(shè)計(jì)說明_第5頁(yè)
已閱讀5頁(yè),還剩38頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

非經(jīng)本公司,任何單位和個(gè)人不得擅自摘抄、本文檔內(nèi)容的部分或全部,并不得以任何形式。 您的產(chǎn)品、服務(wù)或特性等應(yīng)受海思公司商業(yè)合同和條款的約束,本文檔中描述的全部或部分產(chǎn)

數(shù)據(jù)容量(如RAM容0b000、X1例如:00X表示000或001;1XX表示

前 概 概 概 概 概 概 概 概 其 圖1-1NDK上下 圖2-2Hi3559V100單Sensor單通路設(shè)計(jì) 圖2-3Hi3559V100單Sensor單通路設(shè)計(jì) 圖2-4Hi3559V100單Sensor雙通路設(shè)計(jì) 圖2-5Hi3559V100單Sensor雙通路設(shè)計(jì) 圖2-6Hi3559V100單Sensor雙快速通路設(shè)計(jì) 圖2-7Hi3559V100單Sensor雙快速通路設(shè)計(jì) 圖2-8Hi3559V100雙Sensor雙雙設(shè) 圖2-9Hi3559V100雙Sensor雙雙設(shè) 圖2-10單Sensor單路時(shí)序 圖2-11單Sensor雙時(shí)序 圖2-12單Sensor雙快速時(shí)序 圖2-13雙Sensor時(shí)序 圖2-14雙Sensor時(shí)序 圖2-16拍照后處理設(shè)計(jì)流 圖2-18數(shù)據(jù)流接口時(shí)序 NDKSDK(MPIFastInitMAPICPU異構(gòu)。的軟件層。NDK在LiteOSLinux系統(tǒng)上都能對(duì)接上層APP開發(fā)。 Linux系統(tǒng)上,具有通用性好,成熟穩(wěn)定等特性,為了客戶方便沿用之前的業(yè)務(wù)開發(fā)習(xí)慣,將其他通用業(yè)務(wù)APP布局在Linux系統(tǒng)上。也即NDK在 務(wù)APP。 LiteOS系統(tǒng)上,故將NDKLiteOS上的軟件部分稱為MediaServer,linux系統(tǒng)的軟件部分稱為Media MediaServer與Media 通過HiSysLink實(shí)現(xiàn)消息通信與大塊數(shù)據(jù)通信,具體通信機(jī)制見2.9章節(jié)。在LiteOS系統(tǒng)上,MediaServer通過調(diào)用MPI接口實(shí)現(xiàn)功能的整合與抽象;在Linux端,通過HiSysLink系統(tǒng)建立消息及數(shù)據(jù)通信,實(shí)現(xiàn)Media │ ││├──av││└──│ ││├──││├──││├──││├──││├──││├──││├──││├──││├──││├──││└──│ ├── ├── ├──││││ │││││││││││ │ │ │ │└── │ ││├──│││└──││├──││└──│ ├──│ └──│ ├── ├── └── ├── │└── └── │├──│├──│├──│├──│├──│└──└── └──

接口頭文件命名規(guī)則:hi_mapi_xxx.hxxx為modulename。比如音頻輸入的音頻輸入的數(shù)據(jù)結(jié)構(gòu)頭文件命名為hi_mapi_acap_define.h接口命名規(guī)則:HI_MAPI_XXX_YYY(param1,param2,param3,,一般將輸入?yún)?shù)放前面,輸入?yún)?shù)放后面。比如音頻輸入音量設(shè)置接口為HI_S32HI_MAPI_ACap_SetVolume(HI_HANDLEACapHdl,HI_MPP_AUDIO_GAIN_S*LiteOS端的代碼放在\ndk\mapi\code\mediaserver

LinuxHiSysLinkmedia的接口調(diào)用與數(shù)據(jù)通信。通信方式有兩2.9章節(jié)。

Capture,簡(jiǎn)稱VCAP)模塊實(shí)現(xiàn)的功能:通過MIPIRx(含MIPI接口、LVDS接口和HISPI接口)接收數(shù)據(jù),將前端輸入的原始數(shù)據(jù)送入到內(nèi)部的圖像信號(hào)處理單元(ISP)進(jìn)行處理,并最終輸出YUV數(shù)據(jù)給后處理模塊( 稱VPROC)。VCap模塊封裝了Sensor、VI、ISP這幾個(gè)模塊,將前端 用戶在對(duì)接不同Sensor時(shí),只需要改動(dòng)較少的配置就能實(shí)現(xiàn) 1.g_ssorCtxMsgcommand:厖SDK厖為sensor_cfgdis_cfgmapi_vcap_.c文件為VCap的MAPI msg_server.c在收 msg_vcap.cVCapServerMAPImapi_vcap.c文件為VCapMAPIServerSDKMPI接口完成?g_s Sensor的相關(guān)參數(shù)。?g_stVcapsCtx[VCAP_NUM],該全局變量用于保存用戶通過接口輸入的?sensor_cfgSensor的相關(guān)參數(shù),該參數(shù)的配Configs/sensor/Hi3559/panasonic_mn34120/sensor_interface_cfg_params.c中,包括對(duì)應(yīng)Sensor的所有模式列表,以及每個(gè)模式下的時(shí)序配置。?dis_cfg,該全局變量用于保存Dis的相關(guān)參數(shù),該參數(shù)的配置實(shí)際來(lái)源于Configs/dis/Hi3559/panasonic_mn34120/dis_cfg_params.c,包括不同的DIS算法?g_pstVcapInnerCfgVCap模塊內(nèi)部結(jié)構(gòu)需要的參數(shù),這此,寫死在g_pstVcapInnerCfg全局變量中,具體的賦值是在arch/hi3559/vcap/adpt_vcap_inner_config.c和arch/hi3559/vcap_double/adpt_vcap_inner_config.c文件中,由于單Sensor和雙Sensor的配置有差異,所以,單雙Sensor分別配置在不同的文件中,用戶在 下有g(shù)yro和sensor兩個(gè) ? ? 《Sensor調(diào)試指南.docDataflow

Dataflow

圖2-2和圖2-3為單Sensor單通路設(shè)計(jì)的兩種情況。由于Hi3559V100中MIPIRx0接收?qǐng)D像。圖2-3中,采用VCap1進(jìn)行,在該通路中,VCap1具有BayerScl功能,MIPI1倍、1/2倍、1/3倍縮放,達(dá)到在較低功耗下能得到好該設(shè)計(jì)中,用戶可根據(jù)應(yīng)用場(chǎng)景及實(shí)際性能需求靈活選擇對(duì)應(yīng)的VCap做,只需要將VCap的類型選為 ControlflowDataflow VCap0.enVCapType= Dataflow

VCap0enVCapType=

VIVI

VIDev

VIVIVIVIDev

VCap1.enVCapType= Photo圖2-4和圖2-5為單Sensor雙 作為通路的VI設(shè)備自產(chǎn)生時(shí)序,自產(chǎn)生的時(shí)序的分辨率與通路寫出幀的分辨率一致。因此,在圖2-5中,當(dāng)Vcap1作為通道時(shí),不能進(jìn)行BayerScl ControlflowDataflow VCap0.enVCapType=ControlflowDataflowVCap1.enVCapType=圖2-6和圖2-7為單Sensor雙 通路的VI設(shè)備與MIPIRx0綁定,并接受MIPI輸出的圖像,當(dāng)停止時(shí), 通路的VI設(shè)備解除與MIPIRx0的綁定(即綁定到無(wú)效MIPIRx1上)。當(dāng)MIPIRx0與兩個(gè)VI設(shè)備同時(shí)都綁定之后,兩個(gè)VI設(shè)備均能到當(dāng)模式設(shè)置為QUCIK模式時(shí),要獲取到普通 幀,需要通過從VI通道中獲取YUV數(shù)據(jù),并標(biāo)記幀,再將幀送給VPSS做 不實(shí)際控制Sensor,因此需 ISP去控制Sensor的 均得到長(zhǎng)幀, Dataflow VIVIVIVIDev

VIVIDev

雙路通路設(shè)計(jì)中,MIPIRx0與VI設(shè)備0綁定,MIPIRx1與VI設(shè)備1綁定,由于受MIPI能力限制,MIPIRx0最多支持12lane,MIPIRx1最多支持4lane,因此對(duì)Sensor及時(shí)序的選定有一定的要求。雙路通路設(shè)計(jì)中,ISP0控制Sensor0,ISP1控制Sensor1對(duì)于Vcap1而言,如果有進(jìn)行BayerSclBayerSclDataflow VIVIVIVIDev

Photo

設(shè)計(jì)中,在不進(jìn)行的情況下會(huì)有實(shí)時(shí)數(shù)據(jù)流出,在用戶觸發(fā)后,設(shè)置ISP的拼接屬性保證。2-22-10所示,包括OSD和Dis

為8M@30fps

給打時(shí)間

HI

HI_MAPIVCapOSD_SetAttr

以圖2-4為例的時(shí)序如圖2-11所示。值得注意的是,通路的實(shí)際幀率并不由的幀率為60fps,但是屬性中的幀率為5fps,最終通路的幀率為5fps。

為8M@60fps

為 模式

啟動(dòng)啟動(dòng)

為 模式

啟動(dòng)啟動(dòng)設(shè)

在圖2-12的時(shí)序圖中,在設(shè)置屬性和觸發(fā)兩個(gè)接口的調(diào)用時(shí)序中分為黑色和MAPI_Vcap_InitHI_SUCCESS (08M@30fps)為 模式(0,(8M@30fps啟動(dòng)啟動(dòng)為模HI_MAPI_VCap_SetAttr 啟動(dòng)啟動(dòng) 綁 通MSG_CMD_VCAP_B設(shè) (0,QuickMode/PRO_ONL (0,QuickMode/PROONLINE)HI_MAPIVCapTrigger/得到1長(zhǎng)建立所消耗的時(shí)間造成時(shí)序不一致,需要調(diào)用HI_MAPI_Sensor_SetMode接口將Sensor首先設(shè)置為Standby模式,在將所有的業(yè)務(wù)通路都建立之后,再調(diào)用HI_MAPI_Sensor_SetMode接口將Sensor設(shè)置為普通模式。另外,為了能保證的圖像風(fēng)格一致,需要分別設(shè)置兩個(gè)ISP的模式為拼接(STITCH)模式。

HI

HI_MAPI_Sensor

HI_MAPIVCapIsp_Start

HI_MAPIVCapStart

)

HI_MAPI_SensorSetMode(1,STANDBY)

)

HI_MAPI_SensorSeMode(0,NORMAL) 雙Sensor時(shí)以圖2-8為例的雙Sensor時(shí)序如圖2-14所示。雙Sensor中觸發(fā) 單Sensor中的不一樣,單Sensor中調(diào)用HI_MAPI_VCap_Trigger觸發(fā) 中,為了保證能同時(shí)得到兩條通路中的數(shù)據(jù),需調(diào)用HI_MAPI_VCap_SyncTrigger接

HI_MAPI_Sys_Init,

MSG_CMD_MEDIA_SYS_

設(shè)置Sensor0

(09M@15fps)

的Standby

設(shè)置VCap0屬 為9M@15fps,模式

設(shè)置Isp為拼

(0,(9M@15fps (0,HI_MPP_VCAPCMD啟動(dòng)啟動(dòng)設(shè)置Sensor1

HI_MAPIVCapIsp_StartHI_MAPIVCapStart(19M@15fps)的Standby

設(shè)置VCap1

為9M@15fps,模式

(0,(9M@15fpsSnap)) (1,HI_MPP_VCAPCMD啟動(dòng)啟動(dòng) 設(shè)置Vcap0的屬性

為Standby模式,的專業(yè)模式,120s (0,PROT

(0,PROTUNE120s 設(shè)置Sensor0

(1,PROTUNE,120s)

(1,PROTUNE120s 的Normal模

設(shè)置Sensor1模

的Normal模

HI_MAPI_Sensor_SetMode(1,NORMAL)至此,兩個(gè)同步觸發(fā)同時(shí)生

HI_MAPIVCapSyncTrigger

DumpRaw2-15所示。圖中展示了Raw數(shù)據(jù)通過端返回給產(chǎn)品時(shí)刻調(diào)用HI_MAPI_VCap_EnableDumpRawHI_MAPI_VCap_DumpRaw兩個(gè)接口即

VB為為啟動(dòng)啟動(dòng)

(08M@30fps)(0,(8M@30fps

使能

至此,有YUVDumpRaw

VCap的初始化接口為內(nèi)部接口MAPI_VCap_Init,去初始化接口為內(nèi)部接口MAPI_VCap_DeInit,均被mapi_sys.c中的HI_MAPI_Media_Init接口調(diào)用。這兩個(gè)接口主要是用來(lái)初始化和清除全局資源,主要包括g_s ?MIPI?保存當(dāng)前模式到全局變量 ?通過當(dāng)前VCap的模式 ?設(shè)置VI?綁定VIMIPI?設(shè)置VI?保存當(dāng)前VCapg_stVcapsCtx?Sensor回調(diào)函數(shù)?如果用戶調(diào)用HI_MAPI_Sensor_SetModeSensorStandby模式,則調(diào)用回調(diào)設(shè)置Sensor的初始化序列為Standby。?配置通路的ISP與Sensor綁定?3A算法庫(kù) ?IspFirmware?反3A算法庫(kù)?反Sensor回調(diào)函數(shù)?Isp?使能VI?使能VI?保存VCap?如果使能了,則禁用?禁用VI?禁用VI?清除VCapg_stVcapsCtxVCap?設(shè)置Isp的屬性?設(shè)置VI的屬性?保存參數(shù)到全局變量g_stVcapsCtx中通道與有效MIPI0綁定。?通道與無(wú)效MIPI1綁定?禁用屬性Trigger?禁用,保證釋放上次的資源?啟用?觸發(fā)?VCAP和后端VPROC?VIYUV??將獲取的所有的幀送給VPSS??VCAP和VPROC?禁用,保證釋放上次的資源?使能?同時(shí)觸發(fā)兩通的?設(shè)置DCF?設(shè)置GPS?獲取DCF?獲取GPS

?如果OSD已經(jīng)啟動(dòng),動(dòng)態(tài)設(shè)置顯示屬性并填充BMP到OSD區(qū)域上?保存當(dāng)前OSD?創(chuàng)建OSD?填充BMP到OSD區(qū)域上?OSD?保存OSD?OSD?銷毀OSD?保存OSD?設(shè)置DIS?DIS?設(shè)置DIS?如果DIS算法中需要陀螺儀數(shù)據(jù),初始化陀螺儀、啟動(dòng)陀螺儀獲取數(shù)據(jù)、獲取陀螺儀數(shù)據(jù)接口給DIS算法庫(kù)。?創(chuàng)建線程啟動(dòng)DIS?保存DIS?設(shè)置DIS?如果開啟了陀螺儀的相關(guān)算法,反獲取陀螺儀數(shù)據(jù)的接口、停止陀螺儀獲?退出DIS?銷毀DIS?保存DIS?設(shè)置Dump?啟用VIDump?VI?銷毀獲取Dump?禁用VIDump?Dump數(shù)據(jù)的回調(diào)?置圖像效果的接口,并不屬于通路建立所必須的接口,這類接口主要是透?jìng)鱏DKHI_MPP_VCAP_CMD_E,并且在Server端(即mapi_vcap.c)添加相應(yīng)的分支調(diào)用SDK相應(yīng)的接口即可。用戶在使用時(shí),可使用或Server端的接口,結(jié)構(gòu)體直接通過包含SDK的結(jié)構(gòu)體得到。????VPROC的定位是做YUV數(shù)據(jù)的處理,主要包含了MPIVPSS的功能,另外封裝了VPROC的HANDLEMPI層VPSS的Group號(hào),PORTHANDLEMPIVPSSchn拍照后處理需要將VPSS輸出的幾幀數(shù)據(jù)通過HDR、LL等后處理算法合成為一幀這個(gè)流程。以三幀合成處理為例如圖2-16所示。需要注意的是VPSS和VENC在驅(qū)動(dòng)層已經(jīng)綁定,VPSS如果有數(shù)據(jù)輸出會(huì)直接送給VENC編碼,還沒有做HDR/LL處理,這并不是用戶期望的結(jié)果。所以,需要在VPSSVPSSVENCVPSS有數(shù)據(jù)輸出時(shí),通過MPI的HI_MPI_VPSS_GetChnFrame接口獲取出三幀數(shù)據(jù),然后送給HDR/LL處理。整個(gè)處理封裝在VPROC的實(shí)現(xiàn)內(nèi)部,用戶的產(chǎn)品代碼中直接調(diào)用MAPI的代碼需要對(duì)比HDR/LL處理前后的YUV數(shù)據(jù),這個(gè)場(chǎng)景下用MAPI的接口來(lái)做就比較,建議這種調(diào)試場(chǎng)景還是調(diào)用MPI的接口來(lái)做。VPSS4個(gè)物理通道,如果客戶需要4個(gè)以上的通道數(shù)時(shí),可以使用擴(kuò)展通道。但是由于擴(kuò)展通道的概念稍微復(fù)雜,就沒有在MAPI層使用。這種情況如果需要4個(gè)以上的通道,又沒有擴(kuò)展通道,只能再創(chuàng)建一個(gè)新的VRPOC,需要再做一次3DNR處理等,對(duì)功耗和內(nèi)存占用上MAPI3DNR的參數(shù)幀個(gè)數(shù)固定了,SNAP模式時(shí),用0個(gè)參考幀;當(dāng)前MAPI層并沒有開放VPSSGroup屬性的enPixFmt設(shè)置,這個(gè)值主要影響3DNR參考幀的buffer分配大小,為了最大的兼容性,MAPI層固定設(shè)為了少buffer的分配。

編碼(Encode,簡(jiǎn)稱VENC)模塊對(duì)MPI的VENC/RC/H264/H265等模塊和HiSyslink的datafifo進(jìn)行了封裝,主要實(shí)現(xiàn)了編碼碼流的獲取和跨核的傳輸,同時(shí)添加了編碼OSD信息。ProcessVEncStreamThreaddatafifo通道獲取音頻編碼后的數(shù)據(jù)信息,執(zhí)行用戶數(shù)據(jù)寫入[用 數(shù)[參數(shù)MAPI_VEnc_HI_DA VEVENC接口設(shè)計(jì)將原有MPI接口參數(shù)進(jìn)行了簡(jiǎn)化,基本的常用的功能參數(shù),在通道初?MPI層接口HI_MPI_SYS_BindVPORT?VIMPI層接口更新RC 端打開datafifo?serverdatafifo ?serverdatafifo????參數(shù)轉(zhuǎn)換后,調(diào)用MPI層接口設(shè)置編參?RC?全部都是接口透?jìng)鳎醋鋈魏涡薷?。僅在高級(jí)幀率控制時(shí),回去更新RC參數(shù)。在VENC增幀時(shí),RC的輸入幀率是增幀后的幀率,VENC不增幀時(shí),RC的輸入幀率是VI的幀率。?全局變量中獲取設(shè)置是OSD?MPI層接口創(chuàng)建RGN?設(shè)置OSD?MPI?MPI層接口拆除OSD?MPI層接口銷毀RGNDISP模塊的HANDLEVO的DEVVoLayerID;DISPWindow的HANDLEVOchnIDDISPMAPI層的參數(shù)到MPI層,并沒有復(fù)雜的邏輯轉(zhuǎn)換,DISP模塊的接口HI_MAPI_Disp_Start實(shí)現(xiàn)中,因?yàn)橐紤]兼容各種應(yīng)用場(chǎng)景,固定調(diào)用了HI_MPI_VO_SetDispBufLen4buffer4幀的緩存buffer在場(chǎng)景為單畫面直通的情況下,是可以省下來(lái)的。是否滿足單畫面直通的場(chǎng)景條件,請(qǐng)參考《HiMPPIPCV3.0處理軟件開發(fā)參考》文檔中,輸出

(AudioCapture,簡(jiǎn)稱ACAP)用于接收AudioCodec轉(zhuǎn)換之后的音頻數(shù)字信號(hào) 2-19所示,AI設(shè)備啟動(dòng)trackmode設(shè)置→AI→VQE屬性設(shè)置→VQE使能。啟動(dòng)2-20VQE→停止AI→停止AIndk\drv\extdrvcodec文件夾,將驅(qū)動(dòng)代碼放入

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論