开发工具:
文件大小: 199kb
下载次数: 0
上传时间: 2019-07-02
详细说明:1.1. 编写目的
设计视频编码库的基本框架、内/外部接口、主要数据结构和流程。指导视频编码库的
开发、使用和后续维护。
1.2. 适用范围
T3/A80/A83/H3/H8 等各个芯片平台的Android 系统SDK 和Linux SDK文档履历
版本号
日期
制/修订人
内容描述
V0.1
2014-07-11
初稿
2015-05-28
去掉内部模块接口设计部分
V1.0
2015-0528
Release版
在264编码中增加了插skip帧功能,在jpeg编码中扩展
V1.1
2015-09-17
杨草原
了exif信息
目录
1.概述……
1.1.编写目的.
1.2.适用范围
1.3.相关人员
2.模块介绍…
2.1.功能介绍…
2.2.相关术语介绍
3.模块体系结构设计.…
3.1. Framc Buffer管理.
222344
3.2. Bitstream Manager管理
3.3.Ⅴ ideo encoder device管理
4.接口和流程设计.
4.1.接口函数
5
411. Videoencc
4.1.2. VideoEncDestr
1.1.3. VideoEncIr
4.1.4. VideoEncUnInit
6
4.1.5. Alloc InputBuffer
4.1.6. GctOncAlloc Input Buffer
4.1.7. FlushCacheAllocInputBuffer
8
41.1.8. ReturnOneAllocInputBuffer........... -8
4. 1.9. Releasealloc InputBuffer
4. 1.10. AddOne InputBuffer.
···
4.1.11. VidcoEncodconcframe
4.1. 12. AlreadyUsedInputBuf
1. 1.13. ValidBitstreamFrame Num
4.114. Get Onebitst reamframe
10
4.1.15. FreeOnebitstreamFrame
10
4.1.16. VidcoEncgetParamcter
4.1.17. VideoEncsetParameter
5.数据结构设计…
5. 1. VencBase Config
12
5.2. VencH264Profilelevel
12
5.3. VencQPRange
-13
5. 4. Motion param
………-13-
5.5.Ⅴ encHeaderData.
13
5. 6. VcncInputBuffcr
13
5. 7. Venc OutputBuffer
5.8.Ⅴ enc Allocate BufferParam.……
14
5. 9. VencH264FixQP
-15
5.10. Venc CyclicIntraRefresh
15-
5.11. Venc H264 Param
15-
5. 12. VencROIConfig
16
5.13. VENC DEVICE
5.14. VENC INDEXTYPE
6. Declaration
∴-20-
1.概述
1.1.编写目的
设计视频编码库的基本框架、内/外部接口、主要数据结构和流程。指导视频编码库的
开发、使用和后续维护。
1.2.适用范围
T3/A80/A83/H3H8等各个芯片平台的 Android系统SDK和 Linux SDk。
1.3.相关人员
开发和维护视频编码库的相关人员
2.模块介绍
2.1.功能介绍
视频编码库是一个提供视频编码功能的库,编译输岀的库文件为 libvencoder.so。基于视
频编码库,应用程序可以在全志公司的各个lC平台上实现高效的、多种压缩格式的视频编
码功能,所支持的压缩格式为:JPEG、H264,VP8(仅A80支持)。
2.2.相关术语介绍
QP:量化参数
Exif:在PFG格式头部插入了数码照片的信息,包括拍摄时的光圈、快门、白平衡、
IS0、焦距、日期时间等
3.模块体系结构设计
视频编码库山帧缓冲输入管理模块( Frame Buffer Manager)、视频编码设备( Video
Encoder device)、码流输岀管理模垬(BitsτreεπMaεger)以及编码控制模块( encoder)
组成,如图1所示。其中
Frame Buffer manager负责编码输入图像 frame的管理
Bitstream Manager负责视频压缩输出码沇的管理;
Video encoder device负责将输入的图像帧编码成压缩码流;
encoder控制编码流程,对外提供编码库的接口函数
encoder
FramebufferManager
VencoderDevice
u BitstreamManager
图1.视频编码库模块结构图
encoder调用Ⅴ i deo encoder device的编码函数时, encoder先从 Frame Buffer
Manager取出输入的图像帧,然后把获取到的图像帧送给 Video encoder device,ideo
Encoder device从 Bitstream Manager获取有效的输出 buffer的起始地址和 offset,并把
相应的 Bitstream起始地址和 offsct配给V,启动V后,将会输出相应的码流到 Bitstream
Manager模块。
编码后, Video encoder deyice将更新 Bitstream manager模块中有效码流信息,把
相应的码流加入 Bitstream manager模块的输出队列。
外部程序通过调用 encoder把图像 frame送给 Frame Buffer manager模块,外部应用
程序通过 encoder从 Bitstream Manager获取输出的码流
3
3.1. Frame Buffer管理
Frame Buffer Manager模块用来管理输λ图像帧,现在攴持两种类型的输入图像帧,
种是输入图像帧的内存由外部模块申请,另·种是输入图像帧的内仔由 encoder通过
rame Buffer管理模块来申请
(1)第一种情况由 Frame Buffer Manager来管理外部模块內存的指针,在模块内部仅
存在内存指针地址的传递;
(2)第二种情况由 Frame Buffer manager来申请输入图像帧的内存,并提供相应的接
口,供外部应用程序向相应的内存中溵移图像数据。
为了效率的考虑,当外部模块有自己的 frame buffer管理,并且所使用的内存为物理
连续的内存的时候,直接使用外部模块提供的内存的地址来编码。例如:在 camera录像中
camera有自己的帧管理队列,此时直接把 camera的 buffer地址传递给 Frame Buffer
Manager模块就可以了。
3.2. Bitstream Manager管理
Bitstream Manager管理模块在初始化的吋候会申请·块2MB8M的一块物埋连续的内
存供编码输岀码流使用。
Bitstream manager模块按照帧结构来管理输岀码流,模块内部的结构体SreaπInfo
记求」每一帧的长度、 offset等信息;
Bitstream Manager模块申请的内存的起始地址、 offse会配给硬件,硬件使用的是
个循环的 buffer,硬件输出的 Bitstream在内存尾部边界的时候,超过内存尾部边界的数
据将公存储在从起始地址开始的内存中,这个时候码流信息由两部分组成
3.3. Video encoder device管理
此模块提供操作ν硬件编码的接∏,包括H264、Jpeg、ⅥP8编码
4.接口和流程设计
4.1.接口函数
视频编码库APIs
Video Enc create
创建一个视频编码器
Video Encdestroy
销毁视频编码器
Video enclnit
初始化视频编码器
VideoEnc UnInit
去初始化视频编码器
AllocInputBuffer
通过 encoder申请输入图像帧 buffer
GetOneAllocInputButfer
获取一块由 encoder分配的图像帧
Flush Cache AllocInput Buffer
刷 cache保持数据的一致性
ReturnOneAlloclnputBuffer
还回由 encoder申请的图像帧
ReleaseallocInput buffer
释放由 encoder申请的图像帧
ddOnelnputButier
添加一块输入的图像帧到编码器
VideoEncode OneFrame
编码一帧图像
Already UsedInputBuffer
获取编码器已经使用过的图像帧
ValidBitstream frameNum
获取有效的输出码流 buffer的个数
GctOncBitstrcam Framc
获取一个码流 buffer
FreeOneBilStream Frame
还回码流 buffer
Video Enc getParameter
获取编码器参数
Video Enc Set Parameter
设冒编码器参数
4.1.1. VideoEnc Create
匚函数原型 ideo Encoder video Create(VENC CodEc TYPe e Codectype
功能创建个视频编码器
参数 c Codec typc:创建的编码器codc类型
返回值成功:视频编码器指针;
失败:返回NULL
匚调用说明」视频编码器支持创建多个编码器,文持多路缑码
4. 1.2. VideoEncDestroy
函数原型 void Video Destroy( Videoencoder* eNcoder)
功能销毁视频编码器
参数
eNcoder:通过Ⅴ ideo Enc Create函数创建的视频编码器指针
返回值无
匚调用说明无
5
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.