freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于android的openmax框架研究與開發(fā)碩士學(xué)位論文-資料下載頁

2025-06-23 22:47本頁面
  

【正文】 MEDIA_MIMETYPE_AUDIO_AAC參數(shù)AACEncoder MEDIA_MIMETYPE_VIDEO_MPEG4參數(shù)M4vH263Encoder MEDIA_MIMETYPE_VIDEO_H263參數(shù)M4vH263Encoder MEDIA_MIMETYPE_VIDEO_AVC參數(shù)表AVCEncoder 基于OpenMAX框架硬件解碼硬件解碼需要繼承CVideoCodecComponent的接口,并且調(diào)用OMXClient交互實(shí)現(xiàn)硬件解碼。 基于OpenMAX框架硬件解碼整體設(shè)計(jì)硬件解碼設(shè)計(jì)思路大致和編解碼總體思路一樣,具體是通過新建一個(gè)CVHardwareDecoder類,通過init來初始化,然后把回調(diào)函數(shù)RegisterReadVideoFrameCallback設(shè)置進(jìn)去,可以進(jìn)行數(shù)據(jù)的傳入,再通過Open就可以打開解碼引擎,可以開始了數(shù)據(jù)解碼了,SetParam可以設(shè)置參數(shù),當(dāng)需要停止的時(shí)候可以通過Close來停止。:圖 解碼控制流程硬件解碼設(shè)計(jì)的數(shù)據(jù)流程就是通過ReadVideoFrameCallback把數(shù)據(jù)傳進(jìn)去,通過ReadVideoFrame把數(shù)據(jù)傳出來。:圖 解碼數(shù)據(jù)流程 基于OpenMAX框架硬件解碼的設(shè)計(jì)硬件解碼的設(shè)計(jì)是先初始化參數(shù),然后打開引擎,再進(jìn)行了數(shù)據(jù)的處理,最好關(guān)閉引擎這樣的流程設(shè)計(jì)。 硬件解碼的設(shè)置實(shí)現(xiàn)打開OMX的硬件解碼需要進(jìn)行參數(shù)設(shè)置,設(shè)置打開硬件解碼的參數(shù),通過allocateNode來設(shè)置,具體是allocateNode(ponentName, m_pObserver, amp。mNode)。通過ponentName來設(shè)置硬件解碼,同時(shí)把服務(wù)端也一起設(shè)置進(jìn)去。 初始化的設(shè)計(jì)()調(diào)用來換取OMXDecoder類。進(jìn)而DecoderObserver也通過setCodec設(shè)置解碼芯片參數(shù)。然后通過OMXDecoder類的allocateNode函數(shù)來設(shè)置DecoderObserver進(jìn)去和setParameter函數(shù)來設(shè)置參數(shù)。:圖 解碼Init函數(shù)流程 打開的設(shè)計(jì)打開是調(diào)用Start,再通過Start調(diào)用sendCommand函數(shù)把sendCommand(mNode, OMX_CommandStateSet, OMX_StateIdle)設(shè)置開啟引擎。然后通過allocateBuffers調(diào)用allocateBuffersOnPort再調(diào)用,然后InitOMXParams初始化一些系數(shù),allocateBuffer來獲取buffer地址。:圖 解碼Open函數(shù)流程 關(guān)閉的設(shè)計(jì)關(guān)閉是調(diào)用Stop,再通過Stop調(diào)用sendCommand函數(shù)把sendCommand(mNode, OMX_CommandStateSet, OMX_StateIdle)設(shè)置關(guān)閉引擎。然后通過freeNode來釋放節(jié)點(diǎn),再斷開Client就可以。:圖 解碼Close函數(shù)流程 數(shù)據(jù)處理過程具體函數(shù)數(shù)據(jù)處理是直接通過ReadVideoFrame處理,當(dāng)調(diào)用ReadVideoFrame就會(huì)調(diào)用drainInputBuffers進(jìn)而調(diào)用drainInputBuffer從而調(diào)用pReadVideoCallback回調(diào)函數(shù)傳入數(shù)據(jù),通過emptyBuffer把數(shù)據(jù)傳入到OMX中處理,再通過fillOutputBuffers把數(shù)據(jù)吐出來fillOutputBuffers調(diào)用fillOutputBuffer再調(diào)用fillBuffer從OMX中拿到,數(shù)據(jù)交給上層,:圖 解碼數(shù)據(jù)處理具體流程 基于OpenMAX框架硬件解碼的實(shí)現(xiàn) 變量和結(jié)構(gòu)體的定義216。 主要的變量定義 TRANSCODER_VIDEOFORMAT m_InputFormat。 MV2SPECFICDATA m_SpecData。 PFNREADVIDEOFRAMECALLBACK m_pReadVideoCallback。 spIOMX m_pOMXDecoder。 IOMX::node_id mNode。 spVAsyncDecoderObserver m_pObserver。 OMXClient m_Client。216。 結(jié)構(gòu)體定義數(shù)據(jù)格式定義: struct BufferInfo { IOMX::buffer_id mBuffer。 BufferStatus mStatus。 spIMemory mMem。 size_t mSize。 void *mData。 MediaBuffer *mMediaBuffer。 }。 主要函數(shù)主要的幾個(gè)函數(shù):初始化Init(TRANSCODER_VIDEOFORMAT* pInFormat)。打開Open()。關(guān)閉Close()。消耗DeInit()。設(shè)置參數(shù)SetParam(MDWord dwCfgType, MVoid* pValue)。設(shè)置數(shù)據(jù)格式SetInputFormat(TRANSCODER_VIDEOFORMAT* pInFormat)。數(shù)據(jù)傳出ReadVideoFrame(MByte* pFrameBuf, MLong lBufSize, MLong* plFrameSize, MDWord* pdwCurrentTimestamp, MDWord* pdwTimeSpan, MBool * pbIsSyncFrame = MNull )。數(shù)據(jù)傳入RegisterReadVideoFrameCallback(PFNREADVIDEOFRAMECALLBACK pCallback,MVoid * pObj)。 OMX的參數(shù)匹配:findMatchingCodecs(const MTChar *mime,const MTChar *matchComponentName, MDWord flags,CMPtrList* pCodecList)。 基于OpenMAX框架硬件編碼硬件編碼需要繼承CVideoCodecComponent的接口,并且調(diào)用OMXClient交互實(shí)現(xiàn)硬件編碼。 基于OpenMAX框架硬件編碼整體設(shè)計(jì)硬件編碼設(shè)計(jì)思路大致和編解碼總體思路一樣,具體是通過新建一個(gè)CVHardwareDecoder類,通過init來初始化,然后通過RegisterReadVideoFrameCallback把回調(diào)函數(shù)ReadVideoFrameCallback設(shè)置進(jìn)去,可以進(jìn)行數(shù)據(jù)的傳入和傳出,再通過Open就可以打開編碼引擎,ProcStart啟動(dòng)引擎??梢蚤_始了數(shù)據(jù)編碼,SetParam可以設(shè)置參數(shù),當(dāng)需要停止的時(shí)候可以通過Close來停止。:圖 編碼控制流程硬件編碼設(shè)計(jì)的數(shù)據(jù)流程就是通過ReadVideoFrameCallback把數(shù)據(jù)傳進(jìn)去,通過ReadVideoFrame把數(shù)據(jù)一幀一幀傳出來。:圖 編碼數(shù)據(jù)流程 基于OpenMAX框架硬件編碼的設(shè)計(jì)硬件編碼的設(shè)計(jì)主要分為初始化,打開,啟動(dòng),數(shù)據(jù)處理,和關(guān)閉來設(shè)計(jì)。 硬件編碼設(shè)置實(shí)現(xiàn)打開OMX的硬件編碼需要進(jìn)行參數(shù)設(shè)置,設(shè)置打開硬件編碼的參數(shù),通過allocateNode來設(shè)置,具體是allocateNode(ponentName, m_pObserver, amp。mNode)。通過ponentName來設(shè)置硬件編碼,同時(shí)把服務(wù)端也一起設(shè)置進(jìn)去。 初始化的設(shè)計(jì)()調(diào)用來換取OMXEncoder類。進(jìn)而EncoderObserver也通過setCodec設(shè)置參數(shù)。然后通過OMXEncoder類的allocateNode函數(shù)來設(shè)置EncoderObserver進(jìn)去和setParameter函數(shù)來設(shè)置參數(shù)。:圖 編碼Init函數(shù)流程 打開的設(shè)計(jì)打開是調(diào)用Start,再通過Start調(diào)用sendCommand函數(shù)把sendCommand (mNode, OMX_CommandStateSet, OMX_StateIdle)設(shè)置開啟引擎。然后通過allocateBuffers調(diào)用allocateBuffersOnPort再調(diào)用,然后InitOMXParams初始化一些系數(shù),allocateBuffer來獲取buffer地址。:圖 編碼Open函數(shù)流程 啟動(dòng)的設(shè)計(jì)啟動(dòng)是調(diào)用StartReadSrcDataThread,通過StartReadSrcDataThread調(diào)用MThreadCreate來新建一個(gè)線程來讀取數(shù)據(jù)并且把數(shù)據(jù)OMX里面扔。新建了ReadDataFromSpliter線程,通過drainInputBuffers和fillOutputBuffers啟動(dòng)OMX引擎。數(shù)據(jù)通過pReadVideoCallback來讀取,并且通過drainInputBuffers把數(shù)據(jù)往OMX里面扔。進(jìn)行了不停地循環(huán),反復(fù)的數(shù)據(jù)讀取和數(shù)據(jù)傳入OMX中。:圖 編碼ProcStart函數(shù)流程 關(guān)閉的設(shè)計(jì)關(guān)閉是先調(diào)用ThreadClose關(guān)閉線程,關(guān)閉數(shù)據(jù)的讀取和傳入OMX中,再調(diào)用Stop,再通過Stop調(diào)用sendCommand函數(shù)把sendCommand(mNode, OMX_CommandStateSet, OMX_StateIdle)設(shè)置關(guān)閉引擎。然后通過freeNode來釋放節(jié)點(diǎn),再斷開Client就可以。:圖 編碼Close函數(shù)流程 數(shù)據(jù)處理過程具體函數(shù)數(shù)據(jù)處理是直接通過ReadVideoFrame讀出數(shù)據(jù),當(dāng)調(diào)用ReadVideoFrame就會(huì)調(diào)用fillOutputBuffers把數(shù)據(jù)吐出來fillOutputBuffers調(diào)用fillOutputBuffer再調(diào)用fillBuffer從OMX中拿到,數(shù)據(jù)交給上層,而數(shù)據(jù)傳下去是通過新建一個(gè)線程StartReadSrcDataThread循環(huán)不斷地通過pReadVideoCallback 讀取數(shù)據(jù)而通過drainInputBuffers進(jìn)而調(diào)用drainInputBuffer,再通過emptyBuffer把數(shù)據(jù)傳入到OMX中處理,:圖 編碼數(shù)據(jù)處理具體流程 基于OpenMAX框架硬件解碼的實(shí)現(xiàn) 變量和結(jié)構(gòu)體的實(shí)現(xiàn)216。 主要變量:MDWord m_dwFrameLength。OMX_COLOR_FORMATTYPE m_SrcColor。spIOMX m_pOMXEncoder。IOMX::node_id mNode。spVAsyncEncoderObserver m_pObserver。spIMemoryHeap mPmemInfo。OMXClient m_ClientEncoder。 MTChar m_szOMXComponentName[OMX_MAX_STRINGNAME_SIZE]。MV2FRAMEINFO m_FrameInfo。TRANSCODER_VIDEOFORMAT m_outputVideoInfo。PFNREADVIDEOFRAMECALLBACK m_pReadVideoCallback。 數(shù)據(jù)定義 struct BufferInfo { IOMX::buffer_id mBuffer。 BufferStatus mStatus。 spIMemory mMem。 size_t mSize。 void *mData。 MediaBuffer *mMediaBuffer。 }。 主要函數(shù)Init(TRANSCODER_VIDEOFORMAT* pInFormat)。Open()。Close()。DeInit()。SetParam(MDWord dwCfgType, MVoid* pValue)。GetParam(MDWord dwCfgType, MVoid* pValue)。SetInputFormat(TRANSCODER_VIDEOFORMAT* pInFormat)。ReadVideoFrame(MByte* pFrameBuf, MLong lBufSize, MLong* plFrameSize,MDWord* pdwCurrentTimestamp, MDWord* pdwTimeSpan,MBool * pbIsSyncFrame = MNull )。RegisterReadVideoFrameCallback(PFNREADVIDEOFRAMECALLBACK pCallback,MVoid * pObj)。ProcStart()。StartReadSrcDataThread()。 本章小結(jié)本章主要實(shí)現(xiàn)在Android上的基于OpenMAX框架,詳細(xì)描述了如何實(shí)現(xiàn)函數(shù)和數(shù)據(jù)的流程,區(qū)別對(duì)待解碼和編碼的實(shí)現(xiàn),詳細(xì)的闡述了解碼和編碼的實(shí)現(xiàn)過程,最終實(shí)現(xiàn)了OpenMAX框架硬件編解碼。42浙江大學(xué)碩士學(xué)位論文 第6章Android中OpenMAX框架硬編解碼的應(yīng)用第6章 Android中OpenMAX框架硬編解碼的應(yīng)用 OpenMAX框架硬件編解碼的應(yīng)用當(dāng)android項(xiàng)目需要使用OpenMAX框架的時(shí)候,由于項(xiàng)目是java代碼,OpenMAX框架是C++代碼,實(shí)現(xiàn)JAVA代碼與C++的數(shù)據(jù)傳遞,需要C++代碼生成動(dòng)態(tài)庫和jni接口來實(shí)現(xiàn)數(shù)據(jù)交互。 生成動(dòng)態(tài)庫要生成動(dòng)態(tài)庫需要寫makefile文件編譯,makefile帶來的好處就是—“自動(dòng)化編譯”,一旦寫好,只要輸入make就可以執(zhí)行整個(gè)編譯過程,不需要人為控制,
點(diǎn)擊復(fù)制文檔內(nèi)容
化學(xué)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1