![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
openh264
一只小小雪
这个作者很懒,什么都没留下…
展开
-
openh264帧间预测过程之skip模式的判定
openh264在做运动估计之前是要先check一下skip模式,判断当前宏块是否为skip模式首先要判断两个条件:(1)当前帧的参考图片是P帧,并且当前宏块在参考图片中的同位块是skip模式或者Background模式;(2)当前宏块相邻的左边、上边、左上和右上宏块至少有一个存在并且是skip模式。若满足这两个条件中的一个就继续向下执行,否则当前宏块一定不会是skip模式。接下来的过程为:1、预测skip模式的SAD值(iSadPredSkip):根据左边、上边、左上、右上相邻宏块是否存在、是否原创 2020-10-17 20:17:38 · 1242 阅读 · 1 评论 -
openh264帧间预测过程
openh264的帧间预测过程分为低复杂度过程和高复杂度过程。在高复杂度下,预测过程如下:这些过程的调用都是在WelsMdInterMb函数中。原创 2020-10-17 19:00:42 · 384 阅读 · 0 评论 -
openh264帧间预测之WelsMdInterMbLoop
openh264的帧间预测过程分为基本层和增强层,基本层预测在WelsMdInterMb函数中实现,增强层预测在WelsMdInterMbEnhancelayer函数中实现。这两个函数的调用都在WelsMdInterMbLoop函数中通过函数指针来调用。WelsMdInterMbLoop函数的过程如下:int32_t WelsMdInterMbLoop (sWelsEncCtx* pEncCtx, SSlice* pSlice, void* pWelsMd, const int32_t kiSlice原创 2020-10-14 21:05:29 · 313 阅读 · 0 评论 -
openH264帧类型的确定
在openh264中帧类型只有IDR帧和P帧,IDR帧的确定根据三个条件进行判定:1、关键帧的间隔——intraPeriod,这个值在编码配置文件中进行设置;2、是否有场景切换;3、是否将当前帧作为IDR帧的标志,第一帧肯定是IDR帧。只要满足三个条件中的一个就可以将该帧定位IDR帧。针对条件1:如果编码当前帧的索引编号FrameIndex大于等于intraPeriod,即将bIdrPeriodFlag设为true,否则为false。针对条件2:a. 场景切换检测出场景为LARGE_CHAN原创 2020-10-12 20:39:36 · 672 阅读 · 0 评论 -
openh264中关于SVC的编码结构
openh264中的SVC包括时域可伸缩、空域可伸缩编码。时域可伸缩编码时域可伸缩编码是通过调节图像的帧率,在基本层帧率和最高帧率之间提供帧率的可伸缩性。当网络带宽较窄时,接收端只需接收基本层帧率f_BL帧图像就可以恢复出基本视频;当网络带宽较宽时,接收端可以接收到f_BL+f_EL帧图像,这样解码后的视频更流畅。时域可伸缩在编码的时候根据一个时间ID分成基本层和增强层进行编码,先编基本层,再编增强层,增强层可以有一个,也可以有多个。增强层可以参考基本层。一个基本层和增强层组织成一个GOP。openh原创 2020-08-09 18:50:47 · 2560 阅读 · 7 评论 -
openh264中函数WelsCodeOneSlice解析
WelsCodeOneSlice函数包含预测、变换等过程的入口函数,入口函数包含在一个二维数组中,该数组如下:// 1st index: 0: for P pSlice; 1: for I pSlice;// 2nd index: 0: for non-dynamic pSlice; 1: for dynamic I pSlice;static const PWelsCodingSliceFunc g_pWelsSliceCoding[2][2] = { { WelsCodePSlice, Wel原创 2020-08-09 17:16:40 · 767 阅读 · 1 评论 -
openh264编码器执行过程
openh264中主要的编码过程在函数WelsEncoderEncodeExt中,这个函数主要调用以下几个:BuildSpatialPicList (pCtx, pSrcPic):确定空间层数,如果是多层,则进行下采样确定每层的像素值。PrepareEncodeFrame (pCtx, pLayerBsInfo, iSpatialNum, iCurDid, iCurTid, iLayerNum, iFrameSize, pFbi->uiTimeStamp):确定帧类型,这里只有IDR帧和P帧、Sk原创 2020-08-09 16:19:42 · 1355 阅读 · 0 评论 -
Windows10下编译运行openh264
1、安装VS20152、安装MinGW3、将包含bash.exe文件的路径加入到环境变量path中,我这里是C:\MinGW\msys\1.0\bin4、将C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin和C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE加入到环境变量path中5、创建LIB变量,并将C:\Program Files (x86)\Windo原创 2020-08-09 15:42:14 · 1435 阅读 · 0 评论