@yume-chan/scrcpy 0.0.19 → 0.0.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (278) hide show
  1. package/CHANGELOG.json +30 -0
  2. package/CHANGELOG.md +17 -1
  3. package/README.md +76 -266
  4. package/esm/codec/av1.js +2 -2
  5. package/esm/codec/av1.js.map +1 -1
  6. package/esm/codec/h264.d.ts +1 -21
  7. package/esm/codec/h264.d.ts.map +1 -1
  8. package/esm/codec/h264.js +15 -236
  9. package/esm/codec/h264.js.map +1 -1
  10. package/esm/codec/h265.d.ts +454 -0
  11. package/esm/codec/h265.d.ts.map +1 -1
  12. package/esm/codec/h265.js +1062 -2
  13. package/esm/codec/h265.js.map +1 -1
  14. package/esm/codec/index.d.ts +1 -0
  15. package/esm/codec/index.d.ts.map +1 -1
  16. package/esm/codec/index.js +1 -0
  17. package/esm/codec/index.js.map +1 -1
  18. package/esm/codec/nalu.d.ts +37 -0
  19. package/esm/codec/nalu.d.ts.map +1 -0
  20. package/esm/codec/nalu.js +323 -0
  21. package/esm/codec/nalu.js.map +1 -0
  22. package/esm/control/back-or-screen-on.d.ts +1 -1
  23. package/esm/control/back-or-screen-on.d.ts.map +1 -1
  24. package/esm/control/hover-helper.d.ts +1 -1
  25. package/esm/control/hover-helper.d.ts.map +1 -1
  26. package/esm/control/hover-helper.js +8 -9
  27. package/esm/control/hover-helper.js.map +1 -1
  28. package/esm/control/index.d.ts +2 -0
  29. package/esm/control/index.d.ts.map +1 -1
  30. package/esm/control/index.js +2 -0
  31. package/esm/control/index.js.map +1 -1
  32. package/esm/control/inject-keycode.d.ts +1 -2
  33. package/esm/control/inject-keycode.d.ts.map +1 -1
  34. package/esm/control/inject-keycode.js +4 -5
  35. package/esm/control/inject-keycode.js.map +1 -1
  36. package/esm/control/inject-text.d.ts +1 -2
  37. package/esm/control/inject-text.d.ts.map +1 -1
  38. package/esm/control/inject-text.js +1 -2
  39. package/esm/control/inject-text.js.map +1 -1
  40. package/esm/control/inject-touch.d.ts +15 -20
  41. package/esm/control/inject-touch.d.ts.map +1 -1
  42. package/esm/control/inject-touch.js +16 -43
  43. package/esm/control/inject-touch.js.map +1 -1
  44. package/esm/control/rotate-device.d.ts +2 -4
  45. package/esm/control/rotate-device.d.ts.map +1 -1
  46. package/esm/control/rotate-device.js +2 -3
  47. package/esm/control/rotate-device.js.map +1 -1
  48. package/esm/control/serializer.d.ts +11 -23
  49. package/esm/control/serializer.d.ts.map +1 -1
  50. package/esm/control/serializer.js +23 -52
  51. package/esm/control/serializer.js.map +1 -1
  52. package/esm/control/set-screen-power-mode.d.ts +1 -2
  53. package/esm/control/set-screen-power-mode.d.ts.map +1 -1
  54. package/esm/control/set-screen-power-mode.js +2 -3
  55. package/esm/control/set-screen-power-mode.js.map +1 -1
  56. package/esm/control/type.d.ts +14 -0
  57. package/esm/control/type.d.ts.map +1 -1
  58. package/esm/control/type.js +23 -1
  59. package/esm/control/type.js.map +1 -1
  60. package/esm/control/writer.d.ts +26 -0
  61. package/esm/control/writer.d.ts.map +1 -0
  62. package/esm/control/writer.js +53 -0
  63. package/esm/control/writer.js.map +1 -0
  64. package/esm/device-message/stream.d.ts.map +1 -1
  65. package/esm/device-message/stream.js +23 -8
  66. package/esm/device-message/stream.js.map +1 -1
  67. package/esm/device-message/type.js +1 -1
  68. package/esm/device-message/type.js.map +1 -1
  69. package/esm/index.d.ts +1 -2
  70. package/esm/index.d.ts.map +1 -1
  71. package/esm/index.js +1 -2
  72. package/esm/index.js.map +1 -1
  73. package/esm/options/1_16/codec-options.d.ts +2 -3
  74. package/esm/options/1_16/codec-options.d.ts.map +1 -1
  75. package/esm/options/1_16/codec-options.js.map +1 -1
  76. package/esm/options/1_16/index.d.ts +3 -1
  77. package/esm/options/1_16/index.d.ts.map +1 -1
  78. package/esm/options/1_16/index.js +3 -1
  79. package/esm/options/1_16/index.js.map +1 -1
  80. package/esm/options/1_16/init.js +2 -2
  81. package/esm/options/1_16/init.js.map +1 -1
  82. package/esm/options/1_16/options.d.ts +42 -96
  83. package/esm/options/1_16/options.d.ts.map +1 -1
  84. package/esm/options/1_16/options.js +104 -142
  85. package/esm/options/1_16/options.js.map +1 -1
  86. package/esm/options/1_16/scroll.d.ts +2 -4
  87. package/esm/options/1_16/scroll.d.ts.map +1 -1
  88. package/esm/options/1_16/scroll.js +13 -14
  89. package/esm/options/1_16/scroll.js.map +1 -1
  90. package/esm/options/1_17.d.ts +1 -0
  91. package/esm/options/1_17.d.ts.map +1 -1
  92. package/esm/options/1_17.js +8 -3
  93. package/esm/options/1_17.js.map +1 -1
  94. package/esm/options/1_18.d.ts +49 -11
  95. package/esm/options/1_18.d.ts.map +1 -1
  96. package/esm/options/1_18.js +64 -32
  97. package/esm/options/1_18.js.map +1 -1
  98. package/esm/options/1_21.d.ts +26 -7
  99. package/esm/options/1_21.d.ts.map +1 -1
  100. package/esm/options/1_21.js +34 -20
  101. package/esm/options/1_21.js.map +1 -1
  102. package/esm/options/1_22/index.d.ts +1 -0
  103. package/esm/options/1_22/index.d.ts.map +1 -1
  104. package/esm/options/1_22/index.js +1 -0
  105. package/esm/options/1_22/index.js.map +1 -1
  106. package/esm/options/1_22/options.d.ts +32 -26
  107. package/esm/options/1_22/options.d.ts.map +1 -1
  108. package/esm/options/1_22/options.js +26 -16
  109. package/esm/options/1_22/options.js.map +1 -1
  110. package/esm/options/1_22/scroll.d.ts +1 -1
  111. package/esm/options/1_22/scroll.d.ts.map +1 -1
  112. package/esm/options/1_22/scroll.js +1 -1
  113. package/esm/options/1_22/scroll.js.map +1 -1
  114. package/esm/options/1_23.d.ts +32 -8
  115. package/esm/options/1_23.d.ts.map +1 -1
  116. package/esm/options/1_23.js +23 -14
  117. package/esm/options/1_23.js.map +1 -1
  118. package/esm/options/1_24.d.ts +29 -4
  119. package/esm/options/1_24.d.ts.map +1 -1
  120. package/esm/options/1_24.js +16 -7
  121. package/esm/options/1_24.js.map +1 -1
  122. package/esm/options/1_25/options.d.ts +6 -2
  123. package/esm/options/1_25/options.d.ts.map +1 -1
  124. package/esm/options/1_25/options.js +16 -2
  125. package/esm/options/1_25/options.js.map +1 -1
  126. package/esm/options/1_25/scroll.d.ts.map +1 -1
  127. package/esm/options/1_25/scroll.js +2 -1
  128. package/esm/options/1_25/scroll.js.map +1 -1
  129. package/esm/options/2_0.d.ts +12 -8
  130. package/esm/options/2_0.d.ts.map +1 -1
  131. package/esm/options/2_0.js +82 -15
  132. package/esm/options/2_0.js.map +1 -1
  133. package/esm/options/2_1.d.ts +48 -0
  134. package/esm/options/2_1.d.ts.map +1 -0
  135. package/esm/options/2_1.js +23 -0
  136. package/esm/options/2_1.js.map +1 -0
  137. package/esm/options/codec.d.ts +4 -4
  138. package/esm/options/codec.d.ts.map +1 -1
  139. package/esm/options/codec.js +5 -6
  140. package/esm/options/codec.js.map +1 -1
  141. package/esm/options/index.d.ts +5 -0
  142. package/esm/options/index.d.ts.map +1 -1
  143. package/esm/options/index.js +5 -0
  144. package/esm/options/index.js.map +1 -1
  145. package/esm/options/latest.d.ts +4 -5
  146. package/esm/options/latest.d.ts.map +1 -1
  147. package/esm/options/latest.js +2 -3
  148. package/esm/options/latest.js.map +1 -1
  149. package/esm/options/types.d.ts +74 -33
  150. package/esm/options/types.d.ts.map +1 -1
  151. package/esm/options/types.js +62 -0
  152. package/esm/options/types.js.map +1 -1
  153. package/package.json +9 -19
  154. package/src/codec/av1.ts +33 -0
  155. package/src/codec/h264.ts +317 -0
  156. package/src/codec/h265.ts +1375 -0
  157. package/src/codec/index.ts +4 -0
  158. package/src/codec/nalu.ts +391 -0
  159. package/src/control/back-or-screen-on.ts +1 -1
  160. package/{esm/control/simple.js → src/control/basic.ts} +3 -3
  161. package/src/control/hover-helper.ts +10 -11
  162. package/src/control/index.ts +2 -0
  163. package/src/control/inject-keycode.ts +1 -3
  164. package/src/control/inject-text.ts +1 -3
  165. package/src/control/inject-touch.ts +16 -55
  166. package/src/control/rotate-device.ts +2 -7
  167. package/src/control/serializer.ts +50 -113
  168. package/src/control/set-screen-power-mode.ts +1 -3
  169. package/src/control/type.ts +32 -0
  170. package/src/control/writer.ts +85 -0
  171. package/src/device-message/stream.ts +32 -12
  172. package/src/index.ts +1 -2
  173. package/src/options/1_16/codec-options.ts +6 -7
  174. package/src/options/1_16/float-to-uint16.ts +33 -0
  175. package/src/options/1_16/index.ts +3 -1
  176. package/src/options/1_16/init.ts +80 -0
  177. package/src/options/1_16/message.ts +55 -0
  178. package/src/options/1_16/options.ts +147 -260
  179. package/src/options/1_16/scroll.ts +17 -18
  180. package/src/options/1_17.ts +66 -0
  181. package/src/options/1_18.ts +103 -39
  182. package/src/options/1_21.ts +49 -27
  183. package/src/options/1_22/index.ts +1 -0
  184. package/src/options/1_22/init.ts +19 -0
  185. package/src/options/1_22/options.ts +38 -45
  186. package/src/options/1_22/scroll.ts +3 -3
  187. package/src/options/1_23.ts +34 -22
  188. package/src/options/1_24.ts +23 -11
  189. package/src/options/1_25/options.ts +22 -4
  190. package/src/options/1_25/scroll.ts +4 -3
  191. package/src/options/2_0.ts +342 -0
  192. package/src/options/2_1.ts +35 -0
  193. package/src/options/codec.ts +98 -0
  194. package/src/options/index.ts +5 -0
  195. package/src/options/latest.ts +12 -0
  196. package/src/options/types.ts +164 -43
  197. package/tsconfig.build.json +9 -1
  198. package/tsconfig.build.tsbuildinfo +1 -1
  199. package/bin/scrcpy-server +0 -0
  200. package/bin/version.d.ts +0 -1
  201. package/bin/version.js +0 -1
  202. package/esm/adb/client.d.ts +0 -41
  203. package/esm/adb/client.d.ts.map +0 -1
  204. package/esm/adb/client.js +0 -224
  205. package/esm/adb/client.js.map +0 -1
  206. package/esm/adb/connection.d.ts +0 -49
  207. package/esm/adb/connection.d.ts.map +0 -1
  208. package/esm/adb/connection.js +0 -122
  209. package/esm/adb/connection.js.map +0 -1
  210. package/esm/adb/index.d.ts +0 -4
  211. package/esm/adb/index.d.ts.map +0 -1
  212. package/esm/adb/index.js +0 -4
  213. package/esm/adb/index.js.map +0 -1
  214. package/esm/adb/options/1_16.d.ts +0 -8
  215. package/esm/adb/options/1_16.d.ts.map +0 -1
  216. package/esm/adb/options/1_16.js +0 -20
  217. package/esm/adb/options/1_16.js.map +0 -1
  218. package/esm/adb/options/1_22.d.ts +0 -8
  219. package/esm/adb/options/1_22.d.ts.map +0 -1
  220. package/esm/adb/options/1_22.js +0 -17
  221. package/esm/adb/options/1_22.js.map +0 -1
  222. package/esm/adb/options/1_26.d.ts +0 -9
  223. package/esm/adb/options/1_26.d.ts.map +0 -1
  224. package/esm/adb/options/1_26.js +0 -11
  225. package/esm/adb/options/1_26.js.map +0 -1
  226. package/esm/adb/options/2_0.d.ts +0 -8
  227. package/esm/adb/options/2_0.d.ts.map +0 -1
  228. package/esm/adb/options/2_0.js +0 -13
  229. package/esm/adb/options/2_0.js.map +0 -1
  230. package/esm/adb/options/index.d.ts +0 -4
  231. package/esm/adb/options/index.d.ts.map +0 -1
  232. package/esm/adb/options/index.js +0 -4
  233. package/esm/adb/options/index.js.map +0 -1
  234. package/esm/adb/options/types.d.ts +0 -24
  235. package/esm/adb/options/types.d.ts.map +0 -1
  236. package/esm/adb/options/types.js +0 -37
  237. package/esm/adb/options/types.js.map +0 -1
  238. package/esm/codec.d.ts +0 -34
  239. package/esm/codec.d.ts.map +0 -1
  240. package/esm/codec.js +0 -37
  241. package/esm/codec.js.map +0 -1
  242. package/esm/control/simple.d.ts +0 -5
  243. package/esm/control/simple.d.ts.map +0 -1
  244. package/esm/control/simple.js.map +0 -1
  245. package/esm/decoder.d.ts +0 -2
  246. package/esm/decoder.d.ts.map +0 -1
  247. package/esm/decoder.js +0 -2
  248. package/esm/decoder.js.map +0 -1
  249. package/esm/options/1.17.d.ts +0 -3
  250. package/esm/options/1.17.d.ts.map +0 -1
  251. package/esm/options/1.17.js +0 -2
  252. package/esm/options/1.17.js.map +0 -1
  253. package/esm/options/1_16/h264-configuration.d.ts +0 -49
  254. package/esm/options/1_16/h264-configuration.d.ts.map +0 -1
  255. package/esm/options/1_16/h264-configuration.js +0 -414
  256. package/esm/options/1_16/h264-configuration.js.map +0 -1
  257. package/esm/options/1_16/sps.d.ts +0 -22
  258. package/esm/options/1_16/sps.d.ts.map +0 -1
  259. package/esm/options/1_16/sps.js +0 -263
  260. package/esm/options/1_16/sps.js.map +0 -1
  261. package/esm/options/1_26.d.ts +0 -57
  262. package/esm/options/1_26.d.ts.map +0 -1
  263. package/esm/options/1_26.js +0 -67
  264. package/esm/options/1_26.js.map +0 -1
  265. package/esm/options/2.d.ts +0 -57
  266. package/esm/options/2.d.ts.map +0 -1
  267. package/esm/options/2.js +0 -67
  268. package/esm/options/2.js.map +0 -1
  269. package/scripts/fetch-server.cjs +0 -38
  270. package/src/adb/client.ts +0 -329
  271. package/src/adb/connection.ts +0 -209
  272. package/src/adb/index.ts +0 -3
  273. package/src/adb/options/1_16.ts +0 -32
  274. package/src/adb/options/1_22.ts +0 -26
  275. package/src/adb/options/index.ts +0 -3
  276. package/src/adb/options/types.ts +0 -75
  277. package/src/codec.ts +0 -35
  278. package/src/options/1_16/h264-configuration.ts +0 -485
package/esm/codec/h264.js CHANGED
@@ -1,6 +1,7 @@
1
1
  // cspell: ignore golomb
2
2
  // cspell: ignore qpprime
3
3
  // cspell: ignore colour
4
+ import { NaluSodbBitReader, annexBSplitNalu } from "./nalu.js";
4
5
  // From https://developer.android.com/reference/android/media/MediaCodecInfo.CodecProfileLevel
5
6
  export var AndroidAvcProfile;
6
7
  (function (AndroidAvcProfile) {
@@ -13,7 +14,7 @@ export var AndroidAvcProfile;
13
14
  AndroidAvcProfile[AndroidAvcProfile["High444"] = 64] = "High444";
14
15
  AndroidAvcProfile[AndroidAvcProfile["ConstrainedBaseline"] = 65536] = "ConstrainedBaseline";
15
16
  AndroidAvcProfile[AndroidAvcProfile["ConstrainedHigh"] = 524288] = "ConstrainedHigh";
16
- })(AndroidAvcProfile = AndroidAvcProfile || (AndroidAvcProfile = {}));
17
+ })(AndroidAvcProfile || (AndroidAvcProfile = {}));
17
18
  export var AndroidAvcLevel;
18
19
  (function (AndroidAvcLevel) {
19
20
  AndroidAvcLevel[AndroidAvcLevel["Level1"] = 1] = "Level1";
@@ -36,238 +37,17 @@ export var AndroidAvcLevel;
36
37
  AndroidAvcLevel[AndroidAvcLevel["Level6"] = 131072] = "Level6";
37
38
  AndroidAvcLevel[AndroidAvcLevel["Level61"] = 262144] = "Level61";
38
39
  AndroidAvcLevel[AndroidAvcLevel["Level62"] = 524288] = "Level62";
39
- })(AndroidAvcLevel = AndroidAvcLevel || (AndroidAvcLevel = {}));
40
+ })(AndroidAvcLevel || (AndroidAvcLevel = {}));
40
41
  // H.264 has two standards: ITU-T H.264 and ISO/IEC 14496-10
41
42
  // they have the same content, and refer themselves as "H.264".
42
43
  // The name "AVC" (Advanced Video Coding) is only used in ISO spec name,
43
44
  // and other ISO specs referring to H.264.
44
45
  // Because this module parses H.264 Annex B format,
45
46
  // it's named "h264" instead of "avc".
46
- class BitReader {
47
- buffer;
48
- bytePosition = 0;
49
- bitPosition = 0;
50
- constructor(buffer) {
51
- this.buffer = buffer;
52
- }
53
- read(length) {
54
- let result = 0;
55
- for (let i = 0; i < length; i += 1) {
56
- result = (result << 1) | this.next();
57
- }
58
- return result;
59
- }
60
- next() {
61
- const value = (this.buffer[this.bytePosition] >> (7 - this.bitPosition)) & 1;
62
- this.bitPosition += 1;
63
- if (this.bitPosition === 8) {
64
- this.bytePosition += 1;
65
- this.bitPosition = 0;
66
- }
67
- return value;
68
- }
69
- decodeExponentialGolombNumber() {
70
- let length = 0;
71
- while (this.next() === 0) {
72
- length += 1;
73
- }
74
- if (length === 0) {
75
- return 0;
76
- }
77
- return ((1 << length) | this.read(length)) - 1;
78
- }
79
- }
80
- /**
81
- * Split NAL units from a H.264/H.265 Annex B stream.
82
- *
83
- * The input is not modified.
84
- * The returned NAL units are views of the input (no memory allocation nor copy),
85
- * and still contains emulation prevention bytes.
86
- *
87
- * This methods returns a generator, so it can be stopped immediately
88
- * after the interested NAL unit is found.
89
- */
90
- export function* naluSplit(buffer) {
91
- // -1 means we haven't found the first start code
92
- let start = -1;
93
- // How many `0x00`s in a row we have counted
94
- let zeroCount = 0;
95
- let inEmulation = false;
96
- for (let i = 0; i < buffer.length; i += 1) {
97
- const byte = buffer[i];
98
- if (inEmulation) {
99
- if (byte > 0x03) {
100
- // `0x00000304` or larger are invalid
101
- throw new Error("Invalid data");
102
- }
103
- inEmulation = false;
104
- continue;
105
- }
106
- if (byte === 0x00) {
107
- zeroCount += 1;
108
- continue;
109
- }
110
- const prevZeroCount = zeroCount;
111
- zeroCount = 0;
112
- if (start === -1) {
113
- // 0x000001 is the start code
114
- // But it can be preceded by any number of zeros
115
- // So 2 is the minimal
116
- if (prevZeroCount >= 2 && byte === 0x01) {
117
- // Found start of first NAL unit
118
- start = i + 1;
119
- continue;
120
- }
121
- // Not begin with start code
122
- throw new Error("Invalid data");
123
- }
124
- if (prevZeroCount < 2) {
125
- // zero or one `0x00`s are acceptable
126
- continue;
127
- }
128
- if (byte === 0x01) {
129
- // Found another NAL unit
130
- yield buffer.subarray(start, i - prevZeroCount);
131
- start = i + 1;
132
- continue;
133
- }
134
- if (prevZeroCount > 2) {
135
- // Too much `0x00`s
136
- throw new Error("Invalid data");
137
- }
138
- switch (byte) {
139
- case 0x02:
140
- // Didn't find why, but 7.4.1 NAL unit semantics forbids `0x000002` appearing in NAL units
141
- throw new Error("Invalid data");
142
- case 0x03:
143
- // `0x000003` is the "emulation_prevention_three_byte"
144
- // `0x00000300`, `0x00000301`, `0x00000302` and `0x00000303` represent
145
- // `0x000000`, `0x000001`, `0x000002` and `0x000003` respectively
146
- inEmulation = true;
147
- break;
148
- default:
149
- // `0x000004` or larger are as-is
150
- break;
151
- }
152
- }
153
- if (inEmulation) {
154
- throw new Error("Invalid data");
155
- }
156
- yield buffer.subarray(start, buffer.length);
157
- }
158
- /**
159
- * Remove emulation prevention bytes from a H.264/H.265 NAL Unit.
160
- *
161
- * The input is not modified.
162
- * If the input doesn't contain any emulation prevention bytes,
163
- * the input is returned as-is.
164
- * Otherwise, a new `Uint8Array` is created and returned.
165
- */
166
- export function naluRemoveEmulation(buffer) {
167
- // output will be created when first emulation prevention byte is found
168
- let output;
169
- let outputOffset = 0;
170
- let zeroCount = 0;
171
- let inEmulation = false;
172
- let i = 0;
173
- scan: for (; i < buffer.length; i += 1) {
174
- const byte = buffer[i];
175
- if (byte === 0x00) {
176
- zeroCount += 1;
177
- continue;
178
- }
179
- // Current byte is not zero
180
- const prevZeroCount = zeroCount;
181
- zeroCount = 0;
182
- if (prevZeroCount < 2) {
183
- // zero or one `0x00`s are acceptable
184
- continue;
185
- }
186
- if (byte === 0x01) {
187
- // Unexpected start code
188
- throw new Error("Invalid data");
189
- }
190
- if (prevZeroCount > 2) {
191
- // Too much `0x00`s
192
- throw new Error("Invalid data");
193
- }
194
- switch (byte) {
195
- case 0x02:
196
- // Didn't find why, but 7.4.1 NAL unit semantics forbids `0x000002` appearing in NAL units
197
- throw new Error("Invalid data");
198
- case 0x03:
199
- // `0x000003` is the "emulation_prevention_three_byte"
200
- // `0x00000300`, `0x00000301`, `0x00000302` and `0x00000303` represent
201
- // `0x000000`, `0x000001`, `0x000002` and `0x000003` respectively
202
- inEmulation = true;
203
- // Create output and copy the data before the emulation prevention byte
204
- // Output size is unknown, so we use the input size as an upper bound
205
- output = new Uint8Array(buffer.length - 1);
206
- output.set(buffer.subarray(0, i - prevZeroCount));
207
- outputOffset = i - prevZeroCount + 1;
208
- break scan;
209
- default:
210
- // `0x000004` or larger are as-is
211
- break;
212
- }
213
- }
214
- if (!output) {
215
- return buffer;
216
- }
217
- // Continue at the byte after the emulation prevention byte
218
- for (; i < buffer.length; i += 1) {
219
- const byte = buffer[i];
220
- output[outputOffset] = byte;
221
- outputOffset += 1;
222
- if (inEmulation) {
223
- if (byte > 0x03) {
224
- // `0x00000304` or larger are invalid
225
- throw new Error("Invalid data");
226
- }
227
- inEmulation = false;
228
- continue;
229
- }
230
- if (byte === 0x00) {
231
- zeroCount += 1;
232
- continue;
233
- }
234
- const prevZeroCount = zeroCount;
235
- zeroCount = 0;
236
- if (prevZeroCount < 2) {
237
- // zero or one `0x00`s are acceptable
238
- continue;
239
- }
240
- if (byte === 0x01) {
241
- // Unexpected start code
242
- throw new Error("Invalid data");
243
- }
244
- if (prevZeroCount > 2) {
245
- // Too much `0x00`s
246
- throw new Error("Invalid data");
247
- }
248
- switch (byte) {
249
- case 0x02:
250
- // Didn't find why, but 7.4.1 NAL unit semantics forbids `0x000002` appearing in NAL units
251
- throw new Error("Invalid data");
252
- case 0x03:
253
- // `0x000003` is the "emulation_prevention_three_byte"
254
- // `0x00000300`, `0x00000301`, `0x00000302` and `0x00000303` represent
255
- // `0x000000`, `0x000001`, `0x000002` and `0x000003` respectively
256
- inEmulation = true;
257
- // Remove the emulation prevention byte
258
- outputOffset -= 1;
259
- break;
260
- default:
261
- // `0x000004` or larger are as-is
262
- break;
263
- }
264
- }
265
- return output.subarray(0, outputOffset);
266
- }
267
47
  // 7.3.2.1.1 Sequence parameter set data syntax
268
48
  // Variable names in this method uses the snake_case convention as in the spec for easier referencing.
269
- export function h264ParseSequenceParameterSet(buffer) {
270
- const reader = new BitReader(buffer);
49
+ export function h264ParseSequenceParameterSet(nalu) {
50
+ const reader = new NaluSodbBitReader(nalu);
271
51
  if (reader.next() !== 0) {
272
52
  throw new Error("Invalid data");
273
53
  }
@@ -280,16 +60,15 @@ export function h264ParseSequenceParameterSet(buffer) {
280
60
  throw new Error("Invalid data");
281
61
  }
282
62
  const profile_idc = reader.read(8);
283
- const constraint_set = reader.read(8);
284
- const constraint_set_reader = new BitReader(new Uint8Array([constraint_set]));
285
- const constraint_set0_flag = !!constraint_set_reader.next();
286
- const constraint_set1_flag = !!constraint_set_reader.next();
287
- const constraint_set2_flag = !!constraint_set_reader.next();
288
- const constraint_set3_flag = !!constraint_set_reader.next();
289
- const constraint_set4_flag = !!constraint_set_reader.next();
290
- const constraint_set5_flag = !!constraint_set_reader.next();
63
+ const constraint_set = reader.peek(8);
64
+ const constraint_set0_flag = !!reader.next();
65
+ const constraint_set1_flag = !!reader.next();
66
+ const constraint_set2_flag = !!reader.next();
67
+ const constraint_set3_flag = !!reader.next();
68
+ const constraint_set4_flag = !!reader.next();
69
+ const constraint_set5_flag = !!reader.next();
291
70
  // reserved_zero_2bits
292
- if (constraint_set_reader.read(2) !== 0) {
71
+ if (reader.read(2) !== 0) {
293
72
  throw new Error("Invalid data");
294
73
  }
295
74
  const level_idc = reader.read(8);
@@ -419,7 +198,7 @@ export function h264ParseSequenceParameterSet(buffer) {
419
198
  export function h264SearchConfiguration(buffer) {
420
199
  let sequenceParameterSet;
421
200
  let pictureParameterSet;
422
- for (const nalu of naluSplit(buffer)) {
201
+ for (const nalu of annexBSplitNalu(buffer)) {
423
202
  const naluType = nalu[0] & 0x1f;
424
203
  switch (naluType) {
425
204
  case 7: // Sequence parameter set
@@ -449,7 +228,7 @@ export function h264SearchConfiguration(buffer) {
449
228
  }
450
229
  export function h264ParseConfiguration(data) {
451
230
  const { sequenceParameterSet, pictureParameterSet } = h264SearchConfiguration(data);
452
- const { profile_idc: profileIndex, constraint_set: constraintSet, level_idc: levelIndex, pic_width_in_mbs_minus1, pic_height_in_map_units_minus1, frame_mbs_only_flag, frame_crop_left_offset, frame_crop_right_offset, frame_crop_top_offset, frame_crop_bottom_offset, } = h264ParseSequenceParameterSet(naluRemoveEmulation(sequenceParameterSet));
231
+ const { profile_idc: profileIndex, constraint_set: constraintSet, level_idc: levelIndex, pic_width_in_mbs_minus1, pic_height_in_map_units_minus1, frame_mbs_only_flag, frame_crop_left_offset, frame_crop_right_offset, frame_crop_top_offset, frame_crop_bottom_offset, } = h264ParseSequenceParameterSet(sequenceParameterSet);
453
232
  const encodedWidth = (pic_width_in_mbs_minus1 + 1) * 16;
454
233
  const encodedHeight = (pic_height_in_map_units_minus1 + 1) * (2 - frame_mbs_only_flag) * 16;
455
234
  const cropLeft = frame_crop_left_offset * 2;
@@ -1 +1 @@
1
- {"version":3,"file":"h264.js","sourceRoot":"","sources":["../../src/codec/h264.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"h264.js","sourceRoot":"","sources":["../../src/codec/h264.ts"],"names":[],"mappings":"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"}