Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

семестр 2 / элементы / vp9-bitstream-specification-v0.6-20160331-draft

.pdf
Скачиваний:
0
Добавлен:
13.05.2026
Размер:
2.48 Mб
Скачать

VP9 Bitstream & Decoding Process Specification - v0.6

31st March 2016

{8, 134, 191 },

{1, 86, 142 },

{

1,

56,

96

},

{

1,

30,

53

},

{

1,

12,

20

}

}, { /* Coeff Band 4 */

{20, 190, 215 },

{4, 135, 192 },

{1, 84, 139 },

{

1,

53,

91

},

{

1,

28,

49

},

{

1,

11,

20

}

}, { /* Coeff Band 5 */

{13, 196, 216 },

{2, 137, 192 },

{1, 86, 143 },

{

1,

57,

99

},

{

1,

32,

56

},

{

1,

13,

24

}

}

}

}, { /* block Type 1 */

{/* Intra */

{/* Coeff Band 0 */

{211, 29, 217 },

{96, 47, 156 },

{

22,

43,

87 },

{

0,

0,

0

}, // unused

{

0,

0,

0

}, // unused

{

0,

0,

0

} // unused

}, { /* Coeff Band 1 */

{78, 120, 193 },

{111, 116, 186 },

{46, 102, 164 },

{15, 80, 128 },

{

2,

49,

76

},

{

1,

18,

28

}

}, { /* Coeff Band 2 */

{71, 161, 203 },

{42, 132, 192 },

{10, 98, 150 },

{3, 69, 109 },

{

1,

44,

70

},

{

1,

18,

29

}

}, { /* Coeff Band 3 */

Copyright © 2016 Google, Inc. All Rights Reserved

155

VP9 Bitstream & Decoding Process Specification - v0.6

31st March 2016

{57, 186, 211 },

{30, 140, 196 },

{4, 93, 146 },

{1, 62, 102 },

{

1,

38,

65

},

{

1,

16,

27

}

}, { /* Coeff Band 4 */

{47, 199, 217 },

{14, 145, 196 },

{1, 88, 142 },

{

1,

57,

98

},

{

1,

36,

62

},

{

1,

15,

26

}

}, { /* Coeff Band 5 */

{26, 219, 229 },

{5, 155, 207 },

{1, 94, 151 },

{1, 60, 104 },

{

1,

36,

62

},

{

1,

16,

28

}

}

}, { /* Inter */

{/* Coeff Band 0 */

{233, 29, 248 },

{146, 47, 220 },

{43, 52, 140 },

{

0,

0,

0

}, // unused

{

0,

0,

0

}, // unused

{

0,

0,

0

} // unused

}, { /* Coeff Band 1 */

{100, 163, 232 },

{179, 161, 222 },

{63, 142, 204 },

{37, 113, 174 },

{26, 89, 137 },

{18, 68, 97 }

}, { /* Coeff Band 2 */

{85, 181, 230 },

{32, 146, 209 },

{7, 100, 164 },

{3, 71, 121 },

{

1,

45,

77

},

{

1,

18,

30

}

}, { /* Coeff Band 3 */ { 65, 187, 230 },

156

Copyright © 2016 Google, Inc. All Rights Reserved

VP9 Bitstream & Decoding Process Specification - v0.6

31st March 2016

{20, 148, 207 },

{2, 97, 159 },

{1, 68, 116 },

{

1,

40,

70

},

{

1,

14,

29

}

}, { /* Coeff Band 4 */

{40, 194, 227 },

{8, 147, 204 },

{1, 94, 155 },

{1, 65, 112 },

{

1,

39,

66

},

{

1,

14,

26

}

}, { /* Coeff Band 5 */

{16, 208, 228 },

{3, 151, 207 },

{1, 98, 160 },

{1, 67, 117 },

{

1,

41,

74

},

{

1,

17,

31

}

}

}

}

},

{

{/* block Type 0 */

{/* Intra */

{/* Coeff Band 0 */

{17, 38, 140 },

{

7,

34,

80 },

{

1,

17,

29 },

{

0,

0,

0

}, // unused

{

0,

0,

0

}, // unused

{

0,

0,

0

} // unused

}, { /* Coeff Band 1 */

{37, 75, 128 },

{41, 76, 128 },

{26, 66, 116 },

{

12,

52,

94 },

{

2,

32,

55

},

{

1,

10,

16

}

}, { /* Coeff Band 2 */

{50, 127, 154 },

{37, 109, 152 },

{16, 82, 121 },

{5, 59, 85 },

Copyright © 2016 Google, Inc. All Rights Reserved

157

VP9 Bitstream & Decoding Process Specification - v0.6

31st March 2016

{

1,

35,

54

},

{

1,

13,

20

}

}, { /* Coeff Band 3 */

{40, 142, 167 },

{17, 110, 157 },

{2, 71, 112 },

{

1,

44,

72

},

{

1,

27,

45

},

{

1,

11,

17

}

}, { /* Coeff Band 4 */

{30, 175, 188 },

{9, 124, 169 },

{1, 74, 116 },

{

1,

48,

78

},

{

1,

30,

49

},

{

1,

11,

18

}

}, { /* Coeff Band 5 */

{10, 222, 223 },

{2, 150, 194 },

{1, 83, 128 },

{

1,

48,

79

},

{

1,

27,

45

},

{

1,

11,

17

}

}

}, { /* Inter */

{/* Coeff Band 0 */

{36, 41, 235 },

{29, 36, 193 },

{10, 27, 111 },

{

0,

0,

0

}, // unused

{

0,

0,

0

}, // unused

{

0,

0,

0

} // unused

}, { /* Coeff Band 1 */

{85, 165, 222 },

{177, 162, 215 },

{110, 135, 195 },

{57, 113, 168 },

{23, 83, 120 },

{10, 49, 61 }

}, { /* Coeff Band 2 */

{85, 190, 223 },

{36, 139, 200 },

{5, 90, 146 },

{1, 60, 103 },

{1, 38, 65 },

158

Copyright © 2016 Google, Inc. All Rights Reserved

VP9 Bitstream & Decoding Process Specification - v0.6

31st March 2016

{ 1, 18, 30 }

}, { /* Coeff Band 3 */

{72, 202, 223 },

{23, 141, 199 },

{2, 86, 140 },

{

1,

56,

97

},

{

1,

36,

61

},

{

1,

16,

27

}

}, { /* Coeff Band 4 */

{55, 218, 225 },

{13, 145, 200 },

{1, 86, 141 },

{

1,

57,

99

},

{

1,

35,

61

},

{

1,

13,

22

}

}, { /* Coeff Band 5 */

{15, 235, 212 },

{1, 132, 184 },

{1, 84, 139 },

{

1,

57,

97

},

{

1,

34,

56

},

{

1,

14,

23

}

}

}

}, { /* block Type 1 */

{/* Intra */

{/* Coeff Band 0 */

{181, 21, 201 },

{61, 37, 123 },

{

10,

38,

71 },

{

0,

0,

0

}, // unused

{

0,

0,

0

}, // unused

{

0,

0,

0

} // unused

}, { /* Coeff Band 1 */

{47, 106, 172 },

{95, 104, 173 },

{42, 93, 159 },

{18, 77, 131 },

{

4,

50,

81

},

{

1,

17,

23

}

}, { /* Coeff Band 2 */

{62, 147, 199 },

{44, 130, 189 },

{28, 102, 154 },

{18, 75, 115 },

Copyright © 2016 Google, Inc. All Rights Reserved

159

VP9 Bitstream & Decoding Process Specification - v0.6

31st March 2016

{

2,

44,

65

},

{

1,

12,

19

}

}, { /* Coeff Band 3 */

{55, 153, 210 },

{24, 130, 194 },

{3, 93, 146 },

{

1,

61,

97

},

{

1,

31,

50

},

{

1,

10,

16

}

}, { /* Coeff Band 4 */

{49, 186, 223 },

{17, 148, 204 },

{1, 96, 142 },

{

1,

53,

83

},

{

1,

26,

44

},

{

1,

11,

17

}

}, { /* Coeff Band 5 */

{13, 217, 212 },

{2, 136, 180 },

{1, 78, 124 },

{

1,

50,

83

},

{

1,

29,

49

},

{

1,

14,

23

}

}

}, { /* Inter */

{/* Coeff Band 0 */

{197, 13, 247 },

{82, 17, 222 },

{25, 17, 162 },

{

0,

0,

0

}, // unused

{

0,

0,

0

}, // unused

{

0,

0,

0

} // unused

}, { /* Coeff Band 1 */

{126, 186, 247 },

{234, 191, 243 },

{176, 177, 234 },

{104, 158, 220 },

{66, 128, 186 },

{55, 90, 137 }

}, { /* Coeff Band 2 */

{111, 197, 242 },

{46, 158, 219 },

{9, 104, 171 },

{2, 65, 125 },

{1, 44, 80 },

160

Copyright © 2016 Google, Inc. All Rights Reserved

VP9 Bitstream & Decoding Process Specification - v0.6

31st March 2016

{ 1, 17, 91 }

}, { /* Coeff Band 3 */ { 104, 208, 245 }, { 39, 168, 224 }, { 3, 109, 162 },

{

1,

79, 124

},

{

1,

50, 102

},

{

1,

43, 102

}

}, { /* Coeff Band 4 */

{

84,

220, 246 },

{

31,

177, 231 },

{ 2, 115,

180 },

{

1,

79, 134 },

{

1,

55,

77

},

{

1,

60,

79

}

}, { /* Coeff Band 5 */

{

43,

243, 240 },

{ 8, 180,

217 },

{ 1, 115,

166 },

{

1,

84, 121 },

{

1,

51,

67 },

{

1,

16,

6 }

}

}

}

}

}

Copyright © 2016 Google, Inc. All Rights Reserved

161

VP9 Bitstream & Decoding Process Specification - v0.6

31st March 2016

Annex A

Levels

A.1 Overview

Levels specify restrictions on the capabilities needed to decode the bitstreams.

There is only a single level currently defined in this Specification. The level is called level 1.

Level 1 limits the bitstream to a worst case of roughly a 1080P 60fps 20Mbps stream by the following restrictions:

Width must be less than or equal to 1920.

Height must be less than or equal to 1080.

The number of frames per second must be less than or equal to 60 (this includes both output frames and frames that are not output).

The size in bits for an intra frame must be less than or equal to 100,000,000 / 60.

The size in bits for an inter frame must be less than or equal to 50,000,000 / 60.

The number of times the function read_bool is called for an intra frame must be less than or equal to 2 * 100,000,000 / 60.

The number of times the function read_bool is called for an inter frame must be less than or equal to 2 * 50,000,000 / 60.

162

Copyright © 2016 Google, Inc. All Rights Reserved

VP9 Bitstream & Decoding Process Specification - v0.6

31st March 2016

Annex B

Superframes

B.1 Overview

VP9 supports consolidating multiple coded frames into one single chunk, called a “superframe”.

The superframe index is stored in the last up to 34 bytes of a chunk. The enclosed frames can be located by parsing this superframe index.

The syntax of the superframe is shown in section B.2, and the meaning of the syntax elements is described in section B.3. The method for parsing a superframe is described in section B.4.

B.2 Superframe syntax

superframe( sz ) {

Type

for( i = 0; i < NumFrames; i++ )

 

frame( frame_sizes[ i ] )

 

superframe_index( )

 

}

 

B.2.1 Superframe index

superframe_index( ) {

Type

superframe_header( )

 

for( i = 0; i < NumFrames; i++ )

 

frame_sizes[ i ]

f(SzBytes)

superframe_header( )

 

}

 

B.2.2 Superframe header syntax

superframe_header( ) {

Type

superframe_marker

f(3)

bytes_per_framesize_minus_1

f(2)

frames_in_superframe_minus_1

f(3)

}

 

B.3 Superframe semantics

sz specifies the number of bytes in the superframe and is provided by external means.

frame_sizes[ i ] specifies the size in bytes of frame number i (zero indexed) within this superframe.

superframe_marker is equal to 0b110. This is a fixed bit string which allows decoders to determine whether a superframe is present.

bytes_per_framesize_minus_1 indicates the number of bytes needed to code each frame size.

The variable SzBytes is derived as follows:

SzBytes = bytes_per_framesize_minus_1 + 1

Copyright © 2016 Google, Inc. All Rights Reserved

163

VP9 Bitstream & Decoding Process Specification - v0.6

31st March 2016

frames_in_superframe_minus_1 indicates the number of frames within this superframe.

The variable NumFrames is derived as follows:

NumFrames = frames_in_superframe_minus_1 + 1

NOTE – It is legal for a superframe to contain just a single frame and have NumFrames equal to 1.

B.4 Superframe parsing

The use of superframes is optional, and a chunk can contain either a single frame, or a superframe.

The decoder determines the presence of a superframe by:

1.parsing the final byte of the chunk and checking that the superframe_marker equals 0b110,

2.setting the total size of the superframe_index SzIndex equal to 2 + NumFrames * SzBytes,

3.checking that the first byte of the superframe_index matches the final byte.

If the checks in steps 1 and 3 both pass, then the chunk is determined to contain a superframe and each frame in the superframe is passed to the decoding process in turn.

Otherwise, the chunk is determined to not contain a superframe, and the whole chunk is passed to the decoding process.

NOTE – This parsing process works because it is a requirement of bitstream conformance that the final byte of a coded frame must not contain a superframe_marker.

164

Copyright © 2016 Google, Inc. All Rights Reserved

Соседние файлы в папке элементы