@libmedia/avutil 0.12.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (564) hide show
  1. package/dist/cjs/{AVStream.js → AVStream.cjs} +5 -5
  2. package/dist/cjs/AVStream.js.map +1 -1
  3. package/dist/cjs/codecs/{aac.js → aac.cjs} +2 -8
  4. package/dist/cjs/codecs/aac.js.map +1 -1
  5. package/dist/cjs/codecs/{ac3.js → ac3.cjs} +2 -8
  6. package/dist/cjs/codecs/ac3.js.map +1 -1
  7. package/dist/cjs/codecs/{av1.js → av1.cjs} +6 -10
  8. package/dist/cjs/codecs/av1.js.map +1 -1
  9. package/dist/cjs/codecs/{dts.js → dts.cjs} +3 -9
  10. package/dist/cjs/codecs/dts.js.map +1 -1
  11. package/dist/cjs/codecs/{flac.js → flac.cjs} +2 -8
  12. package/dist/cjs/codecs/flac.js.map +1 -1
  13. package/dist/cjs/codecs/{h264.js → h264.cjs} +20 -23
  14. package/dist/cjs/codecs/h264.js.map +1 -1
  15. package/dist/cjs/codecs/{hevc.js → hevc.cjs} +23 -23
  16. package/dist/cjs/codecs/hevc.js.map +1 -1
  17. package/dist/cjs/codecs/{mp3.js → mp3.cjs} +1 -1
  18. package/dist/cjs/codecs/mp3.js.map +1 -1
  19. package/dist/cjs/codecs/{mpeg4.js → mpeg4.cjs} +1 -1
  20. package/dist/cjs/codecs/mpeg4.js.map +1 -1
  21. package/dist/cjs/codecs/{mpegvideo.js → mpegvideo.cjs} +1 -1
  22. package/dist/cjs/codecs/mpegvideo.js.map +1 -1
  23. package/dist/cjs/codecs/{opus.js → opus.cjs} +3 -9
  24. package/dist/cjs/codecs/opus.js.map +1 -1
  25. package/dist/cjs/codecs/ttml.cjs +51 -0
  26. package/dist/cjs/codecs/ttml.js.map +1 -1
  27. package/dist/cjs/codecs/{vp8.js → vp8.cjs} +2 -8
  28. package/dist/cjs/codecs/vp8.js.map +1 -1
  29. package/dist/cjs/codecs/{vp9.js → vp9.cjs} +4 -10
  30. package/dist/cjs/codecs/vp9.js.map +1 -1
  31. package/dist/cjs/codecs/{vvc.js → vvc.cjs} +25 -25
  32. package/dist/cjs/codecs/vvc.js.map +1 -1
  33. package/dist/cjs/{constant.js → constant.cjs} +6 -7
  34. package/dist/cjs/constant.js.map +1 -1
  35. package/dist/cjs/{enum.js → enum.cjs} +3 -1
  36. package/dist/cjs/enum.js.map +1 -1
  37. package/dist/cjs/error.js.map +1 -1
  38. package/dist/cjs/function/analyzeAVFormat.js.map +1 -1
  39. package/dist/cjs/function/analyzeUrlIOLoader.cjs +66 -0
  40. package/dist/cjs/function/analyzeUrlIOLoader.js.map +1 -1
  41. package/dist/cjs/function/{audioData2AVFrame.js → audioData2AVFrame.cjs} +9 -9
  42. package/dist/cjs/function/audioData2AVFrame.js.map +1 -1
  43. package/dist/cjs/function/{avPCMBuffer2AVFrame.js → avPCMBuffer2AVFrame.cjs} +20 -20
  44. package/dist/cjs/function/avPCMBuffer2AVFrame.js.map +1 -1
  45. package/dist/cjs/function/{avframe2AudioData.js → avframe2AudioData.cjs} +7 -7
  46. package/dist/cjs/function/avframe2AudioData.js.map +1 -1
  47. package/dist/cjs/function/avframe2VideoFrame.cjs +48 -0
  48. package/dist/cjs/function/avframe2VideoFrame.js.map +1 -1
  49. package/dist/cjs/function/{avpacket2EncodedAudioChunk.js → avpacket2EncodedAudioChunk.cjs} +3 -3
  50. package/dist/cjs/function/avpacket2EncodedAudioChunk.js.map +1 -1
  51. package/dist/cjs/function/{avpacket2EncodedVideoChunk.js → avpacket2EncodedVideoChunk.cjs} +3 -3
  52. package/dist/cjs/function/avpacket2EncodedVideoChunk.js.map +1 -1
  53. package/dist/cjs/function/compileResource.cjs +19 -0
  54. package/dist/cjs/function/compileResource.js.map +1 -1
  55. package/dist/cjs/function/constant/webcodecs.cjs +50 -0
  56. package/dist/cjs/function/constant/webcodecs.js.map +1 -0
  57. package/dist/cjs/function/encodedAudioChunk2AVPacket.cjs +23 -0
  58. package/dist/cjs/function/encodedAudioChunk2AVPacket.js.map +1 -1
  59. package/dist/cjs/function/{encodedVideoChunk2AVPacket.js → encodedVideoChunk2AVPacket.cjs} +8 -8
  60. package/dist/cjs/function/encodedVideoChunk2AVPacket.js.map +1 -1
  61. package/dist/cjs/function/{getAudioCodec.js → getAudioCodec.cjs} +1 -1
  62. package/dist/cjs/function/getAudioCodec.js.map +1 -1
  63. package/dist/cjs/function/getAudioMimeType.cjs +19 -0
  64. package/dist/cjs/function/getAudioMimeType.js.map +1 -0
  65. package/dist/cjs/function/getHardwarePreference.cjs +10 -0
  66. package/dist/cjs/function/getHardwarePreference.js.map +1 -1
  67. package/dist/cjs/function/{getVideoCodec.js → getVideoCodec.cjs} +12 -12
  68. package/dist/cjs/function/getVideoCodec.js.map +1 -1
  69. package/dist/cjs/function/getVideoMimeType.cjs +18 -0
  70. package/dist/cjs/function/getVideoMimeType.js.map +1 -0
  71. package/dist/cjs/function/{getWasmUrl.js → getWasmUrl.cjs} +2 -3
  72. package/dist/cjs/function/getWasmUrl.js.map +1 -1
  73. package/dist/cjs/function/{hasAlphaChannel.js → hasAlphaChannel.cjs} +1 -1
  74. package/dist/cjs/function/hasAlphaChannel.js.map +1 -1
  75. package/dist/cjs/function/{isHdr.js → isHdr.cjs} +1 -1
  76. package/dist/cjs/function/isHdr.js.map +1 -1
  77. package/dist/cjs/function/videoFrame2AVFrame.cjs +51 -0
  78. package/dist/cjs/function/videoFrame2AVFrame.js.map +1 -1
  79. package/dist/cjs/implement/AVFramePoolImpl.cjs +28 -0
  80. package/dist/cjs/implement/AVFramePoolImpl.js.map +1 -1
  81. package/dist/cjs/implement/AVPCMBufferPoolImpl.cjs +27 -0
  82. package/dist/cjs/implement/AVPCMBufferPoolImpl.js.map +1 -1
  83. package/dist/cjs/implement/AVPacketPoolImpl.cjs +29 -0
  84. package/dist/cjs/implement/AVPacketPoolImpl.js.map +1 -1
  85. package/dist/cjs/index.cjs +840 -0
  86. package/dist/cjs/index.js.map +1 -0
  87. package/dist/cjs/internal.cjs +283 -0
  88. package/dist/cjs/internal.js.map +1 -0
  89. package/dist/cjs/{pixelFormatDescriptor.js → pixelFormatDescriptor.cjs} +2 -0
  90. package/dist/cjs/pixelFormatDescriptor.js.map +1 -1
  91. package/dist/cjs/pixfmt.js.map +1 -1
  92. package/dist/cjs/sampleFormatDescriptor.js.map +1 -1
  93. package/dist/cjs/{stringEnum.js → stringEnum.cjs} +4 -1
  94. package/dist/cjs/stringEnum.js.map +1 -1
  95. package/dist/cjs/struct/{audiosample.js → audiosample.cjs} +13 -13
  96. package/dist/cjs/struct/audiosample.js.map +1 -1
  97. package/dist/cjs/struct/{avbuffer.js → avbuffer.cjs} +18 -18
  98. package/dist/cjs/struct/avbuffer.js.map +1 -1
  99. package/dist/cjs/struct/{avcodecparameters.js → avcodecparameters.cjs} +11 -11
  100. package/dist/cjs/struct/avcodecparameters.js.map +1 -1
  101. package/dist/cjs/struct/{avdict.js → avdict.cjs} +9 -9
  102. package/dist/cjs/struct/avdict.js.map +1 -1
  103. package/dist/cjs/struct/{avframe.js → avframe.cjs} +30 -30
  104. package/dist/cjs/struct/avframe.js.map +1 -1
  105. package/dist/cjs/struct/{avpacket.js → avpacket.cjs} +19 -19
  106. package/dist/cjs/struct/avpacket.js.map +1 -1
  107. package/dist/cjs/struct/{avpcmbuffer.js → avpcmbuffer.cjs} +9 -9
  108. package/dist/cjs/struct/avpcmbuffer.js.map +1 -1
  109. package/dist/cjs/struct/{encryption.js → encryption.cjs} +13 -13
  110. package/dist/cjs/struct/encryption.js.map +1 -1
  111. package/dist/cjs/struct/rational.cjs +43 -0
  112. package/dist/cjs/struct/rational.js.map +1 -1
  113. package/dist/cjs/util/{amf.js → amf.cjs} +7 -38
  114. package/dist/cjs/util/amf.js.map +1 -1
  115. package/dist/cjs/util/av1syntax.js.map +1 -1
  116. package/dist/cjs/util/avbuffer.cjs +122 -0
  117. package/dist/cjs/util/avbuffer.js.map +1 -1
  118. package/dist/cjs/util/avdict.cjs +75 -0
  119. package/dist/cjs/util/avdict.js.map +1 -1
  120. package/dist/cjs/util/{avframe.js → avframe.cjs} +82 -87
  121. package/dist/cjs/util/avframe.js.map +1 -1
  122. package/dist/cjs/util/{avpacket.js → avpacket.cjs} +58 -58
  123. package/dist/cjs/util/avpacket.js.map +1 -1
  124. package/dist/cjs/util/{channel.js → channel.cjs} +7 -7
  125. package/dist/cjs/util/channel.js.map +1 -1
  126. package/dist/cjs/util/codecparameters.cjs +95 -0
  127. package/dist/cjs/util/codecparameters.js.map +1 -1
  128. package/dist/cjs/util/common.js.map +1 -1
  129. package/dist/cjs/util/{encryption.js → encryption.cjs} +5 -11
  130. package/dist/cjs/util/encryption.js.map +1 -1
  131. package/dist/cjs/util/expgolomb.js.map +1 -1
  132. package/dist/cjs/util/{intread.js → intread.cjs} +1 -1
  133. package/dist/cjs/util/intread.js.map +1 -1
  134. package/dist/cjs/util/{intwrite.js → intwrite.cjs} +1 -1
  135. package/dist/cjs/util/intwrite.js.map +1 -1
  136. package/dist/cjs/util/mem.cjs +23 -0
  137. package/dist/cjs/util/mem.js.map +1 -1
  138. package/dist/cjs/util/{nalu.js → nalu.cjs} +7 -42
  139. package/dist/cjs/util/nalu.js.map +1 -1
  140. package/dist/cjs/util/ntp.js.map +1 -1
  141. package/dist/cjs/util/pcm.js.map +1 -1
  142. package/dist/cjs/util/{pixel.js → pixel.cjs} +26 -30
  143. package/dist/cjs/util/pixel.js.map +1 -1
  144. package/dist/cjs/util/{rational.js → rational.cjs} +5 -11
  145. package/dist/cjs/util/rational.js.map +1 -1
  146. package/dist/cjs/util/{sample.js → sample.cjs} +6 -12
  147. package/dist/cjs/util/sample.js.map +1 -1
  148. package/dist/cjs/util/{serialize.js → serialize.cjs} +40 -42
  149. package/dist/cjs/util/serialize.js.map +1 -1
  150. package/dist/esm/AVStream.d.ts +7 -7
  151. package/dist/esm/AVStream.js +10 -12
  152. package/dist/esm/AVStream.js.map +1 -1
  153. package/dist/esm/codecs/aac.d.ts +10 -5
  154. package/dist/esm/codecs/aac.js +2 -2
  155. package/dist/esm/codecs/aac.js.map +1 -1
  156. package/dist/esm/codecs/ac3.d.ts +1 -1
  157. package/dist/esm/codecs/ac3.js +1 -1
  158. package/dist/esm/codecs/ac3.js.map +1 -1
  159. package/dist/esm/codecs/av1.d.ts +3 -3
  160. package/dist/esm/codecs/av1.js +4 -6
  161. package/dist/esm/codecs/av1.js.map +1 -1
  162. package/dist/esm/codecs/dts.d.ts +1 -1
  163. package/dist/esm/codecs/dts.js +2 -2
  164. package/dist/esm/codecs/dts.js.map +1 -1
  165. package/dist/esm/codecs/flac.d.ts +3 -3
  166. package/dist/esm/codecs/flac.js +1 -1
  167. package/dist/esm/codecs/flac.js.map +1 -1
  168. package/dist/esm/codecs/h264.d.ts +5 -5
  169. package/dist/esm/codecs/h264.js +13 -18
  170. package/dist/esm/codecs/h264.js.map +1 -1
  171. package/dist/esm/codecs/hevc.d.ts +5 -5
  172. package/dist/esm/codecs/hevc.js +16 -15
  173. package/dist/esm/codecs/hevc.js.map +1 -1
  174. package/dist/esm/codecs/mp3.d.ts +4 -4
  175. package/dist/esm/codecs/mp3.js +1 -1
  176. package/dist/esm/codecs/mp3.js.map +1 -1
  177. package/dist/esm/codecs/mpeg4.d.ts +1 -1
  178. package/dist/esm/codecs/mpeg4.js +1 -1
  179. package/dist/esm/codecs/mpeg4.js.map +1 -1
  180. package/dist/esm/codecs/mpegvideo.d.ts +1 -1
  181. package/dist/esm/codecs/mpegvideo.js +1 -1
  182. package/dist/esm/codecs/mpegvideo.js.map +1 -1
  183. package/dist/esm/codecs/opus.d.ts +3 -3
  184. package/dist/esm/codecs/opus.js +2 -4
  185. package/dist/esm/codecs/opus.js.map +1 -1
  186. package/dist/esm/codecs/ttml.js +5 -11
  187. package/dist/esm/codecs/ttml.js.map +1 -1
  188. package/dist/esm/codecs/vp8.d.ts +4 -4
  189. package/dist/esm/codecs/vp8.js +2 -2
  190. package/dist/esm/codecs/vp8.js.map +1 -1
  191. package/dist/esm/codecs/vp9.d.ts +4 -4
  192. package/dist/esm/codecs/vp9.js +8 -10
  193. package/dist/esm/codecs/vp9.js.map +1 -1
  194. package/dist/esm/codecs/vvc.d.ts +5 -5
  195. package/dist/esm/codecs/vvc.js +16 -17
  196. package/dist/esm/codecs/vvc.js.map +1 -1
  197. package/dist/esm/constant.d.ts +5 -7
  198. package/dist/esm/constant.js +5 -9
  199. package/dist/esm/constant.js.map +1 -1
  200. package/dist/esm/enum.d.ts +9 -1
  201. package/dist/esm/enum.js +3 -1
  202. package/dist/esm/enum.js.map +1 -1
  203. package/dist/esm/error.js.map +1 -1
  204. package/dist/esm/function/analyzeAVFormat.d.ts +2 -2
  205. package/dist/esm/function/analyzeAVFormat.js.map +1 -1
  206. package/dist/esm/function/analyzeUrlIOLoader.d.ts +2 -2
  207. package/dist/esm/function/analyzeUrlIOLoader.js +2 -10
  208. package/dist/esm/function/analyzeUrlIOLoader.js.map +1 -1
  209. package/dist/esm/function/audioData2AVFrame.d.ts +1 -1
  210. package/dist/esm/function/audioData2AVFrame.js +6 -6
  211. package/dist/esm/function/audioData2AVFrame.js.map +1 -1
  212. package/dist/esm/function/avPCMBuffer2AVFrame.d.ts +2 -2
  213. package/dist/esm/function/avPCMBuffer2AVFrame.js +9 -9
  214. package/dist/esm/function/avPCMBuffer2AVFrame.js.map +1 -1
  215. package/dist/esm/function/avframe2AudioData.d.ts +1 -1
  216. package/dist/esm/function/avframe2AudioData.js +6 -8
  217. package/dist/esm/function/avframe2AudioData.js.map +1 -1
  218. package/dist/esm/function/avframe2VideoFrame.d.ts +3 -3
  219. package/dist/esm/function/avframe2VideoFrame.js +14 -79
  220. package/dist/esm/function/avframe2VideoFrame.js.map +1 -1
  221. package/dist/esm/function/avpacket2EncodedAudioChunk.d.ts +1 -1
  222. package/dist/esm/function/avpacket2EncodedAudioChunk.js +5 -7
  223. package/dist/esm/function/avpacket2EncodedAudioChunk.js.map +1 -1
  224. package/dist/esm/function/avpacket2EncodedVideoChunk.d.ts +1 -1
  225. package/dist/esm/function/avpacket2EncodedVideoChunk.js +5 -7
  226. package/dist/esm/function/avpacket2EncodedVideoChunk.js.map +1 -1
  227. package/dist/esm/function/compileResource.d.ts +1 -1
  228. package/dist/esm/function/compileResource.js +2 -4
  229. package/dist/esm/function/compileResource.js.map +1 -1
  230. package/dist/esm/function/constant/webcodecs.d.ts +5 -0
  231. package/dist/esm/function/constant/webcodecs.js +51 -0
  232. package/dist/esm/function/constant/webcodecs.js.map +1 -0
  233. package/dist/esm/function/encodedAudioChunk2AVPacket.d.ts +1 -1
  234. package/dist/esm/function/encodedAudioChunk2AVPacket.js +6 -6
  235. package/dist/esm/function/encodedAudioChunk2AVPacket.js.map +1 -1
  236. package/dist/esm/function/encodedVideoChunk2AVPacket.d.ts +1 -1
  237. package/dist/esm/function/encodedVideoChunk2AVPacket.js +7 -7
  238. package/dist/esm/function/encodedVideoChunk2AVPacket.js.map +1 -1
  239. package/dist/esm/function/getAudioCodec.d.ts +1 -1
  240. package/dist/esm/function/getAudioCodec.js +2 -2
  241. package/dist/esm/function/getAudioCodec.js.map +1 -1
  242. package/dist/esm/function/getAudioMimeType.d.ts +2 -0
  243. package/dist/esm/function/getAudioMimeType.js +12 -0
  244. package/dist/esm/function/getAudioMimeType.js.map +1 -0
  245. package/dist/esm/function/getHardwarePreference.js +1 -1
  246. package/dist/esm/function/getHardwarePreference.js.map +1 -1
  247. package/dist/esm/function/getVideoCodec.d.ts +1 -1
  248. package/dist/esm/function/getVideoCodec.js +11 -13
  249. package/dist/esm/function/getVideoCodec.js.map +1 -1
  250. package/dist/esm/function/getVideoMimeType.d.ts +2 -0
  251. package/dist/esm/function/getVideoMimeType.js +8 -0
  252. package/dist/esm/function/getVideoMimeType.js.map +1 -0
  253. package/dist/esm/function/getWasmUrl.d.ts +1 -1
  254. package/dist/esm/function/getWasmUrl.js +2 -2
  255. package/dist/esm/function/getWasmUrl.js.map +1 -1
  256. package/dist/esm/function/hasAlphaChannel.d.ts +1 -1
  257. package/dist/esm/function/hasAlphaChannel.js +2 -2
  258. package/dist/esm/function/hasAlphaChannel.js.map +1 -1
  259. package/dist/esm/function/isHdr.d.ts +1 -1
  260. package/dist/esm/function/isHdr.js +2 -2
  261. package/dist/esm/function/isHdr.js.map +1 -1
  262. package/dist/esm/function/videoFrame2AVFrame.d.ts +6 -6
  263. package/dist/esm/function/videoFrame2AVFrame.js +13 -74
  264. package/dist/esm/function/videoFrame2AVFrame.js.map +1 -1
  265. package/dist/esm/implement/AVFramePoolImpl.d.ts +3 -4
  266. package/dist/esm/implement/AVFramePoolImpl.js +5 -7
  267. package/dist/esm/implement/AVFramePoolImpl.js.map +1 -1
  268. package/dist/esm/implement/AVPCMBufferPoolImpl.d.ts +3 -4
  269. package/dist/esm/implement/AVPCMBufferPoolImpl.js +4 -6
  270. package/dist/esm/implement/AVPCMBufferPoolImpl.js.map +1 -1
  271. package/dist/esm/implement/AVPacketPoolImpl.d.ts +3 -4
  272. package/dist/esm/implement/AVPacketPoolImpl.js +5 -7
  273. package/dist/esm/implement/AVPacketPoolImpl.js.map +1 -1
  274. package/dist/esm/index.d.ts +54 -0
  275. package/dist/esm/index.js +98 -0
  276. package/dist/esm/index.js.map +1 -0
  277. package/dist/esm/internal.d.ts +26 -0
  278. package/dist/esm/internal.js +52 -0
  279. package/dist/esm/internal.js.map +1 -0
  280. package/dist/esm/pixelFormatDescriptor.d.ts +1 -1
  281. package/dist/esm/pixelFormatDescriptor.js +2 -0
  282. package/dist/esm/pixelFormatDescriptor.js.map +1 -1
  283. package/dist/esm/pixfmt.d.ts +9 -1
  284. package/dist/esm/pixfmt.js.map +1 -1
  285. package/dist/esm/sampleFormatDescriptor.d.ts +1 -1
  286. package/dist/esm/sampleFormatDescriptor.js.map +1 -1
  287. package/dist/esm/stringEnum.d.ts +5 -5
  288. package/dist/esm/stringEnum.js +4 -1
  289. package/dist/esm/stringEnum.js.map +1 -1
  290. package/dist/esm/struct/audiosample.d.ts +1 -1
  291. package/dist/esm/struct/audiosample.js +2 -2
  292. package/dist/esm/struct/audiosample.js.map +1 -1
  293. package/dist/esm/struct/avbuffer.d.ts +1 -1
  294. package/dist/esm/struct/avbuffer.js +4 -4
  295. package/dist/esm/struct/avbuffer.js.map +1 -1
  296. package/dist/esm/struct/avcodecparameters.d.ts +9 -9
  297. package/dist/esm/struct/avcodecparameters.js +14 -16
  298. package/dist/esm/struct/avcodecparameters.js.map +1 -1
  299. package/dist/esm/struct/avdict.js +2 -2
  300. package/dist/esm/struct/avdict.js.map +1 -1
  301. package/dist/esm/struct/avframe.d.ts +12 -12
  302. package/dist/esm/struct/avframe.js +18 -22
  303. package/dist/esm/struct/avframe.js.map +1 -1
  304. package/dist/esm/struct/avpacket.d.ts +4 -4
  305. package/dist/esm/struct/avpacket.js +7 -9
  306. package/dist/esm/struct/avpacket.js.map +1 -1
  307. package/dist/esm/struct/avpcmbuffer.d.ts +1 -1
  308. package/dist/esm/struct/avpcmbuffer.js +2 -2
  309. package/dist/esm/struct/avpcmbuffer.js.map +1 -1
  310. package/dist/esm/struct/avsubtitle.d.ts +2 -2
  311. package/dist/esm/struct/encryption.js +2 -2
  312. package/dist/esm/struct/encryption.js.map +1 -1
  313. package/dist/esm/struct/rational.d.ts +1 -1
  314. package/dist/esm/struct/rational.js +4 -4
  315. package/dist/esm/struct/rational.js.map +1 -1
  316. package/dist/esm/util/amf.d.ts +1 -4
  317. package/dist/esm/util/amf.js +1 -5
  318. package/dist/esm/util/amf.js.map +1 -1
  319. package/dist/esm/util/av1syntax.d.ts +1 -1
  320. package/dist/esm/util/av1syntax.js.map +1 -1
  321. package/dist/esm/util/avbuffer.d.ts +2 -2
  322. package/dist/esm/util/avbuffer.js +7 -15
  323. package/dist/esm/util/avbuffer.js.map +1 -1
  324. package/dist/esm/util/avdict.d.ts +2 -2
  325. package/dist/esm/util/avdict.js +12 -16
  326. package/dist/esm/util/avdict.js.map +1 -1
  327. package/dist/esm/util/avframe.d.ts +2 -2
  328. package/dist/esm/util/avframe.js +22 -24
  329. package/dist/esm/util/avframe.js.map +1 -1
  330. package/dist/esm/util/avpacket.d.ts +3 -3
  331. package/dist/esm/util/avpacket.js +11 -13
  332. package/dist/esm/util/avpacket.js.map +1 -1
  333. package/dist/esm/util/channel.d.ts +1 -1
  334. package/dist/esm/util/channel.js +6 -6
  335. package/dist/esm/util/channel.js.map +1 -1
  336. package/dist/esm/util/codecparameters.d.ts +3 -1
  337. package/dist/esm/util/codecparameters.js +16 -12
  338. package/dist/esm/util/codecparameters.js.map +1 -1
  339. package/dist/esm/util/common.js.map +1 -1
  340. package/dist/esm/util/encryption.d.ts +2 -2
  341. package/dist/esm/util/encryption.js +1 -3
  342. package/dist/esm/util/encryption.js.map +1 -1
  343. package/dist/esm/util/expgolomb.d.ts +1 -2
  344. package/dist/esm/util/expgolomb.js.map +1 -1
  345. package/dist/esm/util/intread.js +1 -1
  346. package/dist/esm/util/intread.js.map +1 -1
  347. package/dist/esm/util/intwrite.js +1 -1
  348. package/dist/esm/util/intwrite.js.map +1 -1
  349. package/dist/esm/util/mem.js +7 -7
  350. package/dist/esm/util/mem.js.map +1 -1
  351. package/dist/esm/util/nalu.d.ts +1 -1
  352. package/dist/esm/util/nalu.js +3 -5
  353. package/dist/esm/util/nalu.js.map +1 -1
  354. package/dist/esm/util/ntp.js.map +1 -1
  355. package/dist/esm/util/pcm.d.ts +1 -1
  356. package/dist/esm/util/pcm.js.map +1 -1
  357. package/dist/esm/util/pixel.d.ts +1 -1
  358. package/dist/esm/util/pixel.js +8 -10
  359. package/dist/esm/util/pixel.js.map +1 -1
  360. package/dist/esm/util/rational.d.ts +10 -10
  361. package/dist/esm/util/rational.js +4 -4
  362. package/dist/esm/util/rational.js.map +1 -1
  363. package/dist/esm/util/sample.d.ts +1 -1
  364. package/dist/esm/util/sample.js +7 -7
  365. package/dist/esm/util/sample.js.map +1 -1
  366. package/dist/esm/util/serialize.d.ts +9 -9
  367. package/dist/esm/util/serialize.js +6 -6
  368. package/dist/esm/util/serialize.js.map +1 -1
  369. package/package.json +23 -390
  370. package/src/AVStream.ts +677 -0
  371. package/src/audiosamplefmt.ts +302 -0
  372. package/src/avformat.ts +96 -0
  373. package/src/codec.ts +1016 -0
  374. package/src/codecs/aac.ts +429 -0
  375. package/src/codecs/ac3.ts +309 -0
  376. package/src/codecs/av1.ts +503 -0
  377. package/src/codecs/dts.ts +100 -0
  378. package/src/codecs/flac.ts +118 -0
  379. package/src/codecs/h264.ts +1013 -0
  380. package/src/codecs/hevc.ts +1049 -0
  381. package/src/codecs/mp3.ts +172 -0
  382. package/src/codecs/mpeg4.ts +37 -0
  383. package/src/codecs/mpegvideo.ts +49 -0
  384. package/src/codecs/opus.ts +148 -0
  385. package/src/codecs/ttml.ts +158 -0
  386. package/src/codecs/vp8.ts +91 -0
  387. package/src/codecs/vp9.ts +213 -0
  388. package/src/codecs/vvc.ts +1086 -0
  389. package/src/constant.ts +72 -0
  390. package/src/enum.ts +47 -0
  391. package/src/error.ts +45 -0
  392. package/src/function/analyzeAVFormat.ts +94 -0
  393. package/src/function/analyzeUrlIOLoader.ts +166 -0
  394. package/src/function/audioData2AVFrame.ts +82 -0
  395. package/src/function/avPCMBuffer2AVFrame.ts +111 -0
  396. package/src/function/avframe2AudioData.ts +131 -0
  397. package/src/function/avframe2VideoFrame.ts +88 -0
  398. package/src/function/avpacket2EncodedAudioChunk.ts +39 -0
  399. package/src/function/avpacket2EncodedVideoChunk.ts +39 -0
  400. package/src/function/compileResource.ts +57 -0
  401. package/src/function/constant/webcodecs.ts +81 -0
  402. package/src/function/encodedAudioChunk2AVPacket.ts +62 -0
  403. package/src/function/encodedVideoChunk2AVPacket.ts +86 -0
  404. package/src/function/getAudioCodec.ts +45 -0
  405. package/src/function/getAudioMimeType.ts +44 -0
  406. package/src/function/getHardwarePreference.ts +45 -0
  407. package/src/function/getVideoCodec.ts +244 -0
  408. package/src/function/getVideoMimeType.ts +35 -0
  409. package/src/function/getWasmUrl.ts +190 -0
  410. package/src/function/hasAlphaChannel.ts +37 -0
  411. package/src/function/isHdr.ts +44 -0
  412. package/src/function/videoFrame2AVFrame.ts +95 -0
  413. package/src/implement/AVFramePoolImpl.ts +83 -0
  414. package/src/implement/AVPCMBufferPoolImpl.ts +79 -0
  415. package/src/implement/AVPacketPoolImpl.ts +82 -0
  416. package/src/index.ts +264 -0
  417. package/src/internal.ts +71 -0
  418. package/src/pixelFormatDescriptor.ts +819 -0
  419. package/src/pixfmt.ts +1400 -0
  420. package/src/sampleFormatDescriptor.ts +57 -0
  421. package/src/stringEnum.ts +366 -0
  422. package/src/struct/audiosample.ts +95 -0
  423. package/src/struct/avbuffer.ts +139 -0
  424. package/src/struct/avcodecparameters.ts +243 -0
  425. package/src/struct/avdict.ts +44 -0
  426. package/src/struct/avframe.ts +663 -0
  427. package/src/struct/avpacket.ts +178 -0
  428. package/src/struct/avpcmbuffer.ts +77 -0
  429. package/src/struct/avsubtitle.ts +59 -0
  430. package/src/struct/encryption.ts +180 -0
  431. package/src/struct/rational.ts +43 -0
  432. package/src/util/amf.ts +178 -0
  433. package/src/util/av1syntax.ts +112 -0
  434. package/src/util/avbuffer.ts +294 -0
  435. package/src/util/avdict.ts +171 -0
  436. package/src/util/avframe.ts +520 -0
  437. package/src/util/avpacket.ts +313 -0
  438. package/src/util/channel.ts +66 -0
  439. package/src/util/codecparameters.ts +148 -0
  440. package/src/util/common.ts +42 -0
  441. package/src/util/encryption.ts +154 -0
  442. package/src/util/expgolomb.ts +170 -0
  443. package/src/util/intread.ts +60 -0
  444. package/src/util/intwrite.ts +71 -0
  445. package/src/util/mem.ts +60 -0
  446. package/src/util/nalu.ts +297 -0
  447. package/src/util/ntp.ts +32 -0
  448. package/src/util/pcm.ts +161 -0
  449. package/src/util/pixel.ts +381 -0
  450. package/src/util/rational.ts +152 -0
  451. package/src/util/sample.ts +136 -0
  452. package/src/util/serialize.ts +268 -0
  453. package/dist/cjs/AVStream.d.ts +0 -577
  454. package/dist/cjs/audiosamplefmt.d.ts +0 -248
  455. package/dist/cjs/avformat.d.ts +0 -66
  456. package/dist/cjs/codec.d.ts +0 -927
  457. package/dist/cjs/codecs/aac.d.ts +0 -121
  458. package/dist/cjs/codecs/ac3.d.ts +0 -72
  459. package/dist/cjs/codecs/av1.d.ts +0 -75
  460. package/dist/cjs/codecs/dts.d.ts +0 -17
  461. package/dist/cjs/codecs/flac.d.ts +0 -46
  462. package/dist/cjs/codecs/h264.d.ts +0 -188
  463. package/dist/cjs/codecs/hevc.d.ts +0 -220
  464. package/dist/cjs/codecs/mp3.d.ts +0 -17
  465. package/dist/cjs/codecs/mpeg4.d.ts +0 -7
  466. package/dist/cjs/codecs/mpegvideo.d.ts +0 -7
  467. package/dist/cjs/codecs/opus.d.ts +0 -26
  468. package/dist/cjs/codecs/ttml.d.ts +0 -9
  469. package/dist/cjs/codecs/ttml.js +0 -87
  470. package/dist/cjs/codecs/vp8.d.ts +0 -31
  471. package/dist/cjs/codecs/vp9.d.ts +0 -45
  472. package/dist/cjs/codecs/vvc.d.ts +0 -235
  473. package/dist/cjs/constant.d.ts +0 -36
  474. package/dist/cjs/enum.d.ts +0 -3285
  475. package/dist/cjs/error.d.ts +0 -10
  476. package/dist/cjs/function/analyzeAVFormat.d.ts +0 -3
  477. package/dist/cjs/function/analyzeUrlIOLoader.d.ts +0 -7
  478. package/dist/cjs/function/analyzeUrlIOLoader.js +0 -101
  479. package/dist/cjs/function/audioData2AVFrame.d.ts +0 -2
  480. package/dist/cjs/function/avPCMBuffer2AVFrame.d.ts +0 -3
  481. package/dist/cjs/function/avframe2AudioData.d.ts +0 -2
  482. package/dist/cjs/function/avframe2VideoFrame.d.ts +0 -5
  483. package/dist/cjs/function/avframe2VideoFrame.js +0 -146
  484. package/dist/cjs/function/avpacket2EncodedAudioChunk.d.ts +0 -2
  485. package/dist/cjs/function/avpacket2EncodedVideoChunk.d.ts +0 -2
  486. package/dist/cjs/function/compileResource.d.ts +0 -2
  487. package/dist/cjs/function/compileResource.js +0 -53
  488. package/dist/cjs/function/encodedAudioChunk2AVPacket.d.ts +0 -2
  489. package/dist/cjs/function/encodedAudioChunk2AVPacket.js +0 -23
  490. package/dist/cjs/function/encodedVideoChunk2AVPacket.d.ts +0 -7
  491. package/dist/cjs/function/getAudioCodec.d.ts +0 -2
  492. package/dist/cjs/function/getHardwarePreference.d.ts +0 -1
  493. package/dist/cjs/function/getHardwarePreference.js +0 -16
  494. package/dist/cjs/function/getVideoCodec.d.ts +0 -2
  495. package/dist/cjs/function/getWasmUrl.d.ts +0 -2
  496. package/dist/cjs/function/hasAlphaChannel.d.ts +0 -2
  497. package/dist/cjs/function/isHdr.d.ts +0 -2
  498. package/dist/cjs/function/videoFrame2AVFrame.d.ts +0 -7
  499. package/dist/cjs/function/videoFrame2AVFrame.js +0 -113
  500. package/dist/cjs/implement/AVFramePoolImpl.d.ts +0 -11
  501. package/dist/cjs/implement/AVFramePoolImpl.js +0 -59
  502. package/dist/cjs/implement/AVPCMBufferPoolImpl.d.ts +0 -11
  503. package/dist/cjs/implement/AVPCMBufferPoolImpl.js +0 -57
  504. package/dist/cjs/implement/AVPacketPoolImpl.d.ts +0 -11
  505. package/dist/cjs/implement/AVPacketPoolImpl.js +0 -60
  506. package/dist/cjs/pixelFormatDescriptor.d.ts +0 -100
  507. package/dist/cjs/pixfmt.d.ts +0 -1293
  508. package/dist/cjs/sampleFormatDescriptor.d.ts +0 -6
  509. package/dist/cjs/stringEnum.d.ts +0 -161
  510. package/dist/cjs/struct/audiosample.d.ts +0 -64
  511. package/dist/cjs/struct/avbuffer.d.ts +0 -85
  512. package/dist/cjs/struct/avcodecparameters.d.ts +0 -181
  513. package/dist/cjs/struct/avdict.d.ts +0 -17
  514. package/dist/cjs/struct/avframe.d.ts +0 -559
  515. package/dist/cjs/struct/avpacket.d.ts +0 -124
  516. package/dist/cjs/struct/avpcmbuffer.d.ts +0 -49
  517. package/dist/cjs/struct/avsubtitle.d.ts +0 -30
  518. package/dist/cjs/struct/encryption.d.ts +0 -137
  519. package/dist/cjs/struct/rational.d.ts +0 -15
  520. package/dist/cjs/struct/rational.js +0 -43
  521. package/dist/cjs/util/amf.d.ts +0 -10
  522. package/dist/cjs/util/av1syntax.d.ts +0 -9
  523. package/dist/cjs/util/avbuffer.d.ts +0 -18
  524. package/dist/cjs/util/avbuffer.js +0 -153
  525. package/dist/cjs/util/avdict.d.ts +0 -9
  526. package/dist/cjs/util/avdict.js +0 -111
  527. package/dist/cjs/util/avframe.d.ts +0 -21
  528. package/dist/cjs/util/avpacket.d.ts +0 -24
  529. package/dist/cjs/util/channel.d.ts +0 -5
  530. package/dist/cjs/util/codecparameters.d.ts +0 -4
  531. package/dist/cjs/util/codecparameters.js +0 -70
  532. package/dist/cjs/util/common.d.ts +0 -3
  533. package/dist/cjs/util/crypto.d.ts +0 -1
  534. package/dist/cjs/util/crypto.js +0 -8
  535. package/dist/cjs/util/crypto.js.map +0 -1
  536. package/dist/cjs/util/encryption.d.ts +0 -6
  537. package/dist/cjs/util/expgolomb.d.ts +0 -26
  538. package/dist/cjs/util/intread.d.ts +0 -9
  539. package/dist/cjs/util/intwrite.d.ts +0 -9
  540. package/dist/cjs/util/mem.d.ts +0 -5
  541. package/dist/cjs/util/mem.js +0 -54
  542. package/dist/cjs/util/nalu.d.ts +0 -32
  543. package/dist/cjs/util/ntp.d.ts +0 -1
  544. package/dist/cjs/util/pcm.d.ts +0 -4
  545. package/dist/cjs/util/pixel.d.ts +0 -11
  546. package/dist/cjs/util/rational.d.ts +0 -58
  547. package/dist/cjs/util/sample.d.ts +0 -7
  548. package/dist/cjs/util/serialize.d.ts +0 -63
  549. package/dist/esm/util/crypto.d.ts +0 -1
  550. package/dist/esm/util/crypto.js +0 -4
  551. package/dist/esm/util/crypto.js.map +0 -1
  552. /package/dist/cjs/{audiosamplefmt.js → audiosamplefmt.cjs} +0 -0
  553. /package/dist/cjs/{avformat.js → avformat.cjs} +0 -0
  554. /package/dist/cjs/{codec.js → codec.cjs} +0 -0
  555. /package/dist/cjs/{error.js → error.cjs} +0 -0
  556. /package/dist/cjs/function/{analyzeAVFormat.js → analyzeAVFormat.cjs} +0 -0
  557. /package/dist/cjs/{pixfmt.js → pixfmt.cjs} +0 -0
  558. /package/dist/cjs/{sampleFormatDescriptor.js → sampleFormatDescriptor.cjs} +0 -0
  559. /package/dist/cjs/struct/{avsubtitle.js → avsubtitle.cjs} +0 -0
  560. /package/dist/cjs/util/{av1syntax.js → av1syntax.cjs} +0 -0
  561. /package/dist/cjs/util/{common.js → common.cjs} +0 -0
  562. /package/dist/cjs/util/{expgolomb.js → expgolomb.cjs} +0 -0
  563. /package/dist/cjs/util/{ntp.js → ntp.cjs} +0 -0
  564. /package/dist/cjs/util/{pcm.js → pcm.cjs} +0 -0
@@ -0,0 +1,72 @@
1
+ /*
2
+ * libmedia constant
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 { AVRational } from './struct/rational'
27
+
28
+ export const NOPTS_VALUE_BIGINT: int64 = -1n
29
+
30
+ export const NOPTS_VALUE: int32 = -1
31
+
32
+ export const AV_TIME_BASE: int32 = 1000000
33
+
34
+ export const AV_MILLI_TIME_BASE: int32 = 1000
35
+
36
+ export const AV_NANO_TIME_BASE: int32 = 1000000000
37
+
38
+ /**
39
+ * 微秒时间基
40
+ */
41
+ export const AV_TIME_BASE_Q = new AVRational({ den: AV_TIME_BASE, num: 1 })
42
+
43
+ /**
44
+ * 毫秒时间基
45
+ */
46
+ export const AV_MILLI_TIME_BASE_Q = new AVRational({ den: AV_MILLI_TIME_BASE, num: 1 })
47
+
48
+ /**
49
+ * 纳秒时间基
50
+ */
51
+ export const AV_NANO_TIME_BASE_Q = new AVRational({ den: AV_NANO_TIME_BASE, num: 1 })
52
+
53
+ /**
54
+ * 秒时间基
55
+ */
56
+ export const AV_TIME_BASE1_Q = new AVRational({ den: 1, num: 1 })
57
+
58
+ export const INT8_MAX: int8 = 127
59
+ export const INT16_MAX: int16 = 32767
60
+ export const INT32_MAX: int32 = 2147483647
61
+ export const INT64_MAX: int64 = 9223372036854775807n
62
+
63
+ export const INT8_MIN: int8 = -128
64
+ export const INT16_MIN: int16 = -32768
65
+ export const INT32_MIN: int32 = -INT32_MAX - 1
66
+
67
+ export const UINT8_MAX: uint8 = 255
68
+ export const UINT16_MAX: uint16 = 65535
69
+ export const UINT32_MAX: uint32 = 4294967295
70
+ export const UINT64_MAX: uint64 = 18446744073709551615n
71
+
72
+ export const AV_NUM_DATA_POINTERS = 8
package/src/enum.ts ADDED
@@ -0,0 +1,47 @@
1
+ export { AVCodecID, AVMediaType, AVPacketSideDataType } from './codec'
2
+
3
+ export { AVDisposition, AVStreamMetadataKey } from './AVStream'
4
+
5
+ export { AVFormat, AVSeekFlags, IOFlags, IOType } from './avformat'
6
+
7
+ export { AVSampleFormat, AVAudioServiceType, AVChannel, AVChannelOrder, AVChannelLayout } from './audiosamplefmt'
8
+
9
+ export { AVPixelFormatFlags } from './pixelFormatDescriptor'
10
+
11
+ export { AVCodecParameterFlags } from './struct/avcodecparameters'
12
+
13
+ export { AVChromaLocation, AVColorPrimaries, AVColorRange, AVColorSpace, AVColorTransferCharacteristic, AVFieldOrder, AVPixelFormat } from './pixfmt'
14
+
15
+ export { AV1Profile } from './codecs/av1'
16
+
17
+ export { VP9Profile } from './codecs/vp9'
18
+
19
+ export { H264NaluType, H264Profile, H264SliceType } from './codecs/h264'
20
+
21
+ export { HEVCNaluType, HEVCProfile, HEVCSliceType } from './codecs/hevc'
22
+
23
+ export { VVCNaluType, VVCSliceType } from './codecs/vvc'
24
+
25
+ export { MP3Profile } from './codecs/mp3'
26
+
27
+ export { AVBufferFlags } from './struct/avbuffer'
28
+
29
+ export { AVDictFlags } from './struct/avdict'
30
+
31
+ export { AVFrameFlags, FFDecodeError, AVPictureType, AVFrameSideDataType } from './struct/avframe'
32
+
33
+ export { AVPacketType, AVPacketFlags } from './struct/avpacket'
34
+
35
+ export { AVSubtitleType } from './struct/avsubtitle'
36
+
37
+ export { IOError } from '../../common/src/io/error'
38
+
39
+ export { RenderMode } from '../../avrender/src/image/ImageRender'
40
+
41
+ export { AVDiscard } from '../../avcodec/src/wasmcodec/VideoDecoder'
42
+
43
+ export { AVPlayerStatus, AVPlayerProgress } from '../../avplayer/src/AVPlayer'
44
+
45
+ export { IOLoaderStatus } from '../../avnetwork/src/ioLoader/IOLoader'
46
+
47
+ export { Mp4FragmentMode, Mp4Mode } from '../../avformat/src/formats/OIsobmffFormat'
package/src/error.ts ADDED
@@ -0,0 +1,45 @@
1
+
2
+ /*
3
+ * libmedia error defined
4
+ *
5
+ * 版权所有 (C) 2024 赵高兴
6
+ * Copyright (C) 2024 Gaoxing Zhao
7
+ *
8
+ * 此文件是 libmedia 的一部分
9
+ * This file is part of libmedia.
10
+ *
11
+ * libmedia 是自由软件;您可以根据 GNU Lesser General Public License(GNU LGPL)3.1
12
+ * 或任何其更新的版本条款重新分发或修改它
13
+ * libmedia is free software; you can redistribute it and/or
14
+ * modify it under the terms of the GNU Lesser General Public
15
+ * License as published by the Free Software Foundation; either
16
+ * version 3.1 of the License, or (at your option) any later version.
17
+ *
18
+ * libmedia 希望能够为您提供帮助,但不提供任何明示或暗示的担保,包括但不限于适销性或特定用途的保证
19
+ * 您应自行承担使用 libmedia 的风险,并且需要遵守 GNU Lesser General Public License 中的条款和条件。
20
+ * libmedia is distributed in the hope that it will be useful,
21
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
22
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
23
+ * Lesser General Public License for more details.
24
+ *
25
+ */
26
+
27
+ export const FORMAT_NOT_SUPPORT = -1
28
+
29
+ export const DATA_INVALID = -2
30
+
31
+ export const INVALID_ARGUMENT = -3
32
+
33
+ export const NO_MEMORY = -4
34
+
35
+ export const INVALID_OPERATE = -5
36
+
37
+ export const EAGAIN = -6
38
+
39
+ export const EOF = -7
40
+
41
+ export const CODEC_NOT_SUPPORT = -8
42
+
43
+ export const OPERATE_NOT_SUPPORT = -9
44
+
45
+ export const INVALID_PARAMETERS = -10
@@ -0,0 +1,94 @@
1
+ /*
2
+ * libmedia analyzeAVFormat
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 { AVFormat } from '../avformat'
27
+
28
+ import {
29
+ type IOReader
30
+ } from '@libmedia/common/io'
31
+
32
+ export default async function analyzeAVFormat(ioReader: IOReader, defaultFormat: AVFormat = AVFormat.UNKNOWN): Promise<AVFormat> {
33
+ let magic = await ioReader.peekString(8)
34
+ if (/^FLV/.test(magic)) {
35
+ return AVFormat.FLV
36
+ }
37
+ else if (/^DKIF/.test(magic)) {
38
+ return AVFormat.IVF
39
+ }
40
+ else if (/^ftyp/.test(magic.slice(4, 8))) {
41
+ return AVFormat.ISOBMFF
42
+ }
43
+ else if (/^OggS/.test(magic)) {
44
+ return AVFormat.OGG
45
+ }
46
+ else if (/^ID3/.test(magic)) {
47
+ return AVFormat.MP3
48
+ }
49
+ else if (/^fLaC/.test(magic)) {
50
+ return AVFormat.FLAC
51
+ }
52
+ else if (/^RIFF/.test(magic)) {
53
+ const dataType = (await ioReader.peekString(12)).slice(8)
54
+ if (/^WAVE/.test(dataType)) {
55
+ return AVFormat.WAV
56
+ }
57
+ else if (/^AVI/.test(dataType)) {
58
+ return AVFormat.AVI
59
+ }
60
+ }
61
+ else if (/^ADIF/.test(magic)) {
62
+ return AVFormat.AAC
63
+ }
64
+ else if ((await ioReader.peekUint32()) === 0x1A45DFA3) {
65
+ return AVFormat.MATROSKA
66
+ }
67
+ else if (/^WEBVTT/.test(magic)) {
68
+ return AVFormat.WEBVTT
69
+ }
70
+ // 私有的 magic
71
+ else if (/^LIMA/.test(magic)) {
72
+ await ioReader.skip(4)
73
+ return await ioReader.readUint16() as AVFormat
74
+ }
75
+ else {
76
+ const buf = await ioReader.peekBuffer(2)
77
+ switch (buf[0]) {
78
+ case 0x56:
79
+ if ((buf[1] & 0xe0) === 0xe0) {
80
+ return AVFormat.AAC
81
+ }
82
+ break
83
+ case 0xff:
84
+ if ((buf[1] & 0xf6) === 0xf0) {
85
+ return AVFormat.AAC
86
+ }
87
+ else if ([0xf2, 0xf4, 0xf6, 0xfa, 0xfc].includes(buf[1] & 0xfe)) {
88
+ return AVFormat.MP3
89
+ }
90
+ break
91
+ }
92
+ }
93
+ return defaultFormat
94
+ }
@@ -0,0 +1,166 @@
1
+ /* libmedia check is ioloader protocol
2
+ *
3
+ * 版权所有 (C) 2024 赵高兴
4
+ * Copyright (C) 2024 Gaoxing Zhao
5
+ *
6
+ * 此文件是 libmedia 的一部分
7
+ * This file is part of libmedia.
8
+ *
9
+ * libmedia 是自由软件;您可以根据 GNU Lesser General Public License(GNU LGPL)3.1
10
+ * 或任何其更新的版本条款重新分发或修改它
11
+ * libmedia is free software; you can redistribute it and/or
12
+ * modify it under the terms of the GNU Lesser General Public
13
+ * License as published by the Free Software Foundation; either
14
+ * version 3.1 of the License, or (at your option) any later version.
15
+ *
16
+ * libmedia 希望能够为您提供帮助,但不提供任何明示或暗示的担保,包括但不限于适销性或特定用途的保证
17
+ * 您应自行承担使用 libmedia 的风险,并且需要遵守 GNU Lesser General Public License 中的条款和条件。
18
+ * libmedia is distributed in the hope that it will be useful,
19
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
20
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
21
+ * Lesser General Public License for more details.
22
+ *
23
+ */
24
+
25
+ import { IOType } from '../avformat'
26
+ import { Ext2IOLoader } from '../stringEnum'
27
+
28
+
29
+ import {
30
+ type Data,
31
+ type HttpOptions,
32
+ array,
33
+ object,
34
+ text,
35
+ url as urlUtils,
36
+ concatTypeArray
37
+ } from '@libmedia/common'
38
+
39
+ import {
40
+ BitReader,
41
+ BufferReader,
42
+ BufferWriter,
43
+ type Uint8ArrayInterface
44
+ } from '@libmedia/common/io'
45
+
46
+ const RestExt = ['php', 'asp', 'aspx', 'jsp', 'do', 'pl']
47
+
48
+ async function analyzeUrlFileExt(url: string, httpOptions: HttpOptions = {}) {
49
+ const params: RequestInit = {
50
+ method: 'GET',
51
+ headers: {},
52
+ mode: 'cors',
53
+ cache: 'default',
54
+ referrerPolicy: 'no-referrer-when-downgrade'
55
+ }
56
+ if (httpOptions.headers) {
57
+ object.each(httpOptions.headers, (value, key) => {
58
+ params.headers[key] = value
59
+ })
60
+ }
61
+ if (httpOptions.credentials) {
62
+ params.credentials = httpOptions.credentials
63
+ }
64
+ if (httpOptions.referrerPolicy) {
65
+ params.referrerPolicy = httpOptions.referrerPolicy
66
+ }
67
+ let abortController: AbortController
68
+ if (typeof AbortController === 'function') {
69
+ abortController = new AbortController()
70
+ params.signal = abortController.signal
71
+ }
72
+ const res = await fetch(url, params)
73
+ if (res.ok && (res.status >= 200 && res.status <= 299)) {
74
+ const reader = res.body.getReader()
75
+ const buffers: Uint8Array[] = []
76
+ let len = 0
77
+ while (true) {
78
+ let result = await reader.read()
79
+ if (result.done) {
80
+ break
81
+ }
82
+ len += result.value.length
83
+ buffers.push(result.value)
84
+ if (len >= 100) {
85
+ break
86
+ }
87
+ }
88
+ if (abortController) {
89
+ abortController.abort()
90
+ }
91
+ if (buffers.length) {
92
+ const buffer = buffers.length > 1 ? concatTypeArray(Uint8Array, buffers) : buffers[0]
93
+ if (buffer.length) {
94
+ const context = text.decode(buffer.subarray(0, 100))
95
+ if (/<\?xml/.test(context)) {
96
+ if (context.indexOf('<MPD') > -1) {
97
+ return 'mpd'
98
+ }
99
+ }
100
+ else if (/#EXTM3U/.test(context)) {
101
+ return 'm3u8'
102
+ }
103
+ }
104
+ }
105
+ }
106
+ return ''
107
+ }
108
+
109
+ export default async function analyzeUrlIOLoader(source: string, defaultExt: string = '', httpOptions: HttpOptions = {}) {
110
+ let type: IOType
111
+ let ext: string = ''
112
+ let info: Data = {
113
+ url: source
114
+ }
115
+
116
+ if (defined(ENABLE_PROTOCOL_RTSP) && /^rtsp/.test(source)
117
+ || defined(ENABLE_PROTOCOL_RTMP) && /^rtmp/.test(source)
118
+ ) {
119
+ if (defined(ENABLE_PROTOCOL_RTSP) && /^rtsp/.test(source)) {
120
+ ext = 'rtsp'
121
+ }
122
+ else if (defined(ENABLE_PROTOCOL_RTMP) && /^rtmp/.test(source)) {
123
+ ext = 'rtmp'
124
+ }
125
+ type = IOType.WEBSOCKET
126
+ const protocol = urlUtils.parse(source).protocol
127
+ const subProtocol = protocol.split('+')[1] || 'wss'
128
+ if (subProtocol === 'wss' || subProtocol === 'ws') {
129
+ type = IOType.WEBSOCKET
130
+ }
131
+ else if (subProtocol === 'webtransport') {
132
+ type = IOType.WEBTRANSPORT
133
+ }
134
+ info.url = info.url.replace(/^\S+:\/\//, subProtocol + '://')
135
+ if (ext === 'rtmp') {
136
+ info.subProtocol = type
137
+ type = IOType.RTMP
138
+ }
139
+ }
140
+ else {
141
+
142
+ const protocol = urlUtils.parse(source).protocol
143
+
144
+ ext = defaultExt || urlUtils.parse(source).file.split('.').pop()
145
+ // 没有文件后缀,我们需要分析是不是 m3u8 和 mpd 文件
146
+ // 这两种格式需要提前知道来创建指定的 ioloader
147
+ if ((!ext || array.has(RestExt, ext)) && /^https?/.test(protocol)) {
148
+ ext = await analyzeUrlFileExt(source, httpOptions)
149
+ }
150
+
151
+ let defaultType: IOType = IOType.Fetch
152
+ if (protocol === 'wss' || protocol === 'ws') {
153
+ defaultType = IOType.WEBSOCKET
154
+ }
155
+ else if (protocol === 'webtransport') {
156
+ defaultType = IOType.WEBTRANSPORT
157
+ }
158
+ type = Ext2IOLoader[ext] ?? defaultType
159
+ }
160
+
161
+ return {
162
+ type,
163
+ ext,
164
+ info
165
+ }
166
+ }
@@ -0,0 +1,82 @@
1
+ /* libmedia AudioData to AVFrame utils
2
+ *
3
+ * 版权所有 (C) 2024 赵高兴
4
+ * Copyright (C) 2024 Gaoxing Zhao
5
+ *
6
+ * 此文件是 libmedia 的一部分
7
+ * This file is part of libmedia.
8
+ *
9
+ * libmedia 是自由软件;您可以根据 GNU Lesser General Public License(GNU LGPL)3.1
10
+ * 或任何其更新的版本条款重新分发或修改它
11
+ * libmedia is free software; you can redistribute it and/or
12
+ * modify it under the terms of the GNU Lesser General Public
13
+ * License as published by the Free Software Foundation; either
14
+ * version 3.1 of the License, or (at your option) any later version.
15
+ *
16
+ * libmedia 希望能够为您提供帮助,但不提供任何明示或暗示的担保,包括但不限于适销性或特定用途的保证
17
+ * 您应自行承担使用 libmedia 的风险,并且需要遵守 GNU Lesser General Public License 中的条款和条件。
18
+ * libmedia is distributed in the hope that it will be useful,
19
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
20
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
21
+ * Lesser General Public License for more details.
22
+ *
23
+ */
24
+
25
+ import { createAVFrame, getAudioBuffer } from '../util/avframe'
26
+ import { AVSampleFormat } from '../audiosamplefmt'
27
+ import type AVFrame from '../struct/avframe'
28
+ import { sampleFormatIsPlanar } from '../util/sample'
29
+ import { AV_TIME_BASE, NOPTS_VALUE_BIGINT } from '../constant'
30
+
31
+ import { mapUint8Array } from '@libmedia/cheap'
32
+
33
+ function mapFormat(format: AudioSampleFormat) {
34
+ switch (format) {
35
+ case 'u8':
36
+ return AVSampleFormat.AV_SAMPLE_FMT_U8
37
+ case 's16':
38
+ return AVSampleFormat.AV_SAMPLE_FMT_S16
39
+ case 's32':
40
+ return AVSampleFormat.AV_SAMPLE_FMT_S32
41
+ case 'f32':
42
+ return AVSampleFormat.AV_SAMPLE_FMT_FLT
43
+ case 'u8-planar':
44
+ return AVSampleFormat.AV_SAMPLE_FMT_U8P
45
+ case 's16-planar':
46
+ return AVSampleFormat.AV_SAMPLE_FMT_S16P
47
+ case 's32-planar':
48
+ return AVSampleFormat.AV_SAMPLE_FMT_S32P
49
+ case 'f32-planar':
50
+ return AVSampleFormat.AV_SAMPLE_FMT_FLTP
51
+ default:
52
+ throw new Error('not support')
53
+ }
54
+ }
55
+
56
+ export function audioData2AVFrame(audioData: AudioData, avframe: pointer<AVFrame> = nullptr) {
57
+ if (avframe === nullptr) {
58
+ avframe = createAVFrame()
59
+ }
60
+
61
+ avframe.sampleRate = audioData.sampleRate
62
+ avframe.nbSamples = audioData.numberOfFrames
63
+ avframe.chLayout.nbChannels = audioData.numberOfChannels
64
+ avframe.format = mapFormat(audioData.format)
65
+ avframe.pts = audioData.timestamp < 0 ? NOPTS_VALUE_BIGINT : static_cast<int64>(audioData.timestamp)
66
+ avframe.duration = static_cast<int64>(audioData.duration)
67
+ avframe.timeBase.den = AV_TIME_BASE
68
+ avframe.timeBase.num = 1
69
+
70
+ getAudioBuffer(avframe)
71
+
72
+ const planar = sampleFormatIsPlanar(avframe.format)
73
+ const planes = planar ? avframe.chLayout.nbChannels : 1
74
+
75
+ for (let i = 0; i < planes; i++) {
76
+ audioData.copyTo(mapUint8Array(avframe.extendedData[i], reinterpret_cast<size>(avframe.linesize[0])), {
77
+ planeIndex: i
78
+ })
79
+ }
80
+
81
+ return avframe
82
+ }
@@ -0,0 +1,111 @@
1
+ /* libmedia AVPCMBuffer to AVFrame utils
2
+ *
3
+ * 版权所有 (C) 2024 赵高兴
4
+ * Copyright (C) 2024 Gaoxing Zhao
5
+ *
6
+ * 此文件是 libmedia 的一部分
7
+ * This file is part of libmedia.
8
+ *
9
+ * libmedia 是自由软件;您可以根据 GNU Lesser General Public License(GNU LGPL)3.1
10
+ * 或任何其更新的版本条款重新分发或修改它
11
+ * libmedia is free software; you can redistribute it and/or
12
+ * modify it under the terms of the GNU Lesser General Public
13
+ * License as published by the Free Software Foundation; either
14
+ * version 3.1 of the License, or (at your option) any later version.
15
+ *
16
+ * libmedia 希望能够为您提供帮助,但不提供任何明示或暗示的担保,包括但不限于适销性或特定用途的保证
17
+ * 您应自行承担使用 libmedia 的风险,并且需要遵守 GNU Lesser General Public License 中的条款和条件。
18
+ * libmedia is distributed in the hope that it will be useful,
19
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
20
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
21
+ * Lesser General Public License for more details.
22
+ *
23
+ */
24
+
25
+ import { createAVFrame, unrefAVFrame } from '../util/avframe'
26
+ import type AVFrame from '../struct/avframe'
27
+ import { sampleFormatIsPlanar } from '../util/sample'
28
+ import type AVPCMBuffer from '../struct/avpcmbuffer'
29
+ import { avFreep, avMalloc } from '../util/mem'
30
+ import * as errorType from '../error'
31
+ import { avbufferCreate } from '../util/avbuffer'
32
+ import { memcpy } from '@libmedia/cheap'
33
+ import { AV_NUM_DATA_POINTERS } from '../constant'
34
+
35
+ export function avPCMBuffer2AVFrame(pcmBuffer: pointer<AVPCMBuffer>, copy: boolean = false, avframe: pointer<AVFrame> = nullptr) {
36
+ if (avframe === nullptr) {
37
+ avframe = createAVFrame()
38
+ }
39
+ else {
40
+ const pts = avframe.pts
41
+ const duration = avframe.duration
42
+ const den = avframe.timeBase.den
43
+ const num = avframe.timeBase.num
44
+ unrefAVFrame(avframe)
45
+ avframe.pts = pts
46
+ avframe.duration = duration
47
+ avframe.timeBase.den = den
48
+ avframe.timeBase.num = num
49
+ }
50
+
51
+ avframe.nbSamples = pcmBuffer.nbSamples
52
+ avframe.sampleRate = pcmBuffer.sampleRate
53
+ avframe.chLayout.nbChannels = pcmBuffer.channels
54
+ avframe.linesize[0] = pcmBuffer.linesize
55
+ avframe.format = pcmBuffer.format
56
+
57
+ const planar = sampleFormatIsPlanar(avframe.format)
58
+ const planes = planar ? pcmBuffer.channels : 1
59
+
60
+ if (planes > AV_NUM_DATA_POINTERS) {
61
+ avframe.extendedData = reinterpret_cast<pointer<pointer<uint8>>>(avMalloc(planes * reinterpret_cast<int32>(sizeof(accessof(avframe.extendedData)))))
62
+ if (!avframe.extendedData) {
63
+ avFreep(reinterpret_cast<pointer<pointer<uint8>>>(addressof(avframe.extendedData)))
64
+ return reinterpret_cast<pointer<AVFrame>>(errorType.NO_MEMORY)
65
+ }
66
+ }
67
+ else {
68
+ avframe.extendedData = addressof(avframe.data)
69
+ }
70
+
71
+ for (let i = 0; i < Math.min(planes, AV_NUM_DATA_POINTERS); i++) {
72
+ if (i === 0) {
73
+ if (copy) {
74
+ avframe.buf[0] = avbufferCreate(
75
+ avMalloc(pcmBuffer.linesize * (planar ? pcmBuffer.channels : 1)),
76
+ pcmBuffer.linesize * (planar ? pcmBuffer.channels : 1)
77
+ )
78
+ memcpy(avframe.buf[0].data, pcmBuffer.data[0], pcmBuffer.linesize * (planar ? pcmBuffer.channels : 1))
79
+ }
80
+ else {
81
+ avframe.buf[0] = avbufferCreate(pcmBuffer.data[0], pcmBuffer.linesize * (planar ? pcmBuffer.channels : 1))
82
+ }
83
+ if (!avframe.buf[0]) {
84
+ unrefAVFrame(avframe)
85
+ return reinterpret_cast<pointer<AVFrame>>(errorType.NO_MEMORY)
86
+ }
87
+ }
88
+ if (copy) {
89
+ avframe.extendedData[i] = avframe.data[i] = reinterpret_cast<pointer<uint8>>(avframe.buf[0].data + i * pcmBuffer.linesize)
90
+ }
91
+ else {
92
+ avframe.extendedData[i] = avframe.data[i] = pcmBuffer.data[i]
93
+ pcmBuffer.data[i] = nullptr
94
+ }
95
+ }
96
+
97
+ for (let i = 0; i < planes - AV_NUM_DATA_POINTERS; i++) {
98
+ if (copy) {
99
+ avframe.extendedData[i + AV_NUM_DATA_POINTERS] = reinterpret_cast<pointer<uint8>>(avframe.buf[0].data + i * pcmBuffer.linesize)
100
+ }
101
+ else {
102
+ avframe.extendedData[i + AV_NUM_DATA_POINTERS] = pcmBuffer.data[i]
103
+ pcmBuffer.data[i] = nullptr
104
+ }
105
+ }
106
+ if (!copy) {
107
+ pcmBuffer.maxnbSamples = 0
108
+ }
109
+
110
+ return avframe
111
+ }