![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
视频编解码
文章平均质量分 72
青椒鸡汤
多走多看多学
展开
-
VVC 得到预测值,计算BDrate(xCheckModeSplit()函数未写完)
/测试存储预测缓存std::ofstream out("C:\\Users\\qjjt\\Desktop\\输出.txt");i++){j++){out原创 2022-09-07 16:58:36 · 785 阅读 · 1 评论 -
VVC 帧内预测代码 xPredIntraAng()函数
帧内预测中的initPredIntraParams()函数 (负参考方向处在跑代码时再看一遍)_青椒鸡汤的博客-CSDN博客H.266/VVC-VTM代码学习-帧内预测05-Angular模式下计算预测像素值xPredIntraAng_liaojq2020的博客-CSDN博客H.266/VVC代码学习21:帧内角度预测的实现 / 近对角模式的PDPC(xPredIntraAng)_海洋之心。的博客-CSDN博客H.266/VVC代码学习:帧内预测之角度预测函数(predIntraAng、xPredIntra原创 2022-07-13 20:51:56 · 1034 阅读 · 0 评论 -
VVC帧内预测 xPredIntraPlanar(),xPredIntraDc()函数
这是正式标准的算法 参考像素为蓝色(x = −1, y = −1..nTbH)和粉色(x = 0..nTbW, y = −1)注意: pSrc.at( k + 1, 0 )这里K+1就是为了不把左上角参考像素存进数组,以64X64为例,一共存入65个值。topRow[64]即第65个值bottomLeft:就是atopRight:是ca和c的值不会变然后再根据当前预测像素的位置,结合b,d得出像素预测值具体计算公式: bottomRow[],rightColumn[]:a,c通过与leftColumn原创 2022-07-07 15:49:22 · 395 阅读 · 0 评论 -
VVC 帧内预测 predIntraAng()函数 (getCoLocatedLumaPU没写)
H.266/VVC-VTM代码学习-帧内预测05-Angular模式下计算预测像素值xPredIntraAng_liaojq2020的博客-CSDN博客VVC学习之五:帧内预测——67个模式预测信号生成 predIntraAng()_Aidoneus_y的博客-CSDN博客piPred:里面有W,H,Stride三个参数,建议在最边缘有填充的CTU时运行一下,看一下具体操作uiDirMode:亮度BDPCM模式?BDPCM_IDX:色度BDPCM模式?BDPCM_IDX:getFinalIntraMo原创 2022-07-04 14:27:09 · 226 阅读 · 0 评论 -
帧内预测中的initPredIntraParams()函数 (负参考方向处在跑代码时再看一遍)
帧内预测流程(还有几个小细节)_青椒鸡汤的博客-CSDN博客_帧内预测H.266/VVC-VTM代码学习-帧内预测01-初始化帧内预测参数IntraPrediction::initPredIntraParams_liaojq2020的博客-CSDN博客H.266/VVC代码学习:帧内预测之初始化帧内预测参数(initPredIntraParams)_涵小呆的博客-CSDN博客 H.266/VVC代码学习:帧内预测之角度预测函数(predIntraAng、xPredIntraAng)_涵小呆的博客-CSDN博原创 2022-06-30 11:33:07 · 529 阅读 · 2 评论 -
VVC代码阅读 帧内预测部分(1) xCheckRDCostIntra()函数(部分)
VVC参考软件VTM6.0中变换的相关代码讲解与注释(一)_sky_Ryota的博客-CSDN博客VTM6变换算法小结(译自O2002)_Allen---Jiang的博客-CSDN博客亮度预测函数前MTS:多变换核选择LFNST:低频不可分离变换trGrp:推测应该是代表一个过程,测试MTS和LFNST在不同情况下的模式。有很多个trGrp变换的部分先粗略看,可参考VTM10.0代码学习13:xCheckRDCostIntra()_柴门风雪夜的博客-CSDN博客addPUs()可参考之前写的ad原创 2022-06-27 16:55:37 · 454 阅读 · 0 评论 -
VVC中图块划分结果在图像上显示(中间有一段没写完)
参考改进《VVC/VTM中CU的划分结果打印》_pengyouyou的博客-CSDN博客VVC学习之二:VTM中CU划分结构QTMTT(3):打印QTMTT最终划分_Aidoneus_y的博客-CSDN博客VTM14思路: 如果只是想看图像划分结果,不在乎之后的解码时的影响。即可在重建值中将各个不同划分类型的CU染色记录下CU的划分类型,最后根据划分类型显示在划分开始的时候(递归开始),划分出子节点,此时将划分类型保存到CS之中;然后由CS告知其中的每个CU;最后,每个CU被编码后,将CU的划分信息回传给父原创 2022-06-24 20:22:36 · 809 阅读 · 1 评论 -
xCheckModeSplit()函数中的RDcost(还没写,6.11写)
占坑原创 2022-06-08 13:26:08 · 201 阅读 · 2 评论 -
xCheckBestMode()和useModeResult()函数解析 (未写完,6.11写)
v原创 2022-06-01 21:43:39 · 443 阅读 · 1 评论 -
xCheckModeSplit() 中QTBTPartitioner::nextPart()和exitCurrSplit()函数解析
作用: currIdx:因为当前父CU有多个子CU,所以currIdx代表当前CU的idx,这里m_partStack的idx也加1。这个会在接下来的exitCurrSplit()函数有相应设置 if语句(currIdx == 1):prevCU代表当前CU的area,这里推测应该是根据prevCU的情况来判断当前层的第一个子CU的划分情况并写入m_partStack的firstSubPartSplit。当前层为现在CU的父CU所划分的那几个CUif语句(currIdx < m_partStack.b原创 2022-06-01 15:33:56 · 296 阅读 · 0 评论 -
xCheckModeSplit()中的useSubStructure()函数,releaseIntermediateData()函数解析,add()函数解析(getBuf()函数没看)
主要作用:将子cu的最优模式信息copy到tempCS中releaseIntermediateData()函数:明天写原创 2022-06-01 15:30:50 · 360 阅读 · 0 评论 -
一次完整的图像划分测试流程
ALL-intra模式,图片832X480,BasketballDrill_832x480_50.yuv。从compressCTU进入conpressCu(),第一个CTU为128 x 1281.当前CTUinitCULevel():VTM1.0代码阅读:EncModeCtrl类_矛盾统一的博客-CSDN博客m_ComprCUCtxList:先加入QT.CU-DONT-SPLIT再加入intra模式但注意:intra模式在 initCULevel()函数最后一段的tryModeMaster()中被跳过了,原创 2022-06-08 20:00:22 · 633 阅读 · 14 评论 -
jvet-w2002 预测段翻译 (未完成)
3.3帧内预测3.31 帧内预测的67种模式To capture the arbitrary edge directions presented in natural video, the number of directional intra modes in VVC is extended from 33, as used in HEVC, to 65. The new directional modes not in HEVC are depicted as red dotted arrows原创 2022-07-12 09:51:37 · 289 阅读 · 0 评论 -
图像划分过程中的splitCurrArea()函数以及其中的getCUSubPartitions()函数
void QTBTPartitioner::splitCurrArea( const PartSplit split, const CodingStructure& cs ){ CHECKD( !canSplit( split, cs ), "Trying to apply a prohibited split!" ); bool isImplicit = isSplitImplicit( split, cs ); bool canQtSplit = canSplit( CU_QU.原创 2022-05-18 16:36:53 · 438 阅读 · 1 评论 -
initCULevel()函数部分,cansplit()函数
void EncModeCtrlMTnoRQT::initCULevel( Partitioner &partitioner, const CodingStructure& cs ){ // Min/max depth unsigned minDepth = 0; unsigned maxDepth = floorLog2(cs.sps->getCTUSize()) - floorLog2(cs.sps->getMinQTSize( m_slice->get.原创 2022-05-16 20:06:10 · 445 阅读 · 0 评论 -
VVENC 初探究
vvenc和vvdec_Dillon2015的博客-CSDN博客【Codecs系列】H.266开源编解码器:vvenc和vvdec介绍_飞翔的鲲的博客-CSDN博客_h266编码器1.参考VTM安装的方法,在CMAKE里配置vvenc2. 在VVENC根目录里建立一个build文件夹,把要测试的序列和序列CFG都放进去。在github页面有一个进去后在命令行里配置环境。把这些全输入一遍(没搞懂什么意思,能用就行)4.这时候vvenc根目录中的bin里面应该有个debu..原创 2022-05-14 18:32:31 · 928 阅读 · 1 评论 -
VTM图像划分过程的tryModeMaster()函数,getImplicitSplit()(隐式分割)如何在CTU初划分时跳过intra
这个函数判断当前m_ComprCUCtxList栈顶中的模式是否要跳过的,为真的话,则运行nextmod()函数,跳过 ComprCUCtx& cuECtx = m_ComprCUCtxList.back(); // Fast checks, partitioning depended if (cuECtx.isHashPerfectMatch && encTestmode.type != ETM_MERGE_SKIP && encTestmod原创 2022-05-06 15:13:42 · 848 阅读 · 0 评论 -
xcompressCU函数中划分模式的确定
xcompressCU()函数中inter,intra等模式的选择是由initCULevel()函数确定的// Add unit split modes if( !cuECtx.get<bool>( QT_BEFORE_BT ) ) { for( int qp = maxQP; qp >= minQP; qp-- ) { m_ComprCUCtxList.back().testModes.push_back( { ETM_SPLIT_QT, ET原创 2022-04-21 10:28:39 · 686 阅读 · 0 评论 -
initSubStructure()函数
void CodingStructure::initSubStructure( CodingStructure& subStruct, const ChannelType _chType, const UnitArea &subArea, const bool &isTuEnc ){ CHECK( this == &subStruct, "Trying to init self as sub-structure" ); subStruct.useDbCost =.原创 2022-04-20 19:29:17 · 523 阅读 · 0 评论 -
VVC代码阅读 xCheckModeSplit()函数 (中间CABAC还没看)最后代码还没看完
//当前测试qp const int qp = encTestMode.qp; //当前slice const Slice &slice = *tempCS->slice; // 之前的QP const int oldPrevQp = tempCS->prevQP[partitioner.chType]; // 之前的LUT const auto oldMotionLut = tem...原创 2022-04-20 20:46:05 · 554 阅读 · 0 评论 -
signalModeConsVal()函数解析
const int CodingStructure::signalModeCons( const PartSplit split, Partitioner &partitioner, const ModeType modeTypeParent ) const{ if (CS::isDualITree(*this) || modeTypeParent != MODE_TYPE_ALL || partitioner.currArea().chromaFormat == CHROMA_444 ||.原创 2022-04-20 09:38:18 · 212 阅读 · 0 评论 -
VVC代码阅读 xCompressCU(2) do while结构 最后面有两小段函数没看
H.266/VVC代码学习:xCompressCU函数_涵小呆的博客-CSDN博客尝试当前编码器各种可用的模式:如skip,帧间,帧内,PCM等,进行预测及划分。do{} while( m_modeCtrl->nextMode( *tempCS, partitioner ) );for (int i = compBegin; i < (compBegin + numComp); i++) { ComponentID comID = jointPLT ?原创 2022-04-20 10:24:33 · 628 阅读 · 0 评论 -
xCompressCU(1)(PLT未写)
传入的参数void EncCu::xCompressCU( CodingStructure*& tempCS, CodingStructure*& bestCS, Partitioner& partitioner, double maxCostAllowed ){ CHECK(maxCostAllowed < 0, "Wrong value of maxCostAllowed!"); uint32_t compBegin; uint32_t num.原创 2022-04-19 09:38:00 · 326 阅读 · 0 评论 -
currCsArea参数具体意思
inline UnitArea clipArea(const UnitArea &area, const UnitArea &boundingBox){ UnitArea ret(area.chromaFormat); for (uint32_t i = 0; i < area.blocks.size(); i++) { ret.blocks.push_back(clipArea(area.blocks[i], boundingBox.blocks[i]));.原创 2022-04-18 15:56:36 · 192 阅读 · 0 评论 -
VVC 代码阅读 compressCtu()函数
void EncCu::compressCtu( CodingStructure& cs, const UnitArea& area, const unsigned ctuRsAddr, const int prevQP[], const int currQP[] )VTM3.0代码阅读:compressCtu函数_矛盾统一的博客-CSDN博客H.266/VVC代码学习13:VTM4.0中的CU层操作(compressCtu 、 xCompressCU)_海洋之心。的博客-CSD..原创 2022-04-14 14:33:57 · 529 阅读 · 2 评论 -
vvc代码阅读 encodeCtus()
CodingStructure& cs = *pcPic->cs; Slice* pcSlice = cs.slice; const PreCalcValues& pcv = *cs.pcv;//提前计算好的数据,所有ctu通用 const uint32_t widthInCtus = pcv.widthInCtus;//可知一帧中一行有的ctu个数#if ENABLE_QPA .原创 2022-04-13 19:16:01 · 765 阅读 · 0 评论 -
VVC代码阅读 compressSlice()
void EncSlice::compressSlice( Picture* pcPic, const bool bCompressEntireSlice, const bool bFastDeltaQP ){ // if bCompressEntireSlice is true, then the entire slice (not slice segment) is compressed, // effectively disabling the slice-segment-mode..原创 2022-04-10 20:32:49 · 831 阅读 · 2 评论 -
setRefPOCList()解释(在 B 帧时记得验证一下)
setRefPOCList()void Slice::setRefPOCList (){ for (int iDir = 0; iDir < NUM_REF_PIC_LIST_01; iDir++) { for (int iNumRefIdx = 0; iNumRefIdx < m_aiNumRefIdx[iDir]; iNumRefIdx++) { m_aiRefPOCList[iDir][iNumRefIdx] = m_apcRefPi原创 2022-04-06 15:23:13 · 209 阅读 · 0 评论 -
VCC图像基本划分 (翻译)
Algorithm description of Versatile Video Coding and Test ModelVVC coding architectureAs in most preceding standards, VVC has a block-based hybrid coding architecture, combining inter-picture and intra-picture prediction and transform coding with entrop原创 2022-04-05 18:45:34 · 1382 阅读 · 0 评论 -
VVC代码阅读(2)compressGOP函数(2)
注意:本次代码运用的是encoder_intra_vtm的设置,所以GOP_size 只有一帧 // store sub-picture numbers, sizes, and locations with a picture pcSlice->getPic()->subPictures.clear(); for( int subPicIdx = 0; subPicIdx < pcPic->cs->pps->getNumSubPics(); .原创 2022-04-09 21:54:59 · 994 阅读 · 0 评论 -
VVC DRAP帧和EDRAP帧,STSA picture
标准文档中D.9.4 Use of the dependent random access point (DRAP) indication SEI message A picture that is associated with a DRAP indication SEI message is referred to as a DRAP picture. The following constraints apply to a DRAP picture: The VCL NAL u原创 2022-03-23 20:19:15 · 554 阅读 · 0 评论 -
compressGOP中的一些函数解释
1.EncGOP.Cpp中第2232行的createTempBuffers()函数查找到的解读为:创建预测值和残差值的buffer现在自己来读一下void Picture::createTempBuffers( const unsigned _maxCUSize ){#if KEEP_PRED_AND_RESI_SIGNALS const Area a( Position{ 0, 0 }, lumaSize() );#else const Area a = m_ctuArea.Y原创 2022-03-21 20:20:48 · 567 阅读 · 0 评论 -
VVC代码阅读(2)compressGOP函数(1)
EncApp::encode()const InputColourSpaceConversion snrCSC = ( !m_snrInternalColourSpace ) ? m_inputColourSpaceConvert : IPCOLOURSPACE_UNCHANGED; bool keepDoing = false; // call encoding function for one frame if( m_isField ) { keepDoing = m_c...原创 2022-03-24 12:29:46 · 1421 阅读 · 0 评论 -
VVC中 layer层这个概念(待补完)
属于svc,在标准文档附录中可能有,是一个拓展,可以百度原创 2022-02-09 17:51:03 · 487 阅读 · 0 评论 -
VTM14.0代码阅读(1) enc.main函数代码初读
#include <time.h>#include <iostream>#include <chrono>#include <ctime>#include "EncoderLib/EncLibCommon.h"#include "EncApp.h"#include "Utilities/program_options_lite.h"static const uint32_t settingNameWidth = 66;//u:代表 un.原创 2022-02-09 17:47:48 · 1354 阅读 · 0 评论 -
帧内预测流程(还有几个小细节)
【HEVC学习与研究】41、HEVC帧内编码的原理和实现(中)_Workshop of Wenjie.Yin-CSDN博客原创 2022-01-07 19:20:51 · 2439 阅读 · 0 评论 -
VVC/VTM 用YUView实现 CU划分可视化
作个记录参考了这三篇博客VTM中的编码单元信息扩展:CU信息的可视化分析和统计分析_Aidoneus_y-CSDN博客VVC/VTM 可视化_hujy23的博客-CSDN博客_vvc 可视化VVC编码程序入门超详细教程——VTM从源码下载到编码CU划分结果可视化_Zzhaoyongbo的博客-CSDN博客_vvc 可视化主要是利用YUView这个软件根据CU划分信息对划分的一个可视化。1.首先是通过编码得到YUV和bin文件,然后解码得到重建的YUV文件。(教程在vtm安装那个收藏夹里.原创 2021-12-22 20:46:25 · 2657 阅读 · 11 评论 -
c++ day 5 通讯录管理系统(老师版)
1.有菜单,专门由一个封装函数显示2.while(true)和return 0 的用法,使菜单能循环显示,能一直使用通讯录3.模块函数中不再只struct add *p,也可使其与结构体变量名相同,方便理解,避免全是 p。如struct add *addlink。4.system("pause"); //请按任意键继续 system("cls"); //清屏5.清空只是逻辑清空,把联系人数设为0,实际数据还在,只是无法访问。#include <iostream>...原创 2021-12-10 21:26:03 · 492 阅读 · 0 评论 -
C++ day 5 通讯录管理系统初始版
struct information{ };struct people{ string name; string sex; int age; string address; struct information stu[3];};void address(struct people *p) { p->stu[0].sex = "男"; }int main(.原创 2021-12-10 15:47:04 · 74 阅读 · 0 评论 -
VVC代码解读day1 enc.app main函数——命名空间
第94行 df::program_options_lite::Options opts;在360浏览器c++收藏夹 c++命名空间有详细解释::是一个新符号,称为域解析操作符,在C++中用来指明要使用的命名空间。如果一个文件下有两个相同名字的变量会发生冲突,但如果这两个变量在两个不同的命名空间中,就不会有冲突:namespace Li{//小李定义的变量file a = 0;}namespace Wang{//小王定义的变量file a = 0;}这样两个原创 2021-12-08 14:47:08 · 7143 阅读 · 0 评论