視頻解碼庫(kù)概要設(shè)計(jì)報(bào)告_第1頁(yè)
視頻解碼庫(kù)概要設(shè)計(jì)報(bào)告_第2頁(yè)
視頻解碼庫(kù)概要設(shè)計(jì)報(bào)告_第3頁(yè)
視頻解碼庫(kù)概要設(shè)計(jì)報(bào)告_第4頁(yè)
視頻解碼庫(kù)概要設(shè)計(jì)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩52頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

音庫(kù)項(xiàng)目庫(kù)模塊概要設(shè)計(jì)報(bào)告音庫(kù)項(xiàng)目庫(kù)模塊概要設(shè)計(jì)報(bào)告文檔履歷i版本號(hào)日期制/修訂人內(nèi)容描述V0.12013-12-3建立初稿V0.22014-06-17修改4.1.3Initialize Decoder函數(shù),該函數(shù)增加設(shè)置Config選項(xiàng)的參數(shù);刪除設(shè)置Config選項(xiàng)的函數(shù),包括:ConfigHorizonScaleDownRatio()ConfigVerticalScaleDownRatio()ConfigRotation()ConfigThumbnailMode()ConfigOutputPicturePixelFormat()ConfigNoBFrames()ConfigDisable3D()修改RotatePicture()函數(shù)的說(shuō)明;附錄部分增加對(duì) 初始化信息的描述;附錄部分增加對(duì) 圖像像素格式的說(shuō)明;NV12NV21;修改2.3節(jié)模塊配置介紹;刪除2.4節(jié)源碼結(jié)構(gòu)介紹;V0.3文檔履歷i版本號(hào)日期制/修訂人內(nèi)容描述V0.12013-12-3建立初稿V0.22014-06-17修改4.1.3Initialize Decoder函數(shù),該函數(shù)增加設(shè)置Config選項(xiàng)的參數(shù);刪除設(shè)置Config選項(xiàng)的函數(shù),包括:ConfigHorizonScaleDownRatio()ConfigVerticalScaleDownRatio()ConfigRotation()ConfigThumbnailMode()ConfigOutputPicturePixelFormat()ConfigNoBFrames()ConfigDisable3D()修改RotatePicture()函數(shù)的說(shuō)明;附錄部分增加對(duì) 初始化信息的描述;附錄部分增加對(duì) 圖像像素格式的說(shuō)明;NV12NV21;修改2.3節(jié)模塊配置介紹;刪除2.4節(jié)源碼結(jié)構(gòu)介紹;V0.32014-11-18ConfigConfigHorizonScaleDownRatio()ConfigVerticalScaleDownRatio()ConfigSecHorizonScaleDownRatio()ConfigSecVerticalScaleDownRatio()數(shù)據(jù)結(jié)構(gòu)的成員:nSecHorizonScaleDownRationSecVerticalScaleDownRatioV1.02015-05-28Release1.概述 .-1-編寫(xiě)目的 .-1-1相關(guān) 1-1.1.1.2.1.3.2.模塊介紹 .-2-221.概述 .-1-編寫(xiě)目的 .-1-1相關(guān) 1-1.1.1.2.1.3.2.模塊介紹 .-2-222模塊體系結(jié)構(gòu)設(shè)計(jì)..................................................................................................................-4-3.1.StreamBuffer管理4-3.2.FrameBuffer管理5-3.3.3.Engine .-6-接口和流程設(shè)計(jì) .-7-4.4.1.庫(kù)API .-7-4.1.1.4.1.2.4.1.3.4.1.4.4.1.5.4.1.6.4.1.7.4.1.8.4.1.9.CreateDestroyInitializeResetDecodeDecoder .-8-Decoder...................................................................................-8-Decoder.............................................................................-9-Decoder .-10-Stream.....................................................................................-10-GetRequestSubmitStreamInfo .-11-StreamBuffer.......................................................................-11-StreamData.............................................................................-12-StreamBufferSize .-12-StreamDataSize...............................................................................-12-4.1.10.4.1.11.4.1.12.4.1.13.4.1.14.4.1.15.4.1.16.4.1.17.4.1.18.4.1.19.4.1.20.4.1.21.4.1.22.4.1.23.4.1.24.4.1.25.StreamFram .-13-RequestPicture .-13-ReturnPicture...........................................................................................-13-NextPictureInfo.......................................................................................-13-TotalPictureBufferNum...........................................................................-14-EmptyPictureBufferNum...........................................................................-14-ValidPictureNum.......................................................................................-14--15-15-15-16-ReopenEngine .-16-AllocatePictureBuffer .-16-FreePictureBuffer...................................................................................-16-RotatePicture...........................................................................................-17-4.2.流程設(shè)計(jì) .-18-4.2.1.碼流數(shù)據(jù)傳輸流程.......................................................................................-18-ii4.2.2.4.2.3.流程 .-18-圖像輸出流程.......................................................................................-18-4.3.內(nèi)部模塊接口設(shè)計(jì) .-19-4.3.1.4.3.2.4.3.3.StreamBufferManager模塊接口設(shè)計(jì) .-19-Frame4.2.2.4.2.3.流程 .-18-圖像輸出流程.......................................................................................-18-4.3.內(nèi)部模塊接口設(shè)計(jì) .-19-4.3.1.4.3.2.4.3.3.StreamBufferManager模塊接口設(shè)計(jì) .-19-FrameBufferManager模塊接口設(shè)計(jì)......................................................-23-Engine模塊接口..............................................................................-28-5.數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì) .-31-5.1.5.2.5.3.5.4.5.5.5.6.5.7.5.8.5.9.5.10.DecoderContext .-31-StreamInfo........................................................................................................-31-32-Picture...............................................................................................................-32-Sbm .-33--33-Fbm.............................................................................................................................-34-34-34-35-5.11.DecoderInterface .-35-附錄........................................................................................................................................-38-6.初始化信息設(shè)置 .-38-6.1.6.1.1.6.1.2.6.1.3.6.1.4.H264MPEG2WMV3RXG2器的InitialData .-38-器的InitialData39-器的InitialData40-器的InitialData41-碼流傳輸格式 .-42-436.2.6.3.6.3.1.6.3.2.6.3.3.6.3.4.6.3.5.YUV420、YUV422和YUV444采樣方式 .-43-YUVPlaner排列格式與YV12排列格式......................................................-45-NV21排列格式..............................................................................................-46-MB32排列格式..............................................................................................-47-MB32排列格式如何轉(zhuǎn)換成YUVPlaner排列格式......................................-49-7.Declaration .-53-iii1.概述1.1.編寫(xiě)目的設(shè)計(jì)庫(kù)的開(kāi)發(fā)、使用和后續(xù)維護(hù)。1.2.適用范圍A40/T3/A80/A83/H3/H81.概述1.1.編寫(xiě)目的設(shè)計(jì)庫(kù)的開(kāi)發(fā)、使用和后續(xù)維護(hù)。1.2.適用范圍A40/T3/A80/A83/H3/H8等各個(gè)平臺(tái)的Android系統(tǒng)SDK和LinuxSDK。1.3.相關(guān)開(kāi)發(fā)和維護(hù)庫(kù)的相關(guān)。-1-2.模塊介紹2.1.功能介紹庫(kù)是一個(gè)提供于IC平臺(tái)上實(shí)現(xiàn)高效的、多格式的功能。2.2.相關(guān)術(shù)語(yǔ)介紹Stream:碼流,被壓縮編碼過(guò)的數(shù)據(jù);StreamBufferManager:負(fù)責(zé)管理Stream的程序模塊;SBM:StreamBufferManager;FrameBuffer:存放一幀圖像的數(shù)據(jù)結(jié)構(gòu),包括存放圖像數(shù)據(jù)的內(nèi)存空間;FrameBufferManager:負(fù)責(zé)管理FrameBuffer的程序模塊;FBM:2.模塊介紹2.1.功能介紹庫(kù)是一個(gè)提供于IC平臺(tái)上實(shí)現(xiàn)高效的、多格式的功能。2.2.相關(guān)術(shù)語(yǔ)介紹Stream:碼流,被壓縮編碼過(guò)的數(shù)據(jù);StreamBufferManager:負(fù)責(zé)管理Stream的程序模塊;SBM:StreamBufferManager;FrameBuffer:存放一幀圖像的數(shù)據(jù)結(jié)構(gòu),包括存放圖像數(shù)據(jù)的內(nèi)存空間;FrameBufferManager:負(fù)責(zé)管理FrameBuffer的程序模塊;FBM:FrameBufferManager;VE:中負(fù)責(zé)VPU;Engine:通過(guò)控制VE或通過(guò)軟件代碼PTS:時(shí)間戳,表示圖像的顯示時(shí)間,presentationtimestamp的縮寫(xiě);的寬高比例;2.3.模塊配置介紹見(jiàn)文檔《LIBRARY配置指南》。目前該指南所列配置項(xiàng)中,對(duì)本模塊造成影響的配置項(xiàng)如下:-2-配置項(xiàng)影響CONFIG_DRAM_INTERFACE配置目標(biāo)平臺(tái)的DRAMVE從DRAM讀寫(xiě)數(shù)據(jù)的效率。CONFIG_LOG_LEVEL配置打印信息輸出級(jí)別。CONFIG_ENABLE_ _DECODER_MJPEG是否支持MJPEGCONFIG_ENABLE_ _DECODER_MPEG1是否支持MPEG1CONFIG_ENABLE_ _DECODER_MPEG2是否支持MPEG2CONFIG_ENABLE_ _DECODER_MPEG4是否支持MPEG4CONFIG_ENABLE_ _DECODER_MSMPEG4V1是否支持MSMPEG4V1-3-CONFIG_ENABLE_ _DECODER_MSMPEG4V2是否支持MSMPEG4V2CONFIG_ENABLE_ _DECODER_DIVX3是否支持DIVX3CONFIG_ENABLE_ _DECODER_DIVX4是否支持DIVX4CONFIG_ENABLE_ _DECODER_DIVX5是否支持DIVX5CONFIG_ENABLE_ _DECODER_XVID是否支持XVIDCONFIG_ENABLE_ _DECODER_H263是否支持H263CONFIG_ENABLE_ _DECODER_SORENSSON_H263是否支持SorenssonH263CONFIG_ENABLE_ _DECODER_RXG2是否支持RXG2CONFIG_ENABLE_ _DECODER_WMV1是否支持WMV1-3-CONFIG_ENABLE_ _DECODER_MSMPEG4V2是否支持MSMPEG4V2CONFIG_ENABLE_ _DECODER_DIVX3是否支持DIVX3CONFIG_ENABLE_ _DECODER_DIVX4是否支持DIVX4CONFIG_ENABLE_ _DECODER_DIVX5是否支持DIVX5CONFIG_ENABLE_ _DECODER_XVID是否支持XVIDCONFIG_ENABLE_ _DECODER_H263是否支持H263CONFIG_ENABLE_ _DECODER_SORENSSON_H263是否支持SorenssonH263CONFIG_ENABLE_ _DECODER_RXG2是否支持RXG2CONFIG_ENABLE_ _DECODER_WMV1是否支持WMV1CONFIG_ENABLE_ _DECODER_WMV2是否支持WMV2CONFIG_ENABLE_ _DECODER_WMV3是否支持WMV3CONFIG_ENABLE_ _DECODER_VP6是否支持VP6CONFIG_ENABLE_ _DECODER_VP8是否支持VP8CONFIG_ENABLE_ _DECODER_VP9是否支持VP9CONFIG_ENABLE_ _DECODER_H264是否支持H264CONFIG_ENABLE_ _DECODER_H265是否支持H2653.模塊體系結(jié)構(gòu)設(shè)計(jì)(StreamBufferManager)、(Engne、幀緩沖管理模塊(FrameBufferManager)以及控制模塊(vdecoder)組成,如圖2所示。其中:StreamBufferManager碼流Buffer的管理以及碼流數(shù)據(jù)的管理;FrameBufferManagerBufferEngine負(fù)責(zé)將碼流成圖像;vdecoder流程,對(duì)外提供庫(kù)的接口函數(shù)。2.庫(kù)模塊結(jié)構(gòu)圖vdecoderEngine函數(shù)時(shí),EngineStreamBufferManager取出碼流,從3.模塊體系結(jié)構(gòu)設(shè)計(jì)(StreamBufferManager)、(Engne、幀緩沖管理模塊(FrameBufferManager)以及控制模塊(vdecoder)組成,如圖2所示。其中:StreamBufferManager碼流Buffer的管理以及碼流數(shù)據(jù)的管理;FrameBufferManagerBufferEngine負(fù)責(zé)將碼流成圖像;vdecoder流程,對(duì)外提供庫(kù)的接口函數(shù)。2.庫(kù)模塊結(jié)構(gòu)圖vdecoderEngine函數(shù)時(shí),EngineStreamBufferManager取出碼流,從FrameBufferManager獲取空的圖像Buffer, 碼流后輸出圖像到圖像Buffer。后,EngineStreamBufferStreamBufferManagerFrameBufferFrameBufferManager外部程序輸入碼流時(shí),vdecoder將碼流數(shù)據(jù) 在StreamBufferManager中。外部程序獲取輸出圖像時(shí),vdecoderFrameBufferManager3.1.StreamBufferStreamBufferManager負(fù)責(zé)管理碼流Buffer和碼流數(shù)據(jù)。初始化時(shí),該模塊申請(qǐng)一片物理連續(xù)的內(nèi)存(4MB~12MB不等),用于碼流。StreamBufferManagerframeFifo結(jié)構(gòu)體了每一筆碼流的內(nèi)存地址、長(zhǎng)度、時(shí)間戳等信息。各種編碼標(biāo)準(zhǔn)都定義了數(shù)據(jù)單元的概念,H264NALU。StreamBufferManager單元的一筆數(shù)據(jù)。-4-由于需要被硬件模塊BufferBuffer使用。frameFifo結(jié)構(gòu)體一個(gè)循環(huán)數(shù)組器提供碼流數(shù)據(jù)。StreamBufferManager4.3.1描述。3.2FrameBuffer管理FrameBufferManager負(fù)責(zé)管理圖像Buffer。初始化時(shí),該模塊申請(qǐng)指定個(gè)數(shù)的圖像Buffer,每個(gè)圖像由于需要被硬件模塊BufferBuffer使用。frameFifo結(jié)構(gòu)體一個(gè)循環(huán)數(shù)組器提供碼流數(shù)據(jù)。StreamBufferManager4.3.1描述。3.2FrameBuffer管理FrameBufferManager負(fù)責(zé)管理圖像Buffer。初始化時(shí),該模塊申請(qǐng)指定個(gè)數(shù)的圖像Buffer,每個(gè)圖像Buffer的信息放在其內(nèi)部數(shù)組frames[]中。當(dāng)器需要圖像Buffer時(shí),F(xiàn)rameBufferManagerBufferBuffer器,器完成后,圖像Buffer被放入顯示隊(duì)列pValidPictureQueue等待顯示。當(dāng)Render需要獲取圖像FrmeBuferManger從pVlidictreQeueRenerRener完成顯示歸還Buffer時(shí),如果器沒(méi)有在使用該BufferBuffer被放入pEmptyBufferQueue。FrameBufferManager4.3.2描述。管理模塊數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)-5-3.3.Engine對(duì)于多數(shù)格式,Engine模塊使用硬件。5Engine的上層代碼對(duì)外提供接口,這一層代碼負(fù)責(zé)初始化硬H264模塊處理工作。H264、MPEG4模塊處理碼流任務(wù),這些模塊通過(guò)外部提供的Bitstream管理模塊的接口獲取碼流,通過(guò)FrameBuffer管理模塊的接口獲取圖像Buffer和輸出圖像。Engine模塊的適配層負(fù)責(zé)實(shí)現(xiàn)內(nèi)存申請(qǐng)、調(diào)試信息打印、VE硬件設(shè)備驅(qū)動(dòng)調(diào)用等功能。Bitstream、FrameBuffer管理模塊跟Engine對(duì)接的代碼,也在適配層實(shí)3.3.Engine對(duì)于多數(shù)格式,Engine模塊使用硬件。5Engine的上層代碼對(duì)外提供接口,這一層代碼負(fù)責(zé)初始化硬H264模塊處理工作。H264、MPEG4模塊處理碼流任務(wù),這些模塊通過(guò)外部提供的Bitstream管理模塊的接口獲取碼流,通過(guò)FrameBuffer管理模塊的接口獲取圖像Buffer和輸出圖像。Engine模塊的適配層負(fù)責(zé)實(shí)現(xiàn)內(nèi)存申請(qǐng)、調(diào)試信息打印、VE硬件設(shè)備驅(qū)動(dòng)調(diào)用等功能。Bitstream、FrameBuffer管理模塊跟Engine對(duì)接的代碼,也在適配層實(shí)現(xiàn)。Engine模塊的接口設(shè)計(jì),在4.3.3節(jié)描述。5.Engine模塊邏輯層次-6-4.接口和流程設(shè)計(jì)4.1.API庫(kù)的API開(kāi)始前,應(yīng)用程序首先調(diào)用CreateDecoder函數(shù)創(chuàng)建一個(gè)器,然后調(diào)用InitializeDecoder函數(shù),將基本信息作為參數(shù),初始化器。-7-APIs1Create Decoder創(chuàng)建一個(gè) 器2Destroy Decoder銷毀一個(gè) 器,3Initialize Decoder根據(jù) 碼流信息(編碼格式等)初始化 器4Reset Decoder重置 器,重置后 器跳播等操作5Decode Stream一筆 碼流6Get StreamInfo從 器獲取 信息7Request StreamBufferBuffer,用于填充碼流數(shù)據(jù)8Submit StreamData填充完碼流數(shù)據(jù)后,將數(shù)據(jù)提交給 器9StreamBufferSize獲取碼流緩沖區(qū)的大小,以字節(jié)為10StreamDataSize碼流緩沖區(qū)內(nèi)有效(未 )數(shù)據(jù)的大小,以字節(jié)為11StreamFra m碼流緩沖區(qū)內(nèi)有多少筆有效(未 )數(shù)據(jù)12RequestPicture獲取 圖像13ReturnPicture歸還 圖像14NextPictureInfo獲取下一幀 的信息,如時(shí)間戳等信息15TotalPictureBufferNum器內(nèi)總共有多少個(gè) Buffer16EmptyPictureBufferNumBuffer17ValidPictureNum等待顯示的 圖像數(shù)量4.接口和流程設(shè)計(jì)4.1.API庫(kù)的API開(kāi)始前,應(yīng)用程序首先調(diào)用CreateDecoder函數(shù)創(chuàng)建一個(gè)器,然后調(diào)用InitializeDecoder函數(shù),將基本信息作為參數(shù),初始化器。-7-APIs1Create Decoder創(chuàng)建一個(gè) 器2Destroy Decoder銷毀一個(gè) 器,3Initialize Decoder根據(jù) 碼流信息(編碼格式等)初始化 器4Reset Decoder重置 器,重置后 器跳播等操作5Decode Stream一筆 碼流6Get StreamInfo從 器獲取 信息7Request StreamBufferBuffer,用于填充碼流數(shù)據(jù)8Submit StreamData填充完碼流數(shù)據(jù)后,將數(shù)據(jù)提交給 器9StreamBufferSize獲取碼流緩沖區(qū)的大小,以字節(jié)為10StreamDataSize碼流緩沖區(qū)內(nèi)有效(未 )數(shù)據(jù)的大小,以字節(jié)為11StreamFra m碼流緩沖區(qū)內(nèi)有多少筆有效(未 )數(shù)據(jù)12RequestPicture獲取 圖像13ReturnPicture歸還 圖像14NextPictureInfo獲取下一幀 的信息,如時(shí)間戳等信息15TotalPictureBufferNum器內(nèi)總共有多少個(gè) Buffer16EmptyPictureBufferNumBuffer17ValidPictureNum等待顯示的 圖像數(shù)量18ConfigHorizonScaleDownRatio設(shè)置 輸出圖像水平方向縮放倍數(shù)支持2倍和4倍縮放19ConfigVerticalScaleDownRatio設(shè)置 輸出圖像垂直方向縮放倍數(shù)支持2倍和4倍縮放20ConfigSecHorizonScaleDownRatio2/4/8/16/32縮放21ConfigSecVerticalScaleDownRatio2/4/8/16/32縮放22Reopen Engine重新打開(kāi) Engine模塊,用于支持多分辨率 流的23AllocatePictureBuffer申請(qǐng)一個(gè) 指定大小的圖像Buffer24FreePictureBufferBuffer25RotatePicture旋轉(zhuǎn)圖像初始化后,器可以開(kāi)始流。應(yīng)用程序通過(guò)RequestStreamBuffer函數(shù)從器獲取碼流Buffer,將數(shù)據(jù)填入后,通過(guò)SubmitStreamData函數(shù)將碼流提交給器。應(yīng)用程序通過(guò)調(diào)用DecodeStream碼流。應(yīng)用程序通過(guò)調(diào)用RequestPicture函數(shù)獲取圖像,圖像顯示完畢后,應(yīng)用程ReturnPictureBuffer器。和圖像的輸出工作可以在不同的線Demux線程和線程處理相關(guān)的工作。Demux線程不斷調(diào)用RequestStreamBuffer函數(shù)和SubmitStreamData函數(shù)傳送數(shù)據(jù);線程通過(guò)調(diào)用DecodeStream碼流;渲染線程不斷調(diào)用RequestPicture函數(shù)獲取圖像用于顯示,調(diào)用ReturnPicture歸還已經(jīng)顯示的圖像。庫(kù)還支持圖像縮放、旋轉(zhuǎn)等功能,這些功能需要調(diào)用其他API進(jìn)行配置。下文API4.1.1.CreateDecoder4.1.2.DestroyDecoder-8-函數(shù)原型voidDestroyDecoder( 功能銷毀一個(gè) 器, 相關(guān)軟硬件參數(shù)pDecoder:通過(guò)Create Decoder函數(shù)創(chuàng)建的 器指針?lè)祷刂禑o(wú)調(diào)用說(shuō)明初始化后,器可以開(kāi)始流。應(yīng)用程序通過(guò)RequestStreamBuffer函數(shù)從器獲取碼流Buffer,將數(shù)據(jù)填入后,通過(guò)SubmitStreamData函數(shù)將碼流提交給器。應(yīng)用程序通過(guò)調(diào)用DecodeStream碼流。應(yīng)用程序通過(guò)調(diào)用RequestPicture函數(shù)獲取圖像,圖像顯示完畢后,應(yīng)用程ReturnPictureBuffer器。和圖像的輸出工作可以在不同的線Demux線程和線程處理相關(guān)的工作。Demux線程不斷調(diào)用RequestStreamBuffer函數(shù)和SubmitStreamData函數(shù)傳送數(shù)據(jù);線程通過(guò)調(diào)用DecodeStream碼流;渲染線程不斷調(diào)用RequestPicture函數(shù)獲取圖像用于顯示,調(diào)用ReturnPicture歸還已經(jīng)顯示的圖像。庫(kù)還支持圖像縮放、旋轉(zhuǎn)等功能,這些功能需要調(diào)用其他API進(jìn)行配置。下文API4.1.1.CreateDecoder4.1.2.DestroyDecoder-8-函數(shù)原型voidDestroyDecoder( 功能銷毀一個(gè) 器, 相關(guān)軟硬件參數(shù)pDecoder:通過(guò)Create Decoder函數(shù)創(chuàng)建的 器指針?lè)祷刂禑o(wú)調(diào)用說(shuō)明無(wú)函數(shù)原型Decoder*CreateDecoder(void)功能創(chuàng)建一個(gè) 器參數(shù)無(wú)返回值成功: 失敗:返回NULL;調(diào)用說(shuō)明庫(kù)支持創(chuàng)建多個(gè) 器,同時(shí) 多路 。4.1.3.InitializeDecoder-9-函數(shù)原型intInitializeDecoder(Decoder* pDecoderStreamInfo*p VConfig* pVConfig)4.1.3.InitializeDecoder-9-函數(shù)原型intInitializeDecoder(Decoder* pDecoderStreamInfo*p VConfig* pVConfig)功能初始化 器參數(shù)pDecoder: 通過(guò)Create Decoder函數(shù)創(chuàng)建的 p Info: 碼流的基本信息,如編碼格式、分辨率、幀率等pVConfig:返回值0:表示成功;-1:失敗,不支持的編碼格式或內(nèi)存 不足;調(diào)用說(shuō)明StreamInfo中,不是所有信息都是必須的。對(duì)于H264和MPEG2,可以只填寫(xiě)編碼格式信息(format),其他 一般還需要正確填寫(xiě) 分辨率信息(width和height,由于碼流中沒(méi)有該信息)。某些 前需要初始化數(shù)據(jù)(initData)。不同格式 對(duì)應(yīng)的初始化信息如何填寫(xiě),可以參考本文檔第6節(jié)附錄部分的“ 初始化信息設(shè)置”pVConfig:配置bScaleDownEn01,默認(rèn)值為0;bRotationEn01,默認(rèn)值為0;nHorizonScaleDownRatio:輸出圖像水平方向縮小比例,0縮放,11/221/431/8大小;nVerticalScaleDownRatio:輸出圖像豎直方向縮小比例,0示不縮放,11/221/43為1/8大小;(注:縮放比例是針對(duì)原始圖像設(shè)置,同時(shí)進(jìn)行旋轉(zhuǎn)時(shí)需要注意;VP6、WMV1、WMV2ScaleDownnSecHorizonScaleDownRatio:從通道輸出圖像水平方向縮小比例,01表示縮放為1/2大小,2表示縮放為1/4大小,31/841/16,51/32;nSecVerticalScaleDownRatio:從通道輸出圖像垂直方向縮小比例,01表示縮放為1/2大小,2表示縮放為1/4大小,31/841/16,51/32;nRotateDegree:輸出圖像的旋轉(zhuǎn)角度,以順時(shí)針?lè)较蛴?jì)算,0不旋轉(zhuǎn),19021803270bThumbnailMode:器以縮略圖模式工作,當(dāng)應(yīng)用程序只是希望視頻文件的一幅圖像作為縮略圖顯示時(shí),器可以只申請(qǐng)一個(gè)圖像Buffer,輸出圖像后應(yīng)用程序關(guān)閉器,不再繼續(xù),取值為010;eOutputPixelFormat:器輸出圖像的像素格式,像素格式對(duì)應(yīng)的數(shù)據(jù)6.3bNoBFrames: B010);bDisable3D3D010);bSuporedMfde_ntelace功能,只用于A20或A23平臺(tái);4.1.4.ResetDecoder4.1.5.DecodeStream-10-函數(shù)原型intDecode stream( Decoder*pDecoder,int bEndOfStream,int bDropBFrameIfDelay,int64_t nCurrentTimeUs)功能一幀圖像, 庫(kù)會(huì)對(duì)碼流Buffer中的碼流進(jìn)行參數(shù)pDecoder:通過(guò)Create Decoder4.1.4.ResetDecoder4.1.5.DecodeStream-10-函數(shù)原型intDecode stream( Decoder*pDecoder,int bEndOfStream,int bDropBFrameIfDelay,int64_t nCurrentTimeUs)功能一幀圖像, 庫(kù)會(huì)對(duì)碼流Buffer中的碼流進(jìn)行參數(shù)pDecoder:通過(guò)Create Decoder函數(shù)創(chuàng)建的 器指針;bEndOfStream:是否碼流結(jié)束,等于1表示所 流數(shù)據(jù)都已經(jīng)傳送到Sbm;bDropBFrameIfDelay:碼流的時(shí)間戳(PTS)比當(dāng)前時(shí)間大時(shí),是否丟棄B幀,等于0表示不丟棄,等于1表示丟棄B幀;nCurrentTimeUs返回值VDECODE_RESULT_FRAME_DECODED(1): 成功,輸出了一幀圖像;VDECODE_RESULT_CONTINUE(2):碼流被 VDECODE_RESULT_KEYFRAME_DECODED(3): 成功輸出了一幀關(guān)鍵幀圖像;VDECODE_RESULT_NO_FRAME_BUFFER(4):當(dāng)前無(wú)法獲取到圖像Buffer;VDECODE_RESULT_NO_BITSTREAM(5):當(dāng)前無(wú)法獲取到碼流數(shù)據(jù);VDECODE_RESULT_RESOLUTION_CHANGE(6): 分辨率發(fā)生變化,無(wú)法繼續(xù);VDECODE_RESULT_UNSUPPORTED(-1):不能支持的格式或申請(qǐng)內(nèi)存失敗,無(wú)法繼續(xù) ;調(diào)用說(shuō)明在 性能不足的情況下,通過(guò)丟棄過(guò)時(shí)的B幀碼流, 的進(jìn)度,避免音 不同步的問(wèn)題;函數(shù)原型voidResetDecoder(Decoder*pDecoder)功能重置 器參數(shù)pDecoder:通過(guò)Create Decoder函數(shù)創(chuàng)建的 器指針?lè)祷刂禑o(wú)調(diào)用說(shuō)明調(diào)用本函數(shù)后, Engine模塊被重置,但 被保留,碼流Buffer中的數(shù)據(jù)被清空,圖像數(shù)據(jù)也被清空。本函數(shù)一般用于跳播清除 器數(shù)據(jù)。4.1.6.GetStreamInfo4.1.7.RequestStreamBuffer-11-函數(shù)原型intRequest StreamBuffer( Decoder*pDecoder,int nRequireSize,char** ppBuf,int* pBufSize,char** ppRingBuf,int* pRingBufSize,int nStreamBufIndex)功能向 器請(qǐng)求存放碼流Buffer,用于存放數(shù)據(jù)參數(shù)pDecoder:通過(guò)CreatenRequireSize:請(qǐng)求Buffer4.1.6.GetStreamInfo4.1.7.RequestStreamBuffer-11-函數(shù)原型intRequest StreamBuffer( Decoder*pDecoder,int nRequireSize,char** ppBuf,int* pBufSize,char** ppRingBuf,int* pRingBufSize,int nStreamBufIndex)功能向 器請(qǐng)求存放碼流Buffer,用于存放數(shù)據(jù)參數(shù)pDecoder:通過(guò)CreatenRequireSize:請(qǐng)求BufferppBuf:輸出參數(shù),碼流Buffer起始地址,等 pBufSize:輸出參數(shù),碼流BufferppBuf的大小;ppRingBuf:輸出參數(shù),第二塊Buffer的起始地 pRingBufSize:第二塊BufferppRingBufnStreamBufIndex:對(duì)于藍(lán)光MVC等3D , 器需要處理 碼流,nStreamBufIndex指定從第幾路 碼流Buffer獲取Buffer,0表示第0路(MVC)、11(MVC)。返回值0:表示成功;-1調(diào)用說(shuō)明碼流Buffer是一塊循環(huán)Buffer,當(dāng)Buffer回頭時(shí),外部請(qǐng)求的Buffer被分成兩段,ppBuf和pBufSize返回第一段Buffer的地址和大小,ppRingBufpRingBufSizeBufferBufferppRingBufpRingBufSizeNULL。函數(shù)原型intGetStreamInfo(Decoder* pDecoder,StreamInfo*p Info)功能獲取 信息參數(shù)pDecoder: 通過(guò)Create Decoder函數(shù)創(chuàng)建的 p Info:輸出參數(shù),存放 信息;返回值0:表示成功;-1調(diào)用說(shuō)明除了初始化時(shí)設(shè)置的 器會(huì)將 后獲得的信息一起輸出。4.1.8.SubmitStreamData4.1.9.StreamBufferSize4.1.10.StreamDataSize-12-函數(shù)原型int StreamDataSize( Decoder*pDecoder,int nStreamBufIndex)功能碼流Buffer中有效數(shù)據(jù)(未 的數(shù)據(jù))大小, 為字節(jié)參數(shù)pDecoder:通過(guò)Create Decoder函數(shù)創(chuàng)建的 器指針;nStreamBufIndex:對(duì)于藍(lán)光MVC4.1.8.SubmitStreamData4.1.9.StreamBufferSize4.1.10.StreamDataSize-12-函數(shù)原型int StreamDataSize( Decoder*pDecoder,int nStreamBufIndex)功能碼流Buffer中有效數(shù)據(jù)(未 的數(shù)據(jù))大小, 為字節(jié)參數(shù)pDecoder:通過(guò)Create Decoder函數(shù)創(chuàng)建的 器指針;nStreamBufIndex:對(duì)于藍(lán)光MVC等3D , 器需要處理 碼流,nStreamBufIndex指定從第幾路 碼流Buffer獲取Buffer。返回值碼流Buffer中未 的數(shù)據(jù)量, 為字節(jié)。調(diào)用說(shuō)明函數(shù)原型int StreamBufferSize( Decoder*pDecoder,int nStreamBufIndex)功能碼流Buffer的總大小, 為字節(jié)參數(shù)pDecoder:通過(guò)Create Decoder函數(shù)創(chuàng)建的 器指針;nStreamBufIndex:對(duì)于藍(lán)光MVC等3D , 器需要處理 碼流,nStreamBufIndex指定從第幾路 碼流Buffer獲取Buffer,0表示第0路(MVC)、11(MVC)。返回值碼流Buffer的大小, 為字節(jié)。調(diào)用說(shuō)明在 器初始化后才能正確返回碼流Buffer的大小,否則返回0.函數(shù)原型intSubmit StreamData( Decoder* pDecoder,StreamDataInfo*pDataInfo,int nStreamBufIndex)功能向 器提交碼流數(shù)據(jù)參數(shù)pDecoder:通過(guò)Create Decoder函數(shù)創(chuàng)建的 器指針;pDataInfo:碼流數(shù)據(jù)信息,包括地址、長(zhǎng)度、時(shí)間戳、邊界信息等;nStreamBufIndex:對(duì)于藍(lán)光MVC等3D , 器需要處理 碼流,nStreamBufIndex指定從第幾路 碼流Buffer獲取Buffer,0表示第0路(MVC)、11(MVC)。返回值0:表示成功;-1調(diào)用說(shuō)明提交數(shù)據(jù)時(shí),數(shù)據(jù)可以是一筆包含整數(shù)個(gè)數(shù)據(jù)單元的完整碼流幀,也可以只包含一個(gè)數(shù)據(jù)單元的部分?jǐn)?shù)據(jù),只需將 StreamDataInfo結(jié)構(gòu)體中的兩個(gè)表示數(shù)據(jù)邊界信息的變量正確填寫(xiě)即可。兩個(gè)邊界信息變量為bIsFirstPart:表示該筆數(shù)據(jù)第一個(gè)字節(jié)是否是一個(gè)數(shù)據(jù)單元的開(kāi)始;bIsLastPart:表示該筆數(shù)據(jù)最后一個(gè)有效字節(jié)是否是一個(gè)數(shù)據(jù)單元的結(jié)束;4.1.11.StreamFram4.1.12.RequestPicture4.1.13.ReturnPicture4.1.14.NextPictureInfo-13-函數(shù)原型Picture*NextPictureInfo(Decoder*pDecoder,函數(shù)原型intReturnPicture( Decoder*pDecoder,Picture*pPicture)功能歸還通過(guò)RequestPicture獲取的 圖像給 器參數(shù)返回值pDecoder:通過(guò)Create Decoder函數(shù)創(chuàng)建的 pPicture:通過(guò)4.1.11.StreamFram4.1.12.RequestPicture4.1.13.ReturnPicture4.1.14.NextPictureInfo-13-函數(shù)原型Picture*NextPictureInfo(Decoder*pDecoder,函數(shù)原型intReturnPicture( Decoder*pDecoder,Picture*pPicture)功能歸還通過(guò)RequestPicture獲取的 圖像給 器參數(shù)返回值pDecoder:通過(guò)Create Decoder函數(shù)創(chuàng)建的 pPicture:通過(guò)RequestPicture函數(shù)獲取的圖像Buffer;0:表示成功;-1調(diào)用說(shuō)明函數(shù)原型Picture*RequestPicture( Decoder*pDecoder,int nStreamIndex)功能獲取一幀圖像參數(shù)pDecoder:通過(guò)Create Decoder函數(shù)創(chuàng)建的 器指針;nStreamIndex:對(duì)于藍(lán)光MVC等3D , 器有 可供顯示,nStreamIndex指定從獲取第幾路 的圖像。返回值成功:返回圖像BufferNULL;調(diào)用說(shuō)明函數(shù)原型intStreamFram(Decoder*pDecoder,int nStreamBufIndex)功能碼流Buffer中有效數(shù)據(jù)(未 的數(shù)據(jù))有多少幀;參數(shù)pDecoder:通過(guò)Create Decoder函數(shù)創(chuàng)建的 器指針;nStreamBufIndex:對(duì)于藍(lán)光MVC等3D , 器需要處理 碼流,nStreamBufIndex指定從第幾路 碼流Buffer獲取Buffer,0表示第0路(MVC)、11(MVC)。返回值Buffer調(diào)用說(shuō)明4.1.15.TotalPictureBufferNum4.1.16.EmptyPictureBufferNum4.1.17.ValidPictureNum-14-函數(shù)原型intValidPictureNum( Decoder*pDecoder,int nStreamIndex)函數(shù)原型intEmptyPictureBufferNum( Decoder*pDecoder,int nStreamIndex)功能詢問(wèn) 器內(nèi)有多少個(gè)空閑的圖像Buffer,即未被 圖像Buffer個(gè)數(shù)。nStreamIndex:對(duì)于藍(lán)4.1.15.TotalPictureBufferNum4.1.16.EmptyPictureBufferNum4.1.17.ValidPictureNum-14-函數(shù)原型intValidPictureNum( Decoder*pDecoder,int nStreamIndex)函數(shù)原型intEmptyPictureBufferNum( Decoder*pDecoder,int nStreamIndex)功能詢問(wèn) 器內(nèi)有多少個(gè)空閑的圖像Buffer,即未被 圖像Buffer個(gè)數(shù)。nStreamIndex:對(duì)于藍(lán)光MVC等3D , 器有 可供顯示,nStreamIndex指定從獲取第幾路 的圖像。參數(shù)pDecoder:通過(guò)Create Decoder函數(shù)創(chuàng)建的 器指針;返回值Buffer調(diào)用說(shuō)明函數(shù)原型intTotalPictureBufferNum( Decoder*pDecoder,int nStreamIndex)功能詢問(wèn)參數(shù)pDecoder:通過(guò)Create Decoder函數(shù)創(chuàng)建的 器指針;nStreamIndex:對(duì)于藍(lán)光MVC等3D , 器有 可供顯示,nStreamIndex指定從獲取第幾路 的圖像。返回值Buffer調(diào)用說(shuō)明某些 格H24和MPE2需要 部碼SPSPPSeqenceHede)信息后才申請(qǐng)圖像Buffer,在此之前,本函數(shù)返回0。int nStreamIndex)功能獲取下一幀輸出圖像的信息參數(shù)pDecoder:通過(guò)Create Decoder函數(shù)創(chuàng)建的 器指針;nStreamIndex:對(duì)于藍(lán)光MVC等3D , 器有 可供顯示,nStreamIndex指定從獲取第幾路 的圖像。返回值成功:返回下一幀待顯示圖像BufferNULL;調(diào)用說(shuō)明與RequestPicture函數(shù)相比,本函數(shù)只是獲取 圖像的信息, 像從 器的顯示隊(duì)列中刪除。4.1.18.ConfigHorizonScaleDownRatio4.1.19.ConfigVerticalScaleDownRatio4.1.20.ConfigSecHorizonScaleDownRatio-15-函數(shù)原型intConfigSecHorizonScaleDownRatio( Decoder*pDecoder,int nScaleDownRatio)功能設(shè)置從路通道圖像水平方向縮放比例因子。參數(shù)pDecoder:通過(guò)Create Decoder函數(shù)創(chuàng)建的 nScaleDownRatio:圖像縮放比例因子。返回值0:表示成功;-1調(diào)用說(shuō)明當(dāng)從路通道縮放比例需求與主路通道不同時(shí),可通過(guò)調(diào)用此接口進(jìn)行設(shè)置;函數(shù)原型intConfigVerticalScaleDownRatio( Decoder*pDecoder,int nScaleDownRatio)4.1.18.ConfigHorizonScaleDownRatio4.1.19.ConfigVerticalScaleDownRatio4.1.20.ConfigSecHorizonScaleDownRatio-15-函數(shù)原型intConfigSecHorizonScaleDownRatio( Decoder*pDecoder,int nScaleDownRatio)功能設(shè)置從路通道圖像水平方向縮放比例因子。參數(shù)pDecoder:通過(guò)Create Decoder函數(shù)創(chuàng)建的 nScaleDownRatio:圖像縮放比例因子。返回值0:表示成功;-1調(diào)用說(shuō)明當(dāng)從路通道縮放比例需求與主路通道不同時(shí),可通過(guò)調(diào)用此接口進(jìn)行設(shè)置;函數(shù)原型intConfigVerticalScaleDownRatio( Decoder*pDecoder,int nScaleDownRatio)功能設(shè)置圖像垂直方向縮放比例因子。參數(shù)pDecoder:通過(guò)Create Decoder函數(shù)創(chuàng)建的 nScaleDownRatio:圖像縮放比例因子。返回值0:表示成功;-1調(diào)用說(shuō)明函數(shù)原型intConfigHorizonScaleDownRatio( Decoder*pDecoder,int nScaleDownRatio)功能設(shè)置圖像水平方向縮放比例因子。參數(shù)pDecoder:通過(guò)Create Decoder函數(shù)創(chuàng)建的 nScaleDownRatio:圖像縮放比例因子。返回值0:表示成功;-1調(diào)用說(shuō)明功能詢問(wèn) 器內(nèi)顯示隊(duì)列中有多少個(gè)待顯示的圖像。參數(shù)pDecoder:通過(guò)Create 器指針;nStreamIndex:對(duì)于藍(lán)光MVC等3D 顯示,nStreamIndex指定從獲取第幾路 的圖像。返回值待顯示的圖像個(gè)數(shù)調(diào)用說(shuō)明4.1.21.ConfigSecVerticalScaleDownRatio4.1.22.ReopenEngine4.1.23.AllocatePictureBuffer4.1.24.FreePictureBuffer-16-函數(shù)原型intFreePictureBuffer(Picture*pPicture)功能一個(gè)由AllocatePictureBuffer函數(shù)申請(qǐng)的圖像Buffer。參數(shù)pPicture:通過(guò)AllocatePictureBufferBuffer;函數(shù)原型Picture*AllocatePictureBuffer(intnWidth,intnHeight,intnLineStride,intePixelFormat)功能4.1.21.ConfigSecVerticalScaleDownRatio4.1.22.ReopenEngine4.1.23.AllocatePictureBuffer4.1.24.FreePictureBuffer-16-函數(shù)原型intFreePictureBuffer(Picture*pPicture)功能一個(gè)由AllocatePictureBuffer函數(shù)申請(qǐng)的圖像Buffer。參數(shù)pPicture:通過(guò)AllocatePictureBufferBuffer;函數(shù)原型Picture*AllocatePictureBuffer(intnWidth,intnHeight,intnLineStride,intePixelFormat)功能Buffer。參數(shù)nWidthnHeightnLineStride:圖像在內(nèi)存中存放的行寬,以像素為 ePixelFormat:圖像像素格式;返回值0:表示成功;-1調(diào)用說(shuō)明本函數(shù) 于 Decoder模塊,是全局函數(shù)。函數(shù)原型intReopenEngine(Decoder*pDecoder)功能重新打開(kāi) 器內(nèi) Engine模塊參數(shù)pDecoder:通過(guò)Create Decoder函數(shù)創(chuàng)建的 器指針;返回值0:表示成功;-1調(diào)用說(shuō)明如果 分辨率發(fā)生改變,Decode Stream函數(shù)會(huì)返回對(duì)應(yīng)的值VDECODE_RESULT_RESOLUTION_CHANGE,并將碼流歸還到碼流Buffer;此時(shí)應(yīng)用應(yīng)該調(diào)用本函數(shù)重新打開(kāi)重新打開(kāi) Engine模塊會(huì)導(dǎo)致圖像Buffer被 ,圖像Buffer管理模塊重新初始化。這一點(diǎn)顯示控制需要注意。函數(shù)原型intConfigSecVerticalScaleDownRatio( Decoder*pDecoder,int nScaleDownRatio)功能設(shè)置從路通道圖像垂直方向縮放比例因子。參數(shù)pDecoder:通過(guò)Create Decoder函數(shù)創(chuàng)建的nScaleDownRatio:圖像縮放比例因子。返回值0:表示成功;-1調(diào)用說(shuō)明當(dāng)從路通道縮放比例需求與主路通道不同時(shí),可通過(guò)調(diào)用此接口進(jìn)行設(shè)置;4.1.25.RotatePicture-17-函數(shù)原型intRotatePicture(Decoder*pDecoder,Picture*pPictureOut,int 功能pPictureIn4.1.25.RotatePicture-17-函數(shù)原型intRotatePicture(Decoder*pDecoder,Picture*pPictureOut,int 功能pPictureInBufferpPictureOut參數(shù)pDecoder:通過(guò)Create Decoder函數(shù)創(chuàng)建的 pPictureIn:輸入圖像;pPictureOutnRotateDegree:順時(shí)針旋轉(zhuǎn)角度,019021803270返回值0-1調(diào)用說(shuō)明pPictureOutePixelFormat目前已經(jīng)支持的像素格式轉(zhuǎn)換有:PIXEL_FORMAT_YUV_MB32_420PIXEL_FORMAT_YV12PIXEL_FORMAT_YUV_MB32_422PIXEL_FORMAT_YV12PIXEL_FORMAT_YUV_MB32_420PIXEL_FORMAT_NV21PIXEL_FORMAT_YUV_MB32_422PIXEL_FORMAT_NV21PIXEL_FORMAT_YV12PIXEL_FORMAT_NV21PIXEL_FORMAT_NV21PIXEL_FORMAT_YV12返回值成功:返回圖像BufferNULL調(diào)用說(shuō)明本函數(shù) 于 Decoder模塊,是全局函數(shù)。4.2.流程設(shè)計(jì)4.2.1.碼流數(shù)據(jù)傳輸流程碼流數(shù)據(jù)的傳輸通過(guò)RequestStreamBufferSubmitStreamDataAPI函數(shù)完成。RequestStreamBufferStreamBufferManagerBufferSubmitStreamDataStreamBufferManager。4.2.2.流程4.2.流程設(shè)計(jì)4.2.1.碼流數(shù)據(jù)傳輸流程碼流數(shù)據(jù)的傳輸通過(guò)RequestStreamBufferSubmitStreamDataAPI函數(shù)完成。RequestStreamBufferStreamBufferManagerBufferSubmitStreamDataStreamBufferManager。4.2.2.流程工作通過(guò)DecodeStreamAPI4.2.3.圖像輸出流程RequestPictureReturnPictureAPIRequestPicture函數(shù)從FrameBufferManager模塊取出一幀待顯示的圖像,送給外部程序。ReturnPicture函數(shù)將圖像歸還給FrameBufferManager,使器可以繼續(xù)使用該圖Buffer新的圖像。-18-4.3.內(nèi)部模塊接口設(shè)計(jì)4.3.1.StreamBufferManager碼流管理模塊接口如下表所示。4.3.1.1.SbmCreate函數(shù)4.3.1.2.SbmDestroy函數(shù)-19-函數(shù)原型voidSbmDestroy(Sbm*pSBM)功能銷毀碼流管理模塊, 相關(guān)軟內(nèi)存參數(shù)pSBM:通過(guò)SbmCreate返回值無(wú)函數(shù)原型Sbm*SbmCreate(intnBufferSize)功能BufferBuffernBufferSize參數(shù)nBufferSize:碼流Buffer返回值成功:返回碼流管理模塊指針;NULL;調(diào)用說(shuō)明4.3.內(nèi)部模塊接口設(shè)計(jì)4.3.1.StreamBufferManager碼流管理模塊接口如下表所示。4.3.1.1.SbmCreate函數(shù)4.3.1.2.SbmDestroy函數(shù)-19-函數(shù)原型voidSbmDestroy(Sbm*pSBM)功能銷毀碼流管理模塊, 相關(guān)軟內(nèi)存參數(shù)pSBM:通過(guò)SbmCreate返回值無(wú)函數(shù)原型Sbm*SbmCreate(intnBufferSize)功能BufferBuffernBufferSize參數(shù)nBufferSize:碼流Buffer返回值成功:返回碼流管理模塊指針;NULL;調(diào)用說(shuō)明Buffer4MB12MBStreamBufferManager1SbmCreate創(chuàng)建碼流管理模塊2SbmDesdroy銷毀碼流管理模塊, 內(nèi)存3SbmReset重置碼流管理模塊,恢復(fù)到剛創(chuàng)建時(shí)的狀態(tài)4SbmBufferAddressBuffer(基地址)5SbmBufferSizeBuffer(Buffer)6SbmStreamFra m流Buffer中未 的數(shù)據(jù)有多少幀;7SbmStreamDataSize流Buffer中未 的數(shù)據(jù)有多少,以字節(jié)為8SbmRequestBufferBuffer9SbmAddStream提交一幀碼流給碼流管理模塊10SbmRequestStream11SbmReturnStream把碼流歸還給碼流管理模塊, 模塊把未 的碼流歸還12SbmFlushStream刷除一幀碼流, 模塊把已經(jīng) 的碼流刷除SbmReset函數(shù)4.3.1.3.SbmBufferAddress函數(shù)4.3.1.4.SbmBufferSize函數(shù)4.3.1.5.m函數(shù)4.3.1.6.SbmStreamFra-20-函數(shù)原型intSbmStreamFram(Sbm*pSBM)功能獲取碼流Buffer中有多少幀未 的數(shù)據(jù)參數(shù)pSBM:通過(guò)SbmCreate返回值返回未 的碼流幀數(shù)調(diào)用說(shuō)明函數(shù)原型intSbmBufferSize(Sbm*pSBM)功能獲取碼流BufferSbmReset函數(shù)4.3.1.3.SbmBufferAddress函數(shù)4.3.1.4.SbmBufferSize函數(shù)4.3.1.5.m函數(shù)4.3.1.6.SbmStreamFra-20-函數(shù)原型intSbmStreamFram(Sbm*pSBM)功能獲取碼流Buffer中有多少幀未 的數(shù)據(jù)參數(shù)pSBM:通過(guò)SbmCreate返回值返回未 的碼流幀數(shù)調(diào)用說(shuō)明函數(shù)原型intSbmBufferSize(Sbm*pSBM)功能獲取碼流Buffer參數(shù)pSBM:通過(guò)SbmCreate返回值返回碼流Buffer調(diào)用說(shuō)明碼流Buffer函數(shù)原型void*SbmBufferAddress(Sbm*pSBM)功能Buffer參數(shù)pSBM:通過(guò)SbmCreate返回值Buffer調(diào)用說(shuō)明函數(shù)原型voidSbmReset(Sbm*pSBM)功能重置碼流管理模塊參數(shù)pSBM:通過(guò)SbmCreate返回值無(wú)調(diào)用說(shuō)明重置后,碼流管理模塊恢復(fù)剛創(chuàng)建時(shí)的狀態(tài),碼流數(shù)據(jù)被丟棄4.3.1.7.SbmStreamDataSize函數(shù)4.3.1.8.SbmRequestBuffer函數(shù)4.3.1.9.SbmAddStream函數(shù)-21-函數(shù)原型intSbmAddStream(Sbm*pSBM,StreamDataInfo*pDataInfo)功能提交一幀碼流給碼流管理模塊參數(shù)pSBM: 通過(guò)SbmCreate函數(shù)創(chuàng)建的碼流管理模塊指針;4.3.1.7.SbmStreamDataSize函數(shù)4.3.1.8.SbmRequestBuffer函數(shù)4.3.1.9.SbmAddStream函數(shù)-21-函數(shù)原型intSbmAddStream(Sbm*pSBM,StreamDataInfo*pDataInfo)功能提交一幀碼流給碼流管理模塊參數(shù)pSBM: 通過(guò)SbmCreate函數(shù)創(chuàng)建的碼流管理模塊指針;pDataInfo返回值0:表示成功;-1調(diào)用說(shuō)明pDataInfo包含的數(shù)據(jù)應(yīng)該是完整的一幀數(shù)據(jù),包含整數(shù)個(gè)數(shù)據(jù)單元。也pDataInfobIsFirstPartbIsLastPart1。函數(shù)原型intSbmRequestBuffer(Sbm* pSBM,int char**ppBuf,int* pBufSize)功能Buffer參數(shù)pSBM: 通過(guò)SbmCreate函數(shù)創(chuàng)建的碼流管理模塊指針;nRequireSizeBufferppBuf: BufferpBufSize: 輸出參數(shù),保存Buffer的大小,以字節(jié)為 ;返回值0:表示成功;-1調(diào)用說(shuō)明由于碼流Buffer是一塊循環(huán)Buffer,所以ppBuf返回的Buffer有可能會(huì) Buffer的末尾,外部需根據(jù)碼流Buffer的基地址、Buffer大小和本函數(shù)返回的Buffer地址和大小來(lái)判斷Buffer是否回頭。如果Buffer回頭,外部程序使用時(shí)應(yīng)該把該buffer分成兩塊使用。例如,碼流Buffer創(chuàng)建時(shí)指定大小為4MB(0x400000),碼流Buffer的基地址(通過(guò)SbmBufferAddress函數(shù)得到)為0x80000000,調(diào)用本函數(shù)時(shí),ppBuf返回的地址(*ppBuf)為0x803FF000,pBufSize返回的Buffer大小(*pBufSize)為32KB(0x2000),此時(shí)本函數(shù)給出的Buffer是回頭的,被分成兩段,第一段起始地址為0x803FF000,大小為16KB(0x1000),第二段起始地址為0x80000000,大小為16KB(0x1000),外部程序應(yīng)該注意這一點(diǎn)。函數(shù)原型intSbmStreamDataSize(Sbm*pSBM)功能獲取碼流Buffer中未 數(shù)據(jù)的總量,以字節(jié)為參數(shù)pSBM:通過(guò)SbmCreate返回值返回未 數(shù)據(jù)的總量調(diào)用說(shuō)明4.3.1.10.SbmRequestStream函數(shù)4.3.1.11.SbmReturnStream函數(shù)4.3.1.12.SbmFlushStream函數(shù)-22-函數(shù)原型intSbmFlushStream(Sbm*pSBM,StreamDataInfo*pDataInfo)功能刷除一幀碼流參數(shù)返回值pSBM: 通過(guò)SbmCreate函數(shù)創(chuàng)建的碼流管理模塊指針;pDataInfo:4.3.1.10.SbmRequestStream函數(shù)4.3.1.11.SbmReturnStream函數(shù)4.3.1.12.SbmFlushStream函數(shù)-22-函數(shù)原型intSbmFlushStream(Sbm*pSBM,StreamDataInfo*pDataInfo)功能刷除一幀碼流參數(shù)返回值pSBM: 通過(guò)SbmCreate函數(shù)創(chuàng)建的碼流管理模塊指針;pDataInfo:通過(guò)SbmRequestStream函數(shù)獲取的一幀碼流0:表示成功;-1調(diào)用說(shuō)明本函數(shù)一般是 Engine 完一幀碼流后,刷除該碼流時(shí)調(diào)用;調(diào)用本函數(shù)后,碼流會(huì)從管理模塊中刷除,內(nèi)存空間被騰出,用于存放新的碼流數(shù)據(jù)。函數(shù)原型intSbmReturnStream(Sbm*pSBM,StreamDataInfo*pDataInfo)功能歸還未 的一幀碼流給碼流管理參數(shù)pSBM: 通過(guò)SbmCreate函數(shù)創(chuàng)建的碼流管理模塊指針;pDataInfo:通過(guò)SbmRequestStream返回值0:表示成功;-1調(diào)用說(shuō)明本函數(shù)一般是 Engine歸還未 的碼流時(shí)調(diào)用;調(diào)用本函數(shù)后,碼流會(huì)按照原來(lái)的順序重新放入管理模塊。函數(shù)原型StreamDataInfo*SbmRequestStream(Sbm*pSBM)功能從碼流管理模塊過(guò)去一幀碼流參數(shù)pSBM:通過(guò)SbmCreate返回值成功:返回一幀碼流信息的指針;NULL調(diào)用說(shuō)明碼流按照先進(jìn)先出的規(guī)則給出;本函數(shù)一般是 Engine獲取碼流時(shí)調(diào)用。4.3.2.FrameBufferManager圖像Buffer管理模塊接口如下表所示。4.3.2.1.FbmCreate函數(shù)-23-函數(shù)原型Fbm*FbmCreate(intnFra m,intnWidth,intnHeight,intnLineStride,intePixelFormat,intbThumbnailMode)功能創(chuàng)建圖像Buffer管理模塊,指定圖像大小、像素格式和Buffer個(gè)數(shù)參數(shù)nFra m:圖像BuffernWidthnHeightnLineStride:圖像在內(nèi)存中存放的行寬,以像素為 ePixelFormat:圖像像素格式;bThumbnailMode:4.3.2.FrameBufferManager圖像Buffer管理模塊接口如下表所示。4.3.2.1.FbmCreate函數(shù)-23-函數(shù)原型Fbm*FbmCreate(intnFra m,intnWidth,intnHeight,intnLineStride,intePixelFormat,intbThumbnailMode)功能創(chuàng)建圖像Buffer管理模塊,指定圖像大小、像素格式和Buffer個(gè)數(shù)參數(shù)nFra m:圖像BuffernWidthnHeightnLineStride:圖像在內(nèi)存中存放的行寬,以像素為 ePixelFormat:圖像像素格式;bThumbnailMode:是否是 縮略圖模式;FrameBufferManager1FbmCreate創(chuàng)建圖像Buffer2FbmDestroy銷毀圖像Buffer3FbmFlush將待顯示隊(duì)列中的幀都刷除,放入空幀隊(duì)列4FbmGetBufferInfo獲取圖像BufferLineStride5FbmTotalBufferNum詢問(wèn)總共有多少個(gè)圖像Buffer6FbmEmptyBufferNum詢問(wèn)目前有多少個(gè)空閑的圖像Buffer7FbmValidPictureNum詢問(wèn)有多少幀圖像待顯示8FbmRequestBuffer獲取一個(gè)圖像Buffer9FbmReturnBuffer歸還一個(gè)圖像Buffer, 器 完后輸出圖像時(shí)調(diào)用10FbmShareBuffer器與圖像管理模塊共享一個(gè)圖像Buffer, 器 完后輸出圖像,但該圖像同時(shí)需要保留在 器內(nèi)作為參考幀時(shí)使用11FbmRequestPicture獲取一個(gè)輸出圖像12FbmReturnPicture新圖像13FbmNextPictureInfo獲取下一幀圖像的信息,與FbmRequestPicture類似,但 使圖像從顯示隊(duì)列中刪除。14FbmAllocatePictureBuffer為一個(gè)圖像結(jié)構(gòu)體對(duì)象申請(qǐng)數(shù)據(jù)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論