- 博客(33)
- 资源 (33)
- 收藏
- 关注
原创 最新版(2013.01.17)x264的多线程代码研究(一)
先罗列出代码中与多线程有关的宏定义、结构体、变量、函数等,锁定为需要重点关注的对象,在接下来的研究中逐步深入探讨这些对象的含义和作用。define X264_THREAD_MAX 128#define X264_LOOKAHEAD_THREAD_MAX 16#define X264_LOOKAHEAD_MAX 250// arbitrary, but low because S
2013-01-27 13:17:48 4075 3
原创 HEVC学习(三十六) —— 去方块滤波之七
本文介绍关于去方块滤波的最后一个函数(这一系列基本上只讨论了亮度分量的情况,色度分量的情况类似,不单独做出分析)。Void TComLoopFilter::xEdgeFilterLuma( TComDataCU* pcCU, UInt uiAbsZorderIdx, UInt uiDepth, Int iDir, Int iEdge ){ TComPicYuv* pcPicYuvR
2013-01-25 21:32:12 4639 4
原创 HEVC学习(三十五) —— 去方块滤波之六
先看HM中定义tC、β这两个变量的表格,与draft中的Table 8-10相对应:const UChar tctable_8x8[54] ={ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,5,5,6,6,7,8,9,10,11,13,14,16,18,20,22,24};
2013-01-25 21:08:16 3748 1
原创 HEVC学习(三十四) —— 去方块滤波之五
本文考察实现去方块滤波的核心函数xDeblockCU:Void TComLoopFilter::xDeblockCU( TComDataCU* pcCU, UInt uiAbsZorderIdx, UInt uiDepth, Int Edge ){ if(pcCU->getPic()==0||pcCU->getPartitionSize(uiAbsZorderIdx)==SIZE_N
2013-01-25 16:53:40 4986
原创 HEVC学习(三十三) —— 去方块滤波之四
本文考察Boundary Strength (BS)的获取过程:Void TComLoopFilter::xGetBoundaryStrengthSingle ( TComDataCU* pcCU, UInt uiAbsZorderIdx, Int iDir, UInt uiAbsPartIdx ){ TComSlice* const pcSlice = pcCU->getSlice
2013-01-25 16:03:09 5177 4
原创 HEVC学习(三十二) —— 去方块滤波之三
Void TComLoopFilter::xSetEdgefilterPU( TComDataCU* pcCU, UInt uiAbsZorderIdx ){ const UInt uiDepth = pcCU->getDepth( uiAbsZorderIdx ); const UInt uiWidthInBaseUnits = pcCU->getPic()->getNumPa
2013-01-25 14:11:36 5162 4
原创 HEVC学习(三十一) —— 去方块滤波之二
这个是维护去方块滤波参数的结构体:/// parameters for deblocking filtertypedef struct _LFCUParam{ Bool bInternalEdge; ///< indicates internal edge Bool bLeftEdge;
2013-01-24 22:30:20 4517
原创 HEVC学习(三十) —— 去方块滤波之一
去方块滤波的详细过程可参看draft 8.7.1 to 8.7.2 。 在compressGOP中可以找到下面一段代码,这里就是调用去方块滤波的地方 //-- Loop filter Bool bLFCrossTileBoundary = pcSlice->getPPS()->getLoopFilterAcrossTilesEnabledFlag();
2013-01-24 21:37:56 9082 15
原创 HEVC学习(二十九) —— 量化之三
为了更好地与draft进行对应,看HM中的反量化部分代码:Void TComTrQuant::xDeQuant(Int bitDepth, const TCoeff* pSrc, Int* pDes, Int iWidth, Int iHeight, Int scalingListType ){ const TCoeff* piQCoef = pSrc; Int*
2013-01-20 23:04:11 5843
原创 HEVC学习(二十八) —— 量化之二
Void TComTrQuant::transformNxN( TComDataCU* pcCU, Pel* pcResidual, //!< 残差 UInt uiStride,
2013-01-20 20:25:37 9361 26
原创 HEVC学习(二十七) —— 变换编码之二
//! 用于significant_coeff_flag的上下文推导过程的模式选择 draft 9.3.3.1.4Int TComTrQuant::calcPatternSigCtx( const UInt* sigCoeffGroupFlag, UInt posXCG, UInt posYCG, Int width, Int height ){ if( width == 4 &&
2013-01-19 23:01:05 6106
原创 HEVC学习(二十六) —— 量化之一
先列出HM中与draft对应的几个表格,随着研究的深入,本文会慢慢补充。enum ScalingListSize{ SCALING_LIST_4x4 = 0, SCALING_LIST_8x8, SCALING_LIST_16x16, SCALING_LIST_32x32, SCALING_LIST_SIZE_NUM}; //!< Table 7-2 (S
2013-01-15 19:11:56 7614 4
原创 HEVC学习(二十五) —— 变换系数的编码之一
本文首先介绍系数扫描模式的初始化。直接给出代码及相应的注释: // scanning order tableUInt* g_auiSigLastScan[ 3 ][ MAX_CU_DEPTH ]; //!< [pattern][depth]const UInt g_sigLastScan8x8[ 3 ][ 4 ] ={ {0, 2, 1, 3}, //!< rig
2013-01-12 14:33:07 7638 9
原创 HEVC学习(二十四) —— 熵编码之五
本文介绍EncodeDecision过程,对应的代码及注释如下:/** * \brief Encode bin * * \param binValue bin value * \param rcCtxModel context model */Void TEncBinCABAC::encodeBin( UInt binValue, ContextModel &rcC
2013-01-07 15:27:09 6583 13
原创 HEVC学习(二十三) —— 熵编码之四
本文主要考察与概率转移有关的几个表格及使用分析。下图是draft 9.3.4.2中的Figure 9-7,在接下来的分析中需要用到,这里先贴出来:(注:图中有个小错误,valMPS = 1 ? valMPS,实际应为valMPS = 1 - valMPS,特此更正)在ContextModel.cpp中,给出了transIdxLPS和transIdxMPS这两个表格:const
2013-01-06 14:24:54 6485 3
原创 HEVC学习(二十二) —— 熵编码之三
在继续介绍CABAC之前,先穿插进另外几种相对而言较为简单的熵编码方式。下图是截取自draft 7.3.2.1的关于VPS(Video Parameter Set)的句法元素描述:关注表格中"Descriptor”这一栏,当中的描述符有u,ue,分别表示无符号整型、无符号整型0阶指数哥伦布编码方式,可以在HM中找到与表格相对应的一段代码:Void TEncCavlc::codeVPS(
2013-01-05 14:57:38 6916 1
原创 HEVC学习(二十一) —— 熵编码之二
本文继续讨论编码器的初始化过程,即draft 9.3.1.1。上一篇介绍的是各个context对应到标准相应表格的值,以及相关变量和函数,前面提到initBuffer函数对context进行初始化,但是没有深入解析这个函数的实现,这就是本文的主要任务。首先介绍下面讨论过程中会涉及到的一个类ContextModel3DBuffer,重点关注该类的构造函数:/// context mode
2013-01-04 22:51:37 6833 14
原创 HEVC学习(二十) —— 熵编码之一
从本篇开始,接下来的若干篇会逐步分析HM 9.1中有关熵编码的过程。在此以及以后的几篇,我都默认大家对熵编码(针对CABAC,因为HEVC只有这一种编码方式,而H.264有CAVLC和CABAC两种)的基本概念和流程有了一定的基础,同时,由于HEVC中的CABAC基本流程与H.264中的基本一致,因此,这里暂时不会介绍熵编码框架和流程,有兴趣的可以参考H.264中的相关资料。我会按照编码的执行顺序
2013-01-04 15:46:20 20261 13
原创 HEVC学习(十九) —— NAL unit 的解码过程之三
前面两篇已经将NAL的解析过程的核心部分介绍完了,本篇主要讨论如何将NAL的payload部分转化为原始数据,即从EBSP到RBSP的过程。该过程由TAppDecTop::decode()的子函数read(nalu, nalUnit)调用convertPayloadToRBSP(nalUnitBuf, pcBitstream, (nalUnitBuf[0] & 64) == 0)实现。re
2013-01-03 20:43:15 11470 8
原创 HEVC学习(十八) —— NAL unit 的解码过程之二
下面介绍实际完成NAL解析工作的函数:/** * Parse an AVC AnnexB Bytestream bs to extract a single nalUnit * while accumulating bytestream statistics into stats. * * If EOF occurs while trying to extract a NALu
2013-01-03 19:39:29 5942
原创 HEVC学习(十七) —— NAL unit 的解码过程之一
下图为官方标准中NAL层的句法元素,且以伪代码的形式给出了解码过程:在HM中由TAppDecTop::decode()调用byteStreamNALUnit(bytestream, nalUnit, stats)实现如上伪代码:/** * Parse an AVC AnnexB Bytestream bs to extract a single nalUnit * while
2013-01-03 19:00:42 10483 6
转载 编译最新版x264的方法(2013-01-17版测试可用)
参考链接:http://bbs.chinavideo.org/viewth ... 26amp%3Btypeid%3D19给出这篇文章的另一个出处(英文版):http://doom10.org/index.php?topic=1767.0这里给出了一些更为具体的步骤以及Debug时出现的问题的解决办法:------2012.10.20-------Some people e
2013-01-18 17:07:18 1653
转载 bs_t结构及其相关函数的定义
原文地址:http://wmnmtm.blog.163.com/blog/static/38245714201192541031807/参考bs.h此部分内容对应H.264标准9.1节及[2]中6.4.13小节bs_t结构描述了比特流的概念,从比特流中进行顺序读写操作(类似于前向迭代器)typedef struct bs_s{ uint8_t *p_start
2013-01-18 11:41:26 1469
转载 X264和JM的区别
原文地址:http://blog.csdn.net/fengjingge/article/details/7797592x264是一种免费的、具有更优秀算法的H.264/MPEG-4 AVC视频压缩编码格式。开源,X.264起源于H.264技术,是H.264的的变种版本。与H.264相比,X.264是针对业余市场推出的一个免费编码格式,是H.264的子集,实现H.264的大部分功能。X.264
2013-01-16 14:34:00 3696
转载 VS2008下X264(svn 2009.0216)编译不过的解决办法(附编译通过+修改内存泄露版本)
原文地址:http://bbs.chinavideo.org/viewthread.php?tid=6945&highlight=VS2008 总有人说最新的版本编译不过,搞的群、论坛里到处都是这种求助贴。建议斑竹把这个解决办法放到醒目的位置,以减少噪音。科普开始1、编译问题由于MS的VS编译器对C99标准支持不好,不支持函数当中混合定义、声明变量。解决办法:在函数开头
2013-01-16 12:45:27 2539
转载 win32 vs2008 2010编译X264的过程(只针对x264支持windows的版本)
原文地址:http://bbs.chinavideo.org/viewthread.php?tid=9825&extra=page%3D1%26amp%3Bfilter%3Dtype%26amp%3Btypeid%3D191.首先下载该处的X264:http://truth-tracer.appspot.com/x264-snapshot-20090216-2245.rar作者
2013-01-16 12:44:00 4526 7
转载 去掉VS2005的警告提示
原文地址:http://gamedev.cuit.edu.cn/show.aspx?id=815&cid=80将过去的工程用VS2005打开的时候。你有可能会遇到一大堆的警告:warning C4996。比如:warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf
2013-01-13 15:48:10 1851
转载 msvcprt.lib(MSVCP90.dll) : error LNK2005:已经在libcpmtd.lib(xmutex.obj) 中定义
原文地址:http://www.cnblogs.com/minggoddess/archive/2010/12/29/1921077.html很久没有写程式设计入门知识的相关文章了,这篇文章要来谈谈程式库 (Library) 连结,以及关于 MSVC 与 CRT 之间的种种恩怨情仇。如果你使用的作业系统是 Linux、Mac 或其他非 Windows 平台,你可以忽略这篇文章;如果你使用的
2013-01-12 23:07:46 2022
转载 VC 项目中可以使用的路径宏
原文地址:http://blog.csdn.net/collin1211/article/details/2483316VC 项目中可以使用的路径宏:宏说明$(RemoteMachine) 设置为“调试”属性页上“远程计算机”属性的值。有关更多信息,请参见更改用于 C/C++ 调试配置的项目设置。$(Reference
2013-01-12 21:21:08 1351
转载 VTune性能分析器简介
原文地址:http://blog.sina.com.cn/s/blog_704f9d530100pzu3.html7.2.1 VTune简介Intel VTune性能分析器即Intel? VTune? Performance Analyzer可以帮助程序员定位并定性程序中与性能有关方面的内容。Intel? VTune性能分析器也可以在程序运行的系统平台上自动收集性能数据,并将所获得
2013-01-12 19:14:09 8375
转载 矩阵转置的SSE汇编优化艺术以及ARM cortext 汇编优化 .
原文地址:http://blog.csdn.net/feixiang_john/article/details/8438658平时我们做图像处理或者视频处理, 很多地方会用到矩阵转置:比如: DCT变换, 图像旋转, 图像滤波, 以及一些数据的内存行和列的交换等, 会大量使用转置这个动作.然而由于数据量很大,处理速度很慢!如何来提高处理速度呢?下面看看分析: HEVC中有个地方
2013-01-03 14:05:43 3022 1
转载 运动估计与运动补偿
原文地址:http://blog.sina.com.cn/s/blog_4b700c4c0100nhgo.html运动补偿是通过先前的局部图像来预测、补偿当前的局部图像,它是减少帧序列冗余信息的有效方法。运动估计是从视频序列中抽取运动信息的一整套技术。运动估计与运动补偿技术 MPEG-4采用I-VOP、P-VOP、B-VOP三种帧格式来表征不同的运动补偿类型。它采用了H.26
2013-01-01 19:01:50 16276 1
转载 without base relocation /fixed:no
原文地址:http://blog.sina.com.cn/s/blog_5f3759a00100e118.html在使用Intel Vtune 软件进行程序性能分析时,可能会遇到下面一个错误:base relocation /fixed:no" alt="without base relocation /fixed:no" src="http://s12.sinaimg.cn/bm
2013-01-01 18:58:56 1462
ffmpeg可执行文件exe
2013-04-09
最新版的x264(VS工程)
2012-12-06
news_qcif.yuv
2012-11-28
waterfall_cif.yuv
2012-11-28
foreman_qcif.yuv
2012-11-28
HEVC reference software manual (JCTVC-F634)
2012-11-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人