@yume-chan/scrcpy 2.3.0 → 3.0.0-beta.1

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 (671) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +1 -1
  3. package/esm/1_15/impl/codec-options.d.ts +147 -0
  4. package/esm/1_15/impl/codec-options.d.ts.map +1 -0
  5. package/esm/1_15/impl/codec-options.js +231 -0
  6. package/esm/1_15/impl/codec-options.js.map +1 -0
  7. package/esm/1_15/impl/compute-option-values.d.ts +7 -0
  8. package/esm/1_15/impl/compute-option-values.d.ts.map +1 -0
  9. package/esm/1_15/impl/compute-option-values.js +12 -0
  10. package/esm/1_15/impl/compute-option-values.js.map +1 -0
  11. package/esm/1_15/impl/control-message-types.d.ts +13 -2
  12. package/esm/1_15/impl/control-message-types.d.ts.map +1 -1
  13. package/esm/1_15/impl/control-message-types.js +13 -14
  14. package/esm/1_15/impl/control-message-types.js.map +1 -1
  15. package/esm/1_15/impl/index.d.ts +3 -0
  16. package/esm/1_15/impl/index.d.ts.map +1 -1
  17. package/esm/1_15/impl/index.js +3 -0
  18. package/esm/1_15/impl/index.js.map +1 -1
  19. package/esm/1_15/impl/init.d.ts +12 -33
  20. package/esm/1_15/impl/init.d.ts.map +1 -1
  21. package/esm/1_15/impl/init.js +0 -39
  22. package/esm/1_15/impl/init.js.map +1 -1
  23. package/esm/1_15/impl/inject-touch.d.ts.map +1 -1
  24. package/esm/1_15/impl/inject-touch.js +1 -0
  25. package/esm/1_15/impl/inject-touch.js.map +1 -1
  26. package/esm/1_15/impl/media-stream-transformer.d.ts +2 -2
  27. package/esm/1_15/impl/media-stream-transformer.js +1 -1
  28. package/esm/1_15/impl/media-stream-transformer.js.map +1 -1
  29. package/esm/1_15/impl/parse-video-stream-metadata.js +4 -4
  30. package/esm/1_15/impl/parse-video-stream-metadata.js.map +1 -1
  31. package/esm/1_15/impl/scroll-controller.d.ts.map +1 -1
  32. package/esm/1_15/impl/scroll-controller.js +1 -0
  33. package/esm/1_15/impl/scroll-controller.js.map +1 -1
  34. package/esm/1_15/impl/set-clipboard.d.ts.map +1 -1
  35. package/esm/1_15/impl/set-clipboard.js +5 -1
  36. package/esm/1_15/impl/set-clipboard.js.map +1 -1
  37. package/esm/1_15/impl/set-display-power.d.ts +13 -0
  38. package/esm/1_15/impl/set-display-power.d.ts.map +1 -0
  39. package/esm/1_15/impl/set-display-power.js +16 -0
  40. package/esm/1_15/impl/set-display-power.js.map +1 -0
  41. package/esm/1_15/options.d.ts +13 -9
  42. package/esm/1_15/options.d.ts.map +1 -1
  43. package/esm/1_15/options.js +20 -2
  44. package/esm/1_15/options.js.map +1 -1
  45. package/esm/1_15_1.d.ts +1 -7
  46. package/esm/1_15_1.d.ts.map +1 -1
  47. package/esm/1_15_1.js +1 -6
  48. package/esm/1_15_1.js.map +1 -1
  49. package/esm/1_16.d.ts +1 -7
  50. package/esm/1_16.d.ts.map +1 -1
  51. package/esm/1_16.js +1 -6
  52. package/esm/1_16.js.map +1 -1
  53. package/esm/1_17/impl/defaults.d.ts.map +1 -1
  54. package/esm/1_17/impl/defaults.js +2 -2
  55. package/esm/1_17/impl/defaults.js.map +1 -1
  56. package/esm/1_17/options.d.ts +12 -9
  57. package/esm/1_17/options.d.ts.map +1 -1
  58. package/esm/1_17/options.js +20 -2
  59. package/esm/1_17/options.js.map +1 -1
  60. package/esm/1_18/impl/control-message-types.d.ts +14 -2
  61. package/esm/1_18/impl/control-message-types.d.ts.map +1 -1
  62. package/esm/1_18/impl/control-message-types.js +14 -7
  63. package/esm/1_18/impl/control-message-types.js.map +1 -1
  64. package/esm/1_18/impl/defaults.d.ts.map +1 -1
  65. package/esm/1_18/impl/defaults.js +2 -2
  66. package/esm/1_18/impl/defaults.js.map +1 -1
  67. package/esm/1_18/impl/init.d.ts +3 -3
  68. package/esm/1_18/impl/init.d.ts.map +1 -1
  69. package/esm/1_18/options.d.ts +12 -9
  70. package/esm/1_18/options.d.ts.map +1 -1
  71. package/esm/1_18/options.js +20 -2
  72. package/esm/1_18/options.js.map +1 -1
  73. package/esm/1_19.d.ts +1 -7
  74. package/esm/1_19.d.ts.map +1 -1
  75. package/esm/1_19.js +1 -6
  76. package/esm/1_19.js.map +1 -1
  77. package/esm/1_20.d.ts +1 -7
  78. package/esm/1_20.d.ts.map +1 -1
  79. package/esm/1_20.js +1 -6
  80. package/esm/1_20.js.map +1 -1
  81. package/esm/1_21/impl/compute-option-values.d.ts +23 -0
  82. package/esm/1_21/impl/compute-option-values.d.ts.map +1 -0
  83. package/esm/1_21/impl/compute-option-values.js +12 -0
  84. package/esm/1_21/impl/compute-option-values.js.map +1 -0
  85. package/esm/1_21/impl/defaults.d.ts.map +1 -1
  86. package/esm/1_21/impl/defaults.js +2 -2
  87. package/esm/1_21/impl/defaults.js.map +1 -1
  88. package/esm/1_21/impl/index.d.ts +3 -1
  89. package/esm/1_21/impl/index.d.ts.map +1 -1
  90. package/esm/1_21/impl/index.js +2 -1
  91. package/esm/1_21/impl/index.js.map +1 -1
  92. package/esm/1_21/impl/init.d.ts +1 -1
  93. package/esm/1_21/impl/init.d.ts.map +1 -1
  94. package/esm/1_21/impl/serialize.d.ts +1 -1
  95. package/esm/1_21/impl/serialize.d.ts.map +1 -1
  96. package/esm/1_21/impl/serialize.js.map +1 -1
  97. package/esm/1_21/impl/set-clipboard.d.ts +1 -0
  98. package/esm/1_21/impl/set-clipboard.d.ts.map +1 -1
  99. package/esm/1_21/impl/set-clipboard.js +7 -0
  100. package/esm/1_21/impl/set-clipboard.js.map +1 -1
  101. package/esm/1_21/options.d.ts +12 -9
  102. package/esm/1_21/options.d.ts.map +1 -1
  103. package/esm/1_21/options.js +25 -5
  104. package/esm/1_21/options.js.map +1 -1
  105. package/esm/1_22/impl/defaults.d.ts.map +1 -1
  106. package/esm/1_22/impl/defaults.js +2 -2
  107. package/esm/1_22/impl/defaults.js.map +1 -1
  108. package/esm/1_22/impl/init.d.ts +3 -3
  109. package/esm/1_22/impl/init.d.ts.map +1 -1
  110. package/esm/1_22/impl/parse-video-stream-metadata.d.ts +2 -2
  111. package/esm/1_22/impl/parse-video-stream-metadata.d.ts.map +1 -1
  112. package/esm/1_22/impl/parse-video-stream-metadata.js +3 -3
  113. package/esm/1_22/impl/parse-video-stream-metadata.js.map +1 -1
  114. package/esm/1_22/options.d.ts +12 -9
  115. package/esm/1_22/options.d.ts.map +1 -1
  116. package/esm/1_22/options.js +26 -6
  117. package/esm/1_22/options.js.map +1 -1
  118. package/esm/1_23/impl/defaults.d.ts.map +1 -1
  119. package/esm/1_23/impl/defaults.js +2 -2
  120. package/esm/1_23/impl/defaults.js.map +1 -1
  121. package/esm/1_23/impl/init.d.ts +1 -1
  122. package/esm/1_23/impl/init.d.ts.map +1 -1
  123. package/esm/1_23/impl/media-stream-transformer.d.ts +2 -2
  124. package/esm/1_23/impl/media-stream-transformer.js +1 -1
  125. package/esm/1_23/impl/media-stream-transformer.js.map +1 -1
  126. package/esm/1_23/options.d.ts +12 -9
  127. package/esm/1_23/options.d.ts.map +1 -1
  128. package/esm/1_23/options.js +26 -6
  129. package/esm/1_23/options.js.map +1 -1
  130. package/esm/1_24/impl/defaults.d.ts.map +1 -1
  131. package/esm/1_24/impl/defaults.js +2 -2
  132. package/esm/1_24/impl/defaults.js.map +1 -1
  133. package/esm/1_24/impl/init.d.ts +1 -1
  134. package/esm/1_24/impl/init.d.ts.map +1 -1
  135. package/esm/1_24/options.d.ts +12 -9
  136. package/esm/1_24/options.d.ts.map +1 -1
  137. package/esm/1_24/options.js +26 -6
  138. package/esm/1_24/options.js.map +1 -1
  139. package/esm/1_25/impl/scroll-controller.d.ts +2 -2
  140. package/esm/1_25/impl/scroll-controller.d.ts.map +1 -1
  141. package/esm/1_25/impl/scroll-controller.js +4 -4
  142. package/esm/1_25/impl/scroll-controller.js.map +1 -1
  143. package/esm/1_25/options.d.ts +12 -9
  144. package/esm/1_25/options.d.ts.map +1 -1
  145. package/esm/1_25/options.js +26 -6
  146. package/esm/1_25/options.js.map +1 -1
  147. package/esm/2_0/impl/defaults.d.ts +8 -11
  148. package/esm/2_0/impl/defaults.d.ts.map +1 -1
  149. package/esm/2_0/impl/defaults.js +2 -2
  150. package/esm/2_0/impl/defaults.js.map +1 -1
  151. package/esm/2_0/impl/index.d.ts +1 -1
  152. package/esm/2_0/impl/index.d.ts.map +1 -1
  153. package/esm/2_0/impl/index.js +1 -1
  154. package/esm/2_0/impl/index.js.map +1 -1
  155. package/esm/2_0/impl/init.d.ts +8 -8
  156. package/esm/2_0/impl/init.d.ts.map +1 -1
  157. package/esm/2_0/impl/inject-touch.d.ts +2 -2
  158. package/esm/2_0/impl/inject-touch.d.ts.map +1 -1
  159. package/esm/2_0/impl/inject-touch.js +4 -4
  160. package/esm/2_0/impl/inject-touch.js.map +1 -1
  161. package/esm/2_0/impl/parse-audio-stream-metadata.d.ts +4 -1
  162. package/esm/2_0/impl/parse-audio-stream-metadata.d.ts.map +1 -1
  163. package/esm/2_0/impl/parse-audio-stream-metadata.js +30 -46
  164. package/esm/2_0/impl/parse-audio-stream-metadata.js.map +1 -1
  165. package/esm/2_0/impl/parse-video-stream-metadata.d.ts +5 -2
  166. package/esm/2_0/impl/parse-video-stream-metadata.d.ts.map +1 -1
  167. package/esm/2_0/impl/parse-video-stream-metadata.js +14 -12
  168. package/esm/2_0/impl/parse-video-stream-metadata.js.map +1 -1
  169. package/esm/2_0/options.d.ts +20 -20
  170. package/esm/2_0/options.d.ts.map +1 -1
  171. package/esm/2_0/options.js +27 -7
  172. package/esm/2_0/options.js.map +1 -1
  173. package/esm/2_1/impl/defaults.d.ts +8 -11
  174. package/esm/2_1/impl/defaults.d.ts.map +1 -1
  175. package/esm/2_1/impl/defaults.js +2 -2
  176. package/esm/2_1/impl/defaults.js.map +1 -1
  177. package/esm/2_1/impl/init.d.ts +3 -3
  178. package/esm/2_1/impl/init.d.ts.map +1 -1
  179. package/esm/2_1/options.d.ts +22 -22
  180. package/esm/2_1/options.d.ts.map +1 -1
  181. package/esm/2_1/options.js +27 -7
  182. package/esm/2_1/options.js.map +1 -1
  183. package/esm/2_1_1.d.ts +1 -7
  184. package/esm/2_1_1.d.ts.map +1 -1
  185. package/esm/2_1_1.js +1 -6
  186. package/esm/2_1_1.js.map +1 -1
  187. package/esm/2_2/impl/compute-option-values.d.ts +22 -0
  188. package/esm/2_2/impl/compute-option-values.d.ts.map +1 -0
  189. package/esm/2_2/impl/compute-option-values.js +11 -0
  190. package/esm/2_2/impl/compute-option-values.js.map +1 -0
  191. package/esm/2_2/impl/defaults.d.ts +8 -11
  192. package/esm/2_2/impl/defaults.d.ts.map +1 -1
  193. package/esm/2_2/impl/defaults.js +2 -2
  194. package/esm/2_2/impl/defaults.js.map +1 -1
  195. package/esm/2_2/impl/index.d.ts +2 -0
  196. package/esm/2_2/impl/index.d.ts.map +1 -1
  197. package/esm/2_2/impl/index.js +1 -0
  198. package/esm/2_2/impl/index.js.map +1 -1
  199. package/esm/2_2/impl/init.d.ts +5 -5
  200. package/esm/2_2/impl/init.d.ts.map +1 -1
  201. package/esm/2_2/options.d.ts +22 -22
  202. package/esm/2_2/options.d.ts.map +1 -1
  203. package/esm/2_2/options.js +27 -10
  204. package/esm/2_2/options.js.map +1 -1
  205. package/esm/2_3/impl/index.d.ts +1 -0
  206. package/esm/2_3/impl/index.d.ts.map +1 -1
  207. package/esm/2_3/impl/index.js +1 -0
  208. package/esm/2_3/impl/index.js.map +1 -1
  209. package/esm/2_3/impl/init.d.ts +2 -2
  210. package/esm/2_3/impl/init.d.ts.map +1 -1
  211. package/esm/2_3/impl/parse-audio-stream-metadata.d.ts +5 -0
  212. package/esm/2_3/impl/parse-audio-stream-metadata.d.ts.map +1 -0
  213. package/esm/2_3/impl/parse-audio-stream-metadata.js +31 -0
  214. package/esm/2_3/impl/parse-audio-stream-metadata.js.map +1 -0
  215. package/esm/2_3/options.d.ts +22 -22
  216. package/esm/2_3/options.d.ts.map +1 -1
  217. package/esm/2_3/options.js +27 -10
  218. package/esm/2_3/options.js.map +1 -1
  219. package/esm/2_3_1.d.ts +1 -7
  220. package/esm/2_3_1.d.ts.map +1 -1
  221. package/esm/2_3_1.js +1 -6
  222. package/esm/2_3_1.js.map +1 -1
  223. package/esm/2_4/impl/control-message-types.d.ts +17 -2
  224. package/esm/2_4/impl/control-message-types.d.ts.map +1 -1
  225. package/esm/2_4/impl/control-message-types.js +17 -8
  226. package/esm/2_4/impl/control-message-types.js.map +1 -1
  227. package/esm/2_4/impl/serialize-uhid-create.d.ts.map +1 -1
  228. package/esm/2_4/impl/serialize-uhid-create.js +1 -0
  229. package/esm/2_4/impl/serialize-uhid-create.js.map +1 -1
  230. package/esm/2_4/options.d.ts +23 -23
  231. package/esm/2_4/options.d.ts.map +1 -1
  232. package/esm/2_4/options.js +27 -9
  233. package/esm/2_4/options.js.map +1 -1
  234. package/esm/2_5.d.ts +1 -7
  235. package/esm/2_5.d.ts.map +1 -1
  236. package/esm/2_5.js +1 -6
  237. package/esm/2_5.js.map +1 -1
  238. package/esm/2_6/impl/compute-option-values.d.ts +29 -0
  239. package/esm/2_6/impl/compute-option-values.d.ts.map +1 -0
  240. package/esm/2_6/impl/compute-option-values.js +12 -0
  241. package/esm/2_6/impl/compute-option-values.js.map +1 -0
  242. package/esm/2_6/impl/defaults.d.ts +8 -11
  243. package/esm/2_6/impl/defaults.d.ts.map +1 -1
  244. package/esm/2_6/impl/defaults.js +2 -2
  245. package/esm/2_6/impl/defaults.js.map +1 -1
  246. package/esm/2_6/impl/index.d.ts +2 -0
  247. package/esm/2_6/impl/index.d.ts.map +1 -1
  248. package/esm/2_6/impl/index.js +1 -0
  249. package/esm/2_6/impl/index.js.map +1 -1
  250. package/esm/2_6/impl/init.d.ts +3 -3
  251. package/esm/2_6/impl/init.d.ts.map +1 -1
  252. package/esm/2_6/options.d.ts +23 -23
  253. package/esm/2_6/options.d.ts.map +1 -1
  254. package/esm/2_6/options.js +27 -12
  255. package/esm/2_6/options.js.map +1 -1
  256. package/esm/2_6_1.d.ts +1 -7
  257. package/esm/2_6_1.d.ts.map +1 -1
  258. package/esm/2_6_1.js +1 -6
  259. package/esm/2_6_1.js.map +1 -1
  260. package/esm/2_7/impl/control-message-types.d.ts +18 -2
  261. package/esm/2_7/impl/control-message-types.d.ts.map +1 -1
  262. package/esm/2_7/impl/control-message-types.js +18 -7
  263. package/esm/2_7/impl/control-message-types.js.map +1 -1
  264. package/esm/2_7/impl/index.d.ts.map +1 -1
  265. package/esm/2_7/impl/index.js.map +1 -1
  266. package/esm/2_7/impl/serialize-uhid-create.d.ts.map +1 -1
  267. package/esm/2_7/impl/serialize-uhid-create.js +1 -0
  268. package/esm/2_7/impl/serialize-uhid-create.js.map +1 -1
  269. package/esm/2_7/options.d.ts +23 -23
  270. package/esm/2_7/options.d.ts.map +1 -1
  271. package/esm/2_7/options.js +27 -12
  272. package/esm/2_7/options.js.map +1 -1
  273. package/esm/3_0/impl/control-message-types.d.ts +20 -2
  274. package/esm/3_0/impl/control-message-types.d.ts.map +1 -1
  275. package/esm/3_0/impl/control-message-types.js +20 -7
  276. package/esm/3_0/impl/control-message-types.js.map +1 -1
  277. package/esm/3_0/impl/defaults.d.ts +29 -33
  278. package/esm/3_0/impl/defaults.d.ts.map +1 -1
  279. package/esm/3_0/impl/defaults.js +2 -2
  280. package/esm/3_0/impl/defaults.js.map +1 -1
  281. package/esm/3_0/impl/index.d.ts +1 -0
  282. package/esm/3_0/impl/index.d.ts.map +1 -1
  283. package/esm/3_0/impl/index.js +1 -0
  284. package/esm/3_0/impl/index.js.map +1 -1
  285. package/esm/3_0/impl/init.d.ts +4 -4
  286. package/esm/3_0/impl/init.d.ts.map +1 -1
  287. package/esm/3_0/impl/set-display-power.d.ts +12 -0
  288. package/esm/3_0/impl/set-display-power.d.ts.map +1 -0
  289. package/esm/3_0/impl/set-display-power.js +10 -0
  290. package/esm/3_0/impl/set-display-power.js.map +1 -0
  291. package/esm/3_0/options.d.ts +44 -45
  292. package/esm/3_0/options.d.ts.map +1 -1
  293. package/esm/3_0/options.js +27 -12
  294. package/esm/3_0/options.js.map +1 -1
  295. package/esm/3_0_1.d.ts +1 -7
  296. package/esm/3_0_1.d.ts.map +1 -1
  297. package/esm/3_0_1.js +1 -6
  298. package/esm/3_0_1.js.map +1 -1
  299. package/esm/3_0_2.d.ts +1 -7
  300. package/esm/3_0_2.d.ts.map +1 -1
  301. package/esm/3_0_2.js +1 -6
  302. package/esm/3_0_2.js.map +1 -1
  303. package/esm/3_1/impl/defaults.d.ts +29 -33
  304. package/esm/3_1/impl/defaults.d.ts.map +1 -1
  305. package/esm/3_1/impl/defaults.js +2 -2
  306. package/esm/3_1/impl/defaults.js.map +1 -1
  307. package/esm/3_1/impl/index.d.ts.map +1 -1
  308. package/esm/3_1/impl/index.js.map +1 -1
  309. package/esm/3_1/impl/init.d.ts +2 -2
  310. package/esm/3_1/impl/init.d.ts.map +1 -1
  311. package/esm/3_1/impl/serialize-uhid-create.d.ts.map +1 -1
  312. package/esm/3_1/impl/serialize-uhid-create.js +1 -0
  313. package/esm/3_1/impl/serialize-uhid-create.js.map +1 -1
  314. package/esm/3_1/options.d.ts +44 -45
  315. package/esm/3_1/options.d.ts.map +1 -1
  316. package/esm/3_1/options.js +27 -12
  317. package/esm/3_1/options.js.map +1 -1
  318. package/esm/3_2/impl/defaults.d.ts +29 -33
  319. package/esm/3_2/impl/defaults.d.ts.map +1 -1
  320. package/esm/3_2/impl/defaults.js +2 -2
  321. package/esm/3_2/impl/defaults.js.map +1 -1
  322. package/esm/3_2/impl/index.d.ts.map +1 -1
  323. package/esm/3_2/impl/index.js.map +1 -1
  324. package/esm/3_2/impl/init.d.ts +2 -2
  325. package/esm/3_2/impl/init.d.ts.map +1 -1
  326. package/esm/3_2/options.d.ts +44 -45
  327. package/esm/3_2/options.d.ts.map +1 -1
  328. package/esm/3_2/options.js +27 -12
  329. package/esm/3_2/options.js.map +1 -1
  330. package/esm/3_3.d.ts +1 -7
  331. package/esm/3_3.d.ts.map +1 -1
  332. package/esm/3_3.js +1 -6
  333. package/esm/3_3.js.map +1 -1
  334. package/esm/3_3_1/options.d.ts +44 -45
  335. package/esm/3_3_1/options.d.ts.map +1 -1
  336. package/esm/3_3_1/options.js +27 -12
  337. package/esm/3_3_1/options.js.map +1 -1
  338. package/esm/3_3_2.d.ts +1 -7
  339. package/esm/3_3_2.d.ts.map +1 -1
  340. package/esm/3_3_2.js +1 -6
  341. package/esm/3_3_2.js.map +1 -1
  342. package/esm/3_3_4.d.ts +2 -0
  343. package/esm/3_3_4.d.ts.map +1 -0
  344. package/esm/3_3_4.js +2 -0
  345. package/esm/3_3_4.js.map +1 -0
  346. package/esm/4_0/impl/compute-option-values.d.ts +15 -0
  347. package/esm/4_0/impl/compute-option-values.d.ts.map +1 -0
  348. package/esm/4_0/impl/compute-option-values.js +9 -0
  349. package/esm/4_0/impl/compute-option-values.js.map +1 -0
  350. package/esm/4_0/impl/control-message-types.d.ts +25 -0
  351. package/esm/4_0/impl/control-message-types.d.ts.map +1 -0
  352. package/esm/4_0/impl/control-message-types.js +26 -0
  353. package/esm/4_0/impl/control-message-types.js.map +1 -0
  354. package/esm/4_0/impl/defaults.d.ts +58 -0
  355. package/esm/4_0/impl/defaults.d.ts.map +1 -0
  356. package/esm/4_0/impl/defaults.js +12 -0
  357. package/esm/4_0/impl/defaults.js.map +1 -0
  358. package/esm/4_0/impl/index.d.ts +9 -0
  359. package/esm/4_0/impl/index.d.ts.map +1 -0
  360. package/esm/4_0/impl/index.js +7 -0
  361. package/esm/4_0/impl/index.js.map +1 -0
  362. package/esm/4_0/impl/init.d.ts +10 -0
  363. package/esm/4_0/impl/init.d.ts.map +1 -0
  364. package/esm/4_0/impl/init.js +2 -0
  365. package/esm/4_0/impl/init.js.map +1 -0
  366. package/esm/4_0/impl/media-stream-transformer.d.ts +5 -0
  367. package/esm/4_0/impl/media-stream-transformer.d.ts.map +1 -0
  368. package/esm/4_0/impl/media-stream-transformer.js +39 -0
  369. package/esm/4_0/impl/media-stream-transformer.js.map +1 -0
  370. package/esm/4_0/impl/parse-video-stream-metadata.d.ts +6 -0
  371. package/esm/4_0/impl/parse-video-stream-metadata.d.ts.map +1 -0
  372. package/esm/4_0/impl/parse-video-stream-metadata.js +21 -0
  373. package/esm/4_0/impl/parse-video-stream-metadata.js.map +1 -0
  374. package/esm/4_0/impl/prev.d.ts +2 -0
  375. package/esm/4_0/impl/prev.d.ts.map +1 -0
  376. package/esm/4_0/impl/prev.js +2 -0
  377. package/esm/4_0/impl/prev.js.map +1 -0
  378. package/esm/4_0/index.d.ts +100 -0
  379. package/esm/4_0/index.d.ts.map +1 -0
  380. package/esm/4_0/index.js +93 -0
  381. package/esm/4_0/index.js.map +1 -0
  382. package/esm/4_1/impl/control-message-types.d.ts +26 -0
  383. package/esm/4_1/impl/control-message-types.d.ts.map +1 -0
  384. package/esm/4_1/impl/control-message-types.js +27 -0
  385. package/esm/4_1/impl/control-message-types.js.map +1 -0
  386. package/esm/4_1/impl/defaults.d.ts +59 -0
  387. package/esm/4_1/impl/defaults.d.ts.map +1 -0
  388. package/esm/4_1/impl/defaults.js +6 -0
  389. package/esm/4_1/impl/defaults.js.map +1 -0
  390. package/esm/4_1/impl/index.d.ts +6 -0
  391. package/esm/4_1/impl/index.d.ts.map +1 -0
  392. package/esm/4_1/impl/index.js +5 -0
  393. package/esm/4_1/impl/index.js.map +1 -0
  394. package/esm/4_1/impl/init.d.ts +6 -0
  395. package/esm/4_1/impl/init.d.ts.map +1 -0
  396. package/esm/4_1/impl/init.js +2 -0
  397. package/esm/4_1/impl/init.js.map +1 -0
  398. package/esm/4_1/impl/parse-video-stream-metadata.d.ts +4 -0
  399. package/esm/4_1/impl/parse-video-stream-metadata.d.ts.map +1 -0
  400. package/esm/4_1/impl/parse-video-stream-metadata.js +19 -0
  401. package/esm/4_1/impl/parse-video-stream-metadata.js.map +1 -0
  402. package/esm/4_1/impl/prev.d.ts +2 -0
  403. package/esm/4_1/impl/prev.d.ts.map +1 -0
  404. package/esm/4_1/impl/prev.js +2 -0
  405. package/esm/4_1/impl/prev.js.map +1 -0
  406. package/esm/4_1/index.d.ts +101 -0
  407. package/esm/4_1/index.d.ts.map +1 -0
  408. package/esm/4_1/index.js +93 -0
  409. package/esm/4_1/index.js.map +1 -0
  410. package/esm/android/key-code-value.d.ts +176 -0
  411. package/esm/android/key-code-value.d.ts.map +1 -0
  412. package/esm/android/key-code-value.js +180 -0
  413. package/esm/android/key-code-value.js.map +1 -0
  414. package/esm/android/key-event.d.ts +3 -164
  415. package/esm/android/key-event.d.ts.map +1 -1
  416. package/esm/android/key-event.js +2 -167
  417. package/esm/android/key-event.js.map +1 -1
  418. package/esm/base/control-message-type-value.d.ts +24 -0
  419. package/esm/base/control-message-type-value.d.ts.map +1 -0
  420. package/esm/base/control-message-type-value.js +24 -0
  421. package/esm/base/control-message-type-value.js.map +1 -0
  422. package/esm/base/control-message-type.d.ts +3 -21
  423. package/esm/base/control-message-type.d.ts.map +1 -1
  424. package/esm/base/control-message-type.js +2 -21
  425. package/esm/base/control-message-type.js.map +1 -1
  426. package/esm/base/media.d.ts +8 -1
  427. package/esm/base/media.d.ts.map +1 -1
  428. package/esm/base/options.d.ts +8 -5
  429. package/esm/base/options.d.ts.map +1 -1
  430. package/esm/base/video.d.ts +1 -7
  431. package/esm/base/video.d.ts.map +1 -1
  432. package/esm/base/video.js +1 -13
  433. package/esm/base/video.js.map +1 -1
  434. package/esm/control/boolean.d.ts +10 -0
  435. package/esm/control/boolean.d.ts.map +1 -0
  436. package/esm/control/boolean.js +3 -0
  437. package/esm/control/boolean.js.map +1 -0
  438. package/esm/control/index.d.ts +2 -2
  439. package/esm/control/index.d.ts.map +1 -1
  440. package/esm/control/index.js +2 -2
  441. package/esm/control/index.js.map +1 -1
  442. package/esm/control/inject-key-code.d.ts +2 -2
  443. package/esm/control/inject-key-code.d.ts.map +1 -1
  444. package/esm/control/inject-key-code.js +4 -4
  445. package/esm/control/inject-key-code.js.map +1 -1
  446. package/esm/control/inject-text.d.ts.map +1 -1
  447. package/esm/control/inject-text.js +5 -1
  448. package/esm/control/inject-text.js.map +1 -1
  449. package/esm/control/resize-display.d.ts +12 -0
  450. package/esm/control/resize-display.d.ts.map +1 -0
  451. package/esm/control/resize-display.js +8 -0
  452. package/esm/control/resize-display.js.map +1 -0
  453. package/esm/control/serializer.d.ts +10 -2
  454. package/esm/control/serializer.d.ts.map +1 -1
  455. package/esm/control/serializer.js +57 -23
  456. package/esm/control/serializer.js.map +1 -1
  457. package/esm/control/start-app.d.ts.map +1 -1
  458. package/esm/control/start-app.js +1 -0
  459. package/esm/control/start-app.js.map +1 -1
  460. package/esm/control/uhid.d.ts +2 -2
  461. package/esm/control/uhid.d.ts.map +1 -1
  462. package/esm/control/uhid.js +9 -5
  463. package/esm/control/uhid.js.map +1 -1
  464. package/esm/control/writer.d.ts +8 -2
  465. package/esm/control/writer.d.ts.map +1 -1
  466. package/esm/control/writer.js +17 -2
  467. package/esm/control/writer.js.map +1 -1
  468. package/esm/index.d.ts +4 -1
  469. package/esm/index.d.ts.map +1 -1
  470. package/esm/index.js +4 -1
  471. package/esm/index.js.map +1 -1
  472. package/esm/latest.d.ts +2 -2
  473. package/esm/latest.d.ts.map +1 -1
  474. package/esm/latest.js +2 -2
  475. package/esm/latest.js.map +1 -1
  476. package/esm/utils/omit.d.ts +1 -1
  477. package/esm/utils/omit.d.ts.map +1 -1
  478. package/esm/video/android.d.ts +69 -0
  479. package/esm/video/android.d.ts.map +1 -0
  480. package/esm/video/android.js +70 -0
  481. package/esm/video/android.js.map +1 -0
  482. package/esm/video/codec-id.d.ts +6 -0
  483. package/esm/video/codec-id.d.ts.map +1 -0
  484. package/esm/video/codec-id.js +6 -0
  485. package/esm/video/codec-id.js.map +1 -0
  486. package/esm/video/index.d.ts +7 -0
  487. package/esm/video/index.d.ts.map +1 -0
  488. package/esm/video/index.js +15 -0
  489. package/esm/video/index.js.map +1 -0
  490. package/esm/video/size.d.ts +20 -0
  491. package/esm/video/size.d.ts.map +1 -0
  492. package/esm/video/size.js +27 -0
  493. package/esm/video/size.js.map +1 -0
  494. package/package.json +11 -10
  495. package/src/1_15/impl/codec-options.ts +287 -0
  496. package/src/1_15/impl/compute-option-values.ts +26 -0
  497. package/src/1_15/impl/control-message-types.ts +14 -14
  498. package/src/1_15/impl/index.ts +3 -0
  499. package/src/1_15/impl/init.ts +13 -87
  500. package/src/1_15/impl/inject-touch.ts +1 -0
  501. package/src/1_15/impl/media-stream-transformer.ts +3 -3
  502. package/src/1_15/impl/parse-video-stream-metadata.ts +4 -4
  503. package/src/1_15/impl/scroll-controller.ts +1 -0
  504. package/src/1_15/impl/set-clipboard.ts +5 -1
  505. package/src/1_15/impl/set-display-power.ts +29 -0
  506. package/src/1_15/options.ts +46 -11
  507. package/src/1_15_1.ts +1 -11
  508. package/src/1_16.ts +1 -11
  509. package/src/1_17/impl/defaults.ts +4 -5
  510. package/src/1_17/options.ts +47 -12
  511. package/src/1_18/impl/control-message-types.ts +15 -8
  512. package/src/1_18/impl/defaults.ts +6 -7
  513. package/src/1_18/impl/init.ts +7 -5
  514. package/src/1_18/options.ts +47 -12
  515. package/src/1_19.ts +1 -11
  516. package/src/1_20.ts +1 -11
  517. package/src/1_21/impl/compute-option-values.ts +43 -0
  518. package/src/1_21/impl/defaults.ts +4 -5
  519. package/src/1_21/impl/index.ts +10 -0
  520. package/src/1_21/impl/init.ts +1 -1
  521. package/src/1_21/impl/serialize.ts +3 -3
  522. package/src/1_21/impl/set-clipboard.ts +14 -0
  523. package/src/1_21/options.ts +56 -17
  524. package/src/1_22/impl/defaults.ts +6 -7
  525. package/src/1_22/impl/init.ts +3 -3
  526. package/src/1_22/impl/parse-video-stream-metadata.ts +4 -4
  527. package/src/1_22/options.ts +57 -18
  528. package/src/1_23/impl/defaults.ts +4 -5
  529. package/src/1_23/impl/init.ts +1 -1
  530. package/src/1_23/impl/media-stream-transformer.ts +3 -3
  531. package/src/1_23/options.ts +57 -18
  532. package/src/1_24/impl/defaults.ts +4 -5
  533. package/src/1_24/impl/init.ts +1 -1
  534. package/src/1_24/options.ts +57 -18
  535. package/src/1_25/impl/scroll-controller.ts +14 -15
  536. package/src/1_25/options.ts +57 -18
  537. package/src/2_0/impl/defaults.ts +3 -2
  538. package/src/2_0/impl/index.ts +5 -1
  539. package/src/2_0/impl/init.ts +12 -10
  540. package/src/2_0/impl/inject-touch.ts +16 -17
  541. package/src/2_0/impl/parse-audio-stream-metadata.ts +37 -51
  542. package/src/2_0/impl/parse-video-stream-metadata.ts +24 -21
  543. package/src/2_0/options.ts +73 -19
  544. package/src/2_1/impl/defaults.ts +5 -6
  545. package/src/2_1/impl/init.ts +3 -3
  546. package/src/2_1/options.ts +76 -22
  547. package/src/2_1_1.ts +1 -14
  548. package/src/2_2/generate-type-tests.js +106 -0
  549. package/src/2_2/impl/compute-option-values.ts +44 -0
  550. package/src/2_2/impl/defaults.ts +13 -14
  551. package/src/2_2/impl/index.ts +2 -0
  552. package/src/2_2/impl/init.ts +5 -5
  553. package/src/2_2/options.ts +76 -26
  554. package/src/2_3/impl/index.ts +4 -0
  555. package/src/2_3/impl/init.ts +2 -3
  556. package/src/2_3/impl/parse-audio-stream-metadata.ts +36 -0
  557. package/src/2_3/options.ts +76 -26
  558. package/src/2_3_1.ts +1 -14
  559. package/src/2_4/impl/control-message-types.ts +18 -9
  560. package/src/2_4/impl/serialize-uhid-create.ts +1 -0
  561. package/src/2_4/options.ts +83 -30
  562. package/src/2_5.ts +1 -14
  563. package/src/2_6/generate-type-tests.js +119 -0
  564. package/src/2_6/impl/compute-option-values.ts +48 -0
  565. package/src/2_6/impl/defaults.ts +4 -5
  566. package/src/2_6/impl/index.ts +9 -0
  567. package/src/2_6/impl/init.ts +3 -4
  568. package/src/2_6/options.ts +83 -34
  569. package/src/2_6_1.ts +1 -14
  570. package/src/2_7/impl/control-message-types.ts +19 -8
  571. package/src/2_7/impl/index.ts +1 -0
  572. package/src/2_7/impl/serialize-uhid-create.ts +1 -0
  573. package/src/2_7/options.ts +83 -34
  574. package/src/3_0/impl/control-message-types.ts +21 -8
  575. package/src/3_0/impl/defaults.ts +4 -3
  576. package/src/3_0/impl/index.ts +5 -0
  577. package/src/3_0/impl/init.ts +4 -5
  578. package/src/3_0/impl/set-display-power.ts +23 -0
  579. package/src/3_0/options.ts +83 -34
  580. package/src/3_0_1.ts +1 -14
  581. package/src/3_0_2.ts +1 -14
  582. package/src/3_1/impl/defaults.ts +4 -5
  583. package/src/3_1/impl/index.ts +1 -0
  584. package/src/3_1/impl/init.ts +2 -2
  585. package/src/3_1/impl/serialize-uhid-create.ts +1 -0
  586. package/src/3_1/options.ts +83 -34
  587. package/src/3_2/impl/defaults.ts +4 -5
  588. package/src/3_2/impl/index.ts +1 -0
  589. package/src/3_2/impl/init.ts +2 -3
  590. package/src/3_2/options.ts +83 -34
  591. package/src/3_3.ts +1 -14
  592. package/src/3_3_1/options.ts +83 -34
  593. package/src/3_3_2.ts +1 -14
  594. package/src/3_3_4.ts +1 -0
  595. package/src/4_0/impl/compute-option-values.ts +31 -0
  596. package/src/4_0/impl/control-message-types.ts +27 -0
  597. package/src/4_0/impl/defaults.ts +20 -0
  598. package/src/4_0/impl/index.ts +9 -0
  599. package/src/4_0/impl/init.ts +14 -0
  600. package/src/4_0/impl/media-stream-transformer.ts +58 -0
  601. package/src/4_0/impl/parse-video-stream-metadata.ts +34 -0
  602. package/src/4_0/impl/prev.ts +1 -0
  603. package/src/4_0/index.ts +226 -0
  604. package/src/4_1/impl/control-message-types.ts +28 -0
  605. package/src/4_1/impl/defaults.ts +8 -0
  606. package/src/4_1/impl/index.ts +6 -0
  607. package/src/4_1/impl/init.ts +7 -0
  608. package/src/4_1/impl/parse-video-stream-metadata.ts +23 -0
  609. package/src/4_1/impl/prev.ts +1 -0
  610. package/src/4_1/index.ts +226 -0
  611. package/src/android/key-code-value.ts +194 -0
  612. package/src/android/key-event.ts +5 -182
  613. package/src/base/control-message-type-value.ts +23 -0
  614. package/src/base/control-message-type.ts +6 -22
  615. package/src/base/media.ts +12 -3
  616. package/src/base/options.ts +20 -6
  617. package/src/base/video.ts +2 -19
  618. package/src/control/boolean.ts +9 -0
  619. package/src/control/index.ts +2 -2
  620. package/src/control/inject-key-code.ts +11 -12
  621. package/src/control/inject-text.ts +5 -1
  622. package/src/control/resize-display.ts +16 -0
  623. package/src/control/serializer.ts +70 -44
  624. package/src/control/start-app.ts +1 -0
  625. package/src/control/uhid.ts +14 -12
  626. package/src/control/writer.ts +24 -6
  627. package/src/index.ts +4 -1
  628. package/src/latest.ts +4 -2
  629. package/src/utils/omit.ts +1 -1
  630. package/src/video/android.ts +72 -0
  631. package/src/video/codec-id.ts +6 -0
  632. package/src/video/index.ts +21 -0
  633. package/src/video/size.ts +46 -0
  634. package/tsconfig.build.json +0 -8
  635. package/CHANGELOG.md +0 -224
  636. package/esm/codec/av1.d.ts +0 -462
  637. package/esm/codec/av1.d.ts.map +0 -1
  638. package/esm/codec/av1.js +0 -622
  639. package/esm/codec/av1.js.map +0 -1
  640. package/esm/codec/h264.d.ts +0 -78
  641. package/esm/codec/h264.d.ts.map +0 -1
  642. package/esm/codec/h264.js +0 -254
  643. package/esm/codec/h264.js.map +0 -1
  644. package/esm/codec/h265.d.ts +0 -535
  645. package/esm/codec/h265.d.ts.map +0 -1
  646. package/esm/codec/h265.js +0 -1117
  647. package/esm/codec/h265.js.map +0 -1
  648. package/esm/codec/index.d.ts +0 -5
  649. package/esm/codec/index.d.ts.map +0 -1
  650. package/esm/codec/index.js +0 -5
  651. package/esm/codec/index.js.map +0 -1
  652. package/esm/codec/nalu.d.ts +0 -28
  653. package/esm/codec/nalu.d.ts.map +0 -1
  654. package/esm/codec/nalu.js +0 -250
  655. package/esm/codec/nalu.js.map +0 -1
  656. package/esm/control/message-type-map.d.ts +0 -15
  657. package/esm/control/message-type-map.d.ts.map +0 -1
  658. package/esm/control/message-type-map.js +0 -23
  659. package/esm/control/message-type-map.js.map +0 -1
  660. package/esm/control/set-screen-power-mode.d.ts +0 -11
  661. package/esm/control/set-screen-power-mode.d.ts.map +0 -1
  662. package/esm/control/set-screen-power-mode.js +0 -3
  663. package/esm/control/set-screen-power-mode.js.map +0 -1
  664. package/src/codec/av1.ts +0 -724
  665. package/src/codec/h264.ts +0 -317
  666. package/src/codec/h265.ts +0 -1410
  667. package/src/codec/index.ts +0 -4
  668. package/src/codec/nalu.ts +0 -304
  669. package/src/control/message-type-map.ts +0 -30
  670. package/src/control/set-screen-power-mode.ts +0 -13
  671. package/tsconfig.build.tsbuildinfo +0 -1
package/src/codec/h265.ts DELETED
@@ -1,1410 +0,0 @@
1
- // cspell: ignore golomb
2
- // cspell: ignore qpprime
3
- // cspell: ignore colour
4
- // cspell: ignore inbld
5
- // cspell: ignore Coef
6
- // cspell: ignore coeffs
7
- // cspell: ignore Pocs
8
- // cspell: ignore overscan
9
- // cspell: ignore disp
10
- // cspell: ignore bitstream
11
- // cspell: ignore scal
12
- // cspell: ignore ivmc
13
- // cspell: ignore dbbp
14
- // cspell: ignore texmc
15
- // cspell: ignore rbsp
16
- // cspell: ignore cprms
17
- // cspell: ignore nalu
18
- // cspell: ignore sodb
19
- // cspell: ignore luma
20
-
21
- import { NaluSodbBitReader, annexBSplitNalu } from "./nalu.js";
22
-
23
- export const AndroidHevcProfile = {
24
- Main: 1 << 0,
25
- Main10: 1 << 1,
26
- MainStill: 1 << 2,
27
- Main10Hdr10: 1 << 12,
28
- Main10Hdr10Plus: 1 << 13,
29
- };
30
-
31
- export const AndroidHevcLevel = {
32
- MainTierLevel1: 1 << 0,
33
- HighTierLevel1: 1 << 1,
34
- MainTierLevel2: 1 << 2,
35
- HighTierLevel2: 1 << 3,
36
- MainTierLevel21: 1 << 4,
37
- HighTierLevel21: 1 << 5,
38
- MainTierLevel3: 1 << 6,
39
- HighTierLevel3: 1 << 7,
40
- MainTierLevel31: 1 << 8,
41
- HighTierLevel31: 1 << 9,
42
- MainTierLevel4: 1 << 10,
43
- HighTierLevel4: 1 << 11,
44
- MainTierLevel41: 1 << 12,
45
- HighTierLevel41: 1 << 13,
46
- MainTierLevel5: 1 << 14,
47
- HighTierLevel5: 1 << 15,
48
- MainTierLevel51: 1 << 16,
49
- HighTierLevel51: 1 << 17,
50
- MainTierLevel52: 1 << 18,
51
- HighTierLevel52: 1 << 19,
52
- MainTierLevel6: 1 << 20,
53
- HighTierLevel6: 1 << 21,
54
- MainTierLevel61: 1 << 22,
55
- HighTierLevel61: 1 << 23,
56
- MainTierLevel62: 1 << 24,
57
- HighTierLevel62: 1 << 25,
58
- };
59
-
60
- /**
61
- * 6.2 Source, decoded and output picture formats
62
- */
63
- export function getSubWidthC(chroma_format_idc: number) {
64
- switch (chroma_format_idc) {
65
- case 0:
66
- case 3:
67
- return 1;
68
- case 1:
69
- case 2:
70
- return 2;
71
- default:
72
- throw new Error("Invalid chroma_format_idc");
73
- }
74
- }
75
-
76
- /**
77
- * 6.2 Source, decoded and output picture formats
78
- */
79
- export function getSubHeightC(chroma_format_idc: number) {
80
- switch (chroma_format_idc) {
81
- case 0:
82
- case 2:
83
- case 3:
84
- return 1;
85
- case 1:
86
- return 2;
87
- default:
88
- throw new Error("Invalid chroma_format_idc");
89
- }
90
- }
91
-
92
- /**
93
- * 7.3.1.1 General NAL unit syntax
94
- */
95
- export function h265ParseNaluHeader(nalu: Uint8Array) {
96
- const reader = new NaluSodbBitReader(nalu);
97
- if (reader.next() !== 0) {
98
- throw new Error("Invalid NALU header");
99
- }
100
-
101
- const nal_unit_type = reader.read(6);
102
- const nuh_layer_id = reader.read(6);
103
- const nuh_temporal_id_plus1 = reader.read(3);
104
-
105
- return {
106
- nal_unit_type,
107
- nuh_layer_id,
108
- nuh_temporal_id_plus1,
109
- };
110
- }
111
-
112
- export type H265NaluHeader = ReturnType<typeof h265ParseNaluHeader>;
113
-
114
- export interface H265NaluRaw extends H265NaluHeader {
115
- data: Uint8Array;
116
- rbsp: Uint8Array;
117
- }
118
-
119
- /**
120
- * 7.3.2.1 Video parameter set RBSP syntax
121
- */
122
- export function h265ParseVideoParameterSet(nalu: Uint8Array) {
123
- const reader = new NaluSodbBitReader(nalu);
124
-
125
- const vps_video_parameter_set_id = reader.read(4);
126
- const vps_base_layer_internal_flag = !!reader.next();
127
- const vps_base_layer_available_flag = !!reader.next();
128
- const vps_max_layers_minus1 = reader.read(6);
129
- const vps_max_sub_layers_minus1 = reader.read(3);
130
- const vps_temporal_id_nesting_flag = !!reader.next();
131
- reader.skip(16);
132
-
133
- const profileTierLevel = h265ParseProfileTierLevel(
134
- reader,
135
- true,
136
- vps_max_sub_layers_minus1,
137
- );
138
-
139
- const vps_sub_layer_ordering_info_present_flag = !!reader.next();
140
- const vps_max_dec_pic_buffering_minus1: number[] = [];
141
- const vps_max_num_reorder_pics: number[] = [];
142
- const vps_max_latency_increase_plus1: number[] = [];
143
- for (
144
- let i = vps_sub_layer_ordering_info_present_flag
145
- ? 0
146
- : vps_max_sub_layers_minus1;
147
- i <= vps_max_sub_layers_minus1;
148
- i += 1
149
- ) {
150
- vps_max_dec_pic_buffering_minus1[i] =
151
- reader.decodeExponentialGolombNumber();
152
- vps_max_num_reorder_pics[i] = reader.decodeExponentialGolombNumber();
153
- vps_max_latency_increase_plus1[i] =
154
- reader.decodeExponentialGolombNumber();
155
- }
156
-
157
- const vps_max_layer_id = reader.read(6);
158
- const vps_num_layer_sets_minus1 = reader.decodeExponentialGolombNumber();
159
- const layer_id_included_flag: boolean[][] = [];
160
- for (let i = 1; i <= vps_num_layer_sets_minus1; i += 1) {
161
- layer_id_included_flag[i] = [];
162
- for (let j = 0; j <= vps_max_layer_id; j += 1) {
163
- layer_id_included_flag[i]![j] = !!reader.next();
164
- }
165
- }
166
-
167
- const vps_timing_info_present_flag = !!reader.next();
168
- let vps_num_units_in_tick: number | undefined;
169
- let vps_time_scale: number | undefined;
170
- let vps_poc_proportional_to_timing_flag: boolean | undefined;
171
- let vps_num_ticks_poc_diff_one_minus1: number | undefined;
172
- let vps_num_hrd_parameters: number | undefined;
173
- let hrd_layer_set_idx: number[] | undefined;
174
- let cprms_present_flag: boolean[] | undefined;
175
- let hrdParameters: H265HrdParameters[] | undefined;
176
- if (vps_timing_info_present_flag) {
177
- vps_num_units_in_tick = reader.read(32);
178
- vps_time_scale = reader.read(32);
179
-
180
- vps_poc_proportional_to_timing_flag = !!reader.next();
181
- if (vps_poc_proportional_to_timing_flag) {
182
- vps_num_ticks_poc_diff_one_minus1 =
183
- reader.decodeExponentialGolombNumber();
184
- }
185
-
186
- vps_num_hrd_parameters = reader.decodeExponentialGolombNumber();
187
-
188
- hrd_layer_set_idx = [];
189
- cprms_present_flag = [true];
190
- hrdParameters = [];
191
- for (let i = 0; i < vps_num_hrd_parameters; i += 1) {
192
- hrd_layer_set_idx[i] = reader.decodeExponentialGolombNumber();
193
- if (i > 0) {
194
- cprms_present_flag[i] = !!reader.next();
195
- }
196
- hrdParameters[i] = h265ParseHrdParameters(
197
- reader,
198
- cprms_present_flag[i]!,
199
- vps_max_sub_layers_minus1,
200
- );
201
- }
202
- }
203
-
204
- const vps_extension_flag = !!reader.next();
205
-
206
- return {
207
- vps_video_parameter_set_id,
208
- vps_base_layer_internal_flag,
209
- vps_base_layer_available_flag,
210
- vps_max_layers_minus1,
211
- vps_max_sub_layers_minus1,
212
- vps_temporal_id_nesting_flag,
213
- profileTierLevel,
214
- vps_sub_layer_ordering_info_present_flag,
215
- vps_max_dec_pic_buffering_minus1,
216
- vps_max_num_reorder_pics,
217
- vps_max_latency_increase_plus1,
218
- vps_max_layer_id,
219
- vps_num_layer_sets_minus1,
220
- layer_id_included_flag,
221
- vps_timing_info_present_flag,
222
- vps_num_units_in_tick,
223
- vps_time_scale,
224
- vps_poc_proportional_to_timing_flag,
225
- vps_num_ticks_poc_diff_one_minus1,
226
- vps_num_hrd_parameters,
227
- hrd_layer_set_idx,
228
- cprms_present_flag,
229
- hrdParameters,
230
- vps_extension_flag,
231
- };
232
- }
233
-
234
- export type SubLayerHrdParameters = ReturnType<
235
- typeof h265ParseSubLayerHrdParameters
236
- >;
237
-
238
- /**
239
- * 7.3.2.2.1 General sequence parameter set RBSP syntax
240
- */
241
- export function h265ParseSequenceParameterSet(nalu: Uint8Array) {
242
- const reader = new NaluSodbBitReader(nalu);
243
-
244
- const sps_video_parameter_set_id = reader.read(4);
245
- const sps_max_sub_layers_minus1 = reader.read(3);
246
- const sps_temporal_id_nesting_flag = !!reader.next();
247
-
248
- const profileTierLevel = h265ParseProfileTierLevel(
249
- reader,
250
- true,
251
- sps_max_sub_layers_minus1,
252
- );
253
-
254
- const sps_seq_parameter_set_id = reader.decodeExponentialGolombNumber();
255
- const chroma_format_idc = reader.decodeExponentialGolombNumber();
256
- let separate_colour_plane_flag: boolean | undefined;
257
- if (chroma_format_idc === 3) {
258
- separate_colour_plane_flag = !!reader.next();
259
- }
260
-
261
- const pic_width_in_luma_samples = reader.decodeExponentialGolombNumber();
262
- const pic_height_in_luma_samples = reader.decodeExponentialGolombNumber();
263
-
264
- const conformance_window_flag = !!reader.next();
265
- let conf_win_left_offset: number | undefined;
266
- let conf_win_right_offset: number | undefined;
267
- let conf_win_top_offset: number | undefined;
268
- let conf_win_bottom_offset: number | undefined;
269
- if (conformance_window_flag) {
270
- conf_win_left_offset = reader.decodeExponentialGolombNumber();
271
- conf_win_right_offset = reader.decodeExponentialGolombNumber();
272
- conf_win_top_offset = reader.decodeExponentialGolombNumber();
273
- conf_win_bottom_offset = reader.decodeExponentialGolombNumber();
274
- }
275
-
276
- const bit_depth_luma_minus8 = reader.decodeExponentialGolombNumber();
277
- const bit_depth_chroma_minus8 = reader.decodeExponentialGolombNumber();
278
- const log2_max_pic_order_cnt_lsb_minus4 =
279
- reader.decodeExponentialGolombNumber();
280
-
281
- const sps_max_dec_pic_buffering_minus1: number[] = [];
282
- const sps_max_num_reorder_pics: number[] = [];
283
- const sps_max_latency_increase_plus1: number[] = [];
284
- const sps_sub_layer_ordering_info_present_flag = !!reader.next();
285
- for (
286
- let i = sps_sub_layer_ordering_info_present_flag
287
- ? 0
288
- : sps_max_sub_layers_minus1;
289
- i <= sps_max_sub_layers_minus1;
290
- i += 1
291
- ) {
292
- sps_max_dec_pic_buffering_minus1[i] =
293
- reader.decodeExponentialGolombNumber();
294
- sps_max_num_reorder_pics[i] = reader.decodeExponentialGolombNumber();
295
- sps_max_latency_increase_plus1[i] =
296
- reader.decodeExponentialGolombNumber();
297
- }
298
-
299
- const log2_min_luma_coding_block_size_minus3 =
300
- reader.decodeExponentialGolombNumber();
301
- const log2_diff_max_min_luma_coding_block_size =
302
- reader.decodeExponentialGolombNumber();
303
- const log2_min_luma_transform_block_size_minus2 =
304
- reader.decodeExponentialGolombNumber();
305
- const log2_diff_max_min_luma_transform_block_size =
306
- reader.decodeExponentialGolombNumber();
307
- const max_transform_hierarchy_depth_inter =
308
- reader.decodeExponentialGolombNumber();
309
- const max_transform_hierarchy_depth_intra =
310
- reader.decodeExponentialGolombNumber();
311
-
312
- const scaling_list_enabled_flag = !!reader.next();
313
- let sps_scaling_list_data_present_flag: boolean | undefined;
314
- let scalingListData: number[][][] | undefined;
315
- if (scaling_list_enabled_flag) {
316
- sps_scaling_list_data_present_flag = !!reader.next();
317
- if (sps_scaling_list_data_present_flag) {
318
- scalingListData = h265ParseScalingListData(reader);
319
- }
320
- }
321
-
322
- const amp_enabled_flag = !!reader.next();
323
- const sample_adaptive_offset_enabled_flag = !!reader.next();
324
- const pcm_enabled_flag = !!reader.next();
325
- let pcm_sample_bit_depth_luma_minus1: number | undefined;
326
- let pcm_sample_bit_depth_chroma_minus1: number | undefined;
327
- let log2_min_pcm_luma_coding_block_size_minus3: number | undefined;
328
- let log2_diff_max_min_pcm_luma_coding_block_size: number | undefined;
329
- let pcm_loop_filter_disabled_flag: boolean | undefined;
330
- if (pcm_enabled_flag) {
331
- pcm_sample_bit_depth_luma_minus1 = reader.read(4);
332
- pcm_sample_bit_depth_chroma_minus1 = reader.read(4);
333
- log2_min_pcm_luma_coding_block_size_minus3 =
334
- reader.decodeExponentialGolombNumber();
335
- log2_diff_max_min_pcm_luma_coding_block_size =
336
- reader.decodeExponentialGolombNumber();
337
- pcm_loop_filter_disabled_flag = !!reader.next();
338
- }
339
-
340
- const num_short_term_ref_pic_sets = reader.decodeExponentialGolombNumber();
341
- const shortTermRefPicSets: ShortTermReferencePictureSet[] = [];
342
- for (let i = 0; i < num_short_term_ref_pic_sets; i += 1) {
343
- shortTermRefPicSets[i] = h265ParseShortTermReferencePictureSet(
344
- reader,
345
- i,
346
- num_short_term_ref_pic_sets,
347
- shortTermRefPicSets,
348
- );
349
- }
350
-
351
- const long_term_ref_pics_present_flag = !!reader.next();
352
- let num_long_term_ref_pics_sps: number | undefined;
353
- let lt_ref_pic_poc_lsb_sps: number[] | undefined;
354
- let used_by_curr_pic_lt_sps_flag: boolean[] | undefined;
355
- if (long_term_ref_pics_present_flag) {
356
- num_long_term_ref_pics_sps = reader.decodeExponentialGolombNumber();
357
- lt_ref_pic_poc_lsb_sps = [];
358
- used_by_curr_pic_lt_sps_flag = [];
359
- for (let i = 0; i < num_long_term_ref_pics_sps; i += 1) {
360
- lt_ref_pic_poc_lsb_sps[i] = reader.read(
361
- log2_max_pic_order_cnt_lsb_minus4 + 4,
362
- );
363
- used_by_curr_pic_lt_sps_flag[i] = !!reader.next();
364
- }
365
- }
366
-
367
- const sps_temporal_mvp_enabled_flag = !!reader.next();
368
- const strong_intra_smoothing_enabled_flag = !!reader.next();
369
- const vui_parameters_present_flag = !!reader.next();
370
- let vuiParameters: H265VuiParameters | undefined;
371
- if (vui_parameters_present_flag) {
372
- vuiParameters = h265ParseVuiParameters(
373
- reader,
374
- sps_max_sub_layers_minus1,
375
- );
376
- }
377
-
378
- const sps_extension_present_flag = !!reader.next();
379
- let sps_range_extension_flag: boolean | undefined;
380
- let sps_multilayer_extension_flag: boolean | undefined;
381
- let sps_3d_extension_flag: boolean | undefined;
382
- let sps_scc_extension_flag: boolean | undefined;
383
- let sps_extension_4bits: number | undefined;
384
- if (sps_extension_present_flag) {
385
- sps_range_extension_flag = !!reader.next();
386
- sps_multilayer_extension_flag = !!reader.next();
387
- sps_3d_extension_flag = !!reader.next();
388
- sps_scc_extension_flag = !!reader.next();
389
- sps_extension_4bits = reader.read(4);
390
- }
391
-
392
- if (sps_range_extension_flag) {
393
- throw new Error("Not implemented");
394
- }
395
-
396
- let spsMultilayerExtension: H265SpsMultilayerExtension | undefined;
397
- if (sps_multilayer_extension_flag) {
398
- spsMultilayerExtension = h265ParseSpsMultilayerExtension(reader);
399
- }
400
-
401
- let sps3dExtension: H265Sps3dExtension | undefined;
402
- if (sps_3d_extension_flag) {
403
- sps3dExtension = h265ParseSps3dExtension(reader);
404
- }
405
-
406
- if (sps_scc_extension_flag) {
407
- throw new Error("Not implemented");
408
- }
409
-
410
- let sps_extension_data_flag: boolean[] | undefined;
411
- if (sps_extension_4bits) {
412
- sps_extension_data_flag = [];
413
- let i = 0;
414
- while (!reader.ended) {
415
- sps_extension_data_flag[i] = !!reader.next();
416
- i += 1;
417
- }
418
- }
419
-
420
- return {
421
- sps_video_parameter_set_id,
422
- sps_max_sub_layers_minus1,
423
- sps_temporal_id_nesting_flag,
424
- profileTierLevel,
425
- sps_seq_parameter_set_id,
426
- chroma_format_idc,
427
- separate_colour_plane_flag,
428
- pic_width_in_luma_samples,
429
- pic_height_in_luma_samples,
430
- conformance_window_flag,
431
- conf_win_left_offset,
432
- conf_win_right_offset,
433
- conf_win_top_offset,
434
- conf_win_bottom_offset,
435
- bit_depth_luma_minus8,
436
- bit_depth_chroma_minus8,
437
- log2_max_pic_order_cnt_lsb_minus4,
438
- sps_sub_layer_ordering_info_present_flag,
439
- sps_max_dec_pic_buffering_minus1,
440
- sps_max_num_reorder_pics,
441
- sps_max_latency_increase_plus1,
442
- log2_min_luma_coding_block_size_minus3,
443
- log2_diff_max_min_luma_coding_block_size,
444
- log2_min_luma_transform_block_size_minus2,
445
- log2_diff_max_min_luma_transform_block_size,
446
- max_transform_hierarchy_depth_inter,
447
- max_transform_hierarchy_depth_intra,
448
- scaling_list_enabled_flag,
449
- sps_scaling_list_data_present_flag,
450
- scalingListData,
451
- amp_enabled_flag,
452
- sample_adaptive_offset_enabled_flag,
453
- pcm_enabled_flag,
454
- pcm_sample_bit_depth_luma_minus1,
455
- pcm_sample_bit_depth_chroma_minus1,
456
- log2_min_pcm_luma_coding_block_size_minus3,
457
- log2_diff_max_min_pcm_luma_coding_block_size,
458
- pcm_loop_filter_disabled_flag,
459
- num_short_term_ref_pic_sets,
460
- shortTermRefPicSets,
461
- long_term_ref_pics_present_flag,
462
- num_long_term_ref_pics_sps,
463
- lt_ref_pic_poc_lsb_sps,
464
- used_by_curr_pic_lt_sps_flag,
465
- sps_temporal_mvp_enabled_flag,
466
- strong_intra_smoothing_enabled_flag,
467
- vui_parameters_present_flag,
468
- vuiParameters,
469
- sps_extension_present_flag,
470
- sps_range_extension_flag,
471
- sps_multilayer_extension_flag,
472
- sps_3d_extension_flag,
473
- sps_scc_extension_flag,
474
- sps_extension_4bits,
475
- spsMultilayerExtension,
476
- sps3dExtension,
477
- sps_extension_data_flag,
478
- };
479
- }
480
-
481
- /**
482
- * 7.3.3 Profile, tier and level syntax
483
- *
484
- * Common part between general_profile_tier_level and
485
- * sub_layer_profile_tier_level
486
- */
487
- function h265ParseProfileTier(reader: NaluSodbBitReader) {
488
- const profile_space = reader.read(2);
489
- const tier_flag = !!reader.next();
490
- const profile_idc = reader.read(5);
491
-
492
- const profileCompatibilitySet = reader.peekBytes(4);
493
- const profile_compatibility_flag: boolean[] = [];
494
- for (let j = 0; j < 32; j += 1) {
495
- profile_compatibility_flag[j] = !!reader.next();
496
- }
497
-
498
- const constraintSet = reader.peekBytes(6);
499
-
500
- const progressive_source_flag = !!reader.next();
501
- const interlaced_source_flag = !!reader.next();
502
- const non_packed_constraint_flag = !!reader.next();
503
- const frame_only_constraint_flag = !!reader.next();
504
-
505
- let max_12bit_constraint_flag: boolean | undefined;
506
- let max_10bit_constraint_flag: boolean | undefined;
507
- let max_8bit_constraint_flag: boolean | undefined;
508
- let max_422chroma_constraint_flag: boolean | undefined;
509
- let max_420chroma_constraint_flag: boolean | undefined;
510
- let max_monochrome_constraint_flag: boolean | undefined;
511
- let intra_constraint_flag: boolean | undefined;
512
- let one_picture_only_constraint_flag: boolean | undefined;
513
- let lower_bit_rate_constraint_flag: boolean | undefined;
514
- let max_14bit_constraint_flag: boolean | undefined;
515
- if (
516
- profile_idc === 4 ||
517
- profile_compatibility_flag[4] ||
518
- profile_idc === 5 ||
519
- profile_compatibility_flag[5] ||
520
- profile_idc === 6 ||
521
- profile_compatibility_flag[6] ||
522
- profile_idc === 7 ||
523
- profile_compatibility_flag[7] ||
524
- profile_idc === 8 ||
525
- profile_compatibility_flag[8] ||
526
- profile_idc === 9 ||
527
- profile_compatibility_flag[9] ||
528
- profile_idc === 10 ||
529
- profile_compatibility_flag[10] ||
530
- profile_idc === 11 ||
531
- profile_compatibility_flag[11]
532
- ) {
533
- max_12bit_constraint_flag = !!reader.next();
534
- max_10bit_constraint_flag = !!reader.next();
535
- max_8bit_constraint_flag = !!reader.next();
536
- max_422chroma_constraint_flag = !!reader.next();
537
- max_420chroma_constraint_flag = !!reader.next();
538
- max_monochrome_constraint_flag = !!reader.next();
539
- intra_constraint_flag = !!reader.next();
540
- one_picture_only_constraint_flag = !!reader.next();
541
- lower_bit_rate_constraint_flag = !!reader.next();
542
- if (
543
- profile_idc === 5 ||
544
- profile_compatibility_flag[5] ||
545
- profile_idc === 9 ||
546
- profile_compatibility_flag[9] ||
547
- profile_idc === 10 ||
548
- profile_compatibility_flag[10] ||
549
- profile_idc === 11 ||
550
- profile_compatibility_flag[11]
551
- ) {
552
- max_14bit_constraint_flag = !!reader.next();
553
- reader.skip(33);
554
- } else {
555
- reader.skip(34);
556
- }
557
- } else if (profile_idc === 2 || profile_compatibility_flag[2]) {
558
- reader.skip(7);
559
- one_picture_only_constraint_flag = !!reader.next();
560
- reader.skip(35);
561
- } else {
562
- reader.skip(43);
563
- }
564
-
565
- let inbld_flag: boolean | undefined;
566
- if (
567
- profile_idc === 1 ||
568
- profile_compatibility_flag[1] ||
569
- profile_idc === 2 ||
570
- profile_compatibility_flag[2] ||
571
- profile_idc === 3 ||
572
- profile_compatibility_flag[3] ||
573
- profile_idc === 4 ||
574
- profile_compatibility_flag[4] ||
575
- profile_idc === 5 ||
576
- profile_compatibility_flag[5] ||
577
- profile_idc === 9 ||
578
- profile_compatibility_flag[9] ||
579
- profile_idc === 11 ||
580
- profile_compatibility_flag[11]
581
- ) {
582
- inbld_flag = !!reader.next();
583
- } else {
584
- reader.skip(1);
585
- }
586
-
587
- return {
588
- profile_space,
589
- tier_flag,
590
- profile_idc,
591
- profileCompatibilitySet,
592
- profile_compatibility_flag,
593
- constraintSet,
594
- progressive_source_flag,
595
- interlaced_source_flag,
596
- non_packed_constraint_flag,
597
- frame_only_constraint_flag,
598
- max_12bit_constraint_flag,
599
- max_10bit_constraint_flag,
600
- max_8bit_constraint_flag,
601
- max_422chroma_constraint_flag,
602
- max_420chroma_constraint_flag,
603
- max_monochrome_constraint_flag,
604
- intra_constraint_flag,
605
- one_picture_only_constraint_flag,
606
- lower_bit_rate_constraint_flag,
607
- max_14bit_constraint_flag,
608
- inbld_flag,
609
- };
610
- }
611
-
612
- export type H265ProfileTier = ReturnType<typeof h265ParseProfileTier>;
613
-
614
- export interface H265ProfileTierLevel {
615
- generalProfileTier: H265ProfileTier | undefined;
616
- general_level_idc: number;
617
- sub_layer_profile_present_flag: boolean[];
618
- sub_layer_level_present_flag: boolean[];
619
- subLayerProfileTier: H265ProfileTier[];
620
- sub_layer_level_idc: number[];
621
- }
622
-
623
- /**
624
- * 7.3.3 Profile, tier and level syntax
625
- */
626
- function h265ParseProfileTierLevel(
627
- reader: NaluSodbBitReader,
628
- profilePresentFlag: true,
629
- maxNumSubLayersMinus1: number,
630
- ): H265ProfileTierLevel & { generalProfileTier: H265ProfileTier };
631
- function h265ParseProfileTierLevel(
632
- reader: NaluSodbBitReader,
633
- profilePresentFlag: false,
634
- maxNumSubLayersMinus1: number,
635
- ): H265ProfileTierLevel & { generalProfileTier: undefined };
636
- function h265ParseProfileTierLevel(
637
- reader: NaluSodbBitReader,
638
- profilePresentFlag: boolean,
639
- maxNumSubLayersMinus1: number,
640
- ): H265ProfileTierLevel;
641
- function h265ParseProfileTierLevel(
642
- reader: NaluSodbBitReader,
643
- profilePresentFlag: boolean,
644
- maxNumSubLayersMinus1: number,
645
- ): H265ProfileTierLevel {
646
- let generalProfileTier: H265ProfileTier | undefined;
647
- if (profilePresentFlag) {
648
- generalProfileTier = h265ParseProfileTier(reader);
649
- }
650
-
651
- const general_level_idc = reader.read(8);
652
-
653
- const sub_layer_profile_present_flag: boolean[] = [];
654
- const sub_layer_level_present_flag: boolean[] = [];
655
- for (let i = 0; i < maxNumSubLayersMinus1; i += 1) {
656
- sub_layer_profile_present_flag[i] = !!reader.next();
657
- sub_layer_level_present_flag[i] = !!reader.next();
658
- }
659
-
660
- if (maxNumSubLayersMinus1 > 0) {
661
- for (let i = maxNumSubLayersMinus1; i < 8; i += 1) {
662
- reader.read(2);
663
- }
664
- }
665
-
666
- const subLayerProfileTier: H265ProfileTier[] = [];
667
- const sub_layer_level_idc: number[] = [];
668
- for (let i = 0; i < maxNumSubLayersMinus1; i += 1) {
669
- if (sub_layer_profile_present_flag[i]) {
670
- subLayerProfileTier[i] = h265ParseProfileTier(reader);
671
- }
672
- if (sub_layer_level_present_flag[i]) {
673
- sub_layer_level_idc[i] = reader.read(8);
674
- }
675
- }
676
-
677
- return {
678
- generalProfileTier,
679
- general_level_idc,
680
- sub_layer_profile_present_flag,
681
- sub_layer_level_present_flag,
682
- subLayerProfileTier,
683
- sub_layer_level_idc,
684
- };
685
- }
686
-
687
- /**
688
- * 7.3.4 Scaling list data syntax
689
- */
690
- export function h265ParseScalingListData(reader: NaluSodbBitReader) {
691
- const scaling_list: number[][][] = [];
692
- for (let sizeId = 0; sizeId < 4; sizeId += 1) {
693
- scaling_list[sizeId] = [];
694
- for (let matrixId = 0; matrixId < 6; matrixId += sizeId === 3 ? 3 : 1) {
695
- const scaling_list_pred_mode_flag = !!reader.next();
696
- if (!scaling_list_pred_mode_flag) {
697
- reader.decodeExponentialGolombNumber();
698
- } else {
699
- let nextCoef = 8;
700
- const coefNum = Math.min(64, 1 << (4 + (sizeId << 1)));
701
- if (sizeId > 1) {
702
- const scaling_list_dc_coef_minus8 =
703
- reader.decodeExponentialGolombNumber();
704
- nextCoef = scaling_list_dc_coef_minus8 + 8;
705
- }
706
- scaling_list[sizeId]![matrixId] = [];
707
- for (let i = 0; i < coefNum; i += 1) {
708
- const scaling_list_delta_coef =
709
- reader.decodeExponentialGolombNumber();
710
- nextCoef = (nextCoef + scaling_list_delta_coef + 256) % 256;
711
- scaling_list[sizeId]![matrixId]![i] = nextCoef;
712
- }
713
- }
714
- }
715
- }
716
- return scaling_list;
717
- }
718
-
719
- interface ShortTermReferencePictureSet {
720
- stRpsIdx: number;
721
- num_short_term_ref_pic_sets: number;
722
-
723
- inter_ref_pic_set_prediction_flag: boolean;
724
- delta_idx_minus1: number;
725
- delta_rps_sign: boolean;
726
- abs_delta_rps_minus1: number;
727
- used_by_curr_pic_flag: boolean[];
728
- use_delta_flag: boolean[];
729
- num_negative_pics: number;
730
- num_positive_pics: number;
731
- delta_poc_s0_minus1: number[];
732
- used_by_curr_pic_s0_flag: boolean[];
733
- delta_poc_s1_minus1: number[];
734
- used_by_curr_pic_s1_flag: boolean[];
735
- }
736
-
737
- /**
738
- * 7.3.7 Short-term reference picture set syntax
739
- */
740
- export function h265ParseShortTermReferencePictureSet(
741
- reader: NaluSodbBitReader,
742
- stRpsIdx: number,
743
- num_short_term_ref_pic_sets: number,
744
- sets: ShortTermReferencePictureSet[],
745
- ): ShortTermReferencePictureSet {
746
- let inter_ref_pic_set_prediction_flag = false;
747
- if (stRpsIdx !== 0) {
748
- inter_ref_pic_set_prediction_flag = !!reader.next();
749
- }
750
- let delta_idx_minus1 = 0;
751
- let delta_rps_sign = false;
752
- let abs_delta_rps_minus1 = 0;
753
- const used_by_curr_pic_flag: boolean[] = [];
754
- const use_delta_flag: boolean[] = [];
755
- let num_negative_pics = 0;
756
- let num_positive_pics = 0;
757
- const delta_poc_s0_minus1: number[] = [];
758
- const used_by_curr_pic_s0_flag: boolean[] = [];
759
- const delta_poc_s1_minus1: number[] = [];
760
- const used_by_curr_pic_s1_flag: boolean[] = [];
761
- if (inter_ref_pic_set_prediction_flag) {
762
- if (stRpsIdx === num_short_term_ref_pic_sets) {
763
- delta_idx_minus1 = reader.decodeExponentialGolombNumber();
764
- }
765
- delta_rps_sign = !!reader.next();
766
- abs_delta_rps_minus1 = reader.decodeExponentialGolombNumber();
767
- const RefRpsIdx = stRpsIdx - (delta_idx_minus1 + 1);
768
- const RefRps = sets[RefRpsIdx]!;
769
- const NumDeltaPocs_RefRpsIdx =
770
- RefRps.num_negative_pics + RefRps.num_positive_pics;
771
- for (let j = 0; j <= NumDeltaPocs_RefRpsIdx; j += 1) {
772
- used_by_curr_pic_flag[j] = !!reader.next();
773
- if (!used_by_curr_pic_flag[j]!) {
774
- use_delta_flag[j] = !!reader.next();
775
- } else {
776
- use_delta_flag[j] = true;
777
- }
778
- }
779
-
780
- const DeltaRps =
781
- (1 - 2 * Number(delta_rps_sign)) * (abs_delta_rps_minus1 + 1);
782
-
783
- const RefPocS0: number[] = [];
784
- const RefPocS1: number[] = [];
785
- const pocS0: number[] = [];
786
- const pocS1: number[] = [];
787
-
788
- let dPoc = 0;
789
- for (let i = 0; i < RefRps.num_negative_pics; i += 1) {
790
- dPoc -= RefRps.delta_poc_s0_minus1[i]! + 1;
791
- RefPocS0[i] = dPoc;
792
- }
793
- dPoc = 0;
794
- for (let i = 0; i < RefRps.num_positive_pics; i += 1) {
795
- dPoc += RefRps.delta_poc_s1_minus1[i]! + 1;
796
- RefPocS1[i] = dPoc;
797
- }
798
-
799
- let i = 0;
800
- if (RefRps.num_positive_pics > 0) {
801
- for (let j = RefRps.num_positive_pics - 1; j >= 0; j -= 1) {
802
- dPoc = RefPocS1[j]! + DeltaRps;
803
- if (dPoc < 0 && use_delta_flag[RefRps.num_negative_pics + j]) {
804
- pocS0[i] = dPoc;
805
- used_by_curr_pic_s0_flag[i] =
806
- used_by_curr_pic_flag[RefRps.num_negative_pics + j]!;
807
- i += 1;
808
- }
809
- }
810
- }
811
- if (DeltaRps < 0 && use_delta_flag[NumDeltaPocs_RefRpsIdx]) {
812
- pocS0[i] = DeltaRps;
813
- used_by_curr_pic_s0_flag[i] =
814
- used_by_curr_pic_flag[NumDeltaPocs_RefRpsIdx]!;
815
- i += 1;
816
- }
817
- for (let j = 0; j < RefRps.num_negative_pics; j += 1) {
818
- dPoc = RefPocS0[j]! + DeltaRps;
819
- if (dPoc < 0 && use_delta_flag[j]) {
820
- pocS0[i] = dPoc;
821
- used_by_curr_pic_s0_flag[i] = used_by_curr_pic_flag[j]!;
822
- i += 1;
823
- }
824
- }
825
-
826
- num_negative_pics = i;
827
- let prev = 0;
828
- for (i = 0; i < num_negative_pics; i += 1) {
829
- const current = pocS0[i]!;
830
- delta_poc_s0_minus1[i] = -(current - prev - 1);
831
- prev = current;
832
- }
833
-
834
- i = 0;
835
- if (RefRps.num_negative_pics > 0) {
836
- for (let j = RefRps.num_negative_pics - 1; j >= 0; j -= 1) {
837
- dPoc = RefPocS0[j]! + DeltaRps;
838
- if (dPoc > 0 && use_delta_flag[j]) {
839
- pocS1[i] = dPoc;
840
- used_by_curr_pic_s1_flag[i] = used_by_curr_pic_flag[j]!;
841
- i += 1;
842
- }
843
- }
844
- }
845
- if (DeltaRps > 0 && use_delta_flag[NumDeltaPocs_RefRpsIdx]) {
846
- pocS1[i] = DeltaRps;
847
- used_by_curr_pic_s1_flag[i] =
848
- used_by_curr_pic_flag[NumDeltaPocs_RefRpsIdx]!;
849
- i += 1;
850
- }
851
- for (let j = 0; j < RefRps.num_positive_pics; j += 1) {
852
- dPoc = RefPocS1[j]! + DeltaRps;
853
- if (dPoc > 0 && use_delta_flag[RefRps.num_negative_pics + j]) {
854
- pocS1[i] = dPoc;
855
- used_by_curr_pic_s1_flag[i] =
856
- used_by_curr_pic_flag[RefRps.num_negative_pics + j]!;
857
- i += 1;
858
- }
859
- }
860
-
861
- num_positive_pics = i;
862
- prev = 0;
863
- for (i = 0; i < num_positive_pics; i += 1) {
864
- const current = pocS1[i]!;
865
- delta_poc_s1_minus1[i] = current - prev - 1;
866
- prev = current;
867
- }
868
- } else {
869
- num_negative_pics = reader.decodeExponentialGolombNumber();
870
- num_positive_pics = reader.decodeExponentialGolombNumber();
871
- for (let i = 0; i < num_negative_pics; i += 1) {
872
- delta_poc_s0_minus1[i] = reader.decodeExponentialGolombNumber();
873
- used_by_curr_pic_s0_flag[i] = !!reader.next();
874
- }
875
- for (let i = 0; i < num_positive_pics; i += 1) {
876
- delta_poc_s1_minus1[i] = reader.decodeExponentialGolombNumber();
877
- used_by_curr_pic_s1_flag[i] = !!reader.next();
878
- }
879
- }
880
-
881
- return {
882
- stRpsIdx,
883
- num_short_term_ref_pic_sets,
884
- inter_ref_pic_set_prediction_flag,
885
- delta_idx_minus1,
886
- delta_rps_sign,
887
- abs_delta_rps_minus1,
888
- used_by_curr_pic_flag,
889
- use_delta_flag,
890
- num_negative_pics,
891
- num_positive_pics,
892
- delta_poc_s0_minus1,
893
- used_by_curr_pic_s0_flag,
894
- delta_poc_s1_minus1,
895
- used_by_curr_pic_s1_flag,
896
- };
897
- }
898
-
899
- export const H265AspectRatioIndicator = {
900
- Unspecified: 0,
901
- Square: 1,
902
- _12_11: 2,
903
- _10_11: 3,
904
- _16_11: 4,
905
- _40_33: 5,
906
- _24_11: 6,
907
- _20_11: 7,
908
- _32_11: 8,
909
- _80_33: 9,
910
- _18_11: 10,
911
- _15_11: 11,
912
- _64_33: 12,
913
- _160_99: 13,
914
- _4_3: 15,
915
- _3_2: 16,
916
- _2_1: 17,
917
- Extended: 255,
918
- } as const;
919
-
920
- export type H265AspectRatioIndicator =
921
- (typeof H265AspectRatioIndicator)[keyof typeof H265AspectRatioIndicator];
922
-
923
- /**
924
- * E.2.1 VUI parameters syntax
925
- */
926
- export function h265ParseVuiParameters(
927
- reader: NaluSodbBitReader,
928
- sps_max_sub_layers_minus1: number,
929
- ) {
930
- const aspect_ratio_info_present_flag = !!reader.next();
931
- let aspect_ratio_idc: H265AspectRatioIndicator | undefined;
932
- let sar_width: number | undefined;
933
- let sar_height: number | undefined;
934
- if (aspect_ratio_info_present_flag) {
935
- aspect_ratio_idc = reader.read(8) as H265AspectRatioIndicator;
936
- if (aspect_ratio_idc === H265AspectRatioIndicator.Extended) {
937
- sar_width = reader.read(16);
938
- sar_height = reader.read(16);
939
- }
940
- }
941
-
942
- const overscan_info_present_flag = !!reader.next();
943
- let overscan_appropriate_flag: boolean | undefined;
944
- if (overscan_info_present_flag) {
945
- overscan_appropriate_flag = !!reader.next();
946
- }
947
-
948
- const video_signal_type_present_flag = !!reader.next();
949
- let video_format: number | undefined;
950
- let video_full_range_flag: boolean | undefined;
951
- let colour_description_present_flag: boolean | undefined;
952
- let colour_primaries: number | undefined;
953
- let transfer_characteristics: number | undefined;
954
- let matrix_coeffs: number | undefined;
955
- if (video_signal_type_present_flag) {
956
- video_format = reader.read(3);
957
- video_full_range_flag = !!reader.next();
958
- colour_description_present_flag = !!reader.next();
959
- if (colour_description_present_flag) {
960
- colour_primaries = reader.read(8);
961
- transfer_characteristics = reader.read(8);
962
- matrix_coeffs = reader.read(8);
963
- }
964
- }
965
-
966
- const chroma_loc_info_present_flag = !!reader.next();
967
- let chroma_sample_loc_type_top_field: number | undefined;
968
- let chroma_sample_loc_type_bottom_field: number | undefined;
969
- if (chroma_loc_info_present_flag) {
970
- chroma_sample_loc_type_top_field =
971
- reader.decodeExponentialGolombNumber();
972
- chroma_sample_loc_type_bottom_field =
973
- reader.decodeExponentialGolombNumber();
974
- }
975
-
976
- const neutral_chroma_indication_flag = !!reader.next();
977
- const field_seq_flag = !!reader.next();
978
- const frame_field_info_present_flag = !!reader.next();
979
-
980
- const default_display_window_flag = !!reader.next();
981
- let def_disp_win_left_offset: number | undefined;
982
- let def_disp_win_right_offset: number | undefined;
983
- let def_disp_win_top_offset: number | undefined;
984
- let def_disp_win_bottom_offset: number | undefined;
985
- if (default_display_window_flag) {
986
- def_disp_win_left_offset = reader.decodeExponentialGolombNumber();
987
- def_disp_win_right_offset = reader.decodeExponentialGolombNumber();
988
- def_disp_win_top_offset = reader.decodeExponentialGolombNumber();
989
- def_disp_win_bottom_offset = reader.decodeExponentialGolombNumber();
990
- }
991
-
992
- const vui_timing_info_present_flag = !!reader.next();
993
- let vui_num_units_in_tick: number | undefined;
994
- let vui_time_scale: number | undefined;
995
- let vui_poc_proportional_to_timing_flag: boolean | undefined;
996
- let vui_num_ticks_poc_diff_one_minus1: number | undefined;
997
- let vui_hrd_parameters_present_flag: boolean | undefined;
998
- let vui_hrd_parameters: H265HrdParameters | undefined;
999
- if (vui_timing_info_present_flag) {
1000
- vui_num_units_in_tick = reader.read(32);
1001
- vui_time_scale = reader.read(32);
1002
- vui_poc_proportional_to_timing_flag = !!reader.next();
1003
- if (vui_poc_proportional_to_timing_flag) {
1004
- vui_num_ticks_poc_diff_one_minus1 =
1005
- reader.decodeExponentialGolombNumber();
1006
- }
1007
- vui_hrd_parameters_present_flag = !!reader.next();
1008
- if (vui_hrd_parameters_present_flag) {
1009
- vui_hrd_parameters = h265ParseHrdParameters(
1010
- reader,
1011
- true,
1012
- sps_max_sub_layers_minus1,
1013
- );
1014
- }
1015
- }
1016
-
1017
- const bitstream_restriction_flag = !!reader.next();
1018
- let tiles_fixed_structure_flag: boolean | undefined;
1019
- let motion_vectors_over_pic_boundaries_flag: boolean | undefined;
1020
- let restricted_ref_pic_lists_flag: boolean | undefined;
1021
- let min_spatial_segmentation_idc: number | undefined;
1022
- let max_bytes_per_pic_denom: number | undefined;
1023
- let max_bits_per_min_cu_denom: number | undefined;
1024
- let log2_max_mv_length_horizontal: number | undefined;
1025
- let log2_max_mv_length_vertical: number | undefined;
1026
- if (bitstream_restriction_flag) {
1027
- tiles_fixed_structure_flag = !!reader.next();
1028
- motion_vectors_over_pic_boundaries_flag = !!reader.next();
1029
- restricted_ref_pic_lists_flag = !!reader.next();
1030
- min_spatial_segmentation_idc = reader.decodeExponentialGolombNumber();
1031
- max_bytes_per_pic_denom = reader.decodeExponentialGolombNumber();
1032
- max_bits_per_min_cu_denom = reader.decodeExponentialGolombNumber();
1033
- log2_max_mv_length_horizontal = reader.decodeExponentialGolombNumber();
1034
- log2_max_mv_length_vertical = reader.decodeExponentialGolombNumber();
1035
- }
1036
-
1037
- return {
1038
- aspect_ratio_info_present_flag,
1039
- aspect_ratio_idc,
1040
- sar_width,
1041
- sar_height,
1042
-
1043
- overscan_info_present_flag,
1044
- overscan_appropriate_flag,
1045
-
1046
- video_signal_type_present_flag,
1047
- video_format,
1048
- video_full_range_flag,
1049
- colour_description_present_flag,
1050
- colour_primaries,
1051
- transfer_characteristics,
1052
- matrix_coeffs,
1053
-
1054
- chroma_loc_info_present_flag,
1055
- chroma_sample_loc_type_top_field,
1056
- chroma_sample_loc_type_bottom_field,
1057
-
1058
- neutral_chroma_indication_flag,
1059
- field_seq_flag,
1060
- frame_field_info_present_flag,
1061
-
1062
- default_display_window_flag,
1063
- def_disp_win_left_offset,
1064
- def_disp_win_right_offset,
1065
- def_disp_win_top_offset,
1066
- def_disp_win_bottom_offset,
1067
-
1068
- vui_timing_info_present_flag,
1069
- vui_num_units_in_tick,
1070
- vui_time_scale,
1071
- vui_poc_proportional_to_timing_flag,
1072
- vui_num_ticks_poc_diff_one_minus1,
1073
- vui_hrd_parameters_present_flag,
1074
- vui_hrd_parameters,
1075
-
1076
- bitstream_restriction_flag,
1077
- tiles_fixed_structure_flag,
1078
- motion_vectors_over_pic_boundaries_flag,
1079
- restricted_ref_pic_lists_flag,
1080
- min_spatial_segmentation_idc,
1081
- max_bytes_per_pic_denom,
1082
- max_bits_per_min_cu_denom,
1083
- log2_max_mv_length_horizontal,
1084
- log2_max_mv_length_vertical,
1085
- };
1086
- }
1087
-
1088
- export type H265VuiParameters = ReturnType<typeof h265ParseVuiParameters>;
1089
-
1090
- /**
1091
- * E.2.2 HRD parameters syntax
1092
- */
1093
- export function h265ParseHrdParameters(
1094
- reader: NaluSodbBitReader,
1095
- commonInfPresentFlag: boolean,
1096
- maxNumSubLayersMinus1: number,
1097
- ) {
1098
- let nal_hrd_parameters_present_flag: boolean | undefined;
1099
- let vcl_hrd_parameters_present_flag: boolean | undefined;
1100
- let sub_pic_hrd_params_present_flag: boolean | undefined;
1101
- let tick_divisor_minus2: number | undefined;
1102
- let du_cpb_removal_delay_increment_length_minus1: number | undefined;
1103
- let sub_pic_cpb_params_in_pic_timing_sei_flag: boolean | undefined;
1104
- let dpb_output_delay_du_length_minus1: number | undefined;
1105
- let bit_rate_scale: number | undefined;
1106
- let cpb_size_scale: number | undefined;
1107
- let cpb_size_du_scale: number | undefined;
1108
- let initial_cpb_removal_delay_length_minus1: number | undefined;
1109
- let au_cpb_removal_delay_length_minus1: number | undefined;
1110
- let dpb_output_delay_length_minus1: number | undefined;
1111
- if (commonInfPresentFlag) {
1112
- nal_hrd_parameters_present_flag = !!reader.next();
1113
- vcl_hrd_parameters_present_flag = !!reader.next();
1114
- if (
1115
- nal_hrd_parameters_present_flag ||
1116
- vcl_hrd_parameters_present_flag
1117
- ) {
1118
- sub_pic_hrd_params_present_flag = !!reader.next();
1119
- if (sub_pic_hrd_params_present_flag) {
1120
- tick_divisor_minus2 = reader.read(8);
1121
- du_cpb_removal_delay_increment_length_minus1 = reader.read(5);
1122
- sub_pic_cpb_params_in_pic_timing_sei_flag = !!reader.next();
1123
- dpb_output_delay_du_length_minus1 = reader.read(5);
1124
- }
1125
- bit_rate_scale = reader.read(4);
1126
- cpb_size_scale = reader.read(4);
1127
- if (sub_pic_hrd_params_present_flag) {
1128
- cpb_size_du_scale = reader.read(4);
1129
- }
1130
- initial_cpb_removal_delay_length_minus1 = reader.read(5);
1131
- au_cpb_removal_delay_length_minus1 = reader.read(5);
1132
- dpb_output_delay_length_minus1 = reader.read(5);
1133
- }
1134
- }
1135
-
1136
- const fixed_pic_rate_general_flag: boolean[] = [];
1137
- const fixed_pic_rate_within_cvs_flag: boolean[] = [];
1138
- const elemental_duration_in_tc_minus1: number[] = [];
1139
- const low_delay_hrd_flag: boolean[] = [];
1140
- const cpb_cnt_minus1: number[] = [];
1141
- const nalHrdParameters: SubLayerHrdParameters[] = [];
1142
- const vclHrdParameters: SubLayerHrdParameters[] = [];
1143
- for (let i = 0; i <= maxNumSubLayersMinus1; i += 1) {
1144
- fixed_pic_rate_general_flag[i] = !!reader.next();
1145
- if (!fixed_pic_rate_general_flag[i]) {
1146
- fixed_pic_rate_within_cvs_flag[i] = !!reader.next();
1147
- }
1148
- if (fixed_pic_rate_within_cvs_flag[i]) {
1149
- elemental_duration_in_tc_minus1[i] =
1150
- reader.decodeExponentialGolombNumber();
1151
- } else {
1152
- low_delay_hrd_flag[i] = !!reader.next();
1153
- }
1154
-
1155
- if (!low_delay_hrd_flag[i]) {
1156
- cpb_cnt_minus1[i] = reader.decodeExponentialGolombNumber();
1157
- }
1158
-
1159
- if (nal_hrd_parameters_present_flag) {
1160
- nalHrdParameters[i] = h265ParseSubLayerHrdParameters(
1161
- reader,
1162
- i,
1163
- getCpbCnt(cpb_cnt_minus1[i]!),
1164
- );
1165
- }
1166
- if (vcl_hrd_parameters_present_flag) {
1167
- vclHrdParameters[i] = h265ParseSubLayerHrdParameters(
1168
- reader,
1169
- i,
1170
- getCpbCnt(cpb_cnt_minus1[i]!),
1171
- );
1172
- }
1173
- }
1174
-
1175
- return {
1176
- nal_hrd_parameters_present_flag,
1177
- vcl_hrd_parameters_present_flag,
1178
- sub_pic_hrd_params_present_flag,
1179
- tick_divisor_minus2,
1180
- du_cpb_removal_delay_increment_length_minus1,
1181
- sub_pic_cpb_params_in_pic_timing_sei_flag,
1182
- dpb_output_delay_du_length_minus1,
1183
- bit_rate_scale,
1184
- cpb_size_scale,
1185
- cpb_size_du_scale,
1186
- initial_cpb_removal_delay_length_minus1,
1187
- au_cpb_removal_delay_length_minus1,
1188
- dpb_output_delay_length_minus1,
1189
- fixed_pic_rate_general_flag,
1190
- fixed_pic_rate_within_cvs_flag,
1191
- elemental_duration_in_tc_minus1,
1192
- low_delay_hrd_flag,
1193
- cpb_cnt_minus1,
1194
- nalHrdParameters,
1195
- vclHrdParameters,
1196
- };
1197
- }
1198
-
1199
- export type H265HrdParameters = ReturnType<typeof h265ParseHrdParameters>;
1200
-
1201
- /**
1202
- * E.2.3 Sub-layer HRD parameters syntax
1203
- */
1204
- export function h265ParseSubLayerHrdParameters(
1205
- reader: NaluSodbBitReader,
1206
- subLayerId: number,
1207
- CpbCnt: number,
1208
- ) {
1209
- const bit_rate_value_minus1: number[] = [];
1210
- const cpb_size_value_minus1: number[] = [];
1211
- const cpb_size_du_value_minus1: number[] = [];
1212
- const bit_rate_du_value_minus1: number[] = [];
1213
- const cbr_flag: boolean[] = [];
1214
- for (let i = 0; i < CpbCnt; i += 1) {
1215
- bit_rate_value_minus1[i] = reader.decodeExponentialGolombNumber();
1216
- cpb_size_value_minus1[i] = reader.decodeExponentialGolombNumber();
1217
- if (subLayerId > 0) {
1218
- cbr_flag[i] = !!reader.next();
1219
- }
1220
- }
1221
- return {
1222
- bit_rate_value_minus1,
1223
- cpb_size_value_minus1,
1224
- cpb_size_du_value_minus1,
1225
- bit_rate_du_value_minus1,
1226
- cbr_flag,
1227
- };
1228
- }
1229
-
1230
- /**
1231
- * E.3.3 Sub-layer HRD parameters semantics
1232
- */
1233
- function getCpbCnt(cpb_cnt_minus_1: number) {
1234
- return cpb_cnt_minus_1 + 1;
1235
- }
1236
-
1237
- export function h265SearchConfiguration(buffer: Uint8Array) {
1238
- let videoParameterSet!: H265NaluRaw;
1239
- let sequenceParameterSet!: H265NaluRaw;
1240
- let pictureParameterSet!: H265NaluRaw;
1241
- let count = 0;
1242
-
1243
- for (const nalu of annexBSplitNalu(buffer)) {
1244
- const header = h265ParseNaluHeader(nalu);
1245
- const raw: H265NaluRaw = {
1246
- ...header,
1247
- data: nalu,
1248
- rbsp: nalu.subarray(2),
1249
- };
1250
- switch (header.nal_unit_type) {
1251
- case 32:
1252
- videoParameterSet = raw;
1253
- break;
1254
- case 33:
1255
- sequenceParameterSet = raw;
1256
- break;
1257
- case 34:
1258
- pictureParameterSet = raw;
1259
- break;
1260
- default:
1261
- continue;
1262
- }
1263
-
1264
- count += 1;
1265
- if (count === 3) {
1266
- return {
1267
- videoParameterSet,
1268
- sequenceParameterSet,
1269
- pictureParameterSet,
1270
- };
1271
- }
1272
- }
1273
-
1274
- throw new Error("Invalid data");
1275
- }
1276
-
1277
- export function h265ParseSpsMultilayerExtension(reader: NaluSodbBitReader) {
1278
- const inter_view_mv_vert_constraint_flag = !!reader.next();
1279
- return {
1280
- inter_view_mv_vert_constraint_flag,
1281
- };
1282
- }
1283
-
1284
- export type H265SpsMultilayerExtension = ReturnType<
1285
- typeof h265ParseSpsMultilayerExtension
1286
- >;
1287
-
1288
- export function h265ParseSps3dExtension(reader: NaluSodbBitReader) {
1289
- const iv_di_mc_enabled_flag: boolean[] = [];
1290
- const iv_mv_scal_enabled_flag: boolean[] = [];
1291
-
1292
- iv_di_mc_enabled_flag[0] = !!reader.next();
1293
- iv_mv_scal_enabled_flag[0] = !!reader.next();
1294
-
1295
- const log2_ivmc_sub_pb_size_minus3 = reader.decodeExponentialGolombNumber();
1296
- const iv_res_pred_enabled_flag = !!reader.next();
1297
- const depth_ref_enabled_flag = !!reader.next();
1298
- const vsp_mc_enabled_flag = !!reader.next();
1299
- const dbbp_enabled_flag = !!reader.next();
1300
-
1301
- iv_di_mc_enabled_flag[1] = !!reader.next();
1302
- iv_mv_scal_enabled_flag[1] = !!reader.next();
1303
-
1304
- const tex_mc_enabled_flag = !!reader.next();
1305
- const log2_texmc_sub_pb_size_minus3 =
1306
- reader.decodeExponentialGolombNumber();
1307
- const intra_contour_enabled_flag = !!reader.next();
1308
- const intra_dc_only_wedge_enabled_flag = !!reader.next();
1309
- const cqt_cu_part_pred_enabled_flag = !!reader.next();
1310
- const inter_dc_only_enabled_flag = !!reader.next();
1311
- const skip_intra_enabled_flag = !!reader.next();
1312
-
1313
- return {
1314
- iv_di_mc_enabled_flag,
1315
- iv_mv_scal_enabled_flag,
1316
- log2_ivmc_sub_pb_size_minus3,
1317
- iv_res_pred_enabled_flag,
1318
- depth_ref_enabled_flag,
1319
- vsp_mc_enabled_flag,
1320
- dbbp_enabled_flag,
1321
- tex_mc_enabled_flag,
1322
- log2_texmc_sub_pb_size_minus3,
1323
- intra_contour_enabled_flag,
1324
- intra_dc_only_wedge_enabled_flag,
1325
- cqt_cu_part_pred_enabled_flag,
1326
- inter_dc_only_enabled_flag,
1327
- skip_intra_enabled_flag,
1328
- };
1329
- }
1330
-
1331
- export type H265Sps3dExtension = ReturnType<typeof h265ParseSps3dExtension>;
1332
-
1333
- export interface H265Configuration {
1334
- videoParameterSet: H265NaluRaw;
1335
- sequenceParameterSet: H265NaluRaw;
1336
- pictureParameterSet: H265NaluRaw;
1337
-
1338
- generalProfileSpace: number;
1339
- generalProfileIndex: number;
1340
- generalProfileCompatibilitySet: Uint8Array;
1341
- generalTierFlag: boolean;
1342
- generalLevelIndex: number;
1343
- generalConstraintSet: Uint8Array;
1344
-
1345
- encodedWidth: number;
1346
- encodedHeight: number;
1347
-
1348
- cropLeft: number;
1349
- cropRight: number;
1350
- cropTop: number;
1351
- cropBottom: number;
1352
- croppedWidth: number;
1353
- croppedHeight: number;
1354
- }
1355
-
1356
- export function h265ParseConfiguration(data: Uint8Array): H265Configuration {
1357
- const { videoParameterSet, sequenceParameterSet, pictureParameterSet } =
1358
- h265SearchConfiguration(data);
1359
-
1360
- const {
1361
- profileTierLevel: {
1362
- generalProfileTier: {
1363
- profile_space: generalProfileSpace,
1364
- tier_flag: generalTierFlag,
1365
- profile_idc: generalProfileIndex,
1366
- profileCompatibilitySet: generalProfileCompatibilitySet,
1367
- constraintSet: generalConstraintSet,
1368
- },
1369
- general_level_idc: generalLevelIndex,
1370
- },
1371
- } = h265ParseVideoParameterSet(videoParameterSet.rbsp);
1372
-
1373
- const {
1374
- chroma_format_idc,
1375
- pic_width_in_luma_samples: encodedWidth,
1376
- pic_height_in_luma_samples: encodedHeight,
1377
- conf_win_left_offset: cropLeft = 0,
1378
- conf_win_right_offset: cropRight = 0,
1379
- conf_win_top_offset: cropTop = 0,
1380
- conf_win_bottom_offset: cropBottom = 0,
1381
- } = h265ParseSequenceParameterSet(sequenceParameterSet.rbsp);
1382
-
1383
- const SubWidthC = getSubWidthC(chroma_format_idc);
1384
- const SubHeightC = getSubHeightC(chroma_format_idc);
1385
-
1386
- const croppedWidth = encodedWidth - SubWidthC * (cropLeft + cropRight);
1387
- const croppedHeight = encodedHeight - SubHeightC * (cropTop + cropBottom);
1388
-
1389
- return {
1390
- videoParameterSet,
1391
- sequenceParameterSet,
1392
- pictureParameterSet,
1393
-
1394
- generalProfileSpace,
1395
- generalProfileIndex,
1396
- generalProfileCompatibilitySet,
1397
- generalTierFlag,
1398
- generalLevelIndex,
1399
- generalConstraintSet,
1400
-
1401
- encodedWidth,
1402
- encodedHeight,
1403
- cropLeft,
1404
- cropRight,
1405
- cropTop,
1406
- cropBottom,
1407
- croppedWidth,
1408
- croppedHeight,
1409
- };
1410
- }