微信账号被别人绑定如何找回号绑定手机号码没使用,账号怎么找回

H265/HEVC 常用缩写词及其含义
本文主要系H265/HEVC 官方文档第4章缩写词的部分翻译,加入了大量自己的理解。
B Bi-predictive:双向预测,即B帧或B条带,B条带中的CU可以采用帧内或帧间预测编码,每个预测块采用双向预测方式进行预测,B条带编码时同时使用参考图像列表0和参考图像列表1。
BLA Broken Link Access:断点连接接入,主要用于实现对不同视频码流的拼接。只要简单地把后续码流中的一个IRAP(帧内随机接入点)图像的NAL单元类型改变为BLA标记值,串接到前面码流中IRAP帧的位置形成一个新的码流,就可以完成码流拼接的工作。
BPB Bitstream Partition Buffer
CABAC Context-based Adaptive Binary Arithmetic Coding:基于上下文的自适应二进制算术编码
CB Coding Block:编码块,CB是之前已经分割好的CTB根据块中的图像内容而自适应划分的。一般来说,相对比较平滑的区域往往采用大尺寸的CB,而细节多的区域则采用较小尺寸的CB,以亮度CB为例,尺寸可以由8x8到CTB的大小,也即亮度CTB的尺寸是亮度CB的最大可支持的尺寸。
CBR Constant Bit Rate:固定码率
CLVS Coded Layer-wise Video Sequence:逐层编码的视频序列
CPB Coded Picture Buffer:编码图像缓存
CRA Clean Random Access:纯随机接入,它处于比特流GOP的第一帧,即RAP图像位置,是I帧,和IDR帧一样可被独立解码。CRA图像都是和相应前置图像有关联的图像。
CRC Cyclic Redundancy Check:循环冗余校验
CTB Coding Tree Block:编码树块,用来表示视频帧中相互独立的区域,即视频帧被划分为统一大小、紧邻但互不重叠的若干2Nx2N样点的方形CTB,HEVC中可以采用四叉树的方式,将CTB分割成更小的块,CTB的尺寸由编码器选择,CTB的尺寸可以是16x16、32x32或64x64,一般来说比较大的尺寸可以获得较高的压缩比。
CTU Coding Tree Unit:编码树单元,同义位置的亮度CTB和两个色度CTB,再加上相应的语法元素以及所包含的编码单元(CU)形成一个编码树单元(CTU)。
CU Coding Unit:编码单元,每个CU包含1个亮度CB、2个色度CB以及相应的语法元素。CU可以分为两类,跳过型CU和普通CU,Skipped CU是一种与H.264/AVC标准中的跳过宏块类似的编码单元,不仅只能采用帧间预测模式,而且产生的运动向量和图像的残差信息不需要传送给解码端;而普通CU则可以采用帧内和帧间两种方式进行预测,然后对残差数据以及附加的控制信息进行编码。整个CU只能是一种预测模式,不是帧内就是帧间。
CVS Coded Video Sequence:编码视频序列
CVSG Coded Video Sequence Group:编码视频序列组
DCT Discrete Cosine Transform:离散余旋变换。
DPB Decoded Picture Buffer:解码图像缓存,用作码流中后续图像解码的参考。
DUT Decoder Under Test:测试中的解码器
EG Exponential-Golomb:指数哥伦布(编码)
EGk k-th order Exponential-Golomb:k-阶指数哥伦布(编码)
FIFO First-In, First-Out:先进先出
FIR Finite Impulse Response:有限冲击响应,数字滤波器的单位冲激响应h(n)只含有有限个非零样值的一类滤波器,简记为FIR。
FL Fixed-Length:固定长度
GBR Green, Blue and Red:绿、蓝和红
GDR Gradual Decoding Refresh:逐步解码刷新,是相对于IDR的一个概念。
HRD Hypothetical Reference Decoder:理想的参考解码器
HSS Hypothetical Stream Scheduler
I Intra:帧内或I条带,I条带内的所有编码单元都采用帧内预测进行编码。
IDCT Inverse Discrete Cosine Transformation:逆离散余旋变换
IDR Instantaneous Decoding Refresh:即时解码刷新。IDR图像是帧内编码图像,切断了后续图像对此IDR前面已解码图像的联系,在解码顺序中跟随IDR图像后面的图像不能使用先于IDR图像的已解码图像作参考。
INBLD Independent Non-Base Layer Decoding:独立非底层解码
IRAP Intra Random Access Point:帧内随机接入点,IRAP图像都属于时域子层0,而且一定是帧内图像,它的编码不需要参考任何其他图像,但帧内图像却不一定是IRAP图像。HEVC的IRAP图像包括:IDR图像、CRA图像和BLA图像。
LPS Least Probable Symbol:最不可能符号
LSB Least Significant Bit:最低有效位
MPS Most Probable Symbol:最可能的符号
MSB Most Significant Bit:最高有效位
MVP Motion Vector Prediction:运动向量预测
NAL Network Abstraction Layer:网络提取层,NAL负责格式化数据并提供头信息,以保证数据适合各种信道和存储介质上的传输。NAL单元根据是否装载有编码视频或其他相关数据而分为VCL NAL单元和non-VCL NAL单元两类。视频编码层的NAL单元包括保留在内共有64种类型,用0~63不同的值标注在NAL单元头信息中。
OLS Output Layer Set
P Predictive:预测帧或P帧,除了I条带的编码类型,P条带中的一些CU还可以采用帧间预测进行编码,每个PB采用单向预测方式进行预测,P条带编码时只利用参考图像列表0。
PB Prediction Block:预测块,当预测模式选择为帧内时,对于所有的块尺寸,PB尺寸和CB尺寸相同;当预测模式选择帧间时,则需要指明亮度和色度CB是否被分成1个、2个或4个PB,只有当CB尺寸等于所允许的最小尺寸时才被分成4个PB。
PCM Pulse Code Modulation:脉冲编码调制,是最常用、最简单的波形编码。它是一种直接、简单地把语音经抽样、A/D转换得到的数字均匀量化后进行编码的方法,是其他编码算法的基础。
POC Picture Order Count:图像顺序计数,主要用于标识图象的播放顺序,同时还用于在对帧间预测片解码时,标记参考图像的初始图像序号。
PPS Picture Parameter Set:图像参数集,PPS包含用于一幅图像的参数。一个PPS可在图像层面激活,而不是在序列层面,而且激活的PPS可以从一幅图像到另一幅图像而改变。同一幅图像中所有的Slice必须参考同一个PPS。PPS信息大致包括:a) 用于CABAC的熵编码指标参数、环路滤波器的指标参数;b) 起始图像控制信息,如QP、偏移、伸缩列表等;c) 对当前图像的tile划分参数等。
PU Prediction Unit:预测单元,是HEVC进行预测运算的基本单元,只能定义在不再划分的最低层的CU中。一个PU包括亮度和色度PB和相关预测语法,一个CU可以包含一个或者多个PU,PU的类型可以是跳过、帧内、帧间。CU中所有的PU为同一种预测方式,即在帧内预测和帧间预测中二选一。
RADL Random Access Decodable Leading (Picture):可解码随机接入前置图像,在SOP(structure of picture)中,一类解码顺序在IRAP图像之后,而显示顺序在IRAP图像之前的前置(Leading)图像,这种图像的解码不需要参考任何解码顺序在IRAP之前的图像。
RASL Random Access Skipped Leading (Picture):跳过随机接入前置图像,在SOP(structure of picture)中,一类解码顺序在IRAP图像之后,而显示顺序在IRAP图像之前的前置(Leading)图像有可能包含帧间预测,需要参考解码器中不存在的图像。于是解码器只能跳过这些无法解码的图像继续解码处理,称这些不可解码的图像为跳过随机计入前置(RASL)图像。
RBSP Raw Byte Sequence Payload:原始字节序列载荷
RGB Same as GBR:红绿蓝,三原色
RPS Reference Picture Set:参考图像集。HEVC为了管理解码多参考帧,需将有关的先前已解码图像保留在解码图像缓冲(DPB)中,用作码流中后续图像解码的参考。这些保留下来的参考图像就称为参考图像集(RPS)。
SAO Sample Adaptive Offset:样值自适应补偿,SAO的主要思想是对照原始图像,通过对重建图像块的像素特点进行合适的分类,对不同的分类施加不同的补偿值,使其更接近原图像,从而达到减少图像失真的效果。
SAR Sample Aspect Ratio:采样纵横比
SEI Supplemental Enhancement Information:补充增强信息,为视频编解码器在比特流中提供了必要的元数据。所谓元数据不是为了正确解码输出的图像取样值,而是用于其他目的的数据,例如用于图像输出定时、显示、差错控制和掩盖等目的。
SLNR Sub-Layer Non-Reference (Picture):子层非参考图像
SMPTE Society of Motion Picture and Television Engineers:电影和电视工程师协会
SODB String Of Data Bits:数据比特串,需要按照一定的规则经过转换为符合NAL单元要求的RBSP(原始字节序列载荷)的数据格式。
SPS Sequence Parameter Set:序列参数集,描述的是编码视频序列一般特性的高层参数,SPS定义的是用于编码视频序列的特征和激活工具,其信息仅用于由层Layer_ID定义的层。
STSA Step-wise Temporal Sub-layer Access:逐步时域子层接入点
TB Transform Block:变换块,CB可以采用四叉树分割方式递归的分割成若干个TB,对于帧间预测CU,HEVC允许TB跨越多个PB,以此最大限度地提高TB分割的编码效率。
TR Truncated Rice:这类编码只出现在系数编码中,需要带cRiceParam参数,编码规则就是把输入的高cRiceParam位使用TU模式编码,剩下的位直接写出去即可。详细说明可参考H265/HEVC标准文档的第 9.3.3.2 节。
TSA Temporal Sub-layer Access:时域子层接入点,比特流中可以由此开始解码更高时域层的位置。
TU Transform Unit:变换单元,是进行变换和量化的基本单元,它是在CU的基础上划分的,但它基本上不受所在CU的预测单元(PU)划分的限制。方形CU到TU的划分也是一种四叉树,又称&变换树&或残差四叉树,CU是这棵树的根,TU是这棵树的叶,也是方形。
UCS Universal Coded Character Set:通用编码字符集
UTF UCS Transmission Format:通用编码字符集传输格式
UUID Universal Unique Identifier:局唯一标识符,是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。
VBR Variable Bit Rate:可变码率
VCL Video Coding Layer:视频编码层
VPS Video Parameter Set:视频参数集,为了传送应用于多层和子层视频编码所需的信息。它提供了有关编码视频序列的全局性信息,包括一个或多个层的存在、可用的操作点信息。VPS是最高层参数集,它只能在编码视频序列的开头激活,即在一个IDR或BLA接入单元,或CRA接入单元,它是编码视频序列的第一个接入单元。
VUI Video Usability Information:视频可用信息,收集了对解码视频输出和显示的有用信息。VUI作为SPS的一部分,也能通过其他方式传送到解码器(如带外传输),它是不需要解码处理的。VUI提供的信息包括图像比例、彩色格式、图像定时信息等。H265(HEVC) nal 单元头介绍及rtp发送中的fu分组发送详解
h265(HEVC)nal单元头介绍,及h265视频数据传输,通过rtp传输时fu分组包头结构介绍
& & & & 首先来介绍下h265(HEVC)nal单元头,与h264的nal层相比,h265的nal unit header有两个字节构成,如下图所示:
从图中可以看出hHEVC的nal包结构与h264有明显的不同,hevc加入了nal所在的时间层的ID,取去除了nal_ref_idc,此信息合并到了naltype中,通常情况下F为0,layerid为0,TID为1。
& & & & nal单元的类型有如下几种:
enum NalUnitType
NAL_UNIT_CODED_SLICE_TRAIL_N = 0,
NAL_UNIT_CODED_SLICE_TRAIL_R,
NAL_UNIT_CODED_SLICE_TSA_N,
NAL_UNIT_CODED_SLICE_TLA,
// Current name in the spec: TSA_R
NAL_UNIT_CODED_SLICE_STSA_N,
NAL_UNIT_CODED_SLICE_STSA_R,
NAL_UNIT_CODED_SLICE_RADL_N,
NAL_UNIT_CODED_SLICE_DLP,
// 7 // Current name in the spec: RADL_R
NAL_UNIT_CODED_SLICE_RASL_N,
NAL_UNIT_CODED_SLICE_TFD,
// 9 // Current name in the spec: RASL_R
NAL_UNIT_RESERVED_10,
NAL_UNIT_RESERVED_11,
NAL_UNIT_RESERVED_12,
NAL_UNIT_RESERVED_13,
NAL_UNIT_RESERVED_14,
NAL_UNIT_RESERVED_15, NAL_UNIT_CODED_SLICE_BLA,
// Current name in the spec: BLA_W_LP
NAL_UNIT_CODED_SLICE_BLA,
// Current name in the spec: BLA_W_LP
NAL_UNIT_CODED_SLICE_BLANT,
// Current name in the spec: BLA_W_DLP
NAL_UNIT_CODED_SLICE_BLA_N_LP,
NAL_UNIT_CODED_SLICE_IDR,
// Current name in the spec: IDR_W_DLP
NAL_UNIT_CODED_SLICE_IDR_N_LP,
NAL_UNIT_CODED_SLICE_CRA,
NAL_UNIT_RESERVED_22,
NAL_UNIT_RESERVED_23,
NAL_UNIT_RESERVED_24,
NAL_UNIT_RESERVED_25,
NAL_UNIT_RESERVED_26,
NAL_UNIT_RESERVED_27,
NAL_UNIT_RESERVED_28,
NAL_UNIT_RESERVED_29,
NAL_UNIT_RESERVED_30,
NAL_UNIT_RESERVED_31,
NAL_UNIT_VPS,
NAL_UNIT_SPS,
NAL_UNIT_PPS,
NAL_UNIT_ACCESS_UNIT_DELIMITER, // 35
NAL_UNIT_EOS,
NAL_UNIT_EOB,
NAL_UNIT_FILLER_DATA,
NAL_UNIT_SEI,
// 39 Prefix SEI
NAL_UNIT_SEI_SUFFIX,
// 40 Suffix SEI
NAL_UNIT_RESERVED_41,
NAL_UNIT_RESERVED_42,
NAL_UNIT_RESERVED_43,
NAL_UNIT_RESERVED_44,
NAL_UNIT_RESERVED_45,
NAL_UNIT_RESERVED_46,
NAL_UNIT_RESERVED_47,
NAL_UNIT_UNSPECIFIED_48,
NAL_UNIT_UNSPECIFIED_49,
NAL_UNIT_UNSPECIFIED_50,
NAL_UNIT_UNSPECIFIED_51,
NAL_UNIT_UNSPECIFIED_52,
NAL_UNIT_UNSPECIFIED_53,
NAL_UNIT_UNSPECIFIED_54,
NAL_UNIT_UNSPECIFIED_55,
NAL_UNIT_UNSPECIFIED_56,
NAL_UNIT_UNSPECIFIED_57,
NAL_UNIT_UNSPECIFIED_58,
NAL_UNIT_UNSPECIFIED_59,
NAL_UNIT_UNSPECIFIED_60,
NAL_UNIT_UNSPECIFIED_61,
NAL_UNIT_UNSPECIFIED_62,
NAL_UNIT_UNSPECIFIED_63,
NAL_UNIT_INVALID,
};下面接收下fu分组打包方式,fu分组包头格式如下:
fus包头包含了两个字节的payloadhdr,一个字节的fu header,fu header与h264一样,结构如下图,包含开始位(1b)、停止位(1b)、futype(6b)
paylodhdr两个自己的赋值,其实就是把hevc帧数据的nal unit header的naltype替换为49即可,下面是从ffmpeg源码中截取出来的fu打包方式代码片段:
static void nal_send(AVFormatContext *ctx, const uint8_t *buf, int len, int last_packet_of_frame)
RTPMuxContext *rtp_ctx = ctx-&priv_
int rtp_payload_size = rtp_ctx-&max_payload_size - RTP_HEVC_HEADERS_SIZE;
int nal_type = (buf[0] && 1) & 0x3F;
/* send it as one single NAL unit? */
if (len &= rtp_ctx-&max_payload_size) //小于对定的最大值时,直接发送(最大值一般小于mtu)
/* use the original NAL unit buffer and transmit it as RTP payload */
ff_rtp_send_data(ctx, buf, len, last_packet_of_frame);
else //大于最大值时进行fu分组发送
create the HEVC payload header and transmit the buffer as fragmentation units (FU)
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+-------------+-----------------+
= 49 (fragmentation unit (FU))
LayerId = 0
rtp_ctx-&buf[0] = 49 && 1;
rtp_ctx-&buf[1] = 1;
//此处为paylaodhdr,规范赋值应该是替换hevc数据nal 的payloadhdr的type
//rtp_ctx-&buf[0] = (buf[0] &0x81) | (49&&1);
//rtp_ctx-&buf[1] = buf[1]
create the FU header
0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+
+---------------+
= variable
= variable
= NAL unit type
rtp_ctx-&buf[2] = nal_
/* set the S bit: mark as start fragment */
rtp_ctx-&buf[2] |= 1 && 7;
/* pass the original NAL header */
//此处要注意,,当是分组的第一报数据时,应该覆盖掉前两个字节的数据,h264要覆盖前一个字节的数据,即是第一包要去除hevc帧数据的paylaodhdr
while (len & rtp_payload_size)
/* complete and send current RTP packet */
memcpy(&rtp_ctx-&buf[RTP_HEVC_HEADERS_SIZE], buf, rtp_payload_size);
ff_rtp_send_data(ctx, rtp_ctx-&buf, rtp_ctx-&max_payload_size, 0);
buf += rtp_payload_
len -= rtp_payload_
/* reset the S bit */
rtp_ctx-&buf[2] &= ~(1 && 7);
/* set the E bit: mark as last fragment */
rtp_ctx-&buf[2] |= 1 && 6;
/* complete and send last RTP packet */
memcpy(&rtp_ctx-&buf[RTP_HEVC_HEADERS_SIZE], buf, len);
ff_rtp_send_data(ctx, rtp_ctx-&buf, len + 2, last_packet_of_frame);
通过rtp发送hevc视频数据,当hevc帧数据大于mtu时,应该进行fu分组发送,从上面代码流程就是对超过max_payload_size数据进行fu分组的流程,这个h264 fu-A很类似,很容易理解。
你最喜欢的10元一个月的vps
共找到 0 条 10元一个月的vps
10元一个月的vps供应分类导航
相关分类导航:

我要回帖

更多关于 微信账号被别人绑定如何找回 的文章

 

随机推荐