@libmedia/avutil 0.11.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 (579) hide show
  1. package/dist/cjs/AVStream.cjs +66 -0
  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} +22 -26
  17. package/dist/cjs/codecs/h264.js.map +1 -1
  18. package/dist/cjs/codecs/{hevc.js → hevc.cjs} +25 -26
  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} +27 -28
  35. package/dist/cjs/codecs/vvc.js.map +1 -1
  36. package/dist/cjs/constant.cjs +27 -0
  37. package/dist/cjs/constant.js.map +1 -1
  38. package/dist/cjs/{enum.js → enum.cjs} +39 -24
  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} +22 -22
  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.cjs +19 -0
  53. package/dist/cjs/function/avpacket2EncodedAudioChunk.js.map +1 -1
  54. package/dist/cjs/function/avpacket2EncodedVideoChunk.cjs +19 -0
  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.cjs +62 -0
  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} +17 -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} +19 -4
  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} +40 -6
  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} +34 -36
  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} +85 -90
  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 +258 -15
  155. package/dist/esm/AVStream.js +39 -11
  156. package/dist/esm/AVStream.js.map +1 -1
  157. package/dist/esm/audiosamplefmt.js.map +1 -1
  158. package/dist/esm/avformat.d.ts +4 -1
  159. package/dist/esm/avformat.js.map +1 -1
  160. package/dist/esm/codec.d.ts +65 -1
  161. package/dist/esm/codec.js.map +1 -1
  162. package/dist/esm/codecs/aac.d.ts +10 -5
  163. package/dist/esm/codecs/aac.js +2 -2
  164. package/dist/esm/codecs/aac.js.map +1 -1
  165. package/dist/esm/codecs/ac3.d.ts +1 -1
  166. package/dist/esm/codecs/ac3.js +1 -1
  167. package/dist/esm/codecs/ac3.js.map +1 -1
  168. package/dist/esm/codecs/av1.d.ts +3 -3
  169. package/dist/esm/codecs/av1.js +4 -6
  170. package/dist/esm/codecs/av1.js.map +1 -1
  171. package/dist/esm/codecs/dts.d.ts +1 -1
  172. package/dist/esm/codecs/dts.js +2 -2
  173. package/dist/esm/codecs/dts.js.map +1 -1
  174. package/dist/esm/codecs/flac.d.ts +3 -3
  175. package/dist/esm/codecs/flac.js +1 -1
  176. package/dist/esm/codecs/flac.js.map +1 -1
  177. package/dist/esm/codecs/h264.d.ts +6 -6
  178. package/dist/esm/codecs/h264.js +15 -21
  179. package/dist/esm/codecs/h264.js.map +1 -1
  180. package/dist/esm/codecs/hevc.d.ts +6 -6
  181. package/dist/esm/codecs/hevc.js +18 -18
  182. package/dist/esm/codecs/hevc.js.map +1 -1
  183. package/dist/esm/codecs/mp3.d.ts +4 -4
  184. package/dist/esm/codecs/mp3.js +1 -1
  185. package/dist/esm/codecs/mp3.js.map +1 -1
  186. package/dist/esm/codecs/mpeg4.d.ts +1 -1
  187. package/dist/esm/codecs/mpeg4.js +1 -1
  188. package/dist/esm/codecs/mpeg4.js.map +1 -1
  189. package/dist/esm/codecs/mpegvideo.d.ts +1 -1
  190. package/dist/esm/codecs/mpegvideo.js +1 -1
  191. package/dist/esm/codecs/mpegvideo.js.map +1 -1
  192. package/dist/esm/codecs/opus.d.ts +3 -3
  193. package/dist/esm/codecs/opus.js +2 -4
  194. package/dist/esm/codecs/opus.js.map +1 -1
  195. package/dist/esm/codecs/ttml.js +5 -11
  196. package/dist/esm/codecs/ttml.js.map +1 -1
  197. package/dist/esm/codecs/vp8.d.ts +4 -4
  198. package/dist/esm/codecs/vp8.js +2 -2
  199. package/dist/esm/codecs/vp8.js.map +1 -1
  200. package/dist/esm/codecs/vp9.d.ts +4 -4
  201. package/dist/esm/codecs/vp9.js +8 -10
  202. package/dist/esm/codecs/vp9.js.map +1 -1
  203. package/dist/esm/codecs/vvc.d.ts +6 -6
  204. package/dist/esm/codecs/vvc.js +18 -20
  205. package/dist/esm/codecs/vvc.js.map +1 -1
  206. package/dist/esm/constant.d.ts +6 -7
  207. package/dist/esm/constant.js +7 -9
  208. package/dist/esm/constant.js.map +1 -1
  209. package/dist/esm/enum.d.ts +147 -13
  210. package/dist/esm/enum.js +39 -24
  211. package/dist/esm/enum.js.map +1 -1
  212. package/dist/esm/error.js.map +1 -1
  213. package/dist/esm/function/analyzeAVFormat.d.ts +2 -2
  214. package/dist/esm/function/analyzeAVFormat.js.map +1 -1
  215. package/dist/esm/function/analyzeUrlIOLoader.d.ts +2 -2
  216. package/dist/esm/function/analyzeUrlIOLoader.js +2 -10
  217. package/dist/esm/function/analyzeUrlIOLoader.js.map +1 -1
  218. package/dist/esm/function/audioData2AVFrame.d.ts +1 -1
  219. package/dist/esm/function/audioData2AVFrame.js +6 -6
  220. package/dist/esm/function/audioData2AVFrame.js.map +1 -1
  221. package/dist/esm/function/avPCMBuffer2AVFrame.d.ts +2 -2
  222. package/dist/esm/function/avPCMBuffer2AVFrame.js +9 -9
  223. package/dist/esm/function/avPCMBuffer2AVFrame.js.map +1 -1
  224. package/dist/esm/function/avframe2AudioData.d.ts +1 -1
  225. package/dist/esm/function/avframe2AudioData.js +6 -8
  226. package/dist/esm/function/avframe2AudioData.js.map +1 -1
  227. package/dist/esm/function/avframe2VideoFrame.d.ts +3 -3
  228. package/dist/esm/function/avframe2VideoFrame.js +14 -79
  229. package/dist/esm/function/avframe2VideoFrame.js.map +1 -1
  230. package/dist/esm/function/avpacket2EncodedAudioChunk.d.ts +1 -1
  231. package/dist/esm/function/avpacket2EncodedAudioChunk.js +6 -7
  232. package/dist/esm/function/avpacket2EncodedAudioChunk.js.map +1 -1
  233. package/dist/esm/function/avpacket2EncodedVideoChunk.d.ts +1 -1
  234. package/dist/esm/function/avpacket2EncodedVideoChunk.js +6 -7
  235. package/dist/esm/function/avpacket2EncodedVideoChunk.js.map +1 -1
  236. package/dist/esm/function/compileResource.d.ts +1 -1
  237. package/dist/esm/function/compileResource.js +2 -4
  238. package/dist/esm/function/compileResource.js.map +1 -1
  239. package/dist/esm/function/constant/webcodecs.d.ts +5 -0
  240. package/dist/esm/function/constant/webcodecs.js +51 -0
  241. package/dist/esm/function/constant/webcodecs.js.map +1 -0
  242. package/dist/esm/function/encodedAudioChunk2AVPacket.d.ts +1 -1
  243. package/dist/esm/function/encodedAudioChunk2AVPacket.js +7 -7
  244. package/dist/esm/function/encodedAudioChunk2AVPacket.js.map +1 -1
  245. package/dist/esm/function/encodedVideoChunk2AVPacket.d.ts +1 -1
  246. package/dist/esm/function/encodedVideoChunk2AVPacket.js +12 -9
  247. package/dist/esm/function/encodedVideoChunk2AVPacket.js.map +1 -1
  248. package/dist/esm/function/getAudioCodec.d.ts +1 -1
  249. package/dist/esm/function/getAudioCodec.js +2 -2
  250. package/dist/esm/function/getAudioCodec.js.map +1 -1
  251. package/dist/esm/function/getAudioMimeType.d.ts +2 -0
  252. package/dist/esm/function/getAudioMimeType.js +12 -0
  253. package/dist/esm/function/getAudioMimeType.js.map +1 -0
  254. package/dist/esm/function/getHardwarePreference.js +1 -1
  255. package/dist/esm/function/getHardwarePreference.js.map +1 -1
  256. package/dist/esm/function/getVideoCodec.d.ts +1 -1
  257. package/dist/esm/function/getVideoCodec.js +11 -13
  258. package/dist/esm/function/getVideoCodec.js.map +1 -1
  259. package/dist/esm/function/getVideoMimeType.d.ts +2 -0
  260. package/dist/esm/function/getVideoMimeType.js +8 -0
  261. package/dist/esm/function/getVideoMimeType.js.map +1 -0
  262. package/dist/esm/function/getWasmUrl.d.ts +1 -1
  263. package/dist/esm/function/getWasmUrl.js +17 -2
  264. package/dist/esm/function/getWasmUrl.js.map +1 -1
  265. package/dist/esm/function/hasAlphaChannel.d.ts +1 -1
  266. package/dist/esm/function/hasAlphaChannel.js +2 -2
  267. package/dist/esm/function/hasAlphaChannel.js.map +1 -1
  268. package/dist/esm/function/isHdr.d.ts +1 -1
  269. package/dist/esm/function/isHdr.js +2 -2
  270. package/dist/esm/function/isHdr.js.map +1 -1
  271. package/dist/esm/function/videoFrame2AVFrame.d.ts +6 -6
  272. package/dist/esm/function/videoFrame2AVFrame.js +13 -74
  273. package/dist/esm/function/videoFrame2AVFrame.js.map +1 -1
  274. package/dist/esm/implement/AVFramePoolImpl.d.ts +3 -3
  275. package/dist/esm/implement/AVFramePoolImpl.js +5 -7
  276. package/dist/esm/implement/AVFramePoolImpl.js.map +1 -1
  277. package/dist/esm/implement/AVPCMBufferPoolImpl.d.ts +3 -3
  278. package/dist/esm/implement/AVPCMBufferPoolImpl.js +4 -6
  279. package/dist/esm/implement/AVPCMBufferPoolImpl.js.map +1 -1
  280. package/dist/esm/implement/AVPacketPoolImpl.d.ts +3 -3
  281. package/dist/esm/implement/AVPacketPoolImpl.js +5 -7
  282. package/dist/esm/implement/AVPacketPoolImpl.js.map +1 -1
  283. package/dist/esm/index.d.ts +54 -0
  284. package/dist/esm/index.js +98 -0
  285. package/dist/esm/index.js.map +1 -0
  286. package/dist/esm/internal.d.ts +26 -0
  287. package/dist/esm/internal.js +52 -0
  288. package/dist/esm/internal.js.map +1 -0
  289. package/dist/esm/pixelFormatDescriptor.d.ts +2 -1
  290. package/dist/esm/pixelFormatDescriptor.js +15 -0
  291. package/dist/esm/pixelFormatDescriptor.js.map +1 -1
  292. package/dist/esm/pixfmt.d.ts +9 -1
  293. package/dist/esm/pixfmt.js.map +1 -1
  294. package/dist/esm/sampleFormatDescriptor.d.ts +1 -1
  295. package/dist/esm/sampleFormatDescriptor.js.map +1 -1
  296. package/dist/esm/stringEnum.d.ts +30 -5
  297. package/dist/esm/stringEnum.js +43 -5
  298. package/dist/esm/stringEnum.js.map +1 -1
  299. package/dist/esm/struct/audiosample.d.ts +1 -1
  300. package/dist/esm/struct/audiosample.js +2 -2
  301. package/dist/esm/struct/audiosample.js.map +1 -1
  302. package/dist/esm/struct/avbuffer.d.ts +1 -1
  303. package/dist/esm/struct/avbuffer.js +4 -4
  304. package/dist/esm/struct/avbuffer.js.map +1 -1
  305. package/dist/esm/struct/avcodecparameters.d.ts +14 -9
  306. package/dist/esm/struct/avcodecparameters.js +14 -16
  307. package/dist/esm/struct/avcodecparameters.js.map +1 -1
  308. package/dist/esm/struct/avdict.js +2 -2
  309. package/dist/esm/struct/avdict.js.map +1 -1
  310. package/dist/esm/struct/avframe.d.ts +12 -12
  311. package/dist/esm/struct/avframe.js +21 -27
  312. package/dist/esm/struct/avframe.js.map +1 -1
  313. package/dist/esm/struct/avpacket.d.ts +4 -4
  314. package/dist/esm/struct/avpacket.js +7 -9
  315. package/dist/esm/struct/avpacket.js.map +1 -1
  316. package/dist/esm/struct/avpcmbuffer.d.ts +1 -1
  317. package/dist/esm/struct/avpcmbuffer.js +2 -2
  318. package/dist/esm/struct/avpcmbuffer.js.map +1 -1
  319. package/dist/esm/struct/avsubtitle.d.ts +2 -2
  320. package/dist/esm/struct/avsubtitle.js.map +1 -1
  321. package/dist/esm/struct/encryption.js +2 -2
  322. package/dist/esm/struct/encryption.js.map +1 -1
  323. package/dist/esm/struct/rational.d.ts +1 -1
  324. package/dist/esm/struct/rational.js +4 -4
  325. package/dist/esm/struct/rational.js.map +1 -1
  326. package/dist/esm/util/amf.d.ts +1 -4
  327. package/dist/esm/util/amf.js +1 -5
  328. package/dist/esm/util/amf.js.map +1 -1
  329. package/dist/esm/util/av1syntax.d.ts +1 -1
  330. package/dist/esm/util/av1syntax.js.map +1 -1
  331. package/dist/esm/util/avbuffer.d.ts +2 -1
  332. package/dist/esm/util/avbuffer.js +7 -15
  333. package/dist/esm/util/avbuffer.js.map +1 -1
  334. package/dist/esm/util/avdict.d.ts +2 -1
  335. package/dist/esm/util/avdict.js +12 -16
  336. package/dist/esm/util/avdict.js.map +1 -1
  337. package/dist/esm/util/avframe.d.ts +2 -1
  338. package/dist/esm/util/avframe.js +22 -24
  339. package/dist/esm/util/avframe.js.map +1 -1
  340. package/dist/esm/util/avpacket.d.ts +3 -3
  341. package/dist/esm/util/avpacket.js +11 -13
  342. package/dist/esm/util/avpacket.js.map +1 -1
  343. package/dist/esm/util/channel.d.ts +1 -1
  344. package/dist/esm/util/channel.js +6 -6
  345. package/dist/esm/util/channel.js.map +1 -1
  346. package/dist/esm/util/codecparameters.d.ts +3 -1
  347. package/dist/esm/util/codecparameters.js +16 -12
  348. package/dist/esm/util/codecparameters.js.map +1 -1
  349. package/dist/esm/util/common.js.map +1 -1
  350. package/dist/esm/util/encryption.d.ts +2 -2
  351. package/dist/esm/util/encryption.js +1 -3
  352. package/dist/esm/util/encryption.js.map +1 -1
  353. package/dist/esm/util/expgolomb.d.ts +1 -2
  354. package/dist/esm/util/expgolomb.js.map +1 -1
  355. package/dist/esm/util/intread.js +1 -1
  356. package/dist/esm/util/intread.js.map +1 -1
  357. package/dist/esm/util/intwrite.js +1 -1
  358. package/dist/esm/util/intwrite.js.map +1 -1
  359. package/dist/esm/util/mem.js +7 -7
  360. package/dist/esm/util/mem.js.map +1 -1
  361. package/dist/esm/util/nalu.d.ts +1 -1
  362. package/dist/esm/util/nalu.js +3 -5
  363. package/dist/esm/util/nalu.js.map +1 -1
  364. package/dist/esm/util/ntp.js.map +1 -1
  365. package/dist/esm/util/pcm.d.ts +1 -1
  366. package/dist/esm/util/pcm.js.map +1 -1
  367. package/dist/esm/util/pixel.d.ts +1 -1
  368. package/dist/esm/util/pixel.js +8 -10
  369. package/dist/esm/util/pixel.js.map +1 -1
  370. package/dist/esm/util/rational.d.ts +10 -10
  371. package/dist/esm/util/rational.js +4 -4
  372. package/dist/esm/util/rational.js.map +1 -1
  373. package/dist/esm/util/sample.d.ts +1 -1
  374. package/dist/esm/util/sample.js +7 -7
  375. package/dist/esm/util/sample.js.map +1 -1
  376. package/dist/esm/util/serialize.d.ts +9 -9
  377. package/dist/esm/util/serialize.js +6 -6
  378. package/dist/esm/util/serialize.js.map +1 -1
  379. package/package.json +23 -390
  380. package/src/AVStream.ts +677 -0
  381. package/src/audiosamplefmt.ts +302 -0
  382. package/src/avformat.ts +96 -0
  383. package/src/codec.ts +1016 -0
  384. package/src/codecs/aac.ts +429 -0
  385. package/src/codecs/ac3.ts +309 -0
  386. package/src/codecs/av1.ts +503 -0
  387. package/src/codecs/dts.ts +100 -0
  388. package/src/codecs/flac.ts +118 -0
  389. package/src/codecs/h264.ts +1013 -0
  390. package/src/codecs/hevc.ts +1049 -0
  391. package/src/codecs/mp3.ts +172 -0
  392. package/src/codecs/mpeg4.ts +37 -0
  393. package/src/codecs/mpegvideo.ts +49 -0
  394. package/src/codecs/opus.ts +148 -0
  395. package/src/codecs/ttml.ts +158 -0
  396. package/src/codecs/vp8.ts +91 -0
  397. package/src/codecs/vp9.ts +213 -0
  398. package/src/codecs/vvc.ts +1086 -0
  399. package/src/constant.ts +72 -0
  400. package/src/enum.ts +47 -0
  401. package/src/error.ts +45 -0
  402. package/src/function/analyzeAVFormat.ts +94 -0
  403. package/src/function/analyzeUrlIOLoader.ts +166 -0
  404. package/src/function/audioData2AVFrame.ts +82 -0
  405. package/src/function/avPCMBuffer2AVFrame.ts +111 -0
  406. package/src/function/avframe2AudioData.ts +131 -0
  407. package/src/function/avframe2VideoFrame.ts +88 -0
  408. package/src/function/avpacket2EncodedAudioChunk.ts +39 -0
  409. package/src/function/avpacket2EncodedVideoChunk.ts +39 -0
  410. package/src/function/compileResource.ts +57 -0
  411. package/src/function/constant/webcodecs.ts +81 -0
  412. package/src/function/encodedAudioChunk2AVPacket.ts +62 -0
  413. package/src/function/encodedVideoChunk2AVPacket.ts +86 -0
  414. package/src/function/getAudioCodec.ts +45 -0
  415. package/src/function/getAudioMimeType.ts +44 -0
  416. package/src/function/getHardwarePreference.ts +45 -0
  417. package/src/function/getVideoCodec.ts +244 -0
  418. package/src/function/getVideoMimeType.ts +35 -0
  419. package/src/function/getWasmUrl.ts +190 -0
  420. package/src/function/hasAlphaChannel.ts +37 -0
  421. package/src/function/isHdr.ts +44 -0
  422. package/src/function/videoFrame2AVFrame.ts +95 -0
  423. package/src/implement/AVFramePoolImpl.ts +83 -0
  424. package/src/implement/AVPCMBufferPoolImpl.ts +79 -0
  425. package/src/implement/AVPacketPoolImpl.ts +82 -0
  426. package/src/index.ts +264 -0
  427. package/src/internal.ts +71 -0
  428. package/src/pixelFormatDescriptor.ts +819 -0
  429. package/src/pixfmt.ts +1400 -0
  430. package/src/sampleFormatDescriptor.ts +57 -0
  431. package/src/stringEnum.ts +366 -0
  432. package/src/struct/audiosample.ts +95 -0
  433. package/src/struct/avbuffer.ts +139 -0
  434. package/src/struct/avcodecparameters.ts +243 -0
  435. package/src/struct/avdict.ts +44 -0
  436. package/src/struct/avframe.ts +663 -0
  437. package/src/struct/avpacket.ts +178 -0
  438. package/src/struct/avpcmbuffer.ts +77 -0
  439. package/src/struct/avsubtitle.ts +59 -0
  440. package/src/struct/encryption.ts +180 -0
  441. package/src/struct/rational.ts +43 -0
  442. package/src/util/amf.ts +178 -0
  443. package/src/util/av1syntax.ts +112 -0
  444. package/src/util/avbuffer.ts +294 -0
  445. package/src/util/avdict.ts +171 -0
  446. package/src/util/avframe.ts +520 -0
  447. package/src/util/avpacket.ts +313 -0
  448. package/src/util/channel.ts +66 -0
  449. package/src/util/codecparameters.ts +148 -0
  450. package/src/util/common.ts +42 -0
  451. package/src/util/encryption.ts +154 -0
  452. package/src/util/expgolomb.ts +170 -0
  453. package/src/util/intread.ts +60 -0
  454. package/src/util/intwrite.ts +71 -0
  455. package/src/util/mem.ts +60 -0
  456. package/src/util/nalu.ts +297 -0
  457. package/src/util/ntp.ts +32 -0
  458. package/src/util/pcm.ts +161 -0
  459. package/src/util/pixel.ts +381 -0
  460. package/src/util/rational.ts +152 -0
  461. package/src/util/sample.ts +136 -0
  462. package/src/util/serialize.ts +268 -0
  463. package/dist/cjs/AVStream.d.ts +0 -334
  464. package/dist/cjs/AVStream.js +0 -37
  465. package/dist/cjs/audiosamplefmt.d.ts +0 -248
  466. package/dist/cjs/avformat.d.ts +0 -63
  467. package/dist/cjs/codec.d.ts +0 -863
  468. package/dist/cjs/codecs/aac.d.ts +0 -121
  469. package/dist/cjs/codecs/ac3.d.ts +0 -72
  470. package/dist/cjs/codecs/av1.d.ts +0 -75
  471. package/dist/cjs/codecs/dts.d.ts +0 -17
  472. package/dist/cjs/codecs/flac.d.ts +0 -46
  473. package/dist/cjs/codecs/h264.d.ts +0 -188
  474. package/dist/cjs/codecs/hevc.d.ts +0 -220
  475. package/dist/cjs/codecs/mp3.d.ts +0 -17
  476. package/dist/cjs/codecs/mpeg4.d.ts +0 -7
  477. package/dist/cjs/codecs/mpegvideo.d.ts +0 -7
  478. package/dist/cjs/codecs/opus.d.ts +0 -26
  479. package/dist/cjs/codecs/ttml.d.ts +0 -9
  480. package/dist/cjs/codecs/ttml.js +0 -87
  481. package/dist/cjs/codecs/vp8.d.ts +0 -31
  482. package/dist/cjs/codecs/vp9.d.ts +0 -45
  483. package/dist/cjs/codecs/vvc.d.ts +0 -235
  484. package/dist/cjs/constant.d.ts +0 -35
  485. package/dist/cjs/constant.js +0 -27
  486. package/dist/cjs/enum.d.ts +0 -3159
  487. package/dist/cjs/error.d.ts +0 -10
  488. package/dist/cjs/function/analyzeAVFormat.d.ts +0 -3
  489. package/dist/cjs/function/analyzeUrlIOLoader.d.ts +0 -7
  490. package/dist/cjs/function/analyzeUrlIOLoader.js +0 -101
  491. package/dist/cjs/function/audioData2AVFrame.d.ts +0 -2
  492. package/dist/cjs/function/avPCMBuffer2AVFrame.d.ts +0 -3
  493. package/dist/cjs/function/avframe2AudioData.d.ts +0 -2
  494. package/dist/cjs/function/avframe2VideoFrame.d.ts +0 -5
  495. package/dist/cjs/function/avframe2VideoFrame.js +0 -146
  496. package/dist/cjs/function/avpacket2EncodedAudioChunk.d.ts +0 -2
  497. package/dist/cjs/function/avpacket2EncodedAudioChunk.js +0 -17
  498. package/dist/cjs/function/avpacket2EncodedVideoChunk.d.ts +0 -2
  499. package/dist/cjs/function/avpacket2EncodedVideoChunk.js +0 -17
  500. package/dist/cjs/function/compileResource.d.ts +0 -2
  501. package/dist/cjs/function/compileResource.js +0 -53
  502. package/dist/cjs/function/encodedAudioChunk2AVPacket.d.ts +0 -2
  503. package/dist/cjs/function/encodedAudioChunk2AVPacket.js +0 -23
  504. package/dist/cjs/function/encodedVideoChunk2AVPacket.d.ts +0 -7
  505. package/dist/cjs/function/encodedVideoChunk2AVPacket.js +0 -30
  506. package/dist/cjs/function/getAudioCodec.d.ts +0 -2
  507. package/dist/cjs/function/getHardwarePreference.d.ts +0 -1
  508. package/dist/cjs/function/getHardwarePreference.js +0 -16
  509. package/dist/cjs/function/getVideoCodec.d.ts +0 -2
  510. package/dist/cjs/function/getWasmUrl.d.ts +0 -2
  511. package/dist/cjs/function/hasAlphaChannel.d.ts +0 -2
  512. package/dist/cjs/function/isHdr.d.ts +0 -2
  513. package/dist/cjs/function/videoFrame2AVFrame.d.ts +0 -7
  514. package/dist/cjs/function/videoFrame2AVFrame.js +0 -113
  515. package/dist/cjs/implement/AVFramePoolImpl.d.ts +0 -10
  516. package/dist/cjs/implement/AVFramePoolImpl.js +0 -59
  517. package/dist/cjs/implement/AVPCMBufferPoolImpl.d.ts +0 -10
  518. package/dist/cjs/implement/AVPCMBufferPoolImpl.js +0 -57
  519. package/dist/cjs/implement/AVPacketPoolImpl.d.ts +0 -10
  520. package/dist/cjs/implement/AVPacketPoolImpl.js +0 -60
  521. package/dist/cjs/pixelFormatDescriptor.d.ts +0 -99
  522. package/dist/cjs/pixfmt.d.ts +0 -1293
  523. package/dist/cjs/sampleFormatDescriptor.d.ts +0 -6
  524. package/dist/cjs/stringEnum.d.ts +0 -136
  525. package/dist/cjs/struct/audiosample.d.ts +0 -64
  526. package/dist/cjs/struct/avbuffer.d.ts +0 -85
  527. package/dist/cjs/struct/avcodecparameters.d.ts +0 -176
  528. package/dist/cjs/struct/avdict.d.ts +0 -17
  529. package/dist/cjs/struct/avframe.d.ts +0 -559
  530. package/dist/cjs/struct/avpacket.d.ts +0 -124
  531. package/dist/cjs/struct/avpcmbuffer.d.ts +0 -49
  532. package/dist/cjs/struct/avsubtitle.d.ts +0 -30
  533. package/dist/cjs/struct/encryption.d.ts +0 -137
  534. package/dist/cjs/struct/rational.d.ts +0 -15
  535. package/dist/cjs/struct/rational.js +0 -43
  536. package/dist/cjs/util/amf.d.ts +0 -10
  537. package/dist/cjs/util/av1syntax.d.ts +0 -9
  538. package/dist/cjs/util/avbuffer.d.ts +0 -17
  539. package/dist/cjs/util/avbuffer.js +0 -153
  540. package/dist/cjs/util/avdict.d.ts +0 -8
  541. package/dist/cjs/util/avdict.js +0 -111
  542. package/dist/cjs/util/avframe.d.ts +0 -20
  543. package/dist/cjs/util/avpacket.d.ts +0 -24
  544. package/dist/cjs/util/channel.d.ts +0 -5
  545. package/dist/cjs/util/codecparameters.d.ts +0 -4
  546. package/dist/cjs/util/codecparameters.js +0 -70
  547. package/dist/cjs/util/common.d.ts +0 -3
  548. package/dist/cjs/util/crypto.d.ts +0 -1
  549. package/dist/cjs/util/crypto.js +0 -8
  550. package/dist/cjs/util/crypto.js.map +0 -1
  551. package/dist/cjs/util/encryption.d.ts +0 -6
  552. package/dist/cjs/util/expgolomb.d.ts +0 -26
  553. package/dist/cjs/util/intread.d.ts +0 -9
  554. package/dist/cjs/util/intwrite.d.ts +0 -9
  555. package/dist/cjs/util/mem.d.ts +0 -5
  556. package/dist/cjs/util/mem.js +0 -54
  557. package/dist/cjs/util/nalu.d.ts +0 -32
  558. package/dist/cjs/util/ntp.d.ts +0 -1
  559. package/dist/cjs/util/pcm.d.ts +0 -4
  560. package/dist/cjs/util/pixel.d.ts +0 -11
  561. package/dist/cjs/util/rational.d.ts +0 -58
  562. package/dist/cjs/util/sample.d.ts +0 -7
  563. package/dist/cjs/util/serialize.d.ts +0 -63
  564. package/dist/esm/util/crypto.d.ts +0 -1
  565. package/dist/esm/util/crypto.js +0 -4
  566. package/dist/esm/util/crypto.js.map +0 -1
  567. /package/dist/cjs/{audiosamplefmt.js → audiosamplefmt.cjs} +0 -0
  568. /package/dist/cjs/{avformat.js → avformat.cjs} +0 -0
  569. /package/dist/cjs/{codec.js → codec.cjs} +0 -0
  570. /package/dist/cjs/{error.js → error.cjs} +0 -0
  571. /package/dist/cjs/function/{analyzeAVFormat.js → analyzeAVFormat.cjs} +0 -0
  572. /package/dist/cjs/{pixfmt.js → pixfmt.cjs} +0 -0
  573. /package/dist/cjs/{sampleFormatDescriptor.js → sampleFormatDescriptor.cjs} +0 -0
  574. /package/dist/cjs/struct/{avsubtitle.js → avsubtitle.cjs} +0 -0
  575. /package/dist/cjs/util/{av1syntax.js → av1syntax.cjs} +0 -0
  576. /package/dist/cjs/util/{common.js → common.cjs} +0 -0
  577. /package/dist/cjs/util/{expgolomb.js → expgolomb.cjs} +0 -0
  578. /package/dist/cjs/util/{ntp.js → ntp.cjs} +0 -0
  579. /package/dist/cjs/util/{pcm.js → pcm.cjs} +0 -0
@@ -0,0 +1,178 @@
1
+ /*
2
+ * libmedia flv amf
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 {
27
+ is,
28
+ array,
29
+ object
30
+ } from '@libmedia/common'
31
+
32
+ import {
33
+ type IOReader,
34
+ type BufferReader,
35
+ type BufferWriter,
36
+ type IOWriterSync
37
+ } from '@libmedia/common/io'
38
+
39
+ export async function parseObject(ioReader: IOReader | BufferReader, endPos: bigint) {
40
+ const key = await ioReader.readString(await ioReader.readUint16())
41
+ const value = await parseValue(ioReader, endPos)
42
+ return {
43
+ key,
44
+ value
45
+ }
46
+ }
47
+
48
+ export async function parseValue(ioReader: IOReader | BufferReader, endPos: bigint) {
49
+ const type = await ioReader.readUint8()
50
+ let value: any
51
+
52
+ switch (type) {
53
+ // double
54
+ case 0:
55
+ value = await ioReader.readDouble()
56
+ break
57
+ // boolean
58
+ case 1:
59
+ value = await ioReader.readUint8() ? true : false
60
+ break
61
+ // string
62
+ case 2:
63
+ value = await ioReader.readString(await ioReader.readUint16())
64
+ break
65
+ // object
66
+ case 3:
67
+ value = {}
68
+ while (ioReader.getPos() < endPos) {
69
+ const { key, value: val } = await parseObject(ioReader, endPos)
70
+ value[key] = val
71
+ if (((await ioReader.peekUint24()) & 0x00FFFFFF) === 9) {
72
+ await ioReader.skip(3)
73
+ break
74
+ }
75
+ }
76
+ break
77
+ // ECMA array type (Mixed array)
78
+ case 8:
79
+ value = {}
80
+ // skip ECMAArrayLength(UI32)
81
+ await ioReader.skip(4)
82
+ while (ioReader.getPos() < endPos) {
83
+ const { key, value: val } = await parseObject(ioReader, endPos)
84
+ value[key] = val
85
+ if (((await ioReader.peekUint24()) & 0x00FFFFFF) === 9) {
86
+ await ioReader.skip(3)
87
+ break
88
+ }
89
+ }
90
+ break
91
+ // ScriptDataObjectEnd
92
+ case 9:
93
+ case 5:
94
+ value = null
95
+ break
96
+ // Strict array type
97
+ case 10:
98
+ value = []
99
+ const length = await ioReader.readUint32()
100
+ for (let i = 0; i < length; i++) {
101
+ value.push(await parseValue(ioReader, endPos))
102
+ }
103
+ break
104
+ // Date
105
+ case 11:
106
+ const timestamp = await ioReader.readDouble()
107
+ const localTimeOffset = await ioReader.readInt16()
108
+ value = new Date(timestamp + localTimeOffset * 60 * 1000)
109
+ break
110
+ // Long string type
111
+ case 12:
112
+ value = await ioReader.readString(await ioReader.readUint32())
113
+ break
114
+ default:
115
+
116
+ }
117
+
118
+ return value
119
+ }
120
+
121
+ export function writeValue(ioWriter: IOWriterSync | BufferWriter, value: any) {
122
+ // double
123
+ if (is.number(value)) {
124
+ ioWriter.writeUint8(0)
125
+ ioWriter.writeDouble(value)
126
+ }
127
+ else if (is.bigint(value)) {
128
+ ioWriter.writeUint8(0)
129
+ ioWriter.writeDouble(Number(value))
130
+ }
131
+ // boolean
132
+ else if (is.boolean(value)) {
133
+ ioWriter.writeUint8(1)
134
+ ioWriter.writeUint8(value ? 1 : 0)
135
+ }
136
+ // string
137
+ else if (is.string(value)) {
138
+ // long string
139
+ if (value.length >= 65536) {
140
+ ioWriter.writeUint8(12)
141
+ ioWriter.writeUint32(value.length)
142
+ ioWriter.writeString(value)
143
+ }
144
+ // string
145
+ else {
146
+ ioWriter.writeUint8(2)
147
+ ioWriter.writeUint16(value.length)
148
+ ioWriter.writeString(value)
149
+ }
150
+ }
151
+ // array type
152
+ else if (is.array(value)) {
153
+ ioWriter.writeUint8(10)
154
+ ioWriter.writeUint32(value.length)
155
+ array.each(value, (value) => {
156
+ writeValue(ioWriter, value)
157
+ })
158
+ }
159
+ // object
160
+ else if (is.object(value)) {
161
+ ioWriter.writeUint8(3)
162
+ object.each(value, (item, key) => {
163
+ ioWriter.writeUint16(key.length)
164
+ ioWriter.writeString(key)
165
+ writeValue(ioWriter, item)
166
+ })
167
+ // object end flag
168
+ ioWriter.writeUint24(9)
169
+ }
170
+ else if (value instanceof Date) {
171
+ ioWriter.writeUint8(11)
172
+ ioWriter.writeDouble(value.getTime())
173
+ ioWriter.writeInt16(0)
174
+ }
175
+ else if (value == null) {
176
+ ioWriter.writeUint8(5)
177
+ }
178
+ }
@@ -0,0 +1,112 @@
1
+ /*
2
+ * libmedia av1 syntax 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 {
27
+ type BitReader
28
+ } from '@libmedia/common/io'
29
+
30
+ export function f(bitReader: BitReader, n: number) {
31
+ let x = 0
32
+ for (let i = 0; i < n; i++ ) {
33
+ x = 2 * x + bitReader.readU1()
34
+ }
35
+ return x
36
+ }
37
+
38
+ export function uvlc(bitReader: BitReader) {
39
+ let leadingZeros = 0
40
+ while (true) {
41
+ let done = f(bitReader, 1)
42
+ if (done) {
43
+ break
44
+ }
45
+ leadingZeros++
46
+ }
47
+ if (leadingZeros >= 32) {
48
+ return (1 << 32) - 1
49
+ }
50
+ const value = f(bitReader, leadingZeros)
51
+ return value + (1 << leadingZeros) - 1
52
+ }
53
+
54
+ export function le(bitReader: BitReader, n: number) {
55
+ let t = 0
56
+ for (let i = 0; i < n; i++) {
57
+ let byte = f(bitReader, 8)
58
+ t += (byte << (i * 8))
59
+ }
60
+ return t
61
+ }
62
+
63
+ export function leb128(bitReader: BitReader) {
64
+ let value = 0
65
+ for (let i = 0; i < 8; i++ ) {
66
+ let next = f(bitReader, 8)
67
+ value |= ((next & 0x7f) << (i * 7))
68
+ if (!(next & 0x80)) {
69
+ break
70
+ }
71
+ }
72
+ return value
73
+ }
74
+
75
+ export function su(bitReader: BitReader, n: number) {
76
+ let value = f(bitReader, n)
77
+ let signMask = 1 << (n - 1)
78
+ if (value & signMask) {
79
+ value = value - 2 * signMask
80
+ }
81
+ return value
82
+ }
83
+
84
+ export function ns(bitReader: BitReader, n: number) {
85
+ let w = Math.floor(Math.log2(n)) + 1
86
+ let m = (1 << w) - n
87
+ let v = f(bitReader, w - 1)
88
+ if (v < m) {
89
+ return v
90
+ }
91
+ let extraBit = f(bitReader, 1)
92
+ return (v << 1) - m + extraBit
93
+ }
94
+
95
+ export function L(bitReader: BitReader, n: number) {
96
+ let x = 0
97
+ for (let i = 0 ; i < n; i++ ) {
98
+ x = 2 * x + bitReader.readU1()
99
+ }
100
+ return x
101
+ }
102
+
103
+ export function NS(bitReader: BitReader, n: number) {
104
+ let w = Math.floor(Math.log2(n)) + 1
105
+ let m = (1 << w) - n
106
+ let v = L(bitReader, w - 1)
107
+ if (v < m) {
108
+ return v
109
+ }
110
+ let extraBit = L(bitReader, 1)
111
+ return (v << 1) - m + extraBit
112
+ }
@@ -0,0 +1,294 @@
1
+ /*
2
+ * libmedia avbuffer 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 { avFree, avFreep, avMalloc, avMallocz, avRealloc } from './mem'
27
+ import type { AVBufferPool, BufferPoolEntry } from '../struct/avbuffer'
28
+ import { AVBuffer, AVBufferRef, AVBufferFlags } from '../struct/avbuffer'
29
+
30
+ import {
31
+ stack,
32
+ mutex,
33
+ memcpy,
34
+ memset,
35
+ atomics
36
+ } from '@libmedia/cheap'
37
+
38
+ const BUFFER_FLAG_REALLOCATABLE = 1
39
+
40
+ const enum BufferFlags {
41
+ BUFFER_FLAG_REALLOCATABLE = 1,
42
+ BUFFER_FLAG_NO_FREE = 2
43
+ }
44
+
45
+ export function bufferCreate(
46
+ buf: pointer<AVBuffer>,
47
+ data: pointer<uint8>,
48
+ size: size,
49
+ free: pointer<(opaque: pointer<void>, data: pointer<uint8>) => void> = nullptr,
50
+ opaque: pointer<void> = nullptr,
51
+ flags: int32 = 0
52
+ ): pointer<AVBufferRef> {
53
+ buf.data = data
54
+ buf.size = size
55
+ buf.free = free
56
+ buf.opaque = opaque
57
+
58
+ atomics.store(addressof(buf.refcount), 1)
59
+ buf.flags = flags
60
+
61
+ const ref = avMallocz(sizeof(AVBufferRef)) as pointer<AVBufferRef>
62
+
63
+ if (!ref) {
64
+ return nullptr
65
+ }
66
+
67
+ ref.buffer = buf
68
+ ref.data = data
69
+ ref.size = size
70
+ return ref
71
+ }
72
+
73
+ export function avbufferCreate(
74
+ data: pointer<uint8>,
75
+ size: size,
76
+ free: pointer<(opaque: pointer<void>, data: pointer<uint8>) => void> = nullptr,
77
+ opaque: pointer<void> = nullptr,
78
+ flags: int32 = 0
79
+ ): pointer<AVBufferRef> {
80
+ const buf = avMallocz(sizeof(AVBuffer)) as pointer<AVBuffer>
81
+ if (!buf) {
82
+ return nullptr
83
+ }
84
+
85
+ const ref = bufferCreate(buf, data, size, free, opaque, flags)
86
+
87
+ if (!ref) {
88
+ avFree(buf)
89
+ return nullptr
90
+ }
91
+
92
+ return ref
93
+ }
94
+
95
+ export function avbufferAlloc(size: size) {
96
+ const data = reinterpret_cast<pointer<uint8>>(avMalloc(size))
97
+ return avbufferCreate(data, size)
98
+ }
99
+
100
+ export function avbufferAllocz(size: size) {
101
+ const p = avbufferAlloc(size)
102
+ memset(p.data, 0, size)
103
+ return p
104
+ }
105
+
106
+ export function avbufferRef(buf: pointer<AVBufferRef>) {
107
+ const ref: pointer<AVBufferRef> = reinterpret_cast<pointer<AVBufferRef>>(avMallocz(sizeof(AVBufferRef)))
108
+ // @ts-ignore
109
+ accessof(ref) <- accessof(buf)
110
+ atomics.add(addressof(buf.buffer.refcount), 1)
111
+ return ref
112
+ }
113
+
114
+ export function bufferReplace(dst: pointer<pointer<AVBufferRef>>, src: pointer<pointer<AVBufferRef>>) {
115
+ const buf = accessof(dst).buffer
116
+ if (src) {
117
+ // @ts-ignore
118
+ accessof(accessof(dst)) <- accessof(accessof(src))
119
+ avFreep(src)
120
+ }
121
+ else {
122
+ avFreep(dst)
123
+ }
124
+ if (atomics.sub(addressof(buf.refcount), 1) === 1) {
125
+ const freeAVBuffer = !(buf.flagsInternal & BufferFlags.BUFFER_FLAG_NO_FREE)
126
+ if (buf.opaque) {
127
+ poolReleaseBuffer(buf.opaque, buf.data)
128
+ }
129
+ else {
130
+ avFree(buf.data)
131
+ }
132
+ if (freeAVBuffer) {
133
+ avFree(buf)
134
+ }
135
+ }
136
+ }
137
+
138
+ export function avbufferUnref(buf: pointer<pointer<AVBufferRef>>) {
139
+ if (!buf || !accessof(buf)) {
140
+ return
141
+ }
142
+ bufferReplace(buf, nullptr)
143
+ }
144
+
145
+ export function avbufferIsWritable(buf: pointer<AVBufferRef>) {
146
+ if (buf.buffer.flags & AVBufferFlags.READONLY) {
147
+ return 0
148
+ }
149
+ return atomics.load(addressof(buf.buffer.refcount)) === 1 ? 1 : 0
150
+ }
151
+
152
+ export function avbufferGetOpaque(buf: pointer<AVBufferRef>) {
153
+ return buf.buffer.opaque
154
+ }
155
+
156
+ export function avbufferGetRefCount(buf: pointer<AVBufferRef>) {
157
+ return atomics.load(addressof(buf.buffer.refcount))
158
+ }
159
+
160
+ export function avbufferMakeWritable(pbuf: pointer<pointer<AVBufferRef>>) {
161
+
162
+ const buf = accessof(pbuf)
163
+
164
+ if (!buf) {
165
+ return -1
166
+ }
167
+
168
+ if (avbufferIsWritable(buf)) {
169
+ return 0
170
+ }
171
+
172
+ const newbuf = avbufferAlloc(buf.size)
173
+
174
+ memcpy(newbuf.data, buf.data, buf.size)
175
+
176
+ let newbufp = reinterpret_cast<pointer<pointer<AVBufferRef>>>(stack.malloc(sizeof(pointer)))
177
+ accessof(newbufp) <- newbuf
178
+
179
+ bufferReplace(pbuf, newbufp)
180
+
181
+ stack.free(sizeof(pointer))
182
+
183
+ return 0
184
+ }
185
+
186
+ export function avbufferReplace(pdst: pointer<pointer<AVBufferRef>>, src: pointer<AVBufferRef>) {
187
+ const dst = accessof(pdst)
188
+
189
+ if (!src) {
190
+ avbufferUnref(pdst)
191
+ return 0
192
+ }
193
+
194
+ if (dst && dst.data === src.data) {
195
+ dst.data = src.data
196
+ dst.size = src.size
197
+ return 0
198
+ }
199
+
200
+ const tmp = avbufferRef(src)
201
+
202
+ avbufferUnref(pdst)
203
+
204
+ accessof(pdst) <- tmp
205
+
206
+ return 0
207
+ }
208
+
209
+ export function avbufferRealloc(pdst: pointer<pointer<AVBufferRef>>, size: size) {
210
+ if (!accessof(pdst)) {
211
+ const data = reinterpret_cast<pointer<uint8>>(avRealloc(nullptr, size))
212
+
213
+ const buf = avbufferCreate(data, size)
214
+
215
+ accessof(pdst) <- buf
216
+
217
+ buf.buffer.flagsInternal |= BUFFER_FLAG_REALLOCATABLE
218
+
219
+ return 0
220
+ }
221
+
222
+ const ref = accessof(pdst)
223
+ const buf = ref.buffer
224
+
225
+ if (ref.size === size) {
226
+ return 0
227
+ }
228
+
229
+ if (!(buf.flagsInternal & BUFFER_FLAG_REALLOCATABLE)
230
+ || !avbufferIsWritable(ref)
231
+ || ref.data !== buf.data
232
+ ) {
233
+ let newRef = reinterpret_cast<pointer<pointer<AVBufferRef>>>(stack.malloc(sizeof(pointer)))
234
+ accessof(newRef) <- nullptr
235
+
236
+ const ret = avbufferRealloc(newRef, size)
237
+ if (ret < 0) {
238
+ stack.free(sizeof(pointer))
239
+ return ret
240
+ }
241
+ memcpy(accessof(newRef).data, buf.data, Math.min(size, buf.size))
242
+
243
+ bufferReplace(pdst, newRef)
244
+
245
+ stack.free(sizeof(pointer))
246
+ return 0
247
+ }
248
+
249
+ const tmp = reinterpret_cast<pointer<uint8>>(avRealloc(buf.data, size))
250
+
251
+ ref.data = buf.data = tmp
252
+ ref.size = buf.size = size
253
+
254
+ return 0
255
+ }
256
+
257
+ export function bufferPoolFlush(pool: pointer<AVBufferPool>) {
258
+ while (pool.pool) {
259
+ const buf = reinterpret_cast<pointer<BufferPoolEntry>>(pool.pool)
260
+ pool.pool = buf.next
261
+
262
+ if (buf.opaque) {
263
+ poolReleaseBuffer(buf.opaque, buf.data)
264
+ }
265
+ else {
266
+ avFree(buf.data)
267
+ }
268
+ avFree(buf)
269
+ }
270
+ }
271
+
272
+ export function bufferPoolFree(pool: pointer<AVBufferPool>) {
273
+ bufferPoolFlush(pool)
274
+
275
+ mutex.destroy(addressof(pool.mutex))
276
+
277
+ avFree(pool)
278
+ }
279
+
280
+ export function poolReleaseBuffer(opaque: pointer<void>, data: pointer<void>) {
281
+ const buf = reinterpret_cast<pointer<BufferPoolEntry>>(opaque)
282
+ const pool = buf.pool
283
+
284
+ mutex.lock(addressof(pool.mutex))
285
+
286
+ buf.next = pool.pool
287
+ pool.pool = buf
288
+
289
+ mutex.unlock(addressof(pool.mutex))
290
+
291
+ if (atomics.sub(addressof(pool.refcount), 1) === 1) {
292
+ bufferPoolFree(pool)
293
+ }
294
+ }