
h264
文章平均质量分 74
叶广明_微信ye_guangming
这个作者很懒,什么都没留下…
展开
-
学习汇编最好的参考手册,帮助理解。
Englishx86/x64 SIMD Instruction List (SSE to AVX512)MMX register (64-bit) instructions are omitted.S1=SSE S2=SSE2 S3=SSE3 SS3=SSSE3 S4.1=SSE4.1 S4.2=SSE4.2 V1=AVX V2=AVX2 V5=AVX512Instructions marked * become scalar instructions (only the lowest e.原创 2020-08-31 10:22:54 · 1976 阅读 · 0 评论 -
H.264 picture parameter sets成员值含义学习笔记
-picture parameter sets 1. pic_parameter_set_id pic_parameter_set_id指明了在切片头中对应的某个psp.pic_parameter_set_id的值应该在0到255,包括0和255 2. seq_parameter_set_id set_parameter_set_id表示激活的sps.seq_parameter_set_id应该取值在0到31之间,包括边界值. 3. entropy_coding_mode_flag entrop转载 2010-09-29 16:04:00 · 999 阅读 · 0 评论 -
ffmpeg_intra_pred_mode问题.pdf
ffmpeg_intra_pred_mode问题.pdf文章转载 2010-09-29 16:49:00 · 1234 阅读 · 0 评论 -
H264 CAVLC 研究
目录1 CAVLC概念2 CAVLC原理 3 CAVLC编码流程4 CAVLC解码流程展开全部1 CAVLC概念2 CAVLC原理 3 CAVLC编码流程4 CAVLC解码流程收起摘要纠错编辑摘要<br />CAVLC即基于上下文的自适应变长编码。H.264标准中使用CAVLC对4*4模块的亮度和色度残差数据进行编码。CAVLC-CAVLC概念 <br />CAVLC的全称是Context-Adaptive Varialbe-Length Coding,即基于上下文的自适应变长编码。CAVLC的本质是转载 2010-10-09 14:51:00 · 3360 阅读 · 0 评论 -
ffmpeg最新源代码(定期更新)
<br />为了方便那些不能连接到ffmpeg的SVN仓库更新源代码的用户,ffmpeg工程组特开辟一个专区,定期更新ffmpeg的源代码,并将其快照上传,有需要的朋友可以长期关注本帖。<br /><br />ffmpeg的编译指令通常为:<br />1、配置:<br />configuration: --enable-gpl --enable-shared --enable-mp3lame --enable-amr_nb --enable-amr_wb --enable-amr_if2 --enable-转载 2010-10-09 17:18:00 · 1495 阅读 · 0 评论 -
264编码基本概念 FFMpeg的解码流程
<br />下面转自http://topic.youkuaiyun.com/u/20081020/16/7156e0b2-dbfb-4b4f-af59-2be04cf9a420.html 的8楼<br />1、NAL、Slice与frame意思及相互关系 <br /><br />NAL指网络提取层,里面放一些与网络相关的信息<br />Slice是片的意思,264中把图像分成一帧(frame)或两场(field),而帧又可以分成一个或几个片(Slilce);片由宏块(MB)组成。宏块是编码处理的基本单元。<br /><原创 2010-10-09 17:05:00 · 6313 阅读 · 0 评论 -
H.264解码器ffmpeg完整优化代码(包括PC和Windows Mobile版本)
<br />这里把前段时间对ffmpeg0.48进行简化和修改,包括修正内存泄漏,修改一些语句使Max Speed能够打开这些。其实代码还是比较乱的,也有很大的继续优化空间。这个工作花费了我一些休息时间,不过,我确实学习到了很多。<br />这个代码目前在纯C下能够达到QVGA 22fps(@300MHz Samsung 2442),虽然和商业的程序不能比,但是,比以前的结果还是要好很多。转载 2010-10-09 17:24:00 · 2143 阅读 · 0 评论 -
H.264句法和语法总结 句法元素的分层结构
在 H.264 定义的码流中,句法元素被组织成有层次的结构,分别描述各个层次的信息,如下图所示 在H.264 中,句法元素共被组织成 序列、图像、片、宏块、子宏块五个层次。 在这样的结构中,每一层的头部和它的数据部分形成管理与被管理的强依赖关系,头部的句法元素是该层数据的核心,而一旦头部丢失,数据部分的信息几乎不可能再被正确解码出来,尤其在序列层及图像层。 在 H.264 中,分层结构最大的不同是取消了序列层和图像层,并将原本属于序列和图像头部的大部分句法元素转载 2010-10-09 15:06:00 · 2071 阅读 · 0 评论 -
H.264学习历程(天之骄子)
<br />半年前,我知道了H.264这个名词。那个时候决定学习H.264,可是我连资料都不知道如何收集。而且整个学校就只有我一个人在学习H.264,找不到人交流,所以那个时候学得真的是举步维艰,很痛苦,而能在网上认识一个学习H.264的朋友真的是一件让我很高兴的事。 后来慢慢在网<br />半年前,我知道了H.264这个名词。那个时候决定学习H.264,可是我连资料都不知道如何收集。而且整个学校就只有我一个人在学习H.264,找不到人交流,所以那个时候学得真的是举步维艰,很痛苦,而能在网上认识一个学习H.转载 2010-10-10 16:29:00 · 1690 阅读 · 0 评论 -
如何读H.264的标准和代码
首先,还是要弄清楚编解码的流程和 H.264 的关键技术,看白皮书就知道了,另外 H.264 综述类的文章和别人的学位论文一般也会讲到; 其次,弄清楚代码的各个函数实现的功能,这个可以看看 JM 代码里各个函数前面的函数说明; 最后,弄清楚标准各个章节讲的什么内容:这<br />首先,还是要弄清楚编解码的流程和 H.264 的关键技术,看白皮书就知道了,另外 H.264 综述类的文章和别人的学位论文一般也会讲到;<br />其次,弄清楚代码的各个函数实现的功能,这个可以看看 JM 代码里各个函数前面的函数说转载 2010-10-10 16:38:00 · 1229 阅读 · 0 评论 -
h.264 视频解码的一点小经验(ffmpeg)
<br />最近做视频文件264解码,由于对这个领域不是很熟悉,感觉困难重重。不过经过不懈的努力,已经取得一些进展,心里感觉特别庆幸。 刚开始做这个的时候,由于不熟悉,就在网上搜寻资料,网络上的资料虽然多,但是却很杂乱,因此一开始走了不少弯路,现在把我的一点小小心得写出来,后来的兄弟们可以参考一下,没准能够少走些弯路。当然啦,我在视频处理方面仍然是个非常菜的菜鸟,如果是高手路过,看到我这所谓的“心得”,也请不要见笑,看到不对的地方请批评指正,呵呵。<br />刚开始做的时候,先是在网络上查找资料,我觉得有一转载 2010-10-10 17:13:00 · 1123 阅读 · 0 评论 -
QuickTime文件格式解析
QuickTime文件格式解析Peter Lee 2008-06-14一、简介QuickTime是Apple公司开发的一套完整的多媒体平台架构,可以用来进行多种媒体的创建,生产,和分发,并为这一过程提供端到端的支持:包括媒体的实时捕捉,以编程的方式合成媒体,导入和导出现有的媒体,还有编辑和制作,压缩,分发,以及用户回放等多个环节。QuickTime文件格式是QuickTime整个架构体系中的一环,非常基础和重要的一环。QuickTime的多媒体架构应用于Mac OS和Windows系统上,而QuickTim转载 2010-10-11 14:56:00 · 1628 阅读 · 0 评论 -
RIFF文件规范
<br />RIFF文件规范<br />Peter Lee 2007-10-02<br /> <br />摘要:RIFF全称为资源互换文件格式(Resources Interchange File Format),RIFF文件是windows环境下大部分多媒体文件遵循的一种文件结构,常见的如WAV文件、AVI文件等。RIFF可以看成一种树状结构,其基本组成单元为LIST和CHUNK,分别如树的节点和叶子。<br /> <br />一、RIFF文件简介<br />RIFF是Microsoft提出的一种多媒体文转载 2010-10-11 22:11:00 · 1011 阅读 · 0 评论 -
芯片支持的且会被用到的H.264特性 预测编码基本原理
视频压缩:1.H.264基本档次和主要档次;2.CAVLC熵编码,即基于上下文的自适应变长编码;(不支持CABAC,即基于上下文的自适应算术编码)<br />分辨率:仅用到1080p60,即分辨率为1920*1080,逐行扫描视频,每秒60帧。<br />超低延时技术:1080p60的等待时间小于1ms。<br />封装:1--676个引脚;2--27mm*27mm正方形大小。下面两个框图是预测编码基本框图:<br />(a)<br />(b)<br />其中:x(n)是当前像素的实际值,p(n)为其预转载 2010-10-12 16:48:00 · 988 阅读 · 0 评论 -
宏块与宏块对(附图)
<br /> 宏块与宏块对(附图) 假设 A、B 是上下相邻的两个 MB:<br /><br />在非宏块对的情况下:A、B宏块序号不连续,相差图像一行宏块个数。即按光栅扫描顺序编号。<br /><br />在帧宏块对的情况下:A、B宏块序号连续,即按锯齿扫描顺序编号。A、B 组成不变。A 称为顶帧宏块,B 称为低帧宏块。<br /><br />在场宏块对的情况下:A、B宏块序号连续,即按锯齿扫描顺序编号。但是这个时候的 A 是由原来 A、B 两个宏块中的奇数行像素组成,称为顶场宏块;而 B 是由原来 A、转载 2010-10-12 17:08:00 · 1137 阅读 · 0 评论 -
视频测试序列的下载地址
<br />1、http://www.tkn.tu-berlin.de/research/vid/(此网站已经移走,正在寻找。) <br />CIF: Akiyo、Bridge (far) 、Bridge (close) 、Bus 、Container 、Coastguard 、Flower 、Football 、Foreman 、Hall 、Highway 、Mobile & Calendar 、Mother & Daughter 、News 、Paris 、Silent 、Stefan 、Tempete转载 2010-10-12 17:09:00 · 1849 阅读 · 0 评论 -
264分析两大利器:264VISA和Elecard StreamEye Tools
<br />学了264有将近3个月有余,好多时候都在学习老毕的书和反复看JM86的代码,最近才找到264分析两大利器:264VISA和Elecard StreamEye Tools。不由得感叹,恨不逢同时。<br /> 简单的说下这两个软件:<br /> 264visa<br /> 强力的h264实时分析工具 ,能分析各种场合下的h264资源,适用于h264开发者,学习者。在图像分析上,VISA还是比EYE更加厉害,它包括了滤波前以及预测残差等等数据的输出。<br />转载 2010-10-12 17:10:00 · 2771 阅读 · 0 评论 -
store_coding_state (cs_cm)的作用
<br />//++ 以下是对当前宏块进行编码(这里的编码主要目的是为了计算按当前组合方式编码<br />//++ 生成码流的大小,因此编码前要保存当前编码状态,编码完成后必须恢复现场)<br />//===== S T O R E C O D I N G S T A T E =====<br />//---------------------------------------------------<br />store_coding_state (cs_cm); //++ 保存当前编码转载 2010-10-12 17:14:00 · 898 阅读 · 0 评论 -
关于H264通过RTP传输的打包方式
<br />Q:现在小弟初次尝试H264的编码通过RTP方式传输,具体实验环境的问题如下:<br />环境:<br />服务器端,H264的帧数据(可能超过64k),分成N个1460字节的包,然后加上RTP头发送。<br />客户端,VLC播放器,通过RTSP协议建立连接,然后接收数据解码播放。<br />结果:<br />VLC不能解码接收到的数据,解码出错,VLC的信息中显示不能解码帧数据。<br />我已经阅读了一遍rfc3984的文档,对里面的如何进行打包和用rtp传输不是非常理解,希望各位大虾能够转载 2010-10-12 17:17:00 · 1213 阅读 · 0 评论 -
图像、帧、片、NALU(firstime)
<br />图像、帧、片、NALU 是学习 H.264 的人常常感到困惑的一些概念,我在这里对自己的理解做一些阐述,欢迎大家讨论:<br /><br /><br />H.264 是一次概念的革新,它打破常规,完全没有 I 帧、P帧、B 帧的概念,也没有 IDR 帧的概念。对于 H.264 中出现的一些概念从大到小排序依次是:序列、图像、片组、片、NALU、宏块、亚宏块、块、像素。这里有几点值得说明:<br />(1)、在 H.264 协议中图像是个集合概念,顶场、低场、帧都可以称为图像(本文后面内容用到图像转载 2010-10-12 17:18:00 · 937 阅读 · 0 评论 -
5.19汇总
<br />int block_x = 8*(b8 & 0x01)+4*(b4 & 0x01);<br />int block_y = 8*(b8 >> 1)+4*(b4 >> 1);<br />请问下老大 这两句定义是什么意思啊?<br />带些值进去算一下就知道了 b8 = 0 1 2 3<br />b4 = 0 1 2 3<br />A:0 ........Err Concealment(0:Off,1:Frame Copy转载 2010-10-12 17:20:00 · 702 阅读 · 0 评论 -
rtp问题引领汇总
<br />视频网络传输一定要用rtp吗?<br />RTP/RTCP有一套很好的反馈机制,通过其可以估算网络状况,然后在编码端进行调整,如网络繁忙时适当的降低画面质量,减小码率等,主要是想通过RTP/RTCP协议实现QoS!同时也可以用http或udp啊,都可以的,自己再加一些控制信息。利用rtp/rtcp的好处是这个协议本身帮你加入了 一些控制信息。<br />相信有不少人和我一样,希望实现H264格式视频的流媒体播放。但是对于一个新手来说,往往不知道从何入手。利用百度,GOOGLE等搜索资料真是沙里淘转载 2010-10-12 17:21:00 · 1839 阅读 · 0 评论 -
[转载]流行视频格式讲解
<br />*. MPEG/.MPG/.DAT<br />MPEG也是Motion Picture Experts Group 的缩写。这类格式包括了 MPEG-1, MPEG-2 和 MPEG-4在内的多种视频格式。MPEG-1相信是大家接触得最多的了,因为目前其正在被广泛地应用在 VCD 的制作和一些视频片段下载的网络应用上面,大部分的 VCD 都是用 MPEG1 格式压缩的 ( 刻录软件自动将MPEG1转为 .DAT格式 ) ,使用 MPEG-1 的压缩算法,可以把一部 120 分钟长的电影压缩到 1转载 2010-10-12 17:22:00 · 671 阅读 · 0 评论 -
PartitionMotionSearch()
Outline:1、 CFG文件中有关多参考帧的相关选项2、 多参考帧涉及到的数据结构和全局变量3、 保存重建图像为参考帧4、 编码一帧前,设置参考帧列表5、 多参考帧的使用(即参考帧的选择策略问题)6、 遗留问题1、CFG文件中有关多参考帧的相关选项############################################################################### #Encoder Control##################################转载 2010-10-12 17:24:00 · 810 阅读 · 0 评论 -
宏块帧内预测的具体过程
<br />对一个宏块进行帧内预测的具体过程如下:<br /><br />(1)对于8x8色度块就选择一种帧内色度预测模式建立相应的帧内预测块;<br /><br />(2)按遍历的方法分别计算4种Intra_16x16帧内预测模式的代价(Rdcost16x16),选择具有最小代价(Rdcost16x16)的模式作为16x16亮度块的最佳帧内预测模式,进而获得该宏块在16x16亮度块帧内预测模式下的率失真开销(RdcostMB)。<br /><br />(3)对于4x4亮度块选择一种Intra_4x4帧内预转载 2010-10-12 17:24:00 · 1240 阅读 · 1 评论 -
RTP格式图 NNEXB格式和RTP格式
<br /> <br /> <br /> <br /><br />Dove(12337127) 10:15:45<br />我看JM代码里面有些疑问 看好多地方都出现了ANNEXB <br />时空互换(178316135) 10:16:08<br />h264的2种码流编码格式<br />Dove(12337127) 10:16:19<br />我就不太理解是什么意思 刚才翻标准看见了 刚准备认真看看<br /><br />Dove(12337127) 10:16:29<br />anne转载 2010-10-12 17:35:00 · 2100 阅读 · 0 评论 -
x264 移植到 ARM的方法
<br />1。Linux下编译X264:<br />其实在windows下使用vc已经编译过了,不过听到有人说在linux下编好了,我也就尝试做一下,况且x264源代码的makefile已经做好了,我只需要做的就是把文件copy一下,然后make 一下就可以了。<br />首先把x264-060805复制到目录下。<br />1、I64,uI64的错误,if (delta > 32767I64 || delta < -32768I64),这是lsp添加的,把注释部分换一下,去除I64的使用<br />2、转载 2010-10-12 17:44:00 · 1719 阅读 · 0 评论 -
FFMPEG设置 cbr讨论
<br />Q:我采用ffmpeg调用x264一直出错,命令如下<br />ffmpeg -s 352x288 -r 50 -pix_fmt yuv420p -i tmp.yuv tmp.h264<br />可不可以给点建议,找了很久也没有找到解决办法,错误时error while opening encoder for output stream 0.0 maybe incorrect parameters,先谢了<br />A。-vcodec libx264 没加?<br />加了也是一样<br /转载 2010-10-12 17:46:00 · 6805 阅读 · 0 评论 -
x264里的2pass指的是什么意思? x264源代码分析2.encode()
A:x264里的2pass指的是什么意思?另外stat是什么意思, 比如有个参数--stats <string> Filename for 2 pass stats [/"%s/"]/n", defaults->rc.psz_stat_out );<br />stats在这是什么意思?<br />2pass是2次编码的意思,stats是统计文档的名称,记录了1pass中的信息.2次编码就相当于2次转换这么做虽然转换时间会漫长,但压出的片子会有更好的画质,画面细节更好,而且体积会更小<br />转载 2010-10-12 17:48:00 · 9595 阅读 · 0 评论 -
mad的问题汇总
Q:我想将I帧的预测图像和原始图像的平均绝对误差给输出来,请问这个在JM86中需要在哪一点改动呢?谢谢 A: 差值保存在diffy中: diffy[j][i] = imgY_org[img->opix_y+j][img->opix_x+i] - pred[j][i];分析MAD不知道程序中在哪求可以直接搜索"MAD“结果中有一个函数:img->MADofMB[img->current_mb_nr] = calc_MAD();就是这个了,进去看一下://calculate MAD转载 2010-10-12 17:53:00 · 1687 阅读 · 0 评论 -
漏桶算法与令牌桶算法
<br />漏桶算法(Leaky Bucket)是网络世界中流量整形(Traffic Shaping)或速率限制(Rate Limiting)时经常使用的一种算法,它的主要目的是控制数据注入到网络的速率,平滑网络上的突发流量。漏桶算法提供了一种机制,通过它,突发流量可以被整形以便为网络提供一个稳定的流量。 <br /> <br /> 漏桶可以看作是一个带有常量服务时间的单服务器队列,如果漏桶(包缓存)溢出,那么数据包会被丢弃。<br /> 漏桶算法的基本内容如下: <br /> * 漏桶算法强制一个常转载 2010-10-12 17:54:00 · 1544 阅读 · 0 评论 -
错误检测dP->bitstream->ei_flag run&&RestrictRef
<br />JM86模型,对于错误检测,dP->bitstream->ei_flag在什么情况下置1?<br />还是无错的时候dP->bitstream->ei_flag=0,有错时dP->bitstream->ei_flag等于一个较大的无效值?<br />看下所有给 dP->bitstream->ei_flag 赋值的地方就知道了<br />JM86中,dP->bitstream->ei_flag标记了当前码流是否出错,代码中出现很多如 if (active_pps->entropy_coding_m转载 2010-10-12 17:59:00 · 858 阅读 · 0 评论 -
。。。。。etc 时域错误隐藏个人理解
<br />三个文件名以 erc 开头的文件就是 EC 相关的文件。EC 的入口在 exit_picture 函数中,从 ercStartSegment 开始到 ercConcealInterFrame 结束。你自己做一个丢包之后的码流,把程序跑起来跟踪一下 EC 过程,慢慢分析代码。<br /> <br />错误隐藏过程在整个帧全部解码后,而且位于环状滤波过程之后。<br /><br /> 因为宏块按扫描顺序一行一行的编解码,错误码流会影响一连串的宏块。因此,错误隐藏时,一般在当前帧解码结束后转载 2010-10-12 18:00:00 · 1085 阅读 · 0 评论 -
ARM MOV和 LDR指令关系
<br />ARM是RISC结构,数据从内存到CPU之间的移动只能通过L/S指令来完成,也就是ldr/str指令。<br />比如想把数据从内存中某处读取到寄存器中,只能使用ldr<br />比如:<br />ldr r0, 0x12345678<br />就是把0x12345678这个地址中的值存放到r0中。<br />而mov不能干这个活,mov只能在寄存器之间移动数据,或者把立即数移动到寄存器中,这个和x86这种CISC架构的芯片区别最大的地方。<br />x86中没有ldr这种指令,因为x86的mo转载 2010-10-12 18:04:00 · 880 阅读 · 0 评论 -
PMT_Header-节目映射表的数据结构2
1 标志位 table_id8固定为0x02 ,标志是该表是PAT2段语法标志位section_syntax_indicator1段语法标志位,固定为13zero104保留字reserved_12保留字5有用的字节数section_length 12表示这个字节后面有用的字节数,包括CRC32。假如后面的字节加上前面的字节数少于188,后面会用0XFF填充。假如这个数值比较大,则PAT会分成几部分来传输。6传输流的IDprogram_numbe转载 2010-10-12 18:37:00 · 1193 阅读 · 0 评论 -
TS流头部的调整字段
<br />见 http://hi.baidu.com/xumingxsh/blog/item/7b178903f1fa98014afb512f.html<br />http://hi.baidu.com/xumingxsh/blog/item/ba50dba320a10da3caefd02f.html转载 2010-10-12 18:45:00 · 1432 阅读 · 0 评论 -
H264关于RTP协议的实现
<br />完整的C/S架构的基于RTP/RTCP的H.264视频传输方案。此方案中,在服务器端和客户端分别进行了功能模块设计。服务器端:RTP封装模块主要是对H.264码流进行打包封装;RTCP分析模块负责产牛和发送RTCP包并分析接收到的RTCP包;QoS反馈控制模块则根据RR报文反馈信息动态的对发送速率进行调整;发送缓冲模块则设置端口发送RTP、RTCP包。客户端:RTP模块对接收到的RTP包进行解析判断;RTCP模块根据SR报文统计关键信息,产牛并发送RR包。然后,在VC++6.0下用Socket编转载 2010-10-12 18:55:00 · 842 阅读 · 0 评论 -
多媒体技术复习汇总 收藏
<br />多媒体技术复习汇总 收藏 <br /><br />1. 什么是媒体:媒体是信息表示和传输的载体。<br />2. 媒体分类:感觉媒体,表示媒体,表现媒体,存储媒体,传输媒体<br />3. 多媒体技术的定义和特点:多媒体技术就是计算机交互式综合处理声、文、图信息的技术,具有集成性、实时性和交互性。<br />4. 多媒体标准:微软提出MPC<br />5. ISO和ITU联合制定的数字化图像压缩国际标准:JPEG标准转载 2010-10-12 18:56:00 · 1609 阅读 · 0 评论 -
使用FFMPEG SDK解码流数据获得YUV数据及其大小
<br />本文以H264视频流为例,讲解解码流数据的步骤。<br />为突出重点,本文只专注于讨论解码视频流数据,不涉及其它(如开发环境的配置等)。如果您需要这方面的信息,请和我联系。<br />准备变量 <br />定义AVCodecContext。如果您使用类,可以定义成类成员。我这里定义成全局变量。<br />static AVCodecContext * g_pCodecCtx = NULL;<br />定义一个AVFrame,AVFrame描述一个多媒体帧。解码后的数据将被放在其中。<br />转载 2010-10-12 18:58:00 · 1369 阅读 · 0 评论 -
运动估计简介
<br />运动估计( Motion Estimation)维基百科链接:http://en.wikipedia.org/wiki/Motion_estimation 运动估计的应用有很多,最初的应用的领域是视频的编码。<br /> 运动估计算法一般分为: 像素递归法pel-recursive algorithm (PRA)和块匹配法 block-matching algorithm (BMA)。块匹配法是把图像分成若干矩形块,事先假定块做平移运动, 按照不同的准则函数对块进行匹配;像转载 2010-10-12 19:16:00 · 2401 阅读 · 0 评论