上一页 1 ··· 7 8 9 10 11 12 13 14 15 ··· 23 下一页
摘要: 帧、场编码的个人理解一、概述原始视频帧(最原始的视频数据)根据编码的需要,以不同的方式进行扫描产生两种视频帧:连续或隔行视频帧,隔行视频帧包括顶场和底场,连续(遂行)扫描的视频帧与隔行扫描视频帧有着不同的特性和编码特征,产生了所谓的帧编码和场编码。一般情况下,遂行帧进行帧编码,隔行帧可在帧编码和场编码间选取。 在帧编码中,参考为帧图像,采用帧运动补偿,两个场是联合编码;在场编码中,参考为场图像,两个场是分别编码,采用场运动补偿。二、视频序列帧、场编码方式1.固定帧编码(全帧)----视频序列的全部帧始终采用帧编码方式。 2.固定场编码(全场) 视频序列中帧被分成两个场独立编码。编码规则:(1. 阅读全文
posted @ 2012-07-28 14:18 Mr.Rico 阅读(3321) 评论(0) 推荐(0)
摘要: 1、H.264新特性学习阶段 首先,我们学习的weigand的那篇关于H.264 overview的经典文献,这篇文献对H.264的新特性大部分都有讲到。之后,我们共开展三次会议来分组深入地学习H.264的各个新特性。 帧间编码小组主讲的内容有:高精度运动估计,分析了H.264的半象素点插值预测和1/4象素点插值预测,同时还分析了H.263的半象素点的插值预测以作比较。多参考帧和7种宏块模式,分析它们的基本原理,并列举了一些快速算法。B帧,讲解了B帧的新特性,同时详细讲述了B帧独有的两种宏块模式direct mode和multihypothesis mode。 帧内编码小组主讲的内容有:... 阅读全文
posted @ 2012-07-28 14:15 Mr.Rico 阅读(4555) 评论(0) 推荐(0)
摘要: <<H.264 中 4x4 块的快速帧内预测算法>>作者:王启文,黄东军目前,对帧内预测的研究已取得很多成果,如快速三步法 [1]。该算法利用相邻预测方向的相关性,选择性地计算帧内方向预测模式,以达到减少率失真优化计算量的目的,但它对编码时间的节约效果不理想。文献[2]利用子块边缘的变化方向从预选模式中选取最可能的预测方向,该算法采用边缘梯度直方图法,在几种最可能的预测方向中选取最佳预测方向,在视频场景较复杂的情况下,其视频压缩效果不佳。文献[3]对文献[2]算法进行改进,但对预测正确率的提高效果不明显。文献[4]提出自适应阈值快速算法,利用邻块相关性为当前块的率失真设 阅读全文
posted @ 2012-07-28 13:52 Mr.Rico 阅读(1918) 评论(0) 推荐(0)
摘要: 2011年8月18日 09时31分13秒SODB到RBSP的转换:对SODB的最后填充rbsp_trailing_bits就得到RBSP,而这个rbsp_trailing_bits是第一个比特为1,接下来是0,直到字节对齐。比如SODB的最后几个比特是1001,这时rbsp_trailing_bits即为:1000SODB 到RBSP到转换代码如下:void SODBtoRBSP(Bitstream*currStream){ currStream->byte_buf <<= 1; //左移1bit currStream->byte_buf |= 1; //在尾部填一个& 阅读全文
posted @ 2012-07-28 11:16 Mr.Rico 阅读(6078) 评论(0) 推荐(0)
摘要: writeSyntaxElement_NumCoeffTrailingOnes里有lentab[3][4][17] codtab[3][4][17]编码非零系数数目 (NumCoeff)和拖尾系数数目(TrailingOnes)writeSyntaxElement_NumCoeffTrailingOnesChromaDC里有lentab[4][5] codtab[4][5]与上面的函数功能一样, 只是这儿特别针对Chroma DC(色度直流系数)writeSyntaxElement_TotalZeros里有lentab[TOTRUN_NUM(15)][16] codtab[TOTRUN_NUM 阅读全文
posted @ 2012-07-28 09:23 Mr.Rico 阅读(3241) 评论(0) 推荐(1)
摘要: 首先,写一些关于-f和-d命令的使用情况吧。在jm代码内部,默认的设置文件是encoder.cfg,这个文件需要在工作目录下,程序才找得到。如果在工作目录下有这个cfg文件,选用-d xxxx.cfg或-f xxxx.cfg时的效果是一样的。如果工作目录下没有这个encoder.cfg文件,选用-d xxxx.cfg会达到效果,但是-f xxxx.cfg 却不能达到效果。我看了一下代码主要原因是程序在测试是否为-f命令之前要对一个配置文件进行解析,如果默认的配置文件不存在,程序在解析配置默认文件 (encoder.cfg)时出错,直接退出了 配置文件的理解:Files输入/输出文件配置 这.. 阅读全文
posted @ 2012-07-27 22:52 Mr.Rico 阅读(2121) 评论(0) 推荐(1)
摘要: 在JM代码中共有3个方法进行RDCost的计算,主要为:RDCost_for_4x4IntraBlocks, RDCost_for_4x4IntraBlocks被调用的函数 可以发现, RDCost_for_4x4IntraBlocks只被一个函数直接调用, 从调用流程我们就可精确的知道RDCost_for_4x4IntraBlocks的用处:帧内模式I4MB在RDO方式下的计算函数, 主要是计算一个4x4块的RDO代价RDCost_for_8x8blocks, 该函数一个宏块的4个8x8块在亚宏块模式下进行模式选择的时候, 计算其RDO代价, 根据求得的代价对当前的... 阅读全文
posted @ 2012-07-27 21:27 Mr.Rico 阅读(2164) 评论(0) 推荐(0)
摘要: JM8.6中关于PSNR(峰值信噪比), img->quad的解释:在JM代码中,多次遇到img->quad这个东西,而在官方代码中只给出了一句说明: 我开始看了好几遍都没有看懂,然后看到后面有snr,所以想应该和snr有关吧.然后再代码中寻找snr,发现jm代码中有一个函数,然后就往下看,忽然发现这儿 在老毕的书上有 我们可以对比上面的公式发现,令n=8,我们可以得出代码中的65025=(2^8-1)=255^2,所以主要是MSE的计算,而MSE是均方误差,所以可以推断出diff_y应该是误差的平方,我们看看diff_y的计算, 联系一下quad的含义,我突然感觉有些明白原代码注 阅读全文
posted @ 2012-07-27 18:58 Mr.Rico 阅读(1274) 评论(1) 推荐(0)
摘要: 关于 int ****cofAC变量的理解 对cofAC, cofAC8x8, cofDC, cofAC4x4, cofAC4x4intern的探讨 我要在这儿解释一下红框内的一些变量的含义:我在JM86的代码中搜索了一下,发现cofAC4x4intern使用的地方没有几处: 再看,我觉得貌似cofAC4x4intern没有什么用处, 只是为了通过get_memACcoeff来对cofAC4x4进行分配内存空间,可能懒得再写一个单独为cofAC4x4分配空间的函数了吧。对于cofAC4x4这个容易理解了,就是一个4x4小块的AC系数cofDC是包括色度块在内的6个8x8大小块(亮... 阅读全文
posted @ 2012-07-27 18:57 Mr.Rico 阅读(1305) 评论(2) 推荐(0)
摘要: JM8.6中的关于写比特流的问题 通过上面的对比, 我们可以发现store_coding_state函数和reset_coding_state函数基本上完全一致, 对于cs_mb, store_coding_state函数将img->currentslice变量中的一些需要保存的量存储在cs_mb中, 然后等到进行编码完成后, 要恢复现场, 利用reset_coding_state函数将cs_mb中保存的相关量恢复到变量img->currentslice中, 便于下面的利用.从上面的截图我们也可以看出, 对于非CABAC编码的状况, 主要是保存的bitstream 而对于CABAC 阅读全文
posted @ 2012-07-27 17:04 Mr.Rico 阅读(771) 评论(0) 推荐(0)
摘要: JM8.6中的运动估计BlockMotionSearch函数对不同帧间模式block type (1-16x16 ... 7-4x4)进行运动搜索.从该函数中,我们可以发现,有一个局部变量,通过下面的语句将img->pred_mv与pred_mv联系了起来, 这样其实通过调用函数SetMotionVectorPredictor来计算运动矢量的预测值(MVpred), 代码中向SetMotionVectorPredictor函数传递了pred_mv这个整型指针(指向img->pred_mv具体要保存的地方), 这样在函数SetMotionVectorPredictor中求出运动矢量的 阅读全文
posted @ 2012-07-27 17:02 Mr.Rico 阅读(1002) 评论(0) 推荐(0)
摘要: JM8.6中encode_one_macroblock函数的运作流程[宏块代价函数的使用或帧间帧内模式选择流程]在JM中最重要, 最核心的一个函数就是encode_one_macroblock, 这个函数是整个编码器的核心, 其实, 通过读源码,可以发现, encode_one_macroblock中的大部分工作是在进行模式的选择, 下面我们跟着代码走一下, 看看具体的流程: (我们假设帧间帧内同时都允许)1. 帧间三种帧间宏块级模式( 16×16, 16×8,8×16) 循环, 进行择优 同时将min_cost初始化为最大值, 将best_mode初始化为1(1 阅读全文
posted @ 2012-07-27 17:02 Mr.Rico 阅读(2065) 评论(2) 推荐(0)
摘要: JM8.6中enc_frame_picture, enc_pictures的理解 在frame_picture函数中有这么一句: 同样在field_picture中有这么一句: 从上面我们似乎可以看出一点东西, enc_picture就是指的图像, 这个图像的含义比较广, 包括了frame_picture, top_picture和bottom_picture. 所以我们看到在代码中有将enc_frame_picture, enc_top_picture和enc_bottom_picture分别赋值给enc_picture. 我们猜想, 因为在frame_picture() 和field_pi 阅读全文
posted @ 2012-07-27 17:00 Mr.Rico 阅读(734) 评论(0) 推荐(0)
摘要: JM8.6代码文件结构总结一下, JM8.6中比较重要的源代码文件[block.c]用于处理一个块 void intrapred_luma (int img_x, int img_y, int *left_available, int *up_available, int *all_available)void intrapred_luma_16x16 ()int dct_luma_16x16 (int new_intra_mode)int dct_luma (int block_x, int block_y, int *coeff_cost, int old_intra_mode)in... 阅读全文
posted @ 2012-07-27 16:57 Mr.Rico 阅读(2427) 评论(0) 推荐(0)
摘要: 2011年5月2日16:31:18img->mb_ximg->block_ximg->pix_ximg->opix_xin the function init_frame, we got this: it is obvious that here , the function just initialize the variables.在函数set_MB_parameters中完成了对img中几个变量的赋值如: 阅读全文
posted @ 2012-07-27 16:43 Mr.Rico 阅读(703) 评论(0) 推荐(0)
上一页 1 ··· 7 8 9 10 11 12 13 14 15 ··· 23 下一页