HEVC相关文档

转载自  ye_f
最终编辑  ye_f

虽然也是做编码的,让自己懒得写啊,一下材料源自http://blog.csdn.net/yuanchao99/article/details/6803856,谢谢啊。

•ITU官网:

–http://www.itu.int/itu-t/workprog/wp_item.aspx?isn=7752
•会议文档:
– http://phenix.int-evry.fr/jct/index.php(要注册)
•HHI的HEVC主页:
– http://hevc.info/
•Vcodex的HEVC主页:
–  www.vcodex.com/h265.html
•算法简介网站:(这个网站好像最近不怎么用了吧)
–http://www.h265.net/
•算法参考代码:
–https://hevc.hhi.fraunhofer.de/svn/svn_HEVCSoftware/,用Windows下tortoiseSVN可以下载。
==================================

HEVC(H.265)的Low Complexity(LE)和High Efficiency(HE)配置主要区别是:

1. 熵编码不同,LC采用LCEC,HE采用CABAC

2. LC不支持自适应环内滤波(ALF)

3.LC不支持内部位深度扩展(IBDI)


相对于HM1.0,在HM3.0中对LC和HE的配置做了修改,主要区别在于统一了子像素插值滤波器。

亮度插值采用统一的8阶插值滤波器,HM1.0采用的分别是6阶和12阶插值滤波器。

新的系数:

Position

Filter coefficients

1/4

{ -1, 4, -10, 57, 19, -7, 3, -1 }

2/4

{ -1, 4, -11, 40, 40, -11, 4, -1 }

3/4

{ -1, 3, -7, 19, 57, -10, 4, -1 }


色度插值采用统一的4阶插值滤波器,HM1.0采用的是双线性插值滤波器,

新的系数:

Position

Filter coefficients

1/8

{ -3, 60, 8, -1 }

2/8

{ -4, 54, 16, -2 }

3/8

{ -5, 46, 27, -4 }

4/8

{ -4, 36, 36, -4 }

5/8

{ -4, 27, 46, -5 }

6/8

{ -2, 16, 54, -4 }

7/8

{ -1, 8, 60, -3 }

LC和HE的配置如下表:

High Efficiency Configuration

Low Complexity Configuration

Coding Unit tree structure (8x8 up to 64x64 luma samples)

Prediction Units

Transform unit tree structure (3 level max.)

Transform block size of 4x4 to 32x32 samples

Mode-dependent Transform for 4x4 block

Spatial Intra Prediction (34 angular directions and Planar)

Adaptive Intra Smoothing

Intra Chroma Prediction using Luma samples

DCT-based interpolation filter for luma samples (1/4-sample, 8-tap)

DCT-based interpolation filter for luma samples (1/8-sample, 4-tap)

Coding Unit based Skip & Prediction Unit based merging

Advanced motion vector prediction

Context adaptive binary arithmetic entropy coding

Context adaptive VLC

Internal bit-depth increase (2 bits)

X

Deblocking filter

Sample Adaptive Offset

Adaptive loop filter

X


视频测试类别说明:================================================================

Class A:          从超清视频序列"Traffic" (4096x2048p 30 fps), "PeopleOnStreet" (3840x2160p30 fps).中截取的2560x1600的序列。

Class B:          1920x1080p 24 fps: "ParkScene","Kimono",1920x1080p 50-60 fps: "Cactus", "BasketballDrive","BQTerrace"

Class C:          832x480p 30-60 fps (WVGA):"BasketballDrill", "BQMall", "PartyScene","RaceHorses"

Class D:          416x240p 30-60 fps (WQVGA):"BasketballPass", "BQSquare", "BlowingBubbles","RaceHorses"

Class E:          1280x720p 60fps video conferencing scenes:"Vidyo1", "Vidyo3" and "Vidyo4"

怎么用HM========================================================================

1.下载

在windows下用TortoiseSVN工具下载,仓库位置:

2.修改配置文件

找到 HEVCSoftware\trunk\cfg\encoder_lowdelay_P_loco.cfg,在文件开头做如下修改:
•#========File I/O =====================
•InputFile                          :D:\video\foreman_352x288_30p.yuv           #表示输入的YUV文件
InputBitDepth                 : 8           # Input bitdepth
•FrameRate                     : 25          # Frame Rate per second
•FrameSkip                     : 0           # Number of frames to be skipped ininput
•SourceWidth                   : 352         # Input  frame width
•SourceHeight                  : 288         # Input  frame height
•FrameToBeEncoded       : 200         # Number of frames to be coded
•BitstreamFile                 :D:\video\foreman_352x288_30p_lcldp_qp28.hevc          #表示输出的二进制码流文件
•ReconFile                     :D:\video\foreman_352x288_30p_lcldp_qp28_rec.yuv     # 表示输出的重建YUV文件
另存为forman_encoder_lowdelay_loco.cfg
 
3. 编译可执行代码

找到HEVCSoftware\trunk\build\HM_vc9.sln,用vs2008打开, build...

4.执行种情况的配置文件做类似修改即可。

在windows的命令行模式下输入以下命令:

D:\HEVCSoftware\trunk\bin\vc9\Win32\Debug\TAppEncoder.exe -c D:\HEVCSoftware\trunk\cfg\forman_encoder_lowdelay_loco.cfg

红色部分文字要根据自己的文件存储路径进行修改

以上举例的配置文件是针对低复杂度(LC),I,P帧低延时模式的,其它7种情况的配置文件做类似修改即可。

Compare LC and HE configure for HM3.0 of HEVC(H.265)

=====================================================================

1、CU的递归扫描顺序[HEVC/H.265]

在HEVC中,每个CU是可以进行递归式切分的,每次切分为正方形的4个subCU,对于LCU=64x64,最小CU=8x8的情况来说,其最小partition为4x4,其Z形扫描顺序如下图所示:

 HEVC相关文档_第1张图片

为了简化计算,在HM参考软件中有两个数组对Z型扫描顺序和光栅扫描顺序之间做了映射,即:

RasterToZscan

0

1

4

5

16

17

20

21

64

65

68

69

80

81

84

85

2

3

6

7

18

19

22

23

66

67

70

71

82

83

86

87

8

9

12

13

24

25

28

29

72

73

76

77

88

89

92

93

10

11

14

15

26

27

30

31

74

75

78

79

90

91

94

95

32

33

36

37

48

49

52

53

96

97

100

101

112

113

116

117

34

35

38

39

50

51

54

55

98

99

102

103

114

115

118

119

40

41

44

45

56

57

60

61

104

105

108

109

120

121

124

125

42

43

46

47

58

59

62

63

106

107

110

111

122

123

126

127

128

129

132

133

144

145

148

149

192

193

196

197

208

209

212

213

130

131

134

135

146

147

150

151

194

195

198

199

210

211

214

215

136

137

140

141

152

153

156

157

200

201

204

205

216

217

220

221

138

139

142

143

154

155

158

159

202

203

206

207

218

219

222

223

160

161

164

165

176

177

180

181

224

225

228

229

240

241

244

245

162

163

166

167

178

179

182

183

226

227

230

231

242

243

246

247

168

169

172

173

184

185

188

189

232

233

236

237

248

249

252

253

170

171

174

175

186

187

190

191

234

235

238

239

250

251

254

255

 

 

ZscanToRaster

0

1

16

17

2

3

18

19

32

33

48

49

34

35

50

51

4

5

20

21

6

7

22

23

36

37

52

53

38

39

54

55

64

65

80

81

66

67

82

83

96

97

112

113

98

99

114

115

68

69

84

85

70

71

86

87

100

101

116

117

102

103

118

119

8

9

24

25

10

11

26

27

40

41

56

57

42

43

58

59

12

13

28

29

14

15

30

31

44

45

60

61

46

47

62

63

72

73

88

89

74

75

90

91

104

105

120

121

106

107

122

123

76

77

92

93

78

79

94

95

108

109

124

125

110

111

126

127

128

129

144

145

130

131

146

147

160

161

176

177

162

163

178

179

132

133

148

149

134

135

150

151

164

165

180

181

166

167

182

183

192

193

208

209

194

195

210

211

224

225

240

241

226

227

242

243

196

197

212

213

198

199

214

215

228

229

244

245

230

231

246

247

136

137

152

153

138

139

154

155

168

169

184

185

170

171

186

187

140

141

156

157

142

143

158

159

172

173

188

189

174

175

190

191

200

201

216

217

202

203

218

219

232

233

248

249

234

235

250

251

204

205

220

221

206

207

222

223

236

237

252

253

238

239

254

255

转自:http://blog.csdn.net/yuanchao99/article/details/6910023

========================================================================
2、Entropy Slice[HEVC/H.265]

Entropy Slice的概念是Sharp公司提出的,现在改名为lightweighted slice(轻量级slice?),这个提案主要解决的问题是针对H.264 Slice切分的一些缺点:

1.      H.264的熵编码以slice为单位,这可能会造成各个slice之间的编码负担不均衡,有的slice负担重,有的则负担轻。理论上多切分一些slice有助于在多核计算机上提高负载均衡能力。

2.      但是过多的Slice切分会造成压缩效率降低。

Entropy Slice允许在一个slice内部再切分成多个EntropySlices,这样熵编解码器可以并行编码或解码,从而提高了并行处理能力。

需要注意的是一个entropy slice不能跨越slice边界,也就是一个slice可以含有多个entropy slice,但是一个entropy slice只能属于一个slice,如下图所示:

HEVC相关文档_第2张图片

在测试中,一个1080p的图像被分为一个slice和32个entropyslice,编码效率损失极小。

在提案中sharp还提出了一个CPU+GPU混合编码的方案,熵编码由多核CPU进行而重建则由GPU进行,可以大幅提高编码速度,如下图所示。

 HEVC相关文档_第3张图片
===========================================================================

参考文献:JCTVC-D070

3、fine granularity slice partition(细粒度slice分块边界)[HEVC/H.265]

这个提案是华为,爱立信和MTK提出的。

在HEVC中首次提出了CU的概念,代替以前视频编码标准中MB的概念,CU是可递归的,最大允许的CU大小是64x64,最小允许的CU是8x8。

按照编码器框架,图像首先分为slice,再分为CU,再分为partition。早期的测试模型中slice是以最大CU(LCU)为粒度划分的,如64x64。但是这一划分方式带来以下问题:

1.      同一幅图像中不同的LCU之间差别很大,简单的LCU纹理非常简单,因此编码结果bit数很少,复杂的LCU可能占有很多bit,这对于编码器的码率控制和负载均衡都很不利。

2.      如果减小LCU的大小,比如减为32x32或16x16,则压缩效率会降低很多。

针对这一问题,这些提案提出slice边界划分不以LCU为单位,而是可以以更小的CU为单位,如下图所示:

 

采用这一方式后,每个slice的大小都可以精确控制,同时解决了码率控制和负载均衡的问题。但是带来的代价是slice边界处理更为复杂。

================================================================

参考文献:JCTVC-E298,JCTVC-E260,JCTVC-E043

你可能感兴趣的:(HEVC相关文档)