@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,172 @@
1
+ /*
2
+ * libmedia mp3 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 { NOPTS_VALUE } from '../constant'
27
+ import type AVCodecParameters from '../struct/avcodecparameters'
28
+ import type { AVPacketSideDataType } from '../codec'
29
+
30
+ import {
31
+ type Uint8ArrayInterface
32
+ } from '@libmedia/common/io'
33
+
34
+ const MpegAudioV10SampleRateTable = [44100, 48000, 32000, 0]
35
+
36
+ const MpegAudioV20SampleRateTable = [22050, 24000, 16000, 0]
37
+
38
+ const MpegAudioV25SampleRateTable = [11025, 12000, 8000, 0]
39
+
40
+ const MpegAudioV10FrameSizeTable = [0, 1152, 1152, 384]
41
+
42
+ const MpegAudioV20FrameSizeTable = [0, 576, 1152, 384]
43
+
44
+ const MpegAudioV25FrameSizeTable = [0, 576, 1152, 384]
45
+
46
+ const MpegAudioV1L1BitRateTable = [0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, -1]
47
+
48
+ const MpegAudioV1L2BitRateTable = [0, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384, -1]
49
+
50
+ const MpegAudioV1L3BitRateTable = [0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, -1]
51
+
52
+ const MpegAudioV2L1BitRateTable = [0, 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256, -1]
53
+
54
+ const MpegAudioV2L2L3BitRateTable = [0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160, -1]
55
+
56
+ export function getSampleRateByVersionIndex(version: number, samplingFreqIndex: number) {
57
+ switch (version) {
58
+ case 0:
59
+ // MPEG 2.5
60
+ return MpegAudioV25SampleRateTable[samplingFreqIndex]
61
+ case 2:
62
+ // MPEG 2
63
+ return MpegAudioV20SampleRateTable[samplingFreqIndex]
64
+ case 3:
65
+ // MPEG 1
66
+ return MpegAudioV10SampleRateTable[samplingFreqIndex]
67
+ }
68
+ return NOPTS_VALUE
69
+ }
70
+
71
+ export function getFrameSizeByVersionLayer(version: number, layer: number) {
72
+ switch (version) {
73
+ case 0:
74
+ // MPEG 2.5
75
+ return MpegAudioV25FrameSizeTable[layer]
76
+ case 2:
77
+ // MPEG 2
78
+ return MpegAudioV20FrameSizeTable[layer]
79
+ case 3:
80
+ // MPEG 1
81
+ return MpegAudioV10FrameSizeTable[layer]
82
+ }
83
+ return NOPTS_VALUE
84
+ }
85
+
86
+ export function getBitRateByVersionLayerIndex(version: number, layer: number, index: number) {
87
+
88
+ switch (layer) {
89
+ // layer3
90
+ case 1:
91
+ switch (version) {
92
+ case 0:
93
+ case 2:
94
+ return MpegAudioV2L2L3BitRateTable[index]
95
+ case 3:
96
+ return MpegAudioV1L3BitRateTable[index]
97
+ }
98
+ break
99
+ // layer2
100
+ case 2:
101
+ switch (version) {
102
+ case 0:
103
+ case 2:
104
+ return MpegAudioV2L2L3BitRateTable[index]
105
+ case 3:
106
+ return MpegAudioV1L2BitRateTable[index]
107
+ }
108
+ // layer1
109
+ case 3:
110
+ switch (version) {
111
+ case 0:
112
+ case 2:
113
+ return MpegAudioV2L1BitRateTable[index]
114
+ case 3:
115
+ return MpegAudioV1L1BitRateTable[index]
116
+ }
117
+ }
118
+ return NOPTS_VALUE
119
+ }
120
+
121
+ export function getProfileByLayer(layer: number) {
122
+ switch (layer) {
123
+ case 1:
124
+ // Layer 3
125
+ return 34
126
+ case 2:
127
+ // Layer 2
128
+ return 33
129
+ case 3:
130
+ // Layer 1
131
+ return 32
132
+ }
133
+ return NOPTS_VALUE
134
+ }
135
+
136
+ export const enum MP3Profile {
137
+ Layer1 = 32,
138
+ Layer2 = 33,
139
+ Layer3 = 34
140
+ }
141
+
142
+ export const MP3Profile2Name: Record<MP3Profile, string> = {
143
+ [MP3Profile.Layer1]: 'Layer1',
144
+ [MP3Profile.Layer2]: 'Layer2',
145
+ [MP3Profile.Layer3]: 'Layer3'
146
+ }
147
+
148
+
149
+ export function parseAVCodecParameters(
150
+ stream: {
151
+ codecpar: AVCodecParameters,
152
+ sideData: Partial<Record<AVPacketSideDataType, Uint8Array>>,
153
+ },
154
+ buffer?: Uint8ArrayInterface
155
+ ) {
156
+ if (buffer && buffer.length >= 4) {
157
+ const ver = (buffer[1] >>> 3) & 0x03
158
+ const layer = (buffer[1] & 0x06) >> 1
159
+ // const bitrateIndex = (buffer[2] & 0xF0) >>> 4
160
+ const samplingFreqIndex = (buffer[2] & 0x0C) >>> 2
161
+
162
+ const channelMode = (buffer[3] >>> 6) & 0x03
163
+
164
+ const channelCount = channelMode !== 3 ? 2 : 1
165
+ const profile = getProfileByLayer(layer)
166
+ const sampleRate = getSampleRateByVersionIndex(ver, samplingFreqIndex)
167
+
168
+ stream.codecpar.profile = profile
169
+ stream.codecpar.sampleRate = sampleRate
170
+ stream.codecpar.chLayout.nbChannels = channelCount
171
+ }
172
+ }
@@ -0,0 +1,37 @@
1
+ /*
2
+ * libmedia mpeg4 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 type AVPacket from '../struct/avpacket'
27
+
28
+ export const enum Mpeg4PictureType {
29
+ I = 0,
30
+ P,
31
+ B
32
+ }
33
+
34
+ export function isIDR(avpacket: pointer<AVPacket>) {
35
+ const byte = accessof(reinterpret_cast<pointer<uint8>>(avpacket.data + 4))
36
+ return (byte >>> 6) === Mpeg4PictureType.I
37
+ }
@@ -0,0 +1,49 @@
1
+ /*
2
+ * libmedia mpegvideo 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 type AVPacket from '../struct/avpacket'
27
+ import { getAVPacketData } from '../util/avpacket'
28
+
29
+ export const enum MpegVideoPictureType {
30
+ I = 1,
31
+ P,
32
+ B
33
+ }
34
+
35
+ export function isIDR(avpacket: pointer<AVPacket>) {
36
+ const data = getAVPacketData(avpacket)
37
+
38
+ for (let i = 0; i < data.length - 6; i++) {
39
+ if (data[i] === 0
40
+ && data[i + 1] === 0
41
+ && data[i + 2] === 1
42
+ && data[i + 3] === 0
43
+ ) {
44
+ const picType = (data[i + 5] >> 3) & 7
45
+ return picType === MpegVideoPictureType.I
46
+ }
47
+ }
48
+ return false
49
+ }
@@ -0,0 +1,148 @@
1
+ /*
2
+ * libmedia opus 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
+ import { avRescaleQ } from '../util/rational'
29
+
30
+ import {
31
+ BufferReader,
32
+ BufferWriter,
33
+ type Uint8ArrayInterface
34
+ } from '@libmedia/common/io'
35
+
36
+ export const durations = [
37
+ /* Silk NB */
38
+ 480, 960, 1920, 2880,
39
+ /* Silk MB */
40
+ 480, 960, 1920, 2880,
41
+ /* Silk WB */
42
+ 480, 960, 1920, 2880,
43
+ /* Hybrid SWB */
44
+ 480, 960,
45
+ /* Hybrid FB */
46
+ 480, 960,
47
+ /* CELT NB */
48
+ 120, 240, 480, 960,
49
+ /* CELT NB */
50
+ 120, 240, 480, 960,
51
+ /* CELT NB */
52
+ 120, 240, 480, 960,
53
+ /* CELT NB */
54
+ 120, 240, 480, 960
55
+ ]
56
+
57
+
58
+ export function getBufferSamples(buffer: Uint8Array) {
59
+ let toc = 0, frameDuration = 0, nframes = 0
60
+
61
+ if (buffer.length < 1) {
62
+ return 0
63
+ }
64
+
65
+ toc = buffer[0]
66
+
67
+ frameDuration = durations[toc >> 3]
68
+
69
+ switch (toc & 3) {
70
+ case 0:
71
+ nframes = 1
72
+ break
73
+ case 1:
74
+ nframes = 2
75
+ break
76
+ case 2:
77
+ nframes = 2
78
+ break
79
+ case 3:
80
+ if (buffer.length < 2) {
81
+ return 0
82
+ }
83
+ nframes = buffer[1] & 63
84
+ break
85
+ }
86
+ return nframes * frameDuration
87
+ }
88
+
89
+ /**
90
+ * opus extradata
91
+ *
92
+ * - 8 bytes Magic Signature: OpusHead
93
+ * - 1 bytes unsigned, 对应值 0x01 version
94
+ * - 1 bytes unsigned, channels 它可能和编码声道数不一致, 它可能被修改成 packet-by-packet, 对应值 0x01
95
+ * - 2 bytes unsigned, preSkip 这是要从开始播放时的解码器输出, 从页面的颗粒位置减去以计算其 PCM 样本位置。
96
+ * - 4 bytes unsigned, sampleRate 原始输入采样率
97
+ * - 2 bytes signed, outputGain 这是解码时要应用的增益, 20 * log10 缩放解码器输出以实现所需的播放音量
98
+ * - 1 bytes unsigned, channelMappingFamily 指示输出渠道的顺序和语音含义。该八位位组的每个当前指定的值表示一个映射系列,它定义了一组允许的通道数,以及每个允许的通道数的通道名称的有序集合
99
+ * - channelMappingTable 可选, 当 Channel Mapping Family 为 0 时被省略。
100
+ * - 1 bytes, streamCount, unsigned ogg packet 里面编码了多少路 stream
101
+ * - 1 bytes, coupledStreamCount, unsigned 标识有多少路流是双声声道,必须小于 streamCount
102
+ * - C bytes, C 为总输出声道数 coupledStreamCount + streamCount
103
+ *
104
+ */
105
+ export function parseAVCodecParameters(
106
+ stream: {
107
+ codecpar: AVCodecParameters,
108
+ sideData: Partial<Record<AVPacketSideDataType, Uint8Array>>,
109
+ },
110
+ extradata?: Uint8ArrayInterface
111
+ ) {
112
+ if (!extradata && stream.sideData[AVPacketSideDataType.AV_PKT_DATA_NEW_EXTRADATA]) {
113
+ extradata = stream.sideData[AVPacketSideDataType.AV_PKT_DATA_NEW_EXTRADATA]
114
+ }
115
+ if (extradata && extradata.length >= 19) {
116
+ const reader = new BufferReader(extradata, false)
117
+ reader.skip(9)
118
+ stream.codecpar.chLayout.nbChannels = reader.readUint8()
119
+ stream.codecpar.initialPadding = reader.readUint16()
120
+ stream.codecpar.sampleRate = reader.readUint32()
121
+
122
+ stream.codecpar.seekPreroll = Number(avRescaleQ(
123
+ 80n,
124
+ {
125
+ den: 1000,
126
+ num: 1
127
+ },
128
+ {
129
+ den: 48000,
130
+ num: 1
131
+ }
132
+ ))
133
+ }
134
+ }
135
+
136
+ export function avCodecParameters2Extradata(codecpar: AVCodecParameters) {
137
+ const extradata = new Uint8Array(19)
138
+
139
+ const writer = new BufferWriter(extradata, false)
140
+
141
+ writer.writeString('OpusHead')
142
+ writer.writeUint8(0x01)
143
+ writer.writeUint8(codecpar.chLayout.nbChannels)
144
+ writer.writeUint16(codecpar.initialPadding)
145
+ writer.writeUint32(codecpar.sampleRate)
146
+
147
+ return extradata
148
+ }
@@ -0,0 +1,158 @@
1
+
2
+ import {
3
+ array,
4
+ is,
5
+ xml2Json,
6
+ time
7
+ } from '@libmedia/common'
8
+
9
+ interface Span {
10
+ context: string | (string | { tagName: string, context?: string } )[]
11
+ region?: string
12
+ begin: string
13
+ end?: string
14
+ br?: string
15
+ }
16
+
17
+ interface P {
18
+ begin: string
19
+ end?: string
20
+ dur?: string
21
+ context: string | (string | { tagName: string, context?: string } )[]
22
+ region?: string
23
+ span?: Span | Span[]
24
+ }
25
+
26
+ export function parse(text: string) {
27
+ const xml = xml2Json(text, {
28
+ aloneValueName: 'context'
29
+ })
30
+
31
+ if (!xml.tt) {
32
+ return {
33
+ queue: [],
34
+ head: {}
35
+ }
36
+ }
37
+
38
+ const queue: {
39
+ pts: int64
40
+ duration: int64
41
+ context: string
42
+ region: string
43
+ }[] = []
44
+
45
+ function formatContext(list: (string | { tagName: string, context?: string } )[]) {
46
+ let context = ''
47
+ array.each(list, ((c) => {
48
+ if (is.string(c)) {
49
+ context += c
50
+ }
51
+ else {
52
+ if (c.context) {
53
+ context += `<${c.tagName}>${c.context}</${c.tagName}>`
54
+ }
55
+ else {
56
+ context += `<${c.tagName}/>`
57
+ }
58
+ }
59
+ }))
60
+ return context
61
+ }
62
+
63
+ function add(p: P, start: string, end: string) {
64
+ let pts = time.hhColonDDColonSSDotMill2Int64(start || p.begin)
65
+
66
+ let context = p.context || ''
67
+ let region = p.region || 'Default'
68
+ let spanEnd = ''
69
+
70
+ if (is.array(context)) {
71
+ context = formatContext(context)
72
+ }
73
+ if (is.array(p.span)) {
74
+ array.each(p.span, (span) => {
75
+ if (span.context) {
76
+ if (pts === -1n && span.begin) {
77
+ pts = time.hhColonDDColonSSDotMill2Int64(span.begin)
78
+ }
79
+ if (!region && span.region) {
80
+ region = span.region
81
+ }
82
+ if (is.string(span.context)) {
83
+ context += span.context
84
+ if (span.br) {
85
+ context += '<br>'
86
+ }
87
+ }
88
+ else {
89
+ context += formatContext(span.context)
90
+ if (span.br) {
91
+ context += '<br>'
92
+ }
93
+ }
94
+ }
95
+ if (span.end) {
96
+ spanEnd = span.end
97
+ }
98
+ })
99
+ }
100
+ else if (p.span) {
101
+ if (p.span.context) {
102
+ if (pts === -1n && p.span.begin) {
103
+ pts = time.hhColonDDColonSSDotMill2Int64(p.span.begin)
104
+ }
105
+ if (!region && p.span.region) {
106
+ region = p.span.region
107
+ }
108
+ if (is.string(p.span.context)) {
109
+ context += p.span.context
110
+ }
111
+ else {
112
+ context += formatContext(p.span.context)
113
+ }
114
+ }
115
+ if (p.span.end) {
116
+ spanEnd = p.span.end
117
+ }
118
+ }
119
+ queue.push({
120
+ context,
121
+ pts,
122
+ region: region,
123
+ duration: p.dur ? time.hhColonDDColonSSDotMill2Int64(p.dur) : (time.hhColonDDColonSSDotMill2Int64(end || p.end || spanEnd) - pts)
124
+ })
125
+ }
126
+
127
+ function praseP(p: P | P[], start: string, end: string) {
128
+ if (is.array(p)) {
129
+ array.each(p, (_) => {
130
+ add(_, start, end)
131
+ })
132
+ }
133
+ else {
134
+ add(p, start, end)
135
+ }
136
+ }
137
+
138
+ if (xml.tt.body) {
139
+ if (xml.tt.body.div) {
140
+ if (is.array(xml.tt.body.div)) {
141
+ array.each(xml.tt.body.div, (div: any) => {
142
+ if (div.p) {
143
+ praseP(div.p, div.begin, div.end)
144
+ }
145
+ })
146
+ }
147
+ else {
148
+ if (xml.tt.body.div.p) {
149
+ praseP(xml.tt.body.div.p, xml.tt.body.div.begin, xml.tt.body.end)
150
+ }
151
+ }
152
+ }
153
+ }
154
+ return {
155
+ queue,
156
+ head: xml.tt.head || {}
157
+ }
158
+ }
@@ -0,0 +1,91 @@
1
+ /*
2
+ * libmedia vp8 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 type AVCodecParameters from '../struct/avcodecparameters'
27
+ import { AVPacketSideDataType } from '../codec'
28
+ import type AVPacket from '../struct/avpacket'
29
+
30
+ import {
31
+ BitReader,
32
+ type Uint8ArrayInterface
33
+ } from '@libmedia/common/io'
34
+
35
+ export function parseAVCodecParameters(
36
+ stream: {
37
+ codecpar: AVCodecParameters,
38
+ sideData: Partial<Record<AVPacketSideDataType, Uint8Array>>,
39
+ },
40
+ extradata?: Uint8ArrayInterface
41
+ ) {
42
+ if (!extradata && stream.sideData[AVPacketSideDataType.AV_PKT_DATA_NEW_EXTRADATA]) {
43
+ extradata = stream.sideData[AVPacketSideDataType.AV_PKT_DATA_NEW_EXTRADATA]
44
+ }
45
+ if (extradata && extradata.length >= 6) {
46
+ const params = parseExtraData(extradata)
47
+ stream.codecpar.profile = params.profile
48
+ stream.codecpar.level = params.level
49
+ }
50
+ }
51
+
52
+ /**
53
+ * - 1 byte profile
54
+ * - 1 byte level
55
+ * - 4 bit bitdepth
56
+ * - 3 bit chroma_subsampling
57
+ * - 1 bit full_range_flag
58
+ * - 1 byte color_primaries
59
+ * - 1 byte color_trc
60
+ * - 1 byte color_space
61
+ *
62
+ * @param extradata
63
+ */
64
+ export function parseExtraData(extradata: Uint8ArrayInterface) {
65
+ const bitReader = new BitReader(extradata.length)
66
+ bitReader.appendBuffer(extradata.subarray(4))
67
+ const profile = bitReader.readU(8)
68
+ const level = bitReader.readU(8)
69
+ let bitDepth = bitReader.readU(4)
70
+ const chromaSubsampling = bitReader.readU(3)
71
+ const fullRangeFlag = bitReader.readU1()
72
+ const colorPrimaries = bitReader.readU(8)
73
+ const colorTrc = bitReader.readU(8)
74
+ const colorSpace = bitReader.readU(8)
75
+
76
+ return {
77
+ profile,
78
+ level,
79
+ bitDepth,
80
+ chromaSubsampling,
81
+ fullRangeFlag,
82
+ colorPrimaries,
83
+ colorTrc,
84
+ colorSpace
85
+ }
86
+ }
87
+
88
+ export function isIDR(avpacket: pointer<AVPacket>) {
89
+ const first = accessof(avpacket.data)
90
+ return !(first >>> 7)
91
+ }