@libmedia/avutil 0.12.0 → 1.0.0

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 (572) hide show
  1. package/dist/cjs/{AVStream.js → AVStream.cjs} +5 -5
  2. package/dist/cjs/AVStream.js.map +1 -1
  3. package/dist/cjs/audiosamplefmt.js.map +1 -1
  4. package/dist/cjs/avformat.js.map +1 -1
  5. package/dist/cjs/codec.js.map +1 -1
  6. package/dist/cjs/codecs/{aac.js → aac.cjs} +2 -8
  7. package/dist/cjs/codecs/aac.js.map +1 -1
  8. package/dist/cjs/codecs/{ac3.js → ac3.cjs} +2 -8
  9. package/dist/cjs/codecs/ac3.js.map +1 -1
  10. package/dist/cjs/codecs/{av1.js → av1.cjs} +6 -10
  11. package/dist/cjs/codecs/av1.js.map +1 -1
  12. package/dist/cjs/codecs/{dts.js → dts.cjs} +3 -9
  13. package/dist/cjs/codecs/dts.js.map +1 -1
  14. package/dist/cjs/codecs/{flac.js → flac.cjs} +2 -8
  15. package/dist/cjs/codecs/flac.js.map +1 -1
  16. package/dist/cjs/codecs/{h264.js → h264.cjs} +20 -23
  17. package/dist/cjs/codecs/h264.js.map +1 -1
  18. package/dist/cjs/codecs/{hevc.js → hevc.cjs} +23 -23
  19. package/dist/cjs/codecs/hevc.js.map +1 -1
  20. package/dist/cjs/codecs/{mp3.js → mp3.cjs} +1 -1
  21. package/dist/cjs/codecs/mp3.js.map +1 -1
  22. package/dist/cjs/codecs/{mpeg4.js → mpeg4.cjs} +1 -1
  23. package/dist/cjs/codecs/mpeg4.js.map +1 -1
  24. package/dist/cjs/codecs/{mpegvideo.js → mpegvideo.cjs} +1 -1
  25. package/dist/cjs/codecs/mpegvideo.js.map +1 -1
  26. package/dist/cjs/codecs/{opus.js → opus.cjs} +3 -9
  27. package/dist/cjs/codecs/opus.js.map +1 -1
  28. package/dist/cjs/codecs/ttml.cjs +51 -0
  29. package/dist/cjs/codecs/ttml.js.map +1 -1
  30. package/dist/cjs/codecs/{vp8.js → vp8.cjs} +2 -8
  31. package/dist/cjs/codecs/vp8.js.map +1 -1
  32. package/dist/cjs/codecs/{vp9.js → vp9.cjs} +4 -10
  33. package/dist/cjs/codecs/vp9.js.map +1 -1
  34. package/dist/cjs/codecs/{vvc.js → vvc.cjs} +25 -25
  35. package/dist/cjs/codecs/vvc.js.map +1 -1
  36. package/dist/cjs/{constant.js → constant.cjs} +6 -7
  37. package/dist/cjs/constant.js.map +1 -1
  38. package/dist/cjs/{enum.js → enum.cjs} +3 -1
  39. package/dist/cjs/enum.js.map +1 -1
  40. package/dist/cjs/error.js.map +1 -1
  41. package/dist/cjs/function/analyzeAVFormat.js.map +1 -1
  42. package/dist/cjs/function/analyzeUrlIOLoader.cjs +66 -0
  43. package/dist/cjs/function/analyzeUrlIOLoader.js.map +1 -1
  44. package/dist/cjs/function/{audioData2AVFrame.js → audioData2AVFrame.cjs} +9 -9
  45. package/dist/cjs/function/audioData2AVFrame.js.map +1 -1
  46. package/dist/cjs/function/{avPCMBuffer2AVFrame.js → avPCMBuffer2AVFrame.cjs} +20 -20
  47. package/dist/cjs/function/avPCMBuffer2AVFrame.js.map +1 -1
  48. package/dist/cjs/function/{avframe2AudioData.js → avframe2AudioData.cjs} +7 -7
  49. package/dist/cjs/function/avframe2AudioData.js.map +1 -1
  50. package/dist/cjs/function/avframe2VideoFrame.cjs +48 -0
  51. package/dist/cjs/function/avframe2VideoFrame.js.map +1 -1
  52. package/dist/cjs/function/{avpacket2EncodedAudioChunk.js → avpacket2EncodedAudioChunk.cjs} +3 -3
  53. package/dist/cjs/function/avpacket2EncodedAudioChunk.js.map +1 -1
  54. package/dist/cjs/function/{avpacket2EncodedVideoChunk.js → avpacket2EncodedVideoChunk.cjs} +3 -3
  55. package/dist/cjs/function/avpacket2EncodedVideoChunk.js.map +1 -1
  56. package/dist/cjs/function/compileResource.cjs +19 -0
  57. package/dist/cjs/function/compileResource.js.map +1 -1
  58. package/dist/cjs/function/constant/webcodecs.cjs +50 -0
  59. package/dist/cjs/function/constant/webcodecs.js.map +1 -0
  60. package/dist/cjs/function/encodedAudioChunk2AVPacket.cjs +23 -0
  61. package/dist/cjs/function/encodedAudioChunk2AVPacket.js.map +1 -1
  62. package/dist/cjs/function/{encodedVideoChunk2AVPacket.js → encodedVideoChunk2AVPacket.cjs} +8 -8
  63. package/dist/cjs/function/encodedVideoChunk2AVPacket.js.map +1 -1
  64. package/dist/cjs/function/{getAudioCodec.js → getAudioCodec.cjs} +1 -1
  65. package/dist/cjs/function/getAudioCodec.js.map +1 -1
  66. package/dist/cjs/function/getAudioMimeType.cjs +19 -0
  67. package/dist/cjs/function/getAudioMimeType.js.map +1 -0
  68. package/dist/cjs/function/getHardwarePreference.cjs +10 -0
  69. package/dist/cjs/function/getHardwarePreference.js.map +1 -1
  70. package/dist/cjs/function/{getVideoCodec.js → getVideoCodec.cjs} +12 -12
  71. package/dist/cjs/function/getVideoCodec.js.map +1 -1
  72. package/dist/cjs/function/getVideoMimeType.cjs +18 -0
  73. package/dist/cjs/function/getVideoMimeType.js.map +1 -0
  74. package/dist/cjs/function/{getWasmUrl.js → getWasmUrl.cjs} +2 -3
  75. package/dist/cjs/function/getWasmUrl.js.map +1 -1
  76. package/dist/cjs/function/{hasAlphaChannel.js → hasAlphaChannel.cjs} +1 -1
  77. package/dist/cjs/function/hasAlphaChannel.js.map +1 -1
  78. package/dist/cjs/function/{isHdr.js → isHdr.cjs} +1 -1
  79. package/dist/cjs/function/isHdr.js.map +1 -1
  80. package/dist/cjs/function/videoFrame2AVFrame.cjs +51 -0
  81. package/dist/cjs/function/videoFrame2AVFrame.js.map +1 -1
  82. package/dist/cjs/implement/AVFramePoolImpl.cjs +28 -0
  83. package/dist/cjs/implement/AVFramePoolImpl.js.map +1 -1
  84. package/dist/cjs/implement/AVPCMBufferPoolImpl.cjs +27 -0
  85. package/dist/cjs/implement/AVPCMBufferPoolImpl.js.map +1 -1
  86. package/dist/cjs/implement/AVPacketPoolImpl.cjs +29 -0
  87. package/dist/cjs/implement/AVPacketPoolImpl.js.map +1 -1
  88. package/dist/cjs/index.cjs +840 -0
  89. package/dist/cjs/index.js.map +1 -0
  90. package/dist/cjs/internal.cjs +283 -0
  91. package/dist/cjs/internal.js.map +1 -0
  92. package/dist/cjs/{pixelFormatDescriptor.js → pixelFormatDescriptor.cjs} +2 -0
  93. package/dist/cjs/pixelFormatDescriptor.js.map +1 -1
  94. package/dist/cjs/pixfmt.js.map +1 -1
  95. package/dist/cjs/sampleFormatDescriptor.js.map +1 -1
  96. package/dist/cjs/{stringEnum.js → stringEnum.cjs} +4 -1
  97. package/dist/cjs/stringEnum.js.map +1 -1
  98. package/dist/cjs/struct/{audiosample.js → audiosample.cjs} +13 -13
  99. package/dist/cjs/struct/audiosample.js.map +1 -1
  100. package/dist/cjs/struct/{avbuffer.js → avbuffer.cjs} +18 -18
  101. package/dist/cjs/struct/avbuffer.js.map +1 -1
  102. package/dist/cjs/struct/{avcodecparameters.js → avcodecparameters.cjs} +11 -11
  103. package/dist/cjs/struct/avcodecparameters.js.map +1 -1
  104. package/dist/cjs/struct/{avdict.js → avdict.cjs} +9 -9
  105. package/dist/cjs/struct/avdict.js.map +1 -1
  106. package/dist/cjs/struct/{avframe.js → avframe.cjs} +30 -30
  107. package/dist/cjs/struct/avframe.js.map +1 -1
  108. package/dist/cjs/struct/{avpacket.js → avpacket.cjs} +19 -19
  109. package/dist/cjs/struct/avpacket.js.map +1 -1
  110. package/dist/cjs/struct/{avpcmbuffer.js → avpcmbuffer.cjs} +9 -9
  111. package/dist/cjs/struct/avpcmbuffer.js.map +1 -1
  112. package/dist/cjs/struct/avsubtitle.js.map +1 -1
  113. package/dist/cjs/struct/{encryption.js → encryption.cjs} +13 -13
  114. package/dist/cjs/struct/encryption.js.map +1 -1
  115. package/dist/cjs/struct/rational.cjs +43 -0
  116. package/dist/cjs/struct/rational.js.map +1 -1
  117. package/dist/cjs/util/{amf.js → amf.cjs} +7 -38
  118. package/dist/cjs/util/amf.js.map +1 -1
  119. package/dist/cjs/util/av1syntax.js.map +1 -1
  120. package/dist/cjs/util/avbuffer.cjs +122 -0
  121. package/dist/cjs/util/avbuffer.js.map +1 -1
  122. package/dist/cjs/util/avdict.cjs +75 -0
  123. package/dist/cjs/util/avdict.js.map +1 -1
  124. package/dist/cjs/util/{avframe.js → avframe.cjs} +82 -87
  125. package/dist/cjs/util/avframe.js.map +1 -1
  126. package/dist/cjs/util/{avpacket.js → avpacket.cjs} +58 -58
  127. package/dist/cjs/util/avpacket.js.map +1 -1
  128. package/dist/cjs/util/{channel.js → channel.cjs} +7 -7
  129. package/dist/cjs/util/channel.js.map +1 -1
  130. package/dist/cjs/util/codecparameters.cjs +95 -0
  131. package/dist/cjs/util/codecparameters.js.map +1 -1
  132. package/dist/cjs/util/common.js.map +1 -1
  133. package/dist/cjs/util/{encryption.js → encryption.cjs} +5 -11
  134. package/dist/cjs/util/encryption.js.map +1 -1
  135. package/dist/cjs/util/expgolomb.js.map +1 -1
  136. package/dist/cjs/util/{intread.js → intread.cjs} +1 -1
  137. package/dist/cjs/util/intread.js.map +1 -1
  138. package/dist/cjs/util/{intwrite.js → intwrite.cjs} +1 -1
  139. package/dist/cjs/util/intwrite.js.map +1 -1
  140. package/dist/cjs/util/mem.cjs +23 -0
  141. package/dist/cjs/util/mem.js.map +1 -1
  142. package/dist/cjs/util/{nalu.js → nalu.cjs} +7 -42
  143. package/dist/cjs/util/nalu.js.map +1 -1
  144. package/dist/cjs/util/ntp.js.map +1 -1
  145. package/dist/cjs/util/pcm.js.map +1 -1
  146. package/dist/cjs/util/{pixel.js → pixel.cjs} +26 -30
  147. package/dist/cjs/util/pixel.js.map +1 -1
  148. package/dist/cjs/util/{rational.js → rational.cjs} +5 -11
  149. package/dist/cjs/util/rational.js.map +1 -1
  150. package/dist/cjs/util/{sample.js → sample.cjs} +6 -12
  151. package/dist/cjs/util/sample.js.map +1 -1
  152. package/dist/cjs/util/{serialize.js → serialize.cjs} +40 -42
  153. package/dist/cjs/util/serialize.js.map +1 -1
  154. package/dist/esm/AVStream.d.ts +7 -7
  155. package/dist/esm/AVStream.js +10 -12
  156. package/dist/esm/AVStream.js.map +1 -1
  157. package/dist/esm/audiosamplefmt.js.map +1 -1
  158. package/dist/esm/avformat.js.map +1 -1
  159. package/dist/esm/codec.js.map +1 -1
  160. package/dist/esm/codecs/aac.d.ts +10 -5
  161. package/dist/esm/codecs/aac.js +2 -2
  162. package/dist/esm/codecs/aac.js.map +1 -1
  163. package/dist/esm/codecs/ac3.d.ts +1 -1
  164. package/dist/esm/codecs/ac3.js +1 -1
  165. package/dist/esm/codecs/ac3.js.map +1 -1
  166. package/dist/esm/codecs/av1.d.ts +3 -3
  167. package/dist/esm/codecs/av1.js +4 -6
  168. package/dist/esm/codecs/av1.js.map +1 -1
  169. package/dist/esm/codecs/dts.d.ts +1 -1
  170. package/dist/esm/codecs/dts.js +2 -2
  171. package/dist/esm/codecs/dts.js.map +1 -1
  172. package/dist/esm/codecs/flac.d.ts +3 -3
  173. package/dist/esm/codecs/flac.js +1 -1
  174. package/dist/esm/codecs/flac.js.map +1 -1
  175. package/dist/esm/codecs/h264.d.ts +5 -5
  176. package/dist/esm/codecs/h264.js +13 -18
  177. package/dist/esm/codecs/h264.js.map +1 -1
  178. package/dist/esm/codecs/hevc.d.ts +5 -5
  179. package/dist/esm/codecs/hevc.js +16 -15
  180. package/dist/esm/codecs/hevc.js.map +1 -1
  181. package/dist/esm/codecs/mp3.d.ts +4 -4
  182. package/dist/esm/codecs/mp3.js +1 -1
  183. package/dist/esm/codecs/mp3.js.map +1 -1
  184. package/dist/esm/codecs/mpeg4.d.ts +1 -1
  185. package/dist/esm/codecs/mpeg4.js +1 -1
  186. package/dist/esm/codecs/mpeg4.js.map +1 -1
  187. package/dist/esm/codecs/mpegvideo.d.ts +1 -1
  188. package/dist/esm/codecs/mpegvideo.js +1 -1
  189. package/dist/esm/codecs/mpegvideo.js.map +1 -1
  190. package/dist/esm/codecs/opus.d.ts +3 -3
  191. package/dist/esm/codecs/opus.js +2 -4
  192. package/dist/esm/codecs/opus.js.map +1 -1
  193. package/dist/esm/codecs/ttml.js +5 -11
  194. package/dist/esm/codecs/ttml.js.map +1 -1
  195. package/dist/esm/codecs/vp8.d.ts +4 -4
  196. package/dist/esm/codecs/vp8.js +2 -2
  197. package/dist/esm/codecs/vp8.js.map +1 -1
  198. package/dist/esm/codecs/vp9.d.ts +4 -4
  199. package/dist/esm/codecs/vp9.js +8 -10
  200. package/dist/esm/codecs/vp9.js.map +1 -1
  201. package/dist/esm/codecs/vvc.d.ts +5 -5
  202. package/dist/esm/codecs/vvc.js +16 -17
  203. package/dist/esm/codecs/vvc.js.map +1 -1
  204. package/dist/esm/constant.d.ts +5 -7
  205. package/dist/esm/constant.js +5 -9
  206. package/dist/esm/constant.js.map +1 -1
  207. package/dist/esm/enum.d.ts +9 -1
  208. package/dist/esm/enum.js +3 -1
  209. package/dist/esm/enum.js.map +1 -1
  210. package/dist/esm/error.js.map +1 -1
  211. package/dist/esm/function/analyzeAVFormat.d.ts +2 -2
  212. package/dist/esm/function/analyzeAVFormat.js.map +1 -1
  213. package/dist/esm/function/analyzeUrlIOLoader.d.ts +2 -2
  214. package/dist/esm/function/analyzeUrlIOLoader.js +2 -10
  215. package/dist/esm/function/analyzeUrlIOLoader.js.map +1 -1
  216. package/dist/esm/function/audioData2AVFrame.d.ts +1 -1
  217. package/dist/esm/function/audioData2AVFrame.js +6 -6
  218. package/dist/esm/function/audioData2AVFrame.js.map +1 -1
  219. package/dist/esm/function/avPCMBuffer2AVFrame.d.ts +2 -2
  220. package/dist/esm/function/avPCMBuffer2AVFrame.js +9 -9
  221. package/dist/esm/function/avPCMBuffer2AVFrame.js.map +1 -1
  222. package/dist/esm/function/avframe2AudioData.d.ts +1 -1
  223. package/dist/esm/function/avframe2AudioData.js +6 -8
  224. package/dist/esm/function/avframe2AudioData.js.map +1 -1
  225. package/dist/esm/function/avframe2VideoFrame.d.ts +3 -3
  226. package/dist/esm/function/avframe2VideoFrame.js +14 -79
  227. package/dist/esm/function/avframe2VideoFrame.js.map +1 -1
  228. package/dist/esm/function/avpacket2EncodedAudioChunk.d.ts +1 -1
  229. package/dist/esm/function/avpacket2EncodedAudioChunk.js +5 -7
  230. package/dist/esm/function/avpacket2EncodedAudioChunk.js.map +1 -1
  231. package/dist/esm/function/avpacket2EncodedVideoChunk.d.ts +1 -1
  232. package/dist/esm/function/avpacket2EncodedVideoChunk.js +5 -7
  233. package/dist/esm/function/avpacket2EncodedVideoChunk.js.map +1 -1
  234. package/dist/esm/function/compileResource.d.ts +1 -1
  235. package/dist/esm/function/compileResource.js +2 -4
  236. package/dist/esm/function/compileResource.js.map +1 -1
  237. package/dist/esm/function/constant/webcodecs.d.ts +5 -0
  238. package/dist/esm/function/constant/webcodecs.js +51 -0
  239. package/dist/esm/function/constant/webcodecs.js.map +1 -0
  240. package/dist/esm/function/encodedAudioChunk2AVPacket.d.ts +1 -1
  241. package/dist/esm/function/encodedAudioChunk2AVPacket.js +6 -6
  242. package/dist/esm/function/encodedAudioChunk2AVPacket.js.map +1 -1
  243. package/dist/esm/function/encodedVideoChunk2AVPacket.d.ts +1 -1
  244. package/dist/esm/function/encodedVideoChunk2AVPacket.js +7 -7
  245. package/dist/esm/function/encodedVideoChunk2AVPacket.js.map +1 -1
  246. package/dist/esm/function/getAudioCodec.d.ts +1 -1
  247. package/dist/esm/function/getAudioCodec.js +2 -2
  248. package/dist/esm/function/getAudioCodec.js.map +1 -1
  249. package/dist/esm/function/getAudioMimeType.d.ts +2 -0
  250. package/dist/esm/function/getAudioMimeType.js +12 -0
  251. package/dist/esm/function/getAudioMimeType.js.map +1 -0
  252. package/dist/esm/function/getHardwarePreference.js +1 -1
  253. package/dist/esm/function/getHardwarePreference.js.map +1 -1
  254. package/dist/esm/function/getVideoCodec.d.ts +1 -1
  255. package/dist/esm/function/getVideoCodec.js +11 -13
  256. package/dist/esm/function/getVideoCodec.js.map +1 -1
  257. package/dist/esm/function/getVideoMimeType.d.ts +2 -0
  258. package/dist/esm/function/getVideoMimeType.js +8 -0
  259. package/dist/esm/function/getVideoMimeType.js.map +1 -0
  260. package/dist/esm/function/getWasmUrl.d.ts +1 -1
  261. package/dist/esm/function/getWasmUrl.js +2 -2
  262. package/dist/esm/function/getWasmUrl.js.map +1 -1
  263. package/dist/esm/function/hasAlphaChannel.d.ts +1 -1
  264. package/dist/esm/function/hasAlphaChannel.js +2 -2
  265. package/dist/esm/function/hasAlphaChannel.js.map +1 -1
  266. package/dist/esm/function/isHdr.d.ts +1 -1
  267. package/dist/esm/function/isHdr.js +2 -2
  268. package/dist/esm/function/isHdr.js.map +1 -1
  269. package/dist/esm/function/videoFrame2AVFrame.d.ts +6 -6
  270. package/dist/esm/function/videoFrame2AVFrame.js +13 -74
  271. package/dist/esm/function/videoFrame2AVFrame.js.map +1 -1
  272. package/dist/esm/implement/AVFramePoolImpl.d.ts +3 -4
  273. package/dist/esm/implement/AVFramePoolImpl.js +5 -7
  274. package/dist/esm/implement/AVFramePoolImpl.js.map +1 -1
  275. package/dist/esm/implement/AVPCMBufferPoolImpl.d.ts +3 -4
  276. package/dist/esm/implement/AVPCMBufferPoolImpl.js +4 -6
  277. package/dist/esm/implement/AVPCMBufferPoolImpl.js.map +1 -1
  278. package/dist/esm/implement/AVPacketPoolImpl.d.ts +3 -4
  279. package/dist/esm/implement/AVPacketPoolImpl.js +5 -7
  280. package/dist/esm/implement/AVPacketPoolImpl.js.map +1 -1
  281. package/dist/esm/index.d.ts +54 -0
  282. package/dist/esm/index.js +98 -0
  283. package/dist/esm/index.js.map +1 -0
  284. package/dist/esm/internal.d.ts +26 -0
  285. package/dist/esm/internal.js +52 -0
  286. package/dist/esm/internal.js.map +1 -0
  287. package/dist/esm/pixelFormatDescriptor.d.ts +1 -1
  288. package/dist/esm/pixelFormatDescriptor.js +2 -0
  289. package/dist/esm/pixelFormatDescriptor.js.map +1 -1
  290. package/dist/esm/pixfmt.d.ts +9 -1
  291. package/dist/esm/pixfmt.js.map +1 -1
  292. package/dist/esm/sampleFormatDescriptor.d.ts +1 -1
  293. package/dist/esm/sampleFormatDescriptor.js.map +1 -1
  294. package/dist/esm/stringEnum.d.ts +5 -5
  295. package/dist/esm/stringEnum.js +4 -1
  296. package/dist/esm/stringEnum.js.map +1 -1
  297. package/dist/esm/struct/audiosample.d.ts +1 -1
  298. package/dist/esm/struct/audiosample.js +2 -2
  299. package/dist/esm/struct/audiosample.js.map +1 -1
  300. package/dist/esm/struct/avbuffer.d.ts +1 -1
  301. package/dist/esm/struct/avbuffer.js +4 -4
  302. package/dist/esm/struct/avbuffer.js.map +1 -1
  303. package/dist/esm/struct/avcodecparameters.d.ts +9 -9
  304. package/dist/esm/struct/avcodecparameters.js +14 -16
  305. package/dist/esm/struct/avcodecparameters.js.map +1 -1
  306. package/dist/esm/struct/avdict.js +2 -2
  307. package/dist/esm/struct/avdict.js.map +1 -1
  308. package/dist/esm/struct/avframe.d.ts +12 -12
  309. package/dist/esm/struct/avframe.js +18 -22
  310. package/dist/esm/struct/avframe.js.map +1 -1
  311. package/dist/esm/struct/avpacket.d.ts +4 -4
  312. package/dist/esm/struct/avpacket.js +7 -9
  313. package/dist/esm/struct/avpacket.js.map +1 -1
  314. package/dist/esm/struct/avpcmbuffer.d.ts +1 -1
  315. package/dist/esm/struct/avpcmbuffer.js +2 -2
  316. package/dist/esm/struct/avpcmbuffer.js.map +1 -1
  317. package/dist/esm/struct/avsubtitle.d.ts +2 -2
  318. package/dist/esm/struct/avsubtitle.js.map +1 -1
  319. package/dist/esm/struct/encryption.js +2 -2
  320. package/dist/esm/struct/encryption.js.map +1 -1
  321. package/dist/esm/struct/rational.d.ts +1 -1
  322. package/dist/esm/struct/rational.js +4 -4
  323. package/dist/esm/struct/rational.js.map +1 -1
  324. package/dist/esm/util/amf.d.ts +1 -4
  325. package/dist/esm/util/amf.js +1 -5
  326. package/dist/esm/util/amf.js.map +1 -1
  327. package/dist/esm/util/av1syntax.d.ts +1 -1
  328. package/dist/esm/util/av1syntax.js.map +1 -1
  329. package/dist/esm/util/avbuffer.d.ts +2 -2
  330. package/dist/esm/util/avbuffer.js +7 -15
  331. package/dist/esm/util/avbuffer.js.map +1 -1
  332. package/dist/esm/util/avdict.d.ts +2 -2
  333. package/dist/esm/util/avdict.js +12 -16
  334. package/dist/esm/util/avdict.js.map +1 -1
  335. package/dist/esm/util/avframe.d.ts +2 -2
  336. package/dist/esm/util/avframe.js +22 -24
  337. package/dist/esm/util/avframe.js.map +1 -1
  338. package/dist/esm/util/avpacket.d.ts +3 -3
  339. package/dist/esm/util/avpacket.js +11 -13
  340. package/dist/esm/util/avpacket.js.map +1 -1
  341. package/dist/esm/util/channel.d.ts +1 -1
  342. package/dist/esm/util/channel.js +6 -6
  343. package/dist/esm/util/channel.js.map +1 -1
  344. package/dist/esm/util/codecparameters.d.ts +3 -1
  345. package/dist/esm/util/codecparameters.js +16 -12
  346. package/dist/esm/util/codecparameters.js.map +1 -1
  347. package/dist/esm/util/common.js.map +1 -1
  348. package/dist/esm/util/encryption.d.ts +2 -2
  349. package/dist/esm/util/encryption.js +1 -3
  350. package/dist/esm/util/encryption.js.map +1 -1
  351. package/dist/esm/util/expgolomb.d.ts +1 -2
  352. package/dist/esm/util/expgolomb.js.map +1 -1
  353. package/dist/esm/util/intread.js +1 -1
  354. package/dist/esm/util/intread.js.map +1 -1
  355. package/dist/esm/util/intwrite.js +1 -1
  356. package/dist/esm/util/intwrite.js.map +1 -1
  357. package/dist/esm/util/mem.js +7 -7
  358. package/dist/esm/util/mem.js.map +1 -1
  359. package/dist/esm/util/nalu.d.ts +1 -1
  360. package/dist/esm/util/nalu.js +3 -5
  361. package/dist/esm/util/nalu.js.map +1 -1
  362. package/dist/esm/util/ntp.js.map +1 -1
  363. package/dist/esm/util/pcm.d.ts +1 -1
  364. package/dist/esm/util/pcm.js.map +1 -1
  365. package/dist/esm/util/pixel.d.ts +1 -1
  366. package/dist/esm/util/pixel.js +8 -10
  367. package/dist/esm/util/pixel.js.map +1 -1
  368. package/dist/esm/util/rational.d.ts +10 -10
  369. package/dist/esm/util/rational.js +4 -4
  370. package/dist/esm/util/rational.js.map +1 -1
  371. package/dist/esm/util/sample.d.ts +1 -1
  372. package/dist/esm/util/sample.js +7 -7
  373. package/dist/esm/util/sample.js.map +1 -1
  374. package/dist/esm/util/serialize.d.ts +9 -9
  375. package/dist/esm/util/serialize.js +6 -6
  376. package/dist/esm/util/serialize.js.map +1 -1
  377. package/package.json +23 -390
  378. package/src/AVStream.ts +677 -0
  379. package/src/audiosamplefmt.ts +302 -0
  380. package/src/avformat.ts +96 -0
  381. package/src/codec.ts +1016 -0
  382. package/src/codecs/aac.ts +429 -0
  383. package/src/codecs/ac3.ts +309 -0
  384. package/src/codecs/av1.ts +503 -0
  385. package/src/codecs/dts.ts +100 -0
  386. package/src/codecs/flac.ts +118 -0
  387. package/src/codecs/h264.ts +1013 -0
  388. package/src/codecs/hevc.ts +1049 -0
  389. package/src/codecs/mp3.ts +172 -0
  390. package/src/codecs/mpeg4.ts +37 -0
  391. package/src/codecs/mpegvideo.ts +49 -0
  392. package/src/codecs/opus.ts +148 -0
  393. package/src/codecs/ttml.ts +158 -0
  394. package/src/codecs/vp8.ts +91 -0
  395. package/src/codecs/vp9.ts +213 -0
  396. package/src/codecs/vvc.ts +1086 -0
  397. package/src/constant.ts +72 -0
  398. package/src/enum.ts +47 -0
  399. package/src/error.ts +45 -0
  400. package/src/function/analyzeAVFormat.ts +94 -0
  401. package/src/function/analyzeUrlIOLoader.ts +166 -0
  402. package/src/function/audioData2AVFrame.ts +82 -0
  403. package/src/function/avPCMBuffer2AVFrame.ts +111 -0
  404. package/src/function/avframe2AudioData.ts +131 -0
  405. package/src/function/avframe2VideoFrame.ts +88 -0
  406. package/src/function/avpacket2EncodedAudioChunk.ts +39 -0
  407. package/src/function/avpacket2EncodedVideoChunk.ts +39 -0
  408. package/src/function/compileResource.ts +57 -0
  409. package/src/function/constant/webcodecs.ts +81 -0
  410. package/src/function/encodedAudioChunk2AVPacket.ts +62 -0
  411. package/src/function/encodedVideoChunk2AVPacket.ts +86 -0
  412. package/src/function/getAudioCodec.ts +45 -0
  413. package/src/function/getAudioMimeType.ts +44 -0
  414. package/src/function/getHardwarePreference.ts +45 -0
  415. package/src/function/getVideoCodec.ts +244 -0
  416. package/src/function/getVideoMimeType.ts +35 -0
  417. package/src/function/getWasmUrl.ts +190 -0
  418. package/src/function/hasAlphaChannel.ts +37 -0
  419. package/src/function/isHdr.ts +44 -0
  420. package/src/function/videoFrame2AVFrame.ts +95 -0
  421. package/src/implement/AVFramePoolImpl.ts +83 -0
  422. package/src/implement/AVPCMBufferPoolImpl.ts +79 -0
  423. package/src/implement/AVPacketPoolImpl.ts +82 -0
  424. package/src/index.ts +264 -0
  425. package/src/internal.ts +71 -0
  426. package/src/pixelFormatDescriptor.ts +819 -0
  427. package/src/pixfmt.ts +1400 -0
  428. package/src/sampleFormatDescriptor.ts +57 -0
  429. package/src/stringEnum.ts +366 -0
  430. package/src/struct/audiosample.ts +95 -0
  431. package/src/struct/avbuffer.ts +139 -0
  432. package/src/struct/avcodecparameters.ts +243 -0
  433. package/src/struct/avdict.ts +44 -0
  434. package/src/struct/avframe.ts +663 -0
  435. package/src/struct/avpacket.ts +178 -0
  436. package/src/struct/avpcmbuffer.ts +77 -0
  437. package/src/struct/avsubtitle.ts +59 -0
  438. package/src/struct/encryption.ts +180 -0
  439. package/src/struct/rational.ts +43 -0
  440. package/src/util/amf.ts +178 -0
  441. package/src/util/av1syntax.ts +112 -0
  442. package/src/util/avbuffer.ts +294 -0
  443. package/src/util/avdict.ts +171 -0
  444. package/src/util/avframe.ts +520 -0
  445. package/src/util/avpacket.ts +313 -0
  446. package/src/util/channel.ts +66 -0
  447. package/src/util/codecparameters.ts +148 -0
  448. package/src/util/common.ts +42 -0
  449. package/src/util/encryption.ts +154 -0
  450. package/src/util/expgolomb.ts +170 -0
  451. package/src/util/intread.ts +60 -0
  452. package/src/util/intwrite.ts +71 -0
  453. package/src/util/mem.ts +60 -0
  454. package/src/util/nalu.ts +297 -0
  455. package/src/util/ntp.ts +32 -0
  456. package/src/util/pcm.ts +161 -0
  457. package/src/util/pixel.ts +381 -0
  458. package/src/util/rational.ts +152 -0
  459. package/src/util/sample.ts +136 -0
  460. package/src/util/serialize.ts +268 -0
  461. package/dist/cjs/AVStream.d.ts +0 -577
  462. package/dist/cjs/audiosamplefmt.d.ts +0 -248
  463. package/dist/cjs/avformat.d.ts +0 -66
  464. package/dist/cjs/codec.d.ts +0 -927
  465. package/dist/cjs/codecs/aac.d.ts +0 -121
  466. package/dist/cjs/codecs/ac3.d.ts +0 -72
  467. package/dist/cjs/codecs/av1.d.ts +0 -75
  468. package/dist/cjs/codecs/dts.d.ts +0 -17
  469. package/dist/cjs/codecs/flac.d.ts +0 -46
  470. package/dist/cjs/codecs/h264.d.ts +0 -188
  471. package/dist/cjs/codecs/hevc.d.ts +0 -220
  472. package/dist/cjs/codecs/mp3.d.ts +0 -17
  473. package/dist/cjs/codecs/mpeg4.d.ts +0 -7
  474. package/dist/cjs/codecs/mpegvideo.d.ts +0 -7
  475. package/dist/cjs/codecs/opus.d.ts +0 -26
  476. package/dist/cjs/codecs/ttml.d.ts +0 -9
  477. package/dist/cjs/codecs/ttml.js +0 -87
  478. package/dist/cjs/codecs/vp8.d.ts +0 -31
  479. package/dist/cjs/codecs/vp9.d.ts +0 -45
  480. package/dist/cjs/codecs/vvc.d.ts +0 -235
  481. package/dist/cjs/constant.d.ts +0 -36
  482. package/dist/cjs/enum.d.ts +0 -3285
  483. package/dist/cjs/error.d.ts +0 -10
  484. package/dist/cjs/function/analyzeAVFormat.d.ts +0 -3
  485. package/dist/cjs/function/analyzeUrlIOLoader.d.ts +0 -7
  486. package/dist/cjs/function/analyzeUrlIOLoader.js +0 -101
  487. package/dist/cjs/function/audioData2AVFrame.d.ts +0 -2
  488. package/dist/cjs/function/avPCMBuffer2AVFrame.d.ts +0 -3
  489. package/dist/cjs/function/avframe2AudioData.d.ts +0 -2
  490. package/dist/cjs/function/avframe2VideoFrame.d.ts +0 -5
  491. package/dist/cjs/function/avframe2VideoFrame.js +0 -146
  492. package/dist/cjs/function/avpacket2EncodedAudioChunk.d.ts +0 -2
  493. package/dist/cjs/function/avpacket2EncodedVideoChunk.d.ts +0 -2
  494. package/dist/cjs/function/compileResource.d.ts +0 -2
  495. package/dist/cjs/function/compileResource.js +0 -53
  496. package/dist/cjs/function/encodedAudioChunk2AVPacket.d.ts +0 -2
  497. package/dist/cjs/function/encodedAudioChunk2AVPacket.js +0 -23
  498. package/dist/cjs/function/encodedVideoChunk2AVPacket.d.ts +0 -7
  499. package/dist/cjs/function/getAudioCodec.d.ts +0 -2
  500. package/dist/cjs/function/getHardwarePreference.d.ts +0 -1
  501. package/dist/cjs/function/getHardwarePreference.js +0 -16
  502. package/dist/cjs/function/getVideoCodec.d.ts +0 -2
  503. package/dist/cjs/function/getWasmUrl.d.ts +0 -2
  504. package/dist/cjs/function/hasAlphaChannel.d.ts +0 -2
  505. package/dist/cjs/function/isHdr.d.ts +0 -2
  506. package/dist/cjs/function/videoFrame2AVFrame.d.ts +0 -7
  507. package/dist/cjs/function/videoFrame2AVFrame.js +0 -113
  508. package/dist/cjs/implement/AVFramePoolImpl.d.ts +0 -11
  509. package/dist/cjs/implement/AVFramePoolImpl.js +0 -59
  510. package/dist/cjs/implement/AVPCMBufferPoolImpl.d.ts +0 -11
  511. package/dist/cjs/implement/AVPCMBufferPoolImpl.js +0 -57
  512. package/dist/cjs/implement/AVPacketPoolImpl.d.ts +0 -11
  513. package/dist/cjs/implement/AVPacketPoolImpl.js +0 -60
  514. package/dist/cjs/pixelFormatDescriptor.d.ts +0 -100
  515. package/dist/cjs/pixfmt.d.ts +0 -1293
  516. package/dist/cjs/sampleFormatDescriptor.d.ts +0 -6
  517. package/dist/cjs/stringEnum.d.ts +0 -161
  518. package/dist/cjs/struct/audiosample.d.ts +0 -64
  519. package/dist/cjs/struct/avbuffer.d.ts +0 -85
  520. package/dist/cjs/struct/avcodecparameters.d.ts +0 -181
  521. package/dist/cjs/struct/avdict.d.ts +0 -17
  522. package/dist/cjs/struct/avframe.d.ts +0 -559
  523. package/dist/cjs/struct/avpacket.d.ts +0 -124
  524. package/dist/cjs/struct/avpcmbuffer.d.ts +0 -49
  525. package/dist/cjs/struct/avsubtitle.d.ts +0 -30
  526. package/dist/cjs/struct/encryption.d.ts +0 -137
  527. package/dist/cjs/struct/rational.d.ts +0 -15
  528. package/dist/cjs/struct/rational.js +0 -43
  529. package/dist/cjs/util/amf.d.ts +0 -10
  530. package/dist/cjs/util/av1syntax.d.ts +0 -9
  531. package/dist/cjs/util/avbuffer.d.ts +0 -18
  532. package/dist/cjs/util/avbuffer.js +0 -153
  533. package/dist/cjs/util/avdict.d.ts +0 -9
  534. package/dist/cjs/util/avdict.js +0 -111
  535. package/dist/cjs/util/avframe.d.ts +0 -21
  536. package/dist/cjs/util/avpacket.d.ts +0 -24
  537. package/dist/cjs/util/channel.d.ts +0 -5
  538. package/dist/cjs/util/codecparameters.d.ts +0 -4
  539. package/dist/cjs/util/codecparameters.js +0 -70
  540. package/dist/cjs/util/common.d.ts +0 -3
  541. package/dist/cjs/util/crypto.d.ts +0 -1
  542. package/dist/cjs/util/crypto.js +0 -8
  543. package/dist/cjs/util/crypto.js.map +0 -1
  544. package/dist/cjs/util/encryption.d.ts +0 -6
  545. package/dist/cjs/util/expgolomb.d.ts +0 -26
  546. package/dist/cjs/util/intread.d.ts +0 -9
  547. package/dist/cjs/util/intwrite.d.ts +0 -9
  548. package/dist/cjs/util/mem.d.ts +0 -5
  549. package/dist/cjs/util/mem.js +0 -54
  550. package/dist/cjs/util/nalu.d.ts +0 -32
  551. package/dist/cjs/util/ntp.d.ts +0 -1
  552. package/dist/cjs/util/pcm.d.ts +0 -4
  553. package/dist/cjs/util/pixel.d.ts +0 -11
  554. package/dist/cjs/util/rational.d.ts +0 -58
  555. package/dist/cjs/util/sample.d.ts +0 -7
  556. package/dist/cjs/util/serialize.d.ts +0 -63
  557. package/dist/esm/util/crypto.d.ts +0 -1
  558. package/dist/esm/util/crypto.js +0 -4
  559. package/dist/esm/util/crypto.js.map +0 -1
  560. /package/dist/cjs/{audiosamplefmt.js → audiosamplefmt.cjs} +0 -0
  561. /package/dist/cjs/{avformat.js → avformat.cjs} +0 -0
  562. /package/dist/cjs/{codec.js → codec.cjs} +0 -0
  563. /package/dist/cjs/{error.js → error.cjs} +0 -0
  564. /package/dist/cjs/function/{analyzeAVFormat.js → analyzeAVFormat.cjs} +0 -0
  565. /package/dist/cjs/{pixfmt.js → pixfmt.cjs} +0 -0
  566. /package/dist/cjs/{sampleFormatDescriptor.js → sampleFormatDescriptor.cjs} +0 -0
  567. /package/dist/cjs/struct/{avsubtitle.js → avsubtitle.cjs} +0 -0
  568. /package/dist/cjs/util/{av1syntax.js → av1syntax.cjs} +0 -0
  569. /package/dist/cjs/util/{common.js → common.cjs} +0 -0
  570. /package/dist/cjs/util/{expgolomb.js → expgolomb.cjs} +0 -0
  571. /package/dist/cjs/util/{ntp.js → ntp.cjs} +0 -0
  572. /package/dist/cjs/util/{pcm.js → pcm.cjs} +0 -0
@@ -0,0 +1,503 @@
1
+ /*
2
+ * libmedia av1 util
3
+ *
4
+ * 版权所有 (C) 2024 赵高兴
5
+ * Copyright (C) 2024 Gaoxing Zhao
6
+ *
7
+ * 此文件是 libmedia 的一部分
8
+ * This file is part of libmedia.
9
+ *
10
+ * libmedia 是自由软件;您可以根据 GNU Lesser General Public License(GNU LGPL)3.1
11
+ * 或任何其更新的版本条款重新分发或修改它
12
+ * libmedia is free software; you can redistribute it and/or
13
+ * modify it under the terms of the GNU Lesser General Public
14
+ * License as published by the Free Software Foundation; either
15
+ * version 3.1 of the License, or (at your option) any later version.
16
+ *
17
+ * libmedia 希望能够为您提供帮助,但不提供任何明示或暗示的担保,包括但不限于适销性或特定用途的保证
18
+ * 您应自行承担使用 libmedia 的风险,并且需要遵守 GNU Lesser General Public License 中的条款和条件。
19
+ * libmedia is distributed in the hope that it will be useful,
20
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
21
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
22
+ * Lesser General Public License for more details.
23
+ *
24
+ */
25
+
26
+ import { AVPacketSideDataType } from '../codec'
27
+ import * as av1syntax from '../util/av1syntax'
28
+ import type AVCodecParameters from '../struct/avcodecparameters'
29
+ import { getAVPixelFormatDescriptor } from '../pixelFormatDescriptor'
30
+ import type { AVPixelFormat } from '../pixfmt'
31
+
32
+ import {
33
+ BitReader,
34
+ BitWriter,
35
+ type Uint8ArrayInterface
36
+ } from '@libmedia/common/io'
37
+
38
+ export const enum AV1Profile {
39
+ Main,
40
+ High,
41
+ Professional
42
+ }
43
+
44
+ export const enum OBUType {
45
+ Reserved,
46
+ SEQUENCE_HEADER,
47
+ TEMPORAL_DELIMITER,
48
+ FRAME_HEADER,
49
+ TILE_GROUP,
50
+ METADATA,
51
+ FRAME,
52
+ REDUNDANT_FRAME_HEADER,
53
+ TILE_LIST,
54
+ PADDING = 15
55
+ }
56
+
57
+ export const AV1Profile2Name: Record<AV1Profile, string> = {
58
+ [AV1Profile.Main]: 'Main',
59
+ [AV1Profile.High]: 'High',
60
+ [AV1Profile.Professional]: 'Professional'
61
+ }
62
+
63
+ export const LevelCapabilities = [
64
+ { level: 20, maxResolution: 2048 * 1152 },
65
+ { level: 21, maxResolution: 2816 * 1584 },
66
+ { level: 30, maxResolution: 4352 * 2448 },
67
+ { level: 31, maxResolution: 5504 * 3096 },
68
+ { level: 40, maxResolution: 6144 * 3456 },
69
+ { level: 41, maxResolution: 6144 * 3456 },
70
+ { level: 50, maxResolution: 8192 * 4352 },
71
+ { level: 51, maxResolution: 8192 * 4352 },
72
+ { level: 52, maxResolution: 8192 * 4352 },
73
+ { level: 53, maxResolution: 8192 * 4352 },
74
+ { level: 60, maxResolution: 16384 * 8704 },
75
+ { level: 61, maxResolution: 16384 * 8704 },
76
+ { level: 62, maxResolution: 16384 * 8704 },
77
+ { level: 63, maxResolution: 16384 * 8704 }
78
+ ]
79
+
80
+ export const AV1LevelIdx = [20, 21, 22, 23, 30, 31, 32, 33, 40, 41, 42, 43, 50, 51, 52, 53, 60, 61, 62, 63, 70, 71, 72, 73]
81
+
82
+ export function getLevelByResolution(width: number, height: number, fps: number) {
83
+ const resolution = width * height
84
+ for (const level of LevelCapabilities) {
85
+ if (resolution <= level.maxResolution) {
86
+ return level.level
87
+ }
88
+ }
89
+ }
90
+
91
+ export function parseAVCodecParameters(
92
+ stream: {
93
+ codecpar: AVCodecParameters,
94
+ sideData: Partial<Record<AVPacketSideDataType, Uint8Array>>,
95
+ },
96
+ extradata?: Uint8ArrayInterface
97
+ ) {
98
+ if (!extradata && stream.sideData[AVPacketSideDataType.AV_PKT_DATA_NEW_EXTRADATA]) {
99
+ extradata = stream.sideData[AVPacketSideDataType.AV_PKT_DATA_NEW_EXTRADATA]
100
+ }
101
+ if (extradata && extradata.length >= 4) {
102
+ const params = parseExtraData(extradata)
103
+
104
+ stream.codecpar.profile = params.profile
105
+ stream.codecpar.level = params.level
106
+ }
107
+ }
108
+
109
+ /**
110
+ * - 1 bit marker
111
+ * - 7 bit version
112
+ * - 3 bit profile
113
+ * - 5 bit level
114
+ * - 1 bit tier
115
+ * - 1 bit bitdepth > 8
116
+ * - 1 bit bitdepth == 12
117
+ * - 1 bit monochrome
118
+ * - 1 bit chroma_subsampling_x
119
+ * - 1 bit chroma_subsampling_y
120
+ * - 2 bit chroma_sample_position
121
+ * - 8 bit padding
122
+ *
123
+ * @param header
124
+ */
125
+ export function parseExtraData(extradata: Uint8ArrayInterface) {
126
+ const bitReader = new BitReader(extradata.length)
127
+ bitReader.appendBuffer(extradata)
128
+ // marker
129
+ bitReader.readU1()
130
+ // version
131
+ bitReader.readU(7)
132
+
133
+ const profile = bitReader.readU(3)
134
+ const level = bitReader.readU(5)
135
+ const tier = bitReader.readU1()
136
+ let bitDepth = bitReader.readU1() ? 10 : 8
137
+ if (bitReader.readU1()) {
138
+ bitDepth = 12
139
+ }
140
+ const monochrome = bitReader.readU1()
141
+ const chromaSubsamplingX = bitReader.readU1()
142
+ const chromaSubsamplingY = bitReader.readU1()
143
+ const chromaSamplePosition = bitReader.readU(2)
144
+
145
+ return {
146
+ profile,
147
+ level,
148
+ tier,
149
+ bitDepth,
150
+ monochrome,
151
+ chromaSubsamplingX,
152
+ chromaSubsamplingY,
153
+ chromaSamplePosition
154
+ }
155
+ }
156
+
157
+ /* eslint-disable camelcase */
158
+ export function parseSequenceHeader(header: Uint8ArrayInterface) {
159
+ const bitReader = new BitReader(header.length)
160
+ bitReader.appendBuffer(header)
161
+
162
+ bitReader.readU1()
163
+ bitReader.readU(4)
164
+ const extensionFlag = bitReader.readU1()
165
+ const hasSizeFlag = bitReader.readU1()
166
+ // obu_reserved_1bit
167
+ bitReader.readU1()
168
+ if (extensionFlag) {
169
+ bitReader.readU(8)
170
+ }
171
+ if (hasSizeFlag) {
172
+ av1syntax.leb128(bitReader)
173
+ }
174
+
175
+ const seq_profile = av1syntax.f(bitReader, 3)
176
+ const still_picture = av1syntax.f(bitReader, 1)
177
+ const reduced_still_picture_header = av1syntax.f(bitReader, 1)
178
+
179
+ let timing_info_present_flag = 0
180
+ let decoder_model_info_present_flag = 0
181
+ let initial_display_delay_present_flag = 0
182
+ let operating_points_cnt_minus_1 = 0
183
+ let operating_point_idc: number[] = [0]
184
+ let seq_level_idx: number[] = [0]
185
+ let seq_tier: number[] = [0]
186
+ let decoder_model_present_for_this_op: number[] = [0]
187
+ let initial_display_delay_present_for_this_op: number[] = [0]
188
+ let initial_display_delay_minus_1: number[] = [0]
189
+ let buffer_delay_length_minus_1 = 0
190
+ let decoder_buffer_delay: number[] = [0]
191
+ let encoder_buffer_delay: number[] = [0]
192
+ let low_delay_mode_flag: number[] = [0]
193
+
194
+ if (reduced_still_picture_header) {
195
+ seq_level_idx[0] = av1syntax.f(bitReader, 5)
196
+ }
197
+ else {
198
+ timing_info_present_flag = av1syntax.f(bitReader, 1)
199
+ if (timing_info_present_flag) {
200
+
201
+ let num_units_in_display_tick = av1syntax.f(bitReader, 32)
202
+ let time_scale = av1syntax.f(bitReader, 32)
203
+ let equal_picture_interval = av1syntax.f(bitReader, 1)
204
+ if (equal_picture_interval) {
205
+ let num_ticks_per_picture_minus_1 = av1syntax.uvlc(bitReader)
206
+ }
207
+
208
+ let decoder_model_info_present_flag = av1syntax.f(bitReader, 1)
209
+ if (decoder_model_info_present_flag) {
210
+ buffer_delay_length_minus_1 = av1syntax.f(bitReader, 5)
211
+ let num_units_in_decoding_tick = av1syntax.f(bitReader, 32)
212
+ let buffer_removal_time_length_minus_1 = av1syntax.f(bitReader, 5)
213
+ let frame_presentation_time_length_minus_1 = av1syntax.f(bitReader, 5)
214
+ }
215
+ }
216
+ else {
217
+ decoder_model_info_present_flag = 0
218
+ }
219
+ let initial_display_delay_present_flag = av1syntax.f(bitReader, 1)
220
+ let operating_points_cnt_minus_1 = av1syntax.f(bitReader, 5)
221
+ for (let i = 0; i <= operating_points_cnt_minus_1; i++ ) {
222
+ operating_point_idc[i] = av1syntax.f(bitReader, 12)
223
+ seq_level_idx[i] = av1syntax.f(bitReader, 5)
224
+ if (seq_level_idx[i] > 7) {
225
+ seq_tier[i] = av1syntax.f(bitReader, 1)
226
+ }
227
+ else {
228
+ seq_tier[i] = 0
229
+ }
230
+ if (decoder_model_info_present_flag) {
231
+ decoder_model_present_for_this_op[i] = av1syntax.f(bitReader, 1)
232
+ if (decoder_model_present_for_this_op[i]) {
233
+ let n = buffer_delay_length_minus_1 + 1
234
+ decoder_buffer_delay[i] = av1syntax.f(bitReader, n)
235
+ encoder_buffer_delay[i] = av1syntax.f(bitReader, n)
236
+ low_delay_mode_flag[i] = av1syntax.f(bitReader, 1)
237
+ }
238
+ }
239
+ else {
240
+ decoder_model_present_for_this_op[i] = 0
241
+ }
242
+ if (initial_display_delay_present_flag) {
243
+ initial_display_delay_present_for_this_op[i] = av1syntax.f(bitReader, 1)
244
+ if ( initial_display_delay_present_for_this_op[i] ) {
245
+ initial_display_delay_minus_1[i] = av1syntax.f(bitReader, 4)
246
+ }
247
+ }
248
+ }
249
+ }
250
+ let frame_width_bits_minus_1 = av1syntax.f(bitReader, 4)
251
+ let frame_height_bits_minus_1 = av1syntax.f(bitReader, 4)
252
+ let n = frame_width_bits_minus_1 + 1
253
+ let max_frame_width_minus_1 = av1syntax.f(bitReader, n)
254
+ n = frame_height_bits_minus_1 + 1
255
+ let max_frame_height_minus_1 = av1syntax.f(bitReader, n)
256
+ let frame_id_numbers_present_flag = 0
257
+ let delta_frame_id_length_minus_2 = 0
258
+ let additional_frame_id_length_minus_1 = 0
259
+ if (reduced_still_picture_header ) {
260
+ frame_id_numbers_present_flag = 0
261
+ }
262
+ else {
263
+ frame_id_numbers_present_flag = av1syntax.f(bitReader, 1)
264
+ }
265
+ if ( frame_id_numbers_present_flag ) {
266
+ delta_frame_id_length_minus_2 = av1syntax.f(bitReader, 4)
267
+ additional_frame_id_length_minus_1 = av1syntax.f(bitReader, 3)
268
+ }
269
+ let use_128x128_superblock = av1syntax.f(bitReader, 1)
270
+ let enable_filter_intra = av1syntax.f(bitReader, 1)
271
+ let enable_intra_edge_filter = av1syntax.f(bitReader, 1)
272
+ let enable_interintra_compound = 0
273
+ let enable_masked_compound = 0
274
+ let enable_warped_motion = 0
275
+ let enable_dual_filter = 0
276
+ let enable_order_hint = 0
277
+ let enable_jnt_comp = 0
278
+ let enable_ref_frame_mvs = 0
279
+ let seq_force_screen_content_tools = 2
280
+ let seq_force_integer_mv = 2
281
+ let OrderHintBits = 0
282
+ if (!reduced_still_picture_header) {
283
+ let enable_interintra_compound = av1syntax.f(bitReader, 1)
284
+ enable_masked_compound = av1syntax.f(bitReader, 1)
285
+ enable_warped_motion = av1syntax.f(bitReader, 1)
286
+ enable_dual_filter = av1syntax.f(bitReader, 1)
287
+ enable_order_hint = av1syntax.f(bitReader, 1)
288
+ if (enable_order_hint) {
289
+ enable_jnt_comp = av1syntax.f(bitReader, 1)
290
+ enable_ref_frame_mvs = av1syntax.f(bitReader, 1)
291
+ }
292
+ else {
293
+ enable_jnt_comp = 0
294
+ enable_ref_frame_mvs = 0
295
+ }
296
+ let seq_choose_screen_content_tools = av1syntax.f(bitReader, 1)
297
+ if (seq_choose_screen_content_tools) {
298
+ seq_force_screen_content_tools = 2
299
+ }
300
+ else {
301
+ seq_force_screen_content_tools = av1syntax.f(bitReader, 1)
302
+ }
303
+
304
+ if (seq_force_screen_content_tools > 0) {
305
+ let seq_choose_integer_mv = av1syntax.f(bitReader, 1)
306
+ if (seq_choose_integer_mv) {
307
+ seq_force_integer_mv = 2
308
+ }
309
+ else {
310
+ seq_force_integer_mv = av1syntax.f(bitReader, 1)
311
+ }
312
+ }
313
+ else {
314
+ seq_force_integer_mv = 2
315
+ }
316
+ if (enable_order_hint) {
317
+ const order_hint_bits_minus_1 = av1syntax.f(bitReader, 3)
318
+ OrderHintBits = order_hint_bits_minus_1 + 1
319
+ }
320
+ else {
321
+ OrderHintBits = 0
322
+ }
323
+ }
324
+ let enable_superres = av1syntax.f(bitReader, 1)
325
+ let enable_cdef = av1syntax.f(bitReader, 1)
326
+ let enable_restoration = av1syntax.f(bitReader, 1)
327
+
328
+ let high_bitdepth = av1syntax.f(bitReader, 1)
329
+ let twelve_bit = 0
330
+ let bit_depth = 0
331
+ let mono_chrome = 0
332
+ if (seq_profile == 2 && high_bitdepth ) {
333
+ twelve_bit = av1syntax.f(bitReader, 1)
334
+ bit_depth = twelve_bit ? 12 : 10
335
+ }
336
+ else if (seq_profile <= 2) {
337
+ bit_depth = high_bitdepth ? 10 : 8
338
+ }
339
+ if ( seq_profile == 1 ) {
340
+ mono_chrome = 0
341
+ }
342
+ else {
343
+ mono_chrome = av1syntax.f(bitReader, 1)
344
+ }
345
+ const color_description_present_flag = av1syntax.f(bitReader, 1)
346
+ let color_primaries = 0
347
+ let transfer_characteristics = 0
348
+ let matrix_coefficients = 0
349
+ if (color_description_present_flag ) {
350
+ color_primaries = av1syntax.f(bitReader, 8)
351
+ transfer_characteristics = av1syntax.f(bitReader, 8)
352
+ matrix_coefficients = av1syntax.f(bitReader, 8)
353
+ }
354
+ else {
355
+ color_primaries = 2
356
+ transfer_characteristics = 2
357
+ matrix_coefficients = 2
358
+ }
359
+ let color_range = 0
360
+ let subsampling_x = 0
361
+ let subsampling_y = 0
362
+ let chroma_sample_position = 0
363
+ let separate_uv_delta_q = 0
364
+ if (mono_chrome) {
365
+ color_range = av1syntax.f(bitReader, 1)
366
+ subsampling_x = 1
367
+ subsampling_y = 1
368
+ chroma_sample_position = 0
369
+ separate_uv_delta_q = 0
370
+ }
371
+ else if (color_primaries == 1
372
+ && transfer_characteristics == 13
373
+ && matrix_coefficients == 0
374
+ ) {
375
+ color_range = 1
376
+ subsampling_x = 0
377
+ subsampling_y = 0
378
+ separate_uv_delta_q = av1syntax.f(bitReader, 1)
379
+ }
380
+ else {
381
+ color_range = av1syntax.f(bitReader, 1)
382
+ if (seq_profile == 0) {
383
+ subsampling_x = 1
384
+ subsampling_y = 1
385
+ }
386
+ else if ( seq_profile == 1 ) {
387
+ subsampling_x = 0
388
+ subsampling_y = 0
389
+ }
390
+ else {
391
+ if (bit_depth == 12) {
392
+ subsampling_x = av1syntax.f(bitReader, 1)
393
+ if (subsampling_x) {
394
+ subsampling_y = av1syntax.f(bitReader, 1)
395
+ }
396
+ else {
397
+ subsampling_y = 0
398
+ }
399
+ }
400
+ else {
401
+ subsampling_x = 1
402
+ subsampling_y = 0
403
+ }
404
+ }
405
+ if (subsampling_x && subsampling_y) {
406
+ chroma_sample_position = av1syntax.f(bitReader, 2)
407
+ }
408
+ separate_uv_delta_q = av1syntax.f(bitReader, 1)
409
+ }
410
+
411
+ let film_grain_params_present = av1syntax.f(bitReader, 1)
412
+
413
+ return {
414
+ width: max_frame_width_minus_1 + 1,
415
+ height: max_frame_height_minus_1 + 1,
416
+ profile: seq_profile,
417
+ level: AV1LevelIdx[seq_level_idx[0]],
418
+ tier: seq_tier[0],
419
+ bitDepth: bit_depth,
420
+ monoChrome: mono_chrome,
421
+ colorRange: color_range,
422
+ colorPrimaries: color_primaries,
423
+ transferCharacteristics: transfer_characteristics,
424
+ matrixCoefficients: matrix_coefficients,
425
+ subsamplingX: subsampling_x,
426
+ subsamplingY: subsampling_y,
427
+ chromaSamplePosition: chroma_sample_position
428
+ }
429
+ }
430
+
431
+ export function splitOBU(buffer: Uint8ArrayInterface) {
432
+ const bitReader = new BitReader()
433
+
434
+ bitReader.appendBuffer(buffer)
435
+
436
+ const list: Uint8ArrayInterface[] = []
437
+
438
+ while (bitReader.remainingLength()) {
439
+ const now = bitReader.getPointer()
440
+ // obu_forbidden_bit
441
+ bitReader.readU1()
442
+ const type = bitReader.readU(4)
443
+ const extensionFlag = bitReader.readU1()
444
+ const hasSizeFlag = bitReader.readU1()
445
+ // obu_reserved_1bit
446
+ bitReader.readU1()
447
+
448
+ if (extensionFlag) {
449
+ bitReader.readU(8)
450
+ }
451
+
452
+ const size = hasSizeFlag ? av1syntax.leb128(bitReader) : buffer.length - 1 - extensionFlag
453
+
454
+ const headerSize = bitReader.getPointer() - now
455
+
456
+ list.push(buffer.subarray(now, now + headerSize + size))
457
+
458
+ bitReader.skip(size * 8)
459
+ }
460
+
461
+ return list
462
+ }
463
+
464
+ export function generateExtradata(codecpar: pointer<AVCodecParameters>, buffer: Uint8ArrayInterface) {
465
+ const bitWriter = new BitWriter(4)
466
+ // marker
467
+ bitWriter.writeU1(1)
468
+ // version
469
+ bitWriter.writeU(7, 1)
470
+
471
+ const header = splitOBU(buffer).find((buffer) => {
472
+ return ((buffer[0] >>> 3) & 0x0f) === OBUType.SEQUENCE_HEADER
473
+ })
474
+
475
+ if (header) {
476
+ const params = parseSequenceHeader(header)
477
+ bitWriter.writeU(3, params.profile)
478
+ bitWriter.writeU(5, params.level)
479
+ bitWriter.writeU(1, params.tier)
480
+ bitWriter.writeU(1, params.bitDepth > 8 ? 1 : 0)
481
+ bitWriter.writeU(1, params.bitDepth === 12 ? 1 : 0)
482
+ bitWriter.writeU(1, params.monoChrome)
483
+ bitWriter.writeU(1, params.subsamplingX)
484
+ bitWriter.writeU(1, params.subsamplingY)
485
+ bitWriter.writeU(1, params.chromaSamplePosition)
486
+ }
487
+ else {
488
+ const desc = getAVPixelFormatDescriptor(codecpar.format as AVPixelFormat)
489
+ bitWriter.writeU(3, codecpar.profile)
490
+ bitWriter.writeU(5, codecpar.level)
491
+ bitWriter.writeU(1, 0)
492
+ bitWriter.writeU(1, desc.comp[0].depth > 8 ? 1 : 0)
493
+ bitWriter.writeU(1, desc.comp[0].depth === 12 ? 1 : 0)
494
+ bitWriter.writeU(1, 0)
495
+ bitWriter.writeU(1, 1)
496
+ bitWriter.writeU(1, 1)
497
+ bitWriter.writeU(1, 0)
498
+ }
499
+ // padding
500
+ bitWriter.writeU(8, 0)
501
+ bitWriter.padding()
502
+ return bitWriter.getBuffer()
503
+ }
@@ -0,0 +1,100 @@
1
+ /*
2
+ * libmedia dts util
3
+ *
4
+ * 版权所有 (C) 2024 赵高兴
5
+ * Copyright (C) 2024 Gaoxing Zhao
6
+ *
7
+ * 此文件是 libmedia 的一部分
8
+ * This file is part of libmedia.
9
+ *
10
+ * libmedia 是自由软件;您可以根据 GNU Lesser General Public License(GNU LGPL)3.1
11
+ * 或任何其更新的版本条款重新分发或修改它
12
+ * libmedia is free software; you can redistribute it and/or
13
+ * modify it under the terms of the GNU Lesser General Public
14
+ * License as published by the Free Software Foundation; either
15
+ * version 3.1 of the License, or (at your option) any later version.
16
+ *
17
+ * libmedia 希望能够为您提供帮助,但不提供任何明示或暗示的担保,包括但不限于适销性或特定用途的保证
18
+ * 您应自行承担使用 libmedia 的风险,并且需要遵守 GNU Lesser General Public License 中的条款和条件。
19
+ * libmedia is distributed in the hope that it will be useful,
20
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
21
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
22
+ * Lesser General Public License for more details.
23
+ *
24
+ */
25
+
26
+ import { align } from '@libmedia/common/math'
27
+
28
+ import {
29
+ BitReader,
30
+ type Uint8ArrayInterface
31
+ } from '@libmedia/common/io'
32
+
33
+ const DTSChannelTab = [1, 2, 2, 2, 2, 3, 3, 4, 4, 5, 6, 6, 6, 7, 8, 8]
34
+
35
+ const DTSSampleRateTab = [0, 8000, 16000, 32000, 0, 0, 11025, 22050, 44100, 0, 0, 12000, 24000, 48000, 96000, 192000]
36
+
37
+ const DTSBitrateTab = [32000, 56000, 64000, 96000, 112000, 128000, 192000, 224000, 256000, 320000, 384000, 448000,
38
+ 512000, 576000, 640000, 768000, 960000, 1024000, 1152000, 1280000, 1344000, 1408000, 1411200, 1472000, 1536000,
39
+ 1920000, 2048000, 3072000, 3840000, 0, 0, 0
40
+ ]
41
+
42
+ export const DTS_PCMBLOCK_SAMPLES = 32
43
+
44
+ export interface DTSHeaderInfo {
45
+ syncWord: uint32
46
+ frameType: int32
47
+ deficitSamples: int32
48
+ crcFlag: int32
49
+ sampleBlock: int32
50
+ frameSize: int32
51
+ channelIndex: int32
52
+ sampleRateIndex: int32
53
+ bitrateIndex: int32
54
+
55
+ channels: int32
56
+ sampleRate: int32
57
+ bitrate: int32
58
+ }
59
+
60
+ export function parseHeader(buf: Uint8ArrayInterface) {
61
+ const bitReader = new BitReader(buf.length)
62
+ bitReader.appendBuffer(buf)
63
+
64
+ const info: DTSHeaderInfo = {
65
+ syncWord: 0,
66
+ frameType: 0,
67
+ deficitSamples: 0,
68
+ crcFlag: 0,
69
+ sampleBlock: 0,
70
+ frameSize: 0,
71
+ channelIndex: 0,
72
+ sampleRateIndex: 0,
73
+ bitrateIndex: 0,
74
+
75
+ channels: 0,
76
+ sampleRate: 0,
77
+ bitrate: 0
78
+ }
79
+
80
+ info.syncWord = bitReader.readU(32)
81
+
82
+ if (info.syncWord !== 0x7ffe8001 && info.syncWord !== 0xfe7f0180) {
83
+ return -1
84
+ }
85
+
86
+ info.frameType = bitReader.readU1()
87
+ info.deficitSamples = bitReader.readU(5) + 1
88
+ info.crcFlag = bitReader.readU1()
89
+ info.sampleBlock = bitReader.readU(7) + 1
90
+ info.frameSize = align(bitReader.readU(14) + 1, 4)
91
+ info.channelIndex = bitReader.readU(6)
92
+ info.sampleRateIndex = bitReader.readU(4)
93
+ info.bitrateIndex = bitReader.readU(5)
94
+
95
+ info.channels = DTSChannelTab[info.channelIndex]
96
+ info.sampleRate = DTSSampleRateTab[info.sampleRateIndex]
97
+ info.bitrate = DTSBitrateTab[info.bitrateIndex]
98
+
99
+ return info
100
+ }
@@ -0,0 +1,118 @@
1
+ /*
2
+ * libmedia flac util
3
+ *
4
+ * 版权所有 (C) 2024 赵高兴
5
+ * Copyright (C) 2024 Gaoxing Zhao
6
+ *
7
+ * 此文件是 libmedia 的一部分
8
+ * This file is part of libmedia.
9
+ *
10
+ * libmedia 是自由软件;您可以根据 GNU Lesser General Public License(GNU LGPL)3.1
11
+ * 或任何其更新的版本条款重新分发或修改它
12
+ * libmedia is free software; you can redistribute it and/or
13
+ * modify it under the terms of the GNU Lesser General Public
14
+ * License as published by the Free Software Foundation; either
15
+ * version 3.1 of the License, or (at your option) any later version.
16
+ *
17
+ * libmedia 希望能够为您提供帮助,但不提供任何明示或暗示的担保,包括但不限于适销性或特定用途的保证
18
+ * 您应自行承担使用 libmedia 的风险,并且需要遵守 GNU Lesser General Public License 中的条款和条件。
19
+ * libmedia is distributed in the hope that it will be useful,
20
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
21
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
22
+ * Lesser General Public License for more details.
23
+ *
24
+ */
25
+
26
+ import { AVPacketSideDataType } from '../codec'
27
+ import type AVCodecParameters from '../struct/avcodecparameters'
28
+
29
+ import {
30
+ BufferReader,
31
+ type Uint8ArrayInterface
32
+ } from '@libmedia/common/io'
33
+
34
+ export const enum MetaDataBlockType {
35
+ STREAMINFO,
36
+ PADDING,
37
+ APPLICATION,
38
+ SEEKTABLE,
39
+ VORBIS_COMMENT,
40
+ CUESHEET,
41
+ PICTURE
42
+ }
43
+
44
+ export const enum FlacCHMode {
45
+ INDEPENDENT = 0,
46
+ LEFT_SIDE = 1,
47
+ RIGHT_SIDE = 2,
48
+ MID_SIDE = 3
49
+ }
50
+
51
+ export const FLAC_STREAMINFO_SIZE = 34
52
+ export const FLAC_MAX_CHANNELS = 8
53
+ export const FLAC_MIN_BLOCKSIZE = 16
54
+ export const FLAC_MAX_BLOCKSIZE = 65535
55
+ export const FLAC_MIN_FRAME_SIZE = 10
56
+
57
+ export const SampleSizeTable: number[] = [0, 8, 12, 0, 16, 20, 24, 32]
58
+
59
+ export const SampleRateTable: number[] = [
60
+ 0, 88200, 176400, 192000, 8000, 16000, 22050,
61
+ 24000, 32000, 44100, 48000, 96000,
62
+ 0, 0, 0, 0
63
+ ]
64
+
65
+ export const BlockSizeTable: number[] = [
66
+ 0, 192, 576 << 0, 576 << 1, 576 << 2, 576 << 3, 0, 0,
67
+ 256 << 0, 256 << 1, 256 << 2, 256 << 3, 256 << 4, 256 << 5, 256 << 6, 256 << 7
68
+ ]
69
+
70
+ export const enum FlacChmode {
71
+ FLAC_CHMODE_INDEPENDENT = 0,
72
+ FLAC_CHMODE_LEFT_SIDE = 1,
73
+ FLAC_CHMODE_RIGHT_SIDE = 2,
74
+ FLAC_CHMODE_MID_SIDE = 3,
75
+ }
76
+
77
+ export const enum FlacMetadataType {
78
+ FLAC_METADATA_TYPE_STREAMINFO = 0,
79
+ FLAC_METADATA_TYPE_PADDING,
80
+ FLAC_METADATA_TYPE_APPLICATION,
81
+ FLAC_METADATA_TYPE_SEEKTABLE,
82
+ FLAC_METADATA_TYPE_VORBIS_COMMENT,
83
+ FLAC_METADATA_TYPE_CUESHEET,
84
+ FLAC_METADATA_TYPE_PICTURE,
85
+ FLAC_METADATA_TYPE_INVALID = 127
86
+ }
87
+
88
+ export function parseAVCodecParameters(
89
+ stream: {
90
+ codecpar: AVCodecParameters,
91
+ sideData: Partial<Record<AVPacketSideDataType, Uint8Array>>,
92
+ },
93
+ extradata?: Uint8ArrayInterface
94
+ ) {
95
+ if (!extradata && stream.sideData[AVPacketSideDataType.AV_PKT_DATA_NEW_EXTRADATA]) {
96
+ extradata = stream.sideData[AVPacketSideDataType.AV_PKT_DATA_NEW_EXTRADATA]
97
+ }
98
+ if (extradata && extradata.length === FLAC_STREAMINFO_SIZE) {
99
+ const { bitsPerRawSample, sampleRate, channels } = getAVCodecParameters(extradata)
100
+ stream.codecpar.bitsPerRawSample = bitsPerRawSample
101
+ stream.codecpar.sampleRate = sampleRate
102
+ stream.codecpar.chLayout.nbChannels = channels
103
+ }
104
+ }
105
+
106
+ function getAVCodecParameters(extradata: Uint8ArrayInterface) {
107
+ const bufferReader = new BufferReader(extradata)
108
+ bufferReader.skip(10)
109
+ const value = bufferReader.readUint24()
110
+ const sampleRate = (value >> 4)
111
+ const channels = ((value & 0x0f) >>> 1) + 1
112
+ const bitPerSample = bufferReader.readUint8()
113
+ return {
114
+ sampleRate,
115
+ channels,
116
+ bitsPerRawSample: (((value & 0x01) << 4) | ((bitPerSample & 0xf0) >>> 4)) + 1
117
+ }
118
+ }