
H.264/SVC
云博士的AI课堂
前华为数据科学家/高级软件工程师/项目主管,哈佛大学高级访问学者/博后,浙江大学计算机专业博士,德国包豪斯大学媒体学院高级访问学者/博后,人工智能与计算机视觉行业专家,AI技术实践超20年。
展开
-
SVC GOP时间分层下,不同时间层图像量化规则
<br />在paper 《overview of Scalable Video Coding Extention of the H.264/AVC Standard》 V.A.1)部分讲QP部分。翻译 2010-08-26 21:38:00 · 852 阅读 · 0 评论 -
JSVM9_19中class AccessUnit解释说明(待续)
<br />首先关于SVC中的AccessUnit概念定义可以参考SVC标准以及在paper “System and Transport Interface of SVC”中有详细的描述。<br />class AccessUnit 是JSVM9_19代码中数据结构。类图如下:<br /><br /><br /><br />其中一个重载的构造函数是我为了调试测试方便所写的一个拷贝构造函数。<br />基本处理过程:从SVC编码文件的byte stream中读取属于同一个AccessUnit的NALU,将这些原创 2010-08-31 19:26:00 · 782 阅读 · 0 评论 -
关于JSVM9.19.9代码CommonTypes.h中数据结构的解释
g_aucConvertBlockOrder的理解参考H.264 2005.3中文标准中P26,6.4.3反向4*4亮度块扫描过程。下面是我初步的理解,不一定正确:class LumaIdx:一般是指4*4的块在光栅扫描下的索引。里面的成员变量m_iIdx就表示这个索引值。索引标示如下图所示,大的方框表示16*16的MB,小的方框表示4*4的block。0123456789101112131415通过数组g_aucConvertBlockOrderconst UChar g_aucConvertBlockO原创 2010-09-26 08:44:00 · 820 阅读 · 0 评论 -
JSVM9.19.9中YuvBufferCtrl的作用
<br />主要用来获取YUV缓冲区的大小,Margin,stride,亮度像素和色度像素起始位置的偏移量,获取图像中每个宏块左上角位置相对于整个Yuvbuffer(包括margin)起始位置的偏移量。总之是主要用来获取图像和宏块亮度和色度像素的偏移量。原创 2010-09-26 22:41:00 · 585 阅读 · 0 评论 -
JSVM9.19.9中类YuvBufferParameter中getYBlk方法的猜测解释
<br />class H264AVCCOMMONLIB_API YuvBufferParameter<br />{<br />。。。。。。<br />const UInt getYBlk( LumaIdx cIdx ) const { return m_uiLumOffset + ((cIdx.y() * m_iStride + cIdx.x())<<(2 + m_iResolution)); }<br />。。。。。。<br />}<br />猜测作用:在整个YUV缓冲区中,获取一个宏块中一个4原创 2010-09-26 19:45:00 · 604 阅读 · 0 评论 -
JSVM9.19.9中YuvMbBuffer中采样值存放方式
<br />原创 2010-09-27 20:13:00 · 565 阅读 · 0 评论 -
对于SVC中的temporal direct
<br />http://blog.youkuaiyun.com/l35633/archive/2010/08/28/5846517.aspx,参考,<br />里面说明:“在SVC中,无论是BL还是EL,只有spatial direct而没有temporal direct”,所以SVC中要使用temporal direct进行EC,要用AVC中的temporal direct。<br />参考论文《Frame loss error concealment for SVC》和代码JSVM9.8中实现EC实现部分。原创 2010-10-06 22:55:00 · 478 阅读 · 0 评论 -
对于EL的MODE_SKIP类型宏块
<br />后会变为INTRA_BL或INTER_16*16类型宏块。<br />对于EL中的MODE_SKIP是有特殊含义的,可能对应inter layer的texture或motion预测。<br />根据观察MODE_SKIP 就是宏块进行层间预测的含义,首先根据这个标识来判断是否为层间预测,然后进一步的判断是层间intra预测,还是层间motion预测。<br />根据svc overview中描述,这个MODE_SKIP应该就是论文中所说的Blskip模式,对于Blskip模式,根据BL层对应块的原创 2010-10-18 18:48:00 · 1407 阅读 · 1 评论 -
关于clip的运算
<br />见最新标准T-REC-H.264-201003-I!!PDF-E.pdf 中的说明。原创 2010-10-18 18:47:00 · 999 阅读 · 0 评论 -
JSVM运动矢量与参考索引
<br />运动矢量的计算在calcMv函数中<br />计算后的MV在MbDataAccess下成员变量m_rcMbCurr中的 m_apcMbMotionData中存储。<br />参考索引位置:也需要知道。<br />在函数MbDecoder::decode的<br />RNOK( rcMbDataAccess.getMbMotionData( LIST_0 ).setRefPicIdcs( rcMbDataAccess.getSH().getRefFrameList( rcMbDataAccess.原创 2010-10-18 18:50:00 · 843 阅读 · 0 评论 -
YuvMbBuffer::loadIntraPredictors作用
<br />用于设置宏块16*16区域外填充部分上面一行和左边一行的数据,目的是为了边缘块的帧内预测,比如address为0的宏块,前面是没有重构的宏块,所以帧内预测要使用边缘像素扩展的填充区域像素。原创 2010-10-18 18:42:00 · 606 阅读 · 0 评论 -
关于语法元素tcoeff_level_prediction_flag
(1)首先根据文豪的文档H.264_G.8_Flowchart_v1.pdf中关于SVC编码过程的描述:当tcoeff_level_prediction_flag0: spatial domain inter-layer prediction1: frequency domain inter-layer prediction(2)再查最新264标准T-REC-H.264-201003-I!!PDF-E.pdf,有以下相关的内容:seq_tcoeff_level_prediction_flag: specif原创 2010-10-20 09:55:00 · 1131 阅读 · 0 评论 -
关于论文《Frame loss error concealment for SVC》中TD的一个问题
对于丢失的BL和EL的B帧都可以使用TD进行恢复。此处有一个疑问:TD的前提是List 1reference 中co-located位置的宏块在其List 0 reference中要有运动矢量才行,也就是说co-located位置的宏块要是B宏块或P宏块才行,但是B帧或P帧中都是允许有I宏块的,如果co-located位置是I宏块如何处理呢?一方面看xTemporalDirectMode中的处理,另一个方面看该论文在JVT中对应的提案,一般在提案中都有算法比较详细的描述。在JVT-Q046中有该描述,但是对原创 2010-10-18 18:47:00 · 716 阅读 · 0 评论 -
关于问号文章“理解H.264 SVC的MGS 之 结构篇”中的一点问题
在问号的该文章中,最后有一个配置文件的例子。“NumLayers 2 # Number of layersLayerCfg my_layer0.cfg # Layer configuration fileLayerCfg my_layer1.cfg # Layer configuration file“为了对MGS进行2分层,此处把Main Configuration File中的NumLayers设置原创 2010-12-12 15:31:00 · 1447 阅读 · 1 评论 -
JSVM中MbTransformCoeffs解释
<br />该类用一个TCoeff m_aaiLevel[24][16]这样的数组来存放MB解码后的残差变换系数,先对残差系数进行scale(即反量化)操作,结果仍然存放在该数组,然后分别对里面的Y、U、V分量的变换系数进行IDCT变换,反变换后的空间域的像素一般存放在YuvMbBuffer的对象中。下面介绍m_aaiLevel[24][16]是如何存放Y、U、V的变换系数的。<br />对于DCT变换,Y值可能有两种情况4*4和8*8,U和V只有一种4*4变换的情况。<br />先看Y值为4*4变换的情况原创 2010-10-21 11:09:00 · 1119 阅读 · 1 评论 -
jsvm9_19中BufferParameters参数解释
<br />JSVM是对输出图象做边界扩展的, 扩展的方式是左右32象素, 上下 64象素<br />注意:这是针对亮度值,色度值也进行相对尺度的扩展。对于4:2:0,每个色度空间大小仍是亮度值扩展后的1/4。对于4:2:0,存放顺序是:先存放扩展后亮度值,再存放两个扩展后的色度值。总的buffer大小为其扩展后大小的和,就是 (m_uiLumaWidth+32*2)*( m_uiLumaHeigh+64*2)*(1.5)<br /><br />它的成员有<br /><br /> UInt m_ui原创 2010-08-28 21:51:00 · 1017 阅读 · 0 评论 -
SVC中的trace文件[转]
SVC;tracefile转载 2010-08-26 21:25:00 · 552 阅读 · 0 评论 -
SVC的access unit及其他
<br />from:http://forum.byr.edu.cn/pc/pccon.php?id=1727&nid=67801&order=&tid=1329 <br /> <br />在H.264/AVC中,Access Unit是一个很好理解的概念,就是若干NAL unit的组合(包括VCL NALU和相关的non-VCL NAL unit)能解出一副完整图像,就认为是一个access unit,标准中给出的定义为:<br />access unit: A set of NAL units alwa转载 2010-08-28 19:29:00 · 1031 阅读 · 0 评论 -
关于Bit Depth SVC
<br />CSVT上又有一篇Yuwen Wu的关于bit depth SVC的文章了,大致浏览了一遍感觉没啥新东西,还是那些文字翻来覆去的。写篇总结复习一下看过的bit depth SVC,免得过段时间又忘干净了。<br /><br />Bit depth scalability是在H.264/SVC在完成phase1后,提出的后续的phase2的需求(此外还包括FGS,色度采样分级和颜色空间分级)。为不失一般性,通常用BL为8bit,EL为10bit来讨论。Bit depth SVC目前最主要的贡献来自转载 2010-08-28 19:43:00 · 534 阅读 · 0 评论 -
H.264 SVC标准流程图--来自中华视频网
<br /> <br />http://bbs.chinavideo.org/viewthread.php?tid=6637&highlight=svc <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br />转载 2010-08-28 20:11:00 · 919 阅读 · 0 评论 -
理解H.264 SVC的MGS 之 结构篇
from:http://forum.byr.edu.cn/pc/pccon.php?id=1727&nid=75114&order=&tid=1329以下都是我个人在学习过程中的理解。如果发现任何错误和问题,请站内信给我或者email给我(wh3124$163.com,把$换成@)。在本文中出现的“参考帧”这个名词时,都是特指inter-frame prediction的参考,即P,B的参考。而不是inter-layer prediction的参考。1. 认识MGS结构理解MGS结构,先要理解下面这个图(f转载 2010-08-28 19:40:00 · 3692 阅读 · 0 评论 -
SVC标准G.8.1.4.1中关于ref list construcion的一个问题
<br />from:http://forum.byr.edu.cn/pc/pccon.php?id=1727&nid=77191&order=&tid=1329<br />————————问题————————<br />在标准G.8.1.4中关于reference list construction,可以看到以下的描述:<br /><br />- (G.8.1.4.1) When currDQId is equal to 0 and (slice_type % 5) is<br />equal转载 2010-08-28 19:41:00 · 912 阅读 · 0 评论 -
SVC中SEI NALU
<br />在SVC中SEI NALU的 head仍然是一个字节,第二个字节是SEI type,第三个字节是payload size,再后面就是payload转载 2010-08-30 21:56:00 · 1099 阅读 · 0 评论 -
SVC中语法元素adaptive_base_mode_flag的含义
<br />其说明在SVC标准中没有很多解释,看JSVM中的SoftwareManual.doc中相关说明反而容易理解。原创 2010-08-30 21:57:00 · 941 阅读 · 0 评论 -
JSVM decoder 输出部分解释
<br />命令行输出:<br />Frame 0 ( LId 0, TL 0, QL 0, AVC-I, BId -1, AP 0, QP 24 )<br /> Frame 0 ( LId 1, TL 0, QL 0, SVC-I, BId 0, AP 1, QP 26 )<br /><br />来自代码部分:<br />printf(" %s %4d ( LId%2d, TL%2d, QL%2d, %s-%c, BId%2d, AP%2d, QP%3d )/n",<br /> ePi原创 2010-08-30 21:59:00 · 858 阅读 · 0 评论 -
SVC时间分层GOP中不同层量化参数QP的设置
<br />见SVC Overview 文档VA1)部分,该文档第6页描述,QPk = QP0 + 3 + k. <br />k为 tempral level原创 2010-08-30 22:02:00 · 1029 阅读 · 0 评论 -
H.264 最新标准下载位置
<br />http://www.itu.int/rec/T-REC-H.264/en<br /> <br />H.264 (03/10) 最新的版本日期原创 2010-08-31 09:31:00 · 612 阅读 · 0 评论 -
关于Bit Depth SVC
CSVT上又有一篇Yuwen Wu的关于bit depth SVC的文章了,大致浏览了一遍感觉没啥新东西,还是那些文字翻来覆去的。写篇总结复习一下看过的bit depth SVC,免得过段时间又忘干净了。Bit depth scalability是在H.264/SVC在完成phase1后,提出的后续的phase2的需求(此外还包括FGS,色度采样分级和颜色空间分级)。为不失一般性,通常用BL为8bit,EL为10bit来讨论。Bit depth SVC目前最主要的贡献来自于两方面,一是HHI,另一是Thom转载 2010-08-28 19:46:00 · 681 阅读 · 0 评论 -
简要说明264 SVC中的quality scalable的几个概念
<br /> from http://QuestionMark.blog.byr.edu.cn <br /> <br /><br /><br /> <br /><br />1 CGS、MGS、FGS的比较<br /> CGS结构简单,但只能以picture stream为单位,在IDR access unit进行切换,且码率只能在几种固定值间切换。<br /> FGS结构复杂,能够bit truncation进行切换。<br /> MGS是FGS、CGS的折中,以较低的复杂度实现在任意acce转载 2010-08-28 19:26:00 · 815 阅读 · 0 评论 -
H.264 SVC的三种Inter Layer Prediction模式
<br /> <br />几个相关语法元素<br />base mode flag:指明一种宏块类型。1表示当前宏块(enhancement layer中)只编码残差信息,帧内编码模式或运动相关信息都有相应的参考层中块推导出来。EL中的宏块无论inter还是intra都可以base mode flag=1。<br />motion prediction flag: 作用于宏块中每个partition的reference list,指明reference index、motion vector predict转载 2010-08-28 19:38:00 · 2431 阅读 · 0 评论