![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
视频编码
文章平均质量分 53
xidianliye
这个作者很懒,什么都没留下…
展开
-
HEVC码率控制
HEVC码率控制从encodemain.cpp开始进入码率控制码率分配Picture level 的码率控制主要函数调用encmain.cppint main(int argc, char* argv[]){ TAPPEncTop cTAppEncTop; ... cTAppEncTop.create(); ... cTAppEncTop.parse原创 2016-12-15 20:37:21 · 1171 阅读 · 0 评论 -
HEVC中编码每个CTU的码流跟踪
熵编码的重要类:TEncEntropy和TEncEntropyIfTEncEntropyIf是纯熵编码的类,只有纯虚成员函数,没有数据成员。因此TEncEntropyIf是一个抽象类,等待被继承,纯虚函数在继承类中被定义。 **纯虚函数只有函数的名字而不具备函数的作用,留待派生中被定义。... virtual Void codeVPS ( const TCom原创 2017-07-07 15:38:18 · 1527 阅读 · 0 评论 -
HEVC函数解析-TEncEntropyIf的子类
在TEncEntropy.hpp中,TEncEntropy被定义为抽样类,包含了各种code函数,申明为纯虚函数,这些函数具体的功能实现,由不同的派生子类定义。 首先是TEncCavlc子类class TEncCavlc: public syntaxElementWriter, public TEncEntropyIf{ codeVPS(); codeSPS(); cod原创 2017-10-08 19:35:16 · 465 阅读 · 0 评论 -
HEVC函数解析
熵编码函数原创 2017-10-08 08:11:47 · 996 阅读 · 0 评论 -
HEVC print out summary中 BitRate组成部分
整个序列的BitRate信息在哪里输出? TAppEncTop中,编完整个序列,输出R和D信息Void TAppEncTop::encode(){ fstream bitstreamFile(m_bitstreamFileName.c_str(), fstream::binary | fstream::out); //定义文件流指向编码输出码流文件 if (!bitstreamFi原创 2017-04-13 11:02:17 · 675 阅读 · 0 评论 -
HEVC intra和inter码率控制的不同
在compressGOP()函数中compressGOP(){ ... for (Int iGOPid=0;iGOPid<m_iGopSize;iGOPid++) { m_pcSliceEncoder->initEncSlice ( pcPic, iPOCLast, pocCurr, iGOPid, pcSlice, isField );//设置当前Sli原创 2017-03-27 09:48:18 · 1636 阅读 · 1 评论 -
HEVC YUV数据的获取
HM代码中有两个类用来保存YUV数据。分别在TComPicYuv.h和TComYuv.h中TComYuvclass TComYuv{ Pel* m_apiBuf[MAX_NUM_COMPONENT]; UInt m_iWidth; UInt m_iHeight; Pel* getAddr(const ComponentID id)原创 2017-03-26 22:46:26 · 1522 阅读 · 1 评论 -
HEVC码率控制(三):picture level的比特分配
使用二分法求解GOP级别的lambdaDouble TEncRCGOP::xSolveEqua( Double targetBpp, Double* equaCoeffA, Double* equaCoeffB, Int GOPSize ){ Double solution = 100.0; Double minNumber = 0.1; Double maxNumber = 1000原创 2017-03-08 17:51:52 · 629 阅读 · 0 评论 -
HEVC码率控制(三):picture level的比特分配
每个picture的比特分配权重,跟GOP级别的Lagrangian multiplier lambda有关。已知GOP内每个picture的alpha和beta,在保证所有Picture的target bit加起来等于GOP的target bit的前提下,通过二分法,迭代求出GOP的拉格朗日乘子。在 TEncTop:encode()函数中,执行compress GOP( )之前,还执行了一句对每个原创 2017-03-08 17:12:50 · 1744 阅读 · 0 评论 -
HEVC码率控制(二):从compressGOP()到compressSlice()
compressGOP()函数要点:根据iGOPid逐次递增,对一个GOP内的picture依次编码根据picture level对当前picture进行码率分配实际中一个Pic就是一个Slice,因此关于slice的循环只执行一次(默认)根据已经编过的picture,来得到当前picture的lambda得到当前picture的lambda后,对该picture下每一个CTU进行码率分配原创 2016-12-16 22:26:25 · 1507 阅读 · 0 评论 -
HEVC中类,对象和指向对象的指针
HEVC代码中定义了几十种类,这些类的对象一般只实例化一次,在编码过程中都是通过指针来访问实例化的对象。 唯一以类名实例化的对象:cTAppEncTopmain (){ TAppEncTop cTAppEncTop;}这个对象被建立时,它的所有数据成员也被建立,并实例化(占据存储空间)class TAppEncTop{ TEncTop m_cTEncTop}而m_cTEnc原创 2017-10-12 14:51:32 · 627 阅读 · 0 评论