自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 收藏
  • 关注

原创 HEVC有关量化参数Qp的计算

量化参数,简称QP,是解码中反量化过程中最重要的参数,我觉得HEVC解码的中Qp的计算有那一点复杂,标准有那么一点晦涩,这里来一起探讨下。1.参数PPS中关于Qp的参数:init_qp_minus26:加上26表示初始Qp,范围[-26,25]。cu_qp_delta_enabled_flag:1表示语法元素diff_cu_qp_delta_depth(PPS中)存

2017-02-28 10:18:55 10784

原创 FLV格式的解复用和PTS分析代码

视频解码研究之PTS(1)TS格式和FLV格式视频解码研究之PTS(2)Mp4格式,AVI格式和MKV格式在视频解码研究之PTS(1)TS格式和FLV格式中分析了FLV格式PTS,并提供了程序运行结果,这里给出代码。这段代码能够打印flv格式中所有的PTS,还可以将264的视频从flv文件中demux出来。#include "stdio.

2016-12-21 16:43:13 1936

原创 MKV格式的PTS解析代码

视频解码研究之PTS(1)TS格式和FLV格式视频解码研究之PTS(2)Mp4格式,AVI格式和MKV格式在文章视频解码研究之PTS(2)Mp4格式,AVI格式和MKV格式中,提到mkv格式的PTS,并编写程序对某MKV文件进行解析计算,得到各个block绝对时间码(Absolute Timecode)。程序十分简单,代码如下,帮助大家理解mkv文件的格式。#i

2016-12-21 15:21:48 1758

原创 Run-Time Check Failure #2 - Stack around the variable 'temp' was corrupted.错误的产生和分析

今天在写分析HEVC数据的小程序,编译正常,运行时产生了如下错误:大意就是变量temp周围的内存被污染了,冲内存了。其中temp是我定义的一个变量,类型为unsigned char,我用fscanf函数从文件中读取了一个数值(范围在0~255之间)。 fscanf(iRe,"%02x",&temp);反复调试后,才明白了原因,原来在调用fscanf时,以te

2016-11-29 17:36:45 9517

原创 多年前写的解复用应用程序demuxbox

很多年以前写的代码了,一个小程序实现了对Avi和mp4格式文件的解复用,将视频流和音频流从格式文件中分离出来。没有使用ffmpeg的库,所有底层的功能都是一行行用手码出来的,这种方法十分的不可取。但是通过这些代码可以清楚的了解avi和mp4文件的结构以及解复用的原理。

2016-11-21 16:36:47 669

原创 HEVC的帧间预测解码(5)

在(1)到(4)中,已经详细介绍了运动向量(mv)的解码,得到mv之后,即可从参考图像中得到运动补偿的参考值。输入包括:当前解码块的左上角亮度坐标(xCb, yCb );当前预测块相对于当前解码块的左上角亮度坐标( xBl, yBl );指示当前解码块大小的变量nCbS;当前解码块的大小(nPbWx nPbH)亮度运动向量mvL0 和 mvL1色度运动向量m

2016-09-23 14:43:20 1786 5

原创 HEVC的环路滤波(2)

2.3 边界滤波2.3.1 概述   VOR方向    亮度块滤波步骤:    1         变量nD等于1     2         xDk等于k 0时。    2.1        进行2.5.3的步骤,得到决定dE, dEp, and dEq,和变量β和 tC    2.2        进行2.5.4的步骤,得到滤波图像recPictureL

2016-09-08 11:12:27 2259

原创 HEVC的环路滤波(1)

HEVC的环路滤波(1)1. 概述HEVC的环路滤波包括两个部分:去方块滤波(deblocking filter)和样本自适应缩进滤波(sample adaptive offset filter,简称SAO)。首先进行去方块滤波(见第2节),输入为重构后的图像矩阵,输出滤波后的图像,然后如果sample_adaptive_offset_enabled_flag为1,再进

2016-09-07 15:07:31 4244

原创 雷神,R.I.P,我会坚持

雷神是我开设这个blog的原因和动力所在。初次看到他的文章时,他对技术的热诚和渴求让我羡慕,而他的分享精神让我感动。我便决心也要写blog,将知识和分享精神传播出去。而在他组织的QQ群里,大家素昧平生,为了一个共同的愿望走到一起来,不断交换着见解,互相帮助,所有人都得到了很大的提升。最近几个月,家里有非常多的琐事,弄得我焦头烂额,导致blog也没有及时更新,QQ

2016-08-23 12:53:45 833 2

原创 HEVC的帧间预测解码(4)

前面的文章完成了merge模式的MV的计算,下面讨论非merge模式的MV。4 非merge模式的MV计算当PU的merge_flag等于0时,就是非merge模式了,基本的思路就是从PU中解出mvd,然后通过计算mvp,最后得到MV。4.1 非Merge模式整体流程1.如果inter_pred_idc[ xPb ][ yPb ](预测单

2016-04-28 17:02:44 2295

原创 HEVC的帧间预测解码(3)

3.5 计算组合双向预测参考值(M7)接着上一篇文章HEVC的帧间预测解码(2)继续讲merge模式的mv计算。

2016-04-28 17:01:58 1650

原创 HEVC的帧间预测解码(2)

3.2 计算空域候选值接着上一篇文章HEVC的帧间预测解码(1)继续讲merge模式的mv计算。根据流程,第一步就是M1.计算空域候选值。中间的方块代表当前的PU,A0, A1, B0, B1. B2的几何位置如图所示。1. A1的计算A1的坐标为( xPb − 1,  yPb + nPbH − 1 )

2016-04-26 16:17:27 2427 4

原创 HEVC的Availability计算过程

HEVC的intra预测和inter预测等等都要用的邻块的Availability信息。在文章HEVC的帧内预测(1)中已经写到了有关available的内容了,但是不够完整,把这部分内容归到intra预测中也不是很合适,所以单独写一篇文章描述这个过程,也正好对应标准6.4 Availability processes的内容。1.z-scan order block availab

2016-04-22 10:07:41 1725

原创 HEVC的帧间预测解码(1)

1.概述       HEVC的帧间预测过程的复杂程度实在是令人发指。    我从解码角度详细分析一下,由于细节非常多,难免有错误。    帧间预测(inter prediction)过程为解码提供帧间预测值(predSamples[x][y]),对应标准8.5.2中的内容。    简单说,帧间预测就是以预测块(PU,prediction unit)为单位,计算PU的运动向量(MV

2016-04-21 16:03:23 4072 5

原创 HEVC的帧内预测(2)

接着上一篇文章HEVC的帧内预测(1)继续讨论。相邻参考值的获取帧内预测用到的相邻参考值(neighbouringsamples,p[ x ][ y ]),其几何位置如下图所示。( xTbCmp, yTbCmp )表示当前变换块相对于图像左上角的坐标。当前tb(current transform block)的尺寸为TbS,neigbour samples数量为2*

2016-04-08 10:29:47 2580

原创 HEVC的帧内预测(1)

帧内预测(intra prediction),即intra块的预测过程,为intra块解码提供预测值(predSamples[ x ][ y ])。首先要确定当前块和邻块的关系。1.z-scan order block availabilityz-scan order block availability,就是在Z顺序扫描下的availability。

2016-04-01 15:25:55 3152 5

原创 HEVC的参考队列解码

参考队列是指在进行帧间解码时,P或者B slice所参考的已解码的,位于解码图像缓存中(DPB, decoded picture buffer)中的图像队列,类似h264中的reflist0和reflist1。涉及到整个DPB的管理和参考帧的选择。首先介绍一下短期参考图像参数集(Short-term reference picture set ), 简称short-term RPS。short

2016-03-28 15:30:36 5609 5

原创 HEVC标准中的图像分割(2),slice,tile,CTU,CU,PU,TU等

接着来说HEVC的图像分割。HEVC的标准中有这么一段话,翻译过来就是:图像分成分量(Y,Cb,Cr)。分量分成coding tree blocks图像分成tile列图像分成tile行Tile列分成tilesTile行分成tilesTile分成coding tree blocks图像分成slicesSlice分成slice segmentSl

2016-03-11 11:33:10 5600 4

原创 HEVC标准中的图像分割(1),slice,tile,CTU,CU,PU,TU等

H.265的标准可以从网上免费下载。这里写一些我个人对HEVC(H.265)标准的解读,难免有些错误,欢迎大家积极积极留言讨论。图像分割,就是说一帧图像从几何空间上在标准中是如何划分的。与h.264不同,265引入了tile的概念。首先,图像被分成slices和tiles。一个Slice包含一个slice segment或者以一个independent slice segm

2016-02-02 16:23:01 7528 2

原创 视频解码研究之PTS(2)Mp4格式,AVI格式和MKV格式

关于其他格式的PTS请看:视频解码研究之PTS(1)TS格式和FLV格式3.MP4格式Mp4格式中涉及到PTS信息的atom包括:stts,ctts和elst。先说stts,格式如下:存储着一系列的参数对(sample_count, sample_time_delta)。每一个参数对给出了具相同时间间隔的连续的sample的个数和这些sample的时间间

2015-12-20 10:44:26 11166

原创 视频解码研究之PTS(1)TS格式和FLV格式

今天来讨论下PTS,这片东西涉及的方面比较多,许多结论我也是从大胆推测的,有什么不对的,希望大家帮我指出来。PTS是presentation time stamp的缩写,简单说就是播放时间戳。ffmpeg中音视频的同步是通过PTS完成的,而PTS是怎样从码流中解析出来的呢?其实不同的多媒体文件格式有不同获取方式。1.TS流的PTS:这可以说是PTS的出处。PTS是在mpeg-1,2

2015-12-08 14:18:47 20544 5

原创 ffmpeg的HEVC解码源代码分析(一)整体框架

通过调试ffmpeg对HEVC码流(格式为es流,就是rawvideo)的解码过程,分析ffmpeg的HEVC解码过程和实现方法。首先要说的是调试所用的工程的config为:./configure –disable-asm –disable-pthreads –enable-debug –disable-optimizations进行configure。禁用了pthread,所以涉及到pt

2015-12-02 09:53:19 3340

原创 ffmpeg重要结构体之HEVCContext和HEVCFrame

HEVCContext和HEVCFrame是ffmpeg的HEVC解码中非常重要的结构体。首先来看下HEVCContext,定义位于libavcodec\Hevc.h中。代码如下:typedef struct HEVCContext { const AVClass *c; // needed by private avoptions AVCodecContext *a

2015-11-25 10:50:15 1598

原创 Linux环境下,用eclipse对ffmpeg源代码进行调试

Linux环境下,用eclipse对ffmpeg源代码进行调试。1.从官网(ffmpeg.org)上下载ffmpeg的源码。2. 解压代码压缩包。3. 个人的系统和配置都不相同,但要用eclipse编译和调试ffmpeg,有几点必须满足:a.GNU Make 必须为3.81版本或者更高版本,否则在编译过程中会导致不可预知的错误,并且错误提示不一定告知是因为GNU Make的

2015-11-20 15:54:11 1165

原创 ffmpeg重要结构体之AVPacket

AVPacket是ffmpeg中有关格式信息的结构体,在文件libavcodec/avcodec.h中。typedef struct AVPacket { /** * A reference to the reference-counted buffer where the packet data is * stored. * May be NULL, t

2015-11-13 16:03:14 1797

原创 ffmpeg重要结构体之AVStream

AVStream结构体存储有关流(视频流或者音频流)的信息。此定义位于libavformat/avformat.h中。typedef struct AVStream { int index; /**< stream index in AVFormatContext */ /** * Format-specific stream ID. * decodi

2015-11-13 14:56:40 1631

原创 ffmpeg重要结构体之AVIOContext

AVIOContext是有关输入输出数据的结构体,其定义位于文件libavformat\avio.h中。在结构体AVFormatCtx中有AVIOContext类型的成员。定义代码如下:typedef struct AVIOContext { /** * A class for private options. * * If this AVIOCo

2015-11-13 09:38:32 1434

原创 ffmpeg重要结构体之AVCodec

AVCodec结构体是有关codec的结构体。在文件"libavcodec/avcodec.h" 中。typedef struct AVCodec { /** * Name of the codec implementation. * The name is globally unique among encoders and among decoders (but

2015-11-12 17:18:06 1365

原创 ffmpeg重要结构体之AVCodecContext

结构体AVCodecContext位于文件libavcodec/avcodec.h中,是有关编解码的结构体。typedef struct AVCodecContext { /** * information on struct for av_log * - set by avcodec_alloc_context3 */ const AVClass

2015-11-12 16:29:03 4421

原创 ffmpeg重要结构体之AVFormatContext

结构体AVFormatContext位于文件libavformat/avformat.h中。是有关文件格式的结构体。typedef struct AVFormatContext { /** * A class for logging and @ref avoptions. Set by avformat_alloc_context(). * Exports (de)

2015-11-12 15:07:32 1986

原创 ffmpeg重要结构体之AVFrame

通过对FFmpeg的基本了解,并利用其库文件,输出YUV图像到文件。(见连接  [学习笔记]基于ffmpeg的视频解码,输出YUV图像到文件),我们知道解码后的图像(YUV)数据是存放在AVFrame结构体中的。今天我们就来了解下结构体AVFrame,这个结构体的定义位于文件libavutil/frame.h中。以下是代码:typedef struct AVFrame {#define

2015-11-12 10:51:53 6420 3

原创 [学习笔记]基于ffmpeg的视频解码,输出YUV图像到文件。

虽然在音视频领域工作了一段时间,但是对于ffmpeg还是比较陌生,从这周开始入手学习。拜读了雷霄骅的《最简单的基于FFMPEG+SDL的视频播放器 ver2》,受益匪浅,链接如下http://blog.csdn.net/leixiaohua1020/article/details/38868499采用文中的方法,利用ffmpeg的库对视频进行解码,在这里把步

2015-11-06 14:49:50 4582

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除