logo资料库

视频编码库概要设计报告.pdf

第1页 / 共25页
第2页 / 共25页
第3页 / 共25页
第4页 / 共25页
第5页 / 共25页
第6页 / 共25页
第7页 / 共25页
第8页 / 共25页
资料共25页,剩余部分请下载后查看
音视频解码库项目 视频编码库概要设计报告
文档履历 版本号 日期 制/修订人 内容描述 V0.1 V0.2 V1.0 V1.1 2014-07-11 方宁 初稿 2015-05-28 2015-05-28 去掉内部模块接口设计部分 Release 版 2015-09-17 杨草原 在 264 编码中增加了插 skip 帧功能,在 jpeg 编码中扩展 了 exif 信息 i
目 录 1.1. 概述.......................................................................................................................................... - 1 - 1.1. 编写目的...................................................................................................................... - 1 - 1.2. 适用范围...................................................................................................................... - 1 - 1.3. 相关人员...................................................................................................................... - 1 - 2.2. 模块介绍.................................................................................................................................. - 2 - 2.1. 功能介绍...................................................................................................................... - 2 - 2.2. 相关术语介绍.............................................................................................................. - 2 - 3.3. 模块体系结构设计.................................................................................................................. - 3 - 3.1. Frame Buffer 管理...................................................................................................... - 4 - 3.2. Bitstream Manager 管理.............................................................................................. - 4 - 3.3. Video Encoder device 管理..........................................................................................- 4 - 4.4. 接口和流程设计...................................................................................................................... - 5 - 4.1. 接口函数...................................................................................................................... - 5 - 4.1.1. VideoEncCreate..............................................................................................- 5 - 4.1.2. VideoEncDestroy............................................................................................- 5 - 4.1.3. VideoEncInit..................................................................................................- 6 - 4.1.4. VideoEncUnInit..............................................................................................- 6 - 4.1.5. AllocInputBuffer..........................................................................................- 7 - 4.1.6. GetOneAllocInputBuffer..............................................................................- 7 - 4.1.7. FlushCacheAllocInputBuffer......................................................................- 8 - 4.1.8. ReturnOneAllocInputBuffer........................................................................- 8 - 4.1.9. ReleaseAllocInputBuffer............................................................................- 8 - 4.1.10. AddOneInputBuffer......................................................................................- 9 - 4.1.11. VideoEncodeOneFrame..................................................................................- 9 - 4.1.12. AlreadyUsedInputBuffer............................................................................- 9 - 4.1.13. ValidBitstreamFrameNum............................................................................- 9 - 4.1.14. GetOneBitstreamFrame..............................................................................- 10 - 4.1.15. FreeOneBitStreamFrame............................................................................- 10 - 4.1.16. VideoEncGetParameter..............................................................................- 11 - 4.1.17. VideoEncSetParameter..............................................................................- 11 - 5.5. 数据结构设计........................................................................................................................ - 12 - 5.1. VencBaseConfig......................................................................................................... - 12 - 5.2. VencH264ProfileLevel............................................................................................... - 12 - 5.3. VencQPRange.............................................................................................................- 13 - 5.4. MotionParam.............................................................................................................. - 13 - 5.5. VencHeaderData.........................................................................................................- 13 - 5.6. VencInputBuffer......................................................................................................... - 13 - 5.7. VencOutputBuffer.......................................................................................................- 14 - 5.8. VencAllocateBufferParam..........................................................................................- 14 - 5.9. VencH264FixQP.........................................................................................................- 15 - 5.10. VencCyclicIntraRefresh............................................................................................- 15 - ii
5.11. VencH264Param.......................................................................................................- 15 - 5.12. VencROIConfig........................................................................................................ - 16 - 5.13. VENC_DEVICE............................................................................................................ - 16 - 5.14. VENC_INDEXTYPE......................................................................................................- 18 - 6.6. Declaration................................................................................................................................- 20 - iii
1.1. 概述概述 1.1. 编写目的 设计视频编码库的基本框架、内/外部接口、主要数据结构和流程。指导视频编码库的 开发、使用和后续维护。 1.2. 适用范围 T3/A80/A83/H3/H8 等各个芯片平台的 Android 系统 SDK 和 Linux SDK。 1.3. 相关人员 开发和维护视频编码库的相关人员。 - 1 -
2.2. 模块介绍 模块介绍 2.1. 功能介绍 视频编码库是一个提供视频编码功能的库,编译输出的库文件为 libvencoder.so。基于视 频编码库,应用程序可以在全志公司的各个 IC 平台上实现高效的、多种压缩格式的视频编 码功能,所支持的压缩格式为:JPEG、H264,VP8(仅 A80 支持)。 2.2. 相关术语介绍 QP:量化参数; Exif:在 JPEG 格式头部插入了数码照片的信息,包括拍摄时的光圈、快门、白平衡、 ISO、焦距、日期时间等 - 2 -
3.3. 模块体系结构设计 模块体系结构设计 视频编码库由帧缓冲输入管理模块(Frame Buffer Manager)、视频编码设备(Video Encoder device)、码流输出管理模块(Bitstream Manager)以及编码控制模块(vencoder) 组成,如图 1 所示。其中: Frame Buffer Manager 负责编码输入图像 frame 的管理; Bitstream Manager 负责视频压缩输出码流的管理; Video Encoder device 负责将输入的图像帧编码成压缩码流; vencoder 控制编码流程,对外提供编码库的接口函数。 图 1. 视频编码库模块结构图 vencoder 调用 Video Encoder device 的编码函数时,vencoder 先从 Frame Buffer Manager 取出输入的图像帧,然后把获取到的图像帧送给 Video Encoder device,Video Encoder device 从 Bitstream Manager 获取有效的输出 buffer 的起始地址和 offset,并把 相应的 Bitstream 起始地址和 offset 配给 VE, 启动 VE 后,将会输出相应的码流到 Bitstream Manager 模块。 编码后,Video Encoder device 将更新 Bitstream Manager 模块中有效码流信息,把 相应的码流加入 Bitstream Manager 模块的输出队列。 外部程序通过调用 vencoder 把图像 frame 送给 Frame Buffer Manager 模块,外部应用 程序通过 vencoder 从 Bitstream Manager 获取输出的码流。 - 3 -
分享到:
收藏