@libmedia/avutil 0.12.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (572) hide show
  1. package/dist/cjs/{AVStream.js → AVStream.cjs} +5 -5
  2. package/dist/cjs/AVStream.js.map +1 -1
  3. package/dist/cjs/audiosamplefmt.js.map +1 -1
  4. package/dist/cjs/avformat.js.map +1 -1
  5. package/dist/cjs/codec.js.map +1 -1
  6. package/dist/cjs/codecs/{aac.js → aac.cjs} +2 -8
  7. package/dist/cjs/codecs/aac.js.map +1 -1
  8. package/dist/cjs/codecs/{ac3.js → ac3.cjs} +2 -8
  9. package/dist/cjs/codecs/ac3.js.map +1 -1
  10. package/dist/cjs/codecs/{av1.js → av1.cjs} +6 -10
  11. package/dist/cjs/codecs/av1.js.map +1 -1
  12. package/dist/cjs/codecs/{dts.js → dts.cjs} +3 -9
  13. package/dist/cjs/codecs/dts.js.map +1 -1
  14. package/dist/cjs/codecs/{flac.js → flac.cjs} +2 -8
  15. package/dist/cjs/codecs/flac.js.map +1 -1
  16. package/dist/cjs/codecs/{h264.js → h264.cjs} +20 -23
  17. package/dist/cjs/codecs/h264.js.map +1 -1
  18. package/dist/cjs/codecs/{hevc.js → hevc.cjs} +23 -23
  19. package/dist/cjs/codecs/hevc.js.map +1 -1
  20. package/dist/cjs/codecs/{mp3.js → mp3.cjs} +1 -1
  21. package/dist/cjs/codecs/mp3.js.map +1 -1
  22. package/dist/cjs/codecs/{mpeg4.js → mpeg4.cjs} +1 -1
  23. package/dist/cjs/codecs/mpeg4.js.map +1 -1
  24. package/dist/cjs/codecs/{mpegvideo.js → mpegvideo.cjs} +1 -1
  25. package/dist/cjs/codecs/mpegvideo.js.map +1 -1
  26. package/dist/cjs/codecs/{opus.js → opus.cjs} +3 -9
  27. package/dist/cjs/codecs/opus.js.map +1 -1
  28. package/dist/cjs/codecs/ttml.cjs +51 -0
  29. package/dist/cjs/codecs/ttml.js.map +1 -1
  30. package/dist/cjs/codecs/{vp8.js → vp8.cjs} +2 -8
  31. package/dist/cjs/codecs/vp8.js.map +1 -1
  32. package/dist/cjs/codecs/{vp9.js → vp9.cjs} +4 -10
  33. package/dist/cjs/codecs/vp9.js.map +1 -1
  34. package/dist/cjs/codecs/{vvc.js → vvc.cjs} +25 -25
  35. package/dist/cjs/codecs/vvc.js.map +1 -1
  36. package/dist/cjs/{constant.js → constant.cjs} +6 -7
  37. package/dist/cjs/constant.js.map +1 -1
  38. package/dist/cjs/{enum.js → enum.cjs} +3 -1
  39. package/dist/cjs/enum.js.map +1 -1
  40. package/dist/cjs/error.js.map +1 -1
  41. package/dist/cjs/function/analyzeAVFormat.js.map +1 -1
  42. package/dist/cjs/function/analyzeUrlIOLoader.cjs +66 -0
  43. package/dist/cjs/function/analyzeUrlIOLoader.js.map +1 -1
  44. package/dist/cjs/function/{audioData2AVFrame.js → audioData2AVFrame.cjs} +9 -9
  45. package/dist/cjs/function/audioData2AVFrame.js.map +1 -1
  46. package/dist/cjs/function/{avPCMBuffer2AVFrame.js → avPCMBuffer2AVFrame.cjs} +20 -20
  47. package/dist/cjs/function/avPCMBuffer2AVFrame.js.map +1 -1
  48. package/dist/cjs/function/{avframe2AudioData.js → avframe2AudioData.cjs} +7 -7
  49. package/dist/cjs/function/avframe2AudioData.js.map +1 -1
  50. package/dist/cjs/function/avframe2VideoFrame.cjs +48 -0
  51. package/dist/cjs/function/avframe2VideoFrame.js.map +1 -1
  52. package/dist/cjs/function/{avpacket2EncodedAudioChunk.js → avpacket2EncodedAudioChunk.cjs} +3 -3
  53. package/dist/cjs/function/avpacket2EncodedAudioChunk.js.map +1 -1
  54. package/dist/cjs/function/{avpacket2EncodedVideoChunk.js → avpacket2EncodedVideoChunk.cjs} +3 -3
  55. package/dist/cjs/function/avpacket2EncodedVideoChunk.js.map +1 -1
  56. package/dist/cjs/function/compileResource.cjs +19 -0
  57. package/dist/cjs/function/compileResource.js.map +1 -1
  58. package/dist/cjs/function/constant/webcodecs.cjs +50 -0
  59. package/dist/cjs/function/constant/webcodecs.js.map +1 -0
  60. package/dist/cjs/function/encodedAudioChunk2AVPacket.cjs +23 -0
  61. package/dist/cjs/function/encodedAudioChunk2AVPacket.js.map +1 -1
  62. package/dist/cjs/function/{encodedVideoChunk2AVPacket.js → encodedVideoChunk2AVPacket.cjs} +8 -8
  63. package/dist/cjs/function/encodedVideoChunk2AVPacket.js.map +1 -1
  64. package/dist/cjs/function/{getAudioCodec.js → getAudioCodec.cjs} +1 -1
  65. package/dist/cjs/function/getAudioCodec.js.map +1 -1
  66. package/dist/cjs/function/getAudioMimeType.cjs +19 -0
  67. package/dist/cjs/function/getAudioMimeType.js.map +1 -0
  68. package/dist/cjs/function/getHardwarePreference.cjs +10 -0
  69. package/dist/cjs/function/getHardwarePreference.js.map +1 -1
  70. package/dist/cjs/function/{getVideoCodec.js → getVideoCodec.cjs} +12 -12
  71. package/dist/cjs/function/getVideoCodec.js.map +1 -1
  72. package/dist/cjs/function/getVideoMimeType.cjs +18 -0
  73. package/dist/cjs/function/getVideoMimeType.js.map +1 -0
  74. package/dist/cjs/function/{getWasmUrl.js → getWasmUrl.cjs} +2 -3
  75. package/dist/cjs/function/getWasmUrl.js.map +1 -1
  76. package/dist/cjs/function/{hasAlphaChannel.js → hasAlphaChannel.cjs} +1 -1
  77. package/dist/cjs/function/hasAlphaChannel.js.map +1 -1
  78. package/dist/cjs/function/{isHdr.js → isHdr.cjs} +1 -1
  79. package/dist/cjs/function/isHdr.js.map +1 -1
  80. package/dist/cjs/function/videoFrame2AVFrame.cjs +51 -0
  81. package/dist/cjs/function/videoFrame2AVFrame.js.map +1 -1
  82. package/dist/cjs/implement/AVFramePoolImpl.cjs +28 -0
  83. package/dist/cjs/implement/AVFramePoolImpl.js.map +1 -1
  84. package/dist/cjs/implement/AVPCMBufferPoolImpl.cjs +27 -0
  85. package/dist/cjs/implement/AVPCMBufferPoolImpl.js.map +1 -1
  86. package/dist/cjs/implement/AVPacketPoolImpl.cjs +29 -0
  87. package/dist/cjs/implement/AVPacketPoolImpl.js.map +1 -1
  88. package/dist/cjs/index.cjs +840 -0
  89. package/dist/cjs/index.js.map +1 -0
  90. package/dist/cjs/internal.cjs +283 -0
  91. package/dist/cjs/internal.js.map +1 -0
  92. package/dist/cjs/{pixelFormatDescriptor.js → pixelFormatDescriptor.cjs} +2 -0
  93. package/dist/cjs/pixelFormatDescriptor.js.map +1 -1
  94. package/dist/cjs/pixfmt.js.map +1 -1
  95. package/dist/cjs/sampleFormatDescriptor.js.map +1 -1
  96. package/dist/cjs/{stringEnum.js → stringEnum.cjs} +4 -1
  97. package/dist/cjs/stringEnum.js.map +1 -1
  98. package/dist/cjs/struct/{audiosample.js → audiosample.cjs} +13 -13
  99. package/dist/cjs/struct/audiosample.js.map +1 -1
  100. package/dist/cjs/struct/{avbuffer.js → avbuffer.cjs} +18 -18
  101. package/dist/cjs/struct/avbuffer.js.map +1 -1
  102. package/dist/cjs/struct/{avcodecparameters.js → avcodecparameters.cjs} +11 -11
  103. package/dist/cjs/struct/avcodecparameters.js.map +1 -1
  104. package/dist/cjs/struct/{avdict.js → avdict.cjs} +9 -9
  105. package/dist/cjs/struct/avdict.js.map +1 -1
  106. package/dist/cjs/struct/{avframe.js → avframe.cjs} +30 -30
  107. package/dist/cjs/struct/avframe.js.map +1 -1
  108. package/dist/cjs/struct/{avpacket.js → avpacket.cjs} +19 -19
  109. package/dist/cjs/struct/avpacket.js.map +1 -1
  110. package/dist/cjs/struct/{avpcmbuffer.js → avpcmbuffer.cjs} +9 -9
  111. package/dist/cjs/struct/avpcmbuffer.js.map +1 -1
  112. package/dist/cjs/struct/avsubtitle.js.map +1 -1
  113. package/dist/cjs/struct/{encryption.js → encryption.cjs} +13 -13
  114. package/dist/cjs/struct/encryption.js.map +1 -1
  115. package/dist/cjs/struct/rational.cjs +43 -0
  116. package/dist/cjs/struct/rational.js.map +1 -1
  117. package/dist/cjs/util/{amf.js → amf.cjs} +7 -38
  118. package/dist/cjs/util/amf.js.map +1 -1
  119. package/dist/cjs/util/av1syntax.js.map +1 -1
  120. package/dist/cjs/util/avbuffer.cjs +122 -0
  121. package/dist/cjs/util/avbuffer.js.map +1 -1
  122. package/dist/cjs/util/avdict.cjs +75 -0
  123. package/dist/cjs/util/avdict.js.map +1 -1
  124. package/dist/cjs/util/{avframe.js → avframe.cjs} +82 -87
  125. package/dist/cjs/util/avframe.js.map +1 -1
  126. package/dist/cjs/util/{avpacket.js → avpacket.cjs} +58 -58
  127. package/dist/cjs/util/avpacket.js.map +1 -1
  128. package/dist/cjs/util/{channel.js → channel.cjs} +7 -7
  129. package/dist/cjs/util/channel.js.map +1 -1
  130. package/dist/cjs/util/codecparameters.cjs +95 -0
  131. package/dist/cjs/util/codecparameters.js.map +1 -1
  132. package/dist/cjs/util/common.js.map +1 -1
  133. package/dist/cjs/util/{encryption.js → encryption.cjs} +5 -11
  134. package/dist/cjs/util/encryption.js.map +1 -1
  135. package/dist/cjs/util/expgolomb.js.map +1 -1
  136. package/dist/cjs/util/{intread.js → intread.cjs} +1 -1
  137. package/dist/cjs/util/intread.js.map +1 -1
  138. package/dist/cjs/util/{intwrite.js → intwrite.cjs} +1 -1
  139. package/dist/cjs/util/intwrite.js.map +1 -1
  140. package/dist/cjs/util/mem.cjs +23 -0
  141. package/dist/cjs/util/mem.js.map +1 -1
  142. package/dist/cjs/util/{nalu.js → nalu.cjs} +7 -42
  143. package/dist/cjs/util/nalu.js.map +1 -1
  144. package/dist/cjs/util/ntp.js.map +1 -1
  145. package/dist/cjs/util/pcm.js.map +1 -1
  146. package/dist/cjs/util/{pixel.js → pixel.cjs} +26 -30
  147. package/dist/cjs/util/pixel.js.map +1 -1
  148. package/dist/cjs/util/{rational.js → rational.cjs} +5 -11
  149. package/dist/cjs/util/rational.js.map +1 -1
  150. package/dist/cjs/util/{sample.js → sample.cjs} +6 -12
  151. package/dist/cjs/util/sample.js.map +1 -1
  152. package/dist/cjs/util/{serialize.js → serialize.cjs} +40 -42
  153. package/dist/cjs/util/serialize.js.map +1 -1
  154. package/dist/esm/AVStream.d.ts +7 -7
  155. package/dist/esm/AVStream.js +10 -12
  156. package/dist/esm/AVStream.js.map +1 -1
  157. package/dist/esm/audiosamplefmt.js.map +1 -1
  158. package/dist/esm/avformat.js.map +1 -1
  159. package/dist/esm/codec.js.map +1 -1
  160. package/dist/esm/codecs/aac.d.ts +10 -5
  161. package/dist/esm/codecs/aac.js +2 -2
  162. package/dist/esm/codecs/aac.js.map +1 -1
  163. package/dist/esm/codecs/ac3.d.ts +1 -1
  164. package/dist/esm/codecs/ac3.js +1 -1
  165. package/dist/esm/codecs/ac3.js.map +1 -1
  166. package/dist/esm/codecs/av1.d.ts +3 -3
  167. package/dist/esm/codecs/av1.js +4 -6
  168. package/dist/esm/codecs/av1.js.map +1 -1
  169. package/dist/esm/codecs/dts.d.ts +1 -1
  170. package/dist/esm/codecs/dts.js +2 -2
  171. package/dist/esm/codecs/dts.js.map +1 -1
  172. package/dist/esm/codecs/flac.d.ts +3 -3
  173. package/dist/esm/codecs/flac.js +1 -1
  174. package/dist/esm/codecs/flac.js.map +1 -1
  175. package/dist/esm/codecs/h264.d.ts +5 -5
  176. package/dist/esm/codecs/h264.js +13 -18
  177. package/dist/esm/codecs/h264.js.map +1 -1
  178. package/dist/esm/codecs/hevc.d.ts +5 -5
  179. package/dist/esm/codecs/hevc.js +16 -15
  180. package/dist/esm/codecs/hevc.js.map +1 -1
  181. package/dist/esm/codecs/mp3.d.ts +4 -4
  182. package/dist/esm/codecs/mp3.js +1 -1
  183. package/dist/esm/codecs/mp3.js.map +1 -1
  184. package/dist/esm/codecs/mpeg4.d.ts +1 -1
  185. package/dist/esm/codecs/mpeg4.js +1 -1
  186. package/dist/esm/codecs/mpeg4.js.map +1 -1
  187. package/dist/esm/codecs/mpegvideo.d.ts +1 -1
  188. package/dist/esm/codecs/mpegvideo.js +1 -1
  189. package/dist/esm/codecs/mpegvideo.js.map +1 -1
  190. package/dist/esm/codecs/opus.d.ts +3 -3
  191. package/dist/esm/codecs/opus.js +2 -4
  192. package/dist/esm/codecs/opus.js.map +1 -1
  193. package/dist/esm/codecs/ttml.js +5 -11
  194. package/dist/esm/codecs/ttml.js.map +1 -1
  195. package/dist/esm/codecs/vp8.d.ts +4 -4
  196. package/dist/esm/codecs/vp8.js +2 -2
  197. package/dist/esm/codecs/vp8.js.map +1 -1
  198. package/dist/esm/codecs/vp9.d.ts +4 -4
  199. package/dist/esm/codecs/vp9.js +8 -10
  200. package/dist/esm/codecs/vp9.js.map +1 -1
  201. package/dist/esm/codecs/vvc.d.ts +5 -5
  202. package/dist/esm/codecs/vvc.js +16 -17
  203. package/dist/esm/codecs/vvc.js.map +1 -1
  204. package/dist/esm/constant.d.ts +5 -7
  205. package/dist/esm/constant.js +5 -9
  206. package/dist/esm/constant.js.map +1 -1
  207. package/dist/esm/enum.d.ts +9 -1
  208. package/dist/esm/enum.js +3 -1
  209. package/dist/esm/enum.js.map +1 -1
  210. package/dist/esm/error.js.map +1 -1
  211. package/dist/esm/function/analyzeAVFormat.d.ts +2 -2
  212. package/dist/esm/function/analyzeAVFormat.js.map +1 -1
  213. package/dist/esm/function/analyzeUrlIOLoader.d.ts +2 -2
  214. package/dist/esm/function/analyzeUrlIOLoader.js +2 -10
  215. package/dist/esm/function/analyzeUrlIOLoader.js.map +1 -1
  216. package/dist/esm/function/audioData2AVFrame.d.ts +1 -1
  217. package/dist/esm/function/audioData2AVFrame.js +6 -6
  218. package/dist/esm/function/audioData2AVFrame.js.map +1 -1
  219. package/dist/esm/function/avPCMBuffer2AVFrame.d.ts +2 -2
  220. package/dist/esm/function/avPCMBuffer2AVFrame.js +9 -9
  221. package/dist/esm/function/avPCMBuffer2AVFrame.js.map +1 -1
  222. package/dist/esm/function/avframe2AudioData.d.ts +1 -1
  223. package/dist/esm/function/avframe2AudioData.js +6 -8
  224. package/dist/esm/function/avframe2AudioData.js.map +1 -1
  225. package/dist/esm/function/avframe2VideoFrame.d.ts +3 -3
  226. package/dist/esm/function/avframe2VideoFrame.js +14 -79
  227. package/dist/esm/function/avframe2VideoFrame.js.map +1 -1
  228. package/dist/esm/function/avpacket2EncodedAudioChunk.d.ts +1 -1
  229. package/dist/esm/function/avpacket2EncodedAudioChunk.js +5 -7
  230. package/dist/esm/function/avpacket2EncodedAudioChunk.js.map +1 -1
  231. package/dist/esm/function/avpacket2EncodedVideoChunk.d.ts +1 -1
  232. package/dist/esm/function/avpacket2EncodedVideoChunk.js +5 -7
  233. package/dist/esm/function/avpacket2EncodedVideoChunk.js.map +1 -1
  234. package/dist/esm/function/compileResource.d.ts +1 -1
  235. package/dist/esm/function/compileResource.js +2 -4
  236. package/dist/esm/function/compileResource.js.map +1 -1
  237. package/dist/esm/function/constant/webcodecs.d.ts +5 -0
  238. package/dist/esm/function/constant/webcodecs.js +51 -0
  239. package/dist/esm/function/constant/webcodecs.js.map +1 -0
  240. package/dist/esm/function/encodedAudioChunk2AVPacket.d.ts +1 -1
  241. package/dist/esm/function/encodedAudioChunk2AVPacket.js +6 -6
  242. package/dist/esm/function/encodedAudioChunk2AVPacket.js.map +1 -1
  243. package/dist/esm/function/encodedVideoChunk2AVPacket.d.ts +1 -1
  244. package/dist/esm/function/encodedVideoChunk2AVPacket.js +7 -7
  245. package/dist/esm/function/encodedVideoChunk2AVPacket.js.map +1 -1
  246. package/dist/esm/function/getAudioCodec.d.ts +1 -1
  247. package/dist/esm/function/getAudioCodec.js +2 -2
  248. package/dist/esm/function/getAudioCodec.js.map +1 -1
  249. package/dist/esm/function/getAudioMimeType.d.ts +2 -0
  250. package/dist/esm/function/getAudioMimeType.js +12 -0
  251. package/dist/esm/function/getAudioMimeType.js.map +1 -0
  252. package/dist/esm/function/getHardwarePreference.js +1 -1
  253. package/dist/esm/function/getHardwarePreference.js.map +1 -1
  254. package/dist/esm/function/getVideoCodec.d.ts +1 -1
  255. package/dist/esm/function/getVideoCodec.js +11 -13
  256. package/dist/esm/function/getVideoCodec.js.map +1 -1
  257. package/dist/esm/function/getVideoMimeType.d.ts +2 -0
  258. package/dist/esm/function/getVideoMimeType.js +8 -0
  259. package/dist/esm/function/getVideoMimeType.js.map +1 -0
  260. package/dist/esm/function/getWasmUrl.d.ts +1 -1
  261. package/dist/esm/function/getWasmUrl.js +2 -2
  262. package/dist/esm/function/getWasmUrl.js.map +1 -1
  263. package/dist/esm/function/hasAlphaChannel.d.ts +1 -1
  264. package/dist/esm/function/hasAlphaChannel.js +2 -2
  265. package/dist/esm/function/hasAlphaChannel.js.map +1 -1
  266. package/dist/esm/function/isHdr.d.ts +1 -1
  267. package/dist/esm/function/isHdr.js +2 -2
  268. package/dist/esm/function/isHdr.js.map +1 -1
  269. package/dist/esm/function/videoFrame2AVFrame.d.ts +6 -6
  270. package/dist/esm/function/videoFrame2AVFrame.js +13 -74
  271. package/dist/esm/function/videoFrame2AVFrame.js.map +1 -1
  272. package/dist/esm/implement/AVFramePoolImpl.d.ts +3 -4
  273. package/dist/esm/implement/AVFramePoolImpl.js +5 -7
  274. package/dist/esm/implement/AVFramePoolImpl.js.map +1 -1
  275. package/dist/esm/implement/AVPCMBufferPoolImpl.d.ts +3 -4
  276. package/dist/esm/implement/AVPCMBufferPoolImpl.js +4 -6
  277. package/dist/esm/implement/AVPCMBufferPoolImpl.js.map +1 -1
  278. package/dist/esm/implement/AVPacketPoolImpl.d.ts +3 -4
  279. package/dist/esm/implement/AVPacketPoolImpl.js +5 -7
  280. package/dist/esm/implement/AVPacketPoolImpl.js.map +1 -1
  281. package/dist/esm/index.d.ts +54 -0
  282. package/dist/esm/index.js +98 -0
  283. package/dist/esm/index.js.map +1 -0
  284. package/dist/esm/internal.d.ts +26 -0
  285. package/dist/esm/internal.js +52 -0
  286. package/dist/esm/internal.js.map +1 -0
  287. package/dist/esm/pixelFormatDescriptor.d.ts +1 -1
  288. package/dist/esm/pixelFormatDescriptor.js +2 -0
  289. package/dist/esm/pixelFormatDescriptor.js.map +1 -1
  290. package/dist/esm/pixfmt.d.ts +9 -1
  291. package/dist/esm/pixfmt.js.map +1 -1
  292. package/dist/esm/sampleFormatDescriptor.d.ts +1 -1
  293. package/dist/esm/sampleFormatDescriptor.js.map +1 -1
  294. package/dist/esm/stringEnum.d.ts +5 -5
  295. package/dist/esm/stringEnum.js +4 -1
  296. package/dist/esm/stringEnum.js.map +1 -1
  297. package/dist/esm/struct/audiosample.d.ts +1 -1
  298. package/dist/esm/struct/audiosample.js +2 -2
  299. package/dist/esm/struct/audiosample.js.map +1 -1
  300. package/dist/esm/struct/avbuffer.d.ts +1 -1
  301. package/dist/esm/struct/avbuffer.js +4 -4
  302. package/dist/esm/struct/avbuffer.js.map +1 -1
  303. package/dist/esm/struct/avcodecparameters.d.ts +9 -9
  304. package/dist/esm/struct/avcodecparameters.js +14 -16
  305. package/dist/esm/struct/avcodecparameters.js.map +1 -1
  306. package/dist/esm/struct/avdict.js +2 -2
  307. package/dist/esm/struct/avdict.js.map +1 -1
  308. package/dist/esm/struct/avframe.d.ts +12 -12
  309. package/dist/esm/struct/avframe.js +18 -22
  310. package/dist/esm/struct/avframe.js.map +1 -1
  311. package/dist/esm/struct/avpacket.d.ts +4 -4
  312. package/dist/esm/struct/avpacket.js +7 -9
  313. package/dist/esm/struct/avpacket.js.map +1 -1
  314. package/dist/esm/struct/avpcmbuffer.d.ts +1 -1
  315. package/dist/esm/struct/avpcmbuffer.js +2 -2
  316. package/dist/esm/struct/avpcmbuffer.js.map +1 -1
  317. package/dist/esm/struct/avsubtitle.d.ts +2 -2
  318. package/dist/esm/struct/avsubtitle.js.map +1 -1
  319. package/dist/esm/struct/encryption.js +2 -2
  320. package/dist/esm/struct/encryption.js.map +1 -1
  321. package/dist/esm/struct/rational.d.ts +1 -1
  322. package/dist/esm/struct/rational.js +4 -4
  323. package/dist/esm/struct/rational.js.map +1 -1
  324. package/dist/esm/util/amf.d.ts +1 -4
  325. package/dist/esm/util/amf.js +1 -5
  326. package/dist/esm/util/amf.js.map +1 -1
  327. package/dist/esm/util/av1syntax.d.ts +1 -1
  328. package/dist/esm/util/av1syntax.js.map +1 -1
  329. package/dist/esm/util/avbuffer.d.ts +2 -2
  330. package/dist/esm/util/avbuffer.js +7 -15
  331. package/dist/esm/util/avbuffer.js.map +1 -1
  332. package/dist/esm/util/avdict.d.ts +2 -2
  333. package/dist/esm/util/avdict.js +12 -16
  334. package/dist/esm/util/avdict.js.map +1 -1
  335. package/dist/esm/util/avframe.d.ts +2 -2
  336. package/dist/esm/util/avframe.js +22 -24
  337. package/dist/esm/util/avframe.js.map +1 -1
  338. package/dist/esm/util/avpacket.d.ts +3 -3
  339. package/dist/esm/util/avpacket.js +11 -13
  340. package/dist/esm/util/avpacket.js.map +1 -1
  341. package/dist/esm/util/channel.d.ts +1 -1
  342. package/dist/esm/util/channel.js +6 -6
  343. package/dist/esm/util/channel.js.map +1 -1
  344. package/dist/esm/util/codecparameters.d.ts +3 -1
  345. package/dist/esm/util/codecparameters.js +16 -12
  346. package/dist/esm/util/codecparameters.js.map +1 -1
  347. package/dist/esm/util/common.js.map +1 -1
  348. package/dist/esm/util/encryption.d.ts +2 -2
  349. package/dist/esm/util/encryption.js +1 -3
  350. package/dist/esm/util/encryption.js.map +1 -1
  351. package/dist/esm/util/expgolomb.d.ts +1 -2
  352. package/dist/esm/util/expgolomb.js.map +1 -1
  353. package/dist/esm/util/intread.js +1 -1
  354. package/dist/esm/util/intread.js.map +1 -1
  355. package/dist/esm/util/intwrite.js +1 -1
  356. package/dist/esm/util/intwrite.js.map +1 -1
  357. package/dist/esm/util/mem.js +7 -7
  358. package/dist/esm/util/mem.js.map +1 -1
  359. package/dist/esm/util/nalu.d.ts +1 -1
  360. package/dist/esm/util/nalu.js +3 -5
  361. package/dist/esm/util/nalu.js.map +1 -1
  362. package/dist/esm/util/ntp.js.map +1 -1
  363. package/dist/esm/util/pcm.d.ts +1 -1
  364. package/dist/esm/util/pcm.js.map +1 -1
  365. package/dist/esm/util/pixel.d.ts +1 -1
  366. package/dist/esm/util/pixel.js +8 -10
  367. package/dist/esm/util/pixel.js.map +1 -1
  368. package/dist/esm/util/rational.d.ts +10 -10
  369. package/dist/esm/util/rational.js +4 -4
  370. package/dist/esm/util/rational.js.map +1 -1
  371. package/dist/esm/util/sample.d.ts +1 -1
  372. package/dist/esm/util/sample.js +7 -7
  373. package/dist/esm/util/sample.js.map +1 -1
  374. package/dist/esm/util/serialize.d.ts +9 -9
  375. package/dist/esm/util/serialize.js +6 -6
  376. package/dist/esm/util/serialize.js.map +1 -1
  377. package/package.json +23 -390
  378. package/src/AVStream.ts +677 -0
  379. package/src/audiosamplefmt.ts +302 -0
  380. package/src/avformat.ts +96 -0
  381. package/src/codec.ts +1016 -0
  382. package/src/codecs/aac.ts +429 -0
  383. package/src/codecs/ac3.ts +309 -0
  384. package/src/codecs/av1.ts +503 -0
  385. package/src/codecs/dts.ts +100 -0
  386. package/src/codecs/flac.ts +118 -0
  387. package/src/codecs/h264.ts +1013 -0
  388. package/src/codecs/hevc.ts +1049 -0
  389. package/src/codecs/mp3.ts +172 -0
  390. package/src/codecs/mpeg4.ts +37 -0
  391. package/src/codecs/mpegvideo.ts +49 -0
  392. package/src/codecs/opus.ts +148 -0
  393. package/src/codecs/ttml.ts +158 -0
  394. package/src/codecs/vp8.ts +91 -0
  395. package/src/codecs/vp9.ts +213 -0
  396. package/src/codecs/vvc.ts +1086 -0
  397. package/src/constant.ts +72 -0
  398. package/src/enum.ts +47 -0
  399. package/src/error.ts +45 -0
  400. package/src/function/analyzeAVFormat.ts +94 -0
  401. package/src/function/analyzeUrlIOLoader.ts +166 -0
  402. package/src/function/audioData2AVFrame.ts +82 -0
  403. package/src/function/avPCMBuffer2AVFrame.ts +111 -0
  404. package/src/function/avframe2AudioData.ts +131 -0
  405. package/src/function/avframe2VideoFrame.ts +88 -0
  406. package/src/function/avpacket2EncodedAudioChunk.ts +39 -0
  407. package/src/function/avpacket2EncodedVideoChunk.ts +39 -0
  408. package/src/function/compileResource.ts +57 -0
  409. package/src/function/constant/webcodecs.ts +81 -0
  410. package/src/function/encodedAudioChunk2AVPacket.ts +62 -0
  411. package/src/function/encodedVideoChunk2AVPacket.ts +86 -0
  412. package/src/function/getAudioCodec.ts +45 -0
  413. package/src/function/getAudioMimeType.ts +44 -0
  414. package/src/function/getHardwarePreference.ts +45 -0
  415. package/src/function/getVideoCodec.ts +244 -0
  416. package/src/function/getVideoMimeType.ts +35 -0
  417. package/src/function/getWasmUrl.ts +190 -0
  418. package/src/function/hasAlphaChannel.ts +37 -0
  419. package/src/function/isHdr.ts +44 -0
  420. package/src/function/videoFrame2AVFrame.ts +95 -0
  421. package/src/implement/AVFramePoolImpl.ts +83 -0
  422. package/src/implement/AVPCMBufferPoolImpl.ts +79 -0
  423. package/src/implement/AVPacketPoolImpl.ts +82 -0
  424. package/src/index.ts +264 -0
  425. package/src/internal.ts +71 -0
  426. package/src/pixelFormatDescriptor.ts +819 -0
  427. package/src/pixfmt.ts +1400 -0
  428. package/src/sampleFormatDescriptor.ts +57 -0
  429. package/src/stringEnum.ts +366 -0
  430. package/src/struct/audiosample.ts +95 -0
  431. package/src/struct/avbuffer.ts +139 -0
  432. package/src/struct/avcodecparameters.ts +243 -0
  433. package/src/struct/avdict.ts +44 -0
  434. package/src/struct/avframe.ts +663 -0
  435. package/src/struct/avpacket.ts +178 -0
  436. package/src/struct/avpcmbuffer.ts +77 -0
  437. package/src/struct/avsubtitle.ts +59 -0
  438. package/src/struct/encryption.ts +180 -0
  439. package/src/struct/rational.ts +43 -0
  440. package/src/util/amf.ts +178 -0
  441. package/src/util/av1syntax.ts +112 -0
  442. package/src/util/avbuffer.ts +294 -0
  443. package/src/util/avdict.ts +171 -0
  444. package/src/util/avframe.ts +520 -0
  445. package/src/util/avpacket.ts +313 -0
  446. package/src/util/channel.ts +66 -0
  447. package/src/util/codecparameters.ts +148 -0
  448. package/src/util/common.ts +42 -0
  449. package/src/util/encryption.ts +154 -0
  450. package/src/util/expgolomb.ts +170 -0
  451. package/src/util/intread.ts +60 -0
  452. package/src/util/intwrite.ts +71 -0
  453. package/src/util/mem.ts +60 -0
  454. package/src/util/nalu.ts +297 -0
  455. package/src/util/ntp.ts +32 -0
  456. package/src/util/pcm.ts +161 -0
  457. package/src/util/pixel.ts +381 -0
  458. package/src/util/rational.ts +152 -0
  459. package/src/util/sample.ts +136 -0
  460. package/src/util/serialize.ts +268 -0
  461. package/dist/cjs/AVStream.d.ts +0 -577
  462. package/dist/cjs/audiosamplefmt.d.ts +0 -248
  463. package/dist/cjs/avformat.d.ts +0 -66
  464. package/dist/cjs/codec.d.ts +0 -927
  465. package/dist/cjs/codecs/aac.d.ts +0 -121
  466. package/dist/cjs/codecs/ac3.d.ts +0 -72
  467. package/dist/cjs/codecs/av1.d.ts +0 -75
  468. package/dist/cjs/codecs/dts.d.ts +0 -17
  469. package/dist/cjs/codecs/flac.d.ts +0 -46
  470. package/dist/cjs/codecs/h264.d.ts +0 -188
  471. package/dist/cjs/codecs/hevc.d.ts +0 -220
  472. package/dist/cjs/codecs/mp3.d.ts +0 -17
  473. package/dist/cjs/codecs/mpeg4.d.ts +0 -7
  474. package/dist/cjs/codecs/mpegvideo.d.ts +0 -7
  475. package/dist/cjs/codecs/opus.d.ts +0 -26
  476. package/dist/cjs/codecs/ttml.d.ts +0 -9
  477. package/dist/cjs/codecs/ttml.js +0 -87
  478. package/dist/cjs/codecs/vp8.d.ts +0 -31
  479. package/dist/cjs/codecs/vp9.d.ts +0 -45
  480. package/dist/cjs/codecs/vvc.d.ts +0 -235
  481. package/dist/cjs/constant.d.ts +0 -36
  482. package/dist/cjs/enum.d.ts +0 -3285
  483. package/dist/cjs/error.d.ts +0 -10
  484. package/dist/cjs/function/analyzeAVFormat.d.ts +0 -3
  485. package/dist/cjs/function/analyzeUrlIOLoader.d.ts +0 -7
  486. package/dist/cjs/function/analyzeUrlIOLoader.js +0 -101
  487. package/dist/cjs/function/audioData2AVFrame.d.ts +0 -2
  488. package/dist/cjs/function/avPCMBuffer2AVFrame.d.ts +0 -3
  489. package/dist/cjs/function/avframe2AudioData.d.ts +0 -2
  490. package/dist/cjs/function/avframe2VideoFrame.d.ts +0 -5
  491. package/dist/cjs/function/avframe2VideoFrame.js +0 -146
  492. package/dist/cjs/function/avpacket2EncodedAudioChunk.d.ts +0 -2
  493. package/dist/cjs/function/avpacket2EncodedVideoChunk.d.ts +0 -2
  494. package/dist/cjs/function/compileResource.d.ts +0 -2
  495. package/dist/cjs/function/compileResource.js +0 -53
  496. package/dist/cjs/function/encodedAudioChunk2AVPacket.d.ts +0 -2
  497. package/dist/cjs/function/encodedAudioChunk2AVPacket.js +0 -23
  498. package/dist/cjs/function/encodedVideoChunk2AVPacket.d.ts +0 -7
  499. package/dist/cjs/function/getAudioCodec.d.ts +0 -2
  500. package/dist/cjs/function/getHardwarePreference.d.ts +0 -1
  501. package/dist/cjs/function/getHardwarePreference.js +0 -16
  502. package/dist/cjs/function/getVideoCodec.d.ts +0 -2
  503. package/dist/cjs/function/getWasmUrl.d.ts +0 -2
  504. package/dist/cjs/function/hasAlphaChannel.d.ts +0 -2
  505. package/dist/cjs/function/isHdr.d.ts +0 -2
  506. package/dist/cjs/function/videoFrame2AVFrame.d.ts +0 -7
  507. package/dist/cjs/function/videoFrame2AVFrame.js +0 -113
  508. package/dist/cjs/implement/AVFramePoolImpl.d.ts +0 -11
  509. package/dist/cjs/implement/AVFramePoolImpl.js +0 -59
  510. package/dist/cjs/implement/AVPCMBufferPoolImpl.d.ts +0 -11
  511. package/dist/cjs/implement/AVPCMBufferPoolImpl.js +0 -57
  512. package/dist/cjs/implement/AVPacketPoolImpl.d.ts +0 -11
  513. package/dist/cjs/implement/AVPacketPoolImpl.js +0 -60
  514. package/dist/cjs/pixelFormatDescriptor.d.ts +0 -100
  515. package/dist/cjs/pixfmt.d.ts +0 -1293
  516. package/dist/cjs/sampleFormatDescriptor.d.ts +0 -6
  517. package/dist/cjs/stringEnum.d.ts +0 -161
  518. package/dist/cjs/struct/audiosample.d.ts +0 -64
  519. package/dist/cjs/struct/avbuffer.d.ts +0 -85
  520. package/dist/cjs/struct/avcodecparameters.d.ts +0 -181
  521. package/dist/cjs/struct/avdict.d.ts +0 -17
  522. package/dist/cjs/struct/avframe.d.ts +0 -559
  523. package/dist/cjs/struct/avpacket.d.ts +0 -124
  524. package/dist/cjs/struct/avpcmbuffer.d.ts +0 -49
  525. package/dist/cjs/struct/avsubtitle.d.ts +0 -30
  526. package/dist/cjs/struct/encryption.d.ts +0 -137
  527. package/dist/cjs/struct/rational.d.ts +0 -15
  528. package/dist/cjs/struct/rational.js +0 -43
  529. package/dist/cjs/util/amf.d.ts +0 -10
  530. package/dist/cjs/util/av1syntax.d.ts +0 -9
  531. package/dist/cjs/util/avbuffer.d.ts +0 -18
  532. package/dist/cjs/util/avbuffer.js +0 -153
  533. package/dist/cjs/util/avdict.d.ts +0 -9
  534. package/dist/cjs/util/avdict.js +0 -111
  535. package/dist/cjs/util/avframe.d.ts +0 -21
  536. package/dist/cjs/util/avpacket.d.ts +0 -24
  537. package/dist/cjs/util/channel.d.ts +0 -5
  538. package/dist/cjs/util/codecparameters.d.ts +0 -4
  539. package/dist/cjs/util/codecparameters.js +0 -70
  540. package/dist/cjs/util/common.d.ts +0 -3
  541. package/dist/cjs/util/crypto.d.ts +0 -1
  542. package/dist/cjs/util/crypto.js +0 -8
  543. package/dist/cjs/util/crypto.js.map +0 -1
  544. package/dist/cjs/util/encryption.d.ts +0 -6
  545. package/dist/cjs/util/expgolomb.d.ts +0 -26
  546. package/dist/cjs/util/intread.d.ts +0 -9
  547. package/dist/cjs/util/intwrite.d.ts +0 -9
  548. package/dist/cjs/util/mem.d.ts +0 -5
  549. package/dist/cjs/util/mem.js +0 -54
  550. package/dist/cjs/util/nalu.d.ts +0 -32
  551. package/dist/cjs/util/ntp.d.ts +0 -1
  552. package/dist/cjs/util/pcm.d.ts +0 -4
  553. package/dist/cjs/util/pixel.d.ts +0 -11
  554. package/dist/cjs/util/rational.d.ts +0 -58
  555. package/dist/cjs/util/sample.d.ts +0 -7
  556. package/dist/cjs/util/serialize.d.ts +0 -63
  557. package/dist/esm/util/crypto.d.ts +0 -1
  558. package/dist/esm/util/crypto.js +0 -4
  559. package/dist/esm/util/crypto.js.map +0 -1
  560. /package/dist/cjs/{audiosamplefmt.js → audiosamplefmt.cjs} +0 -0
  561. /package/dist/cjs/{avformat.js → avformat.cjs} +0 -0
  562. /package/dist/cjs/{codec.js → codec.cjs} +0 -0
  563. /package/dist/cjs/{error.js → error.cjs} +0 -0
  564. /package/dist/cjs/function/{analyzeAVFormat.js → analyzeAVFormat.cjs} +0 -0
  565. /package/dist/cjs/{pixfmt.js → pixfmt.cjs} +0 -0
  566. /package/dist/cjs/{sampleFormatDescriptor.js → sampleFormatDescriptor.cjs} +0 -0
  567. /package/dist/cjs/struct/{avsubtitle.js → avsubtitle.cjs} +0 -0
  568. /package/dist/cjs/util/{av1syntax.js → av1syntax.cjs} +0 -0
  569. /package/dist/cjs/util/{common.js → common.cjs} +0 -0
  570. /package/dist/cjs/util/{expgolomb.js → expgolomb.cjs} +0 -0
  571. /package/dist/cjs/util/{ntp.js → ntp.cjs} +0 -0
  572. /package/dist/cjs/util/{pcm.js → pcm.cjs} +0 -0
@@ -0,0 +1,95 @@
1
+ /* libmedia VideoFrame 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, getVideoBuffer, unrefAVFrame } from '../util/avframe'
26
+ import type AVFrame from '../struct/avframe'
27
+ import { AVColorPrimaries, AVColorRange, AVColorSpace, AVColorTransferCharacteristic, AVPixelFormat } from '../pixfmt'
28
+ import { getAVPixelFormatDescriptor } from '../pixelFormatDescriptor'
29
+ import { getHeap } from '@libmedia/cheap/internal'
30
+ import { AV_TIME_BASE } from '../constant'
31
+ import { pixelFormatMap, colorPrimariesMap, colorSpaceMap, colorTrcMap } from './constant/webcodecs'
32
+
33
+ export function mapPixelFormat(format: VideoPixelFormat) {
34
+ return pixelFormatMap[format] ?? AVPixelFormat.AV_PIX_FMT_NONE
35
+ }
36
+
37
+ export function mapColorSpace(colorSpace: VideoMatrixCoefficients) {
38
+ return colorSpaceMap[colorSpace] ?? AVColorSpace.AVCOL_SPC_BT709
39
+ }
40
+
41
+ export function mapColorPrimaries(colorPrimaries: VideoColorPrimaries) {
42
+ return colorPrimariesMap[colorPrimaries] ?? AVColorPrimaries.AVCOL_PRI_BT709
43
+ }
44
+
45
+ export function mapColorTrc(colorTrc: VideoTransferCharacteristics) {
46
+ return colorTrcMap[colorTrc] ?? AVColorTransferCharacteristic.AVCOL_TRC_BT709
47
+ }
48
+
49
+ export async function videoFrame2AVFrame(videoFrame: VideoFrame, avframe: pointer<AVFrame> = nullptr) {
50
+ if (avframe === nullptr) {
51
+ avframe = createAVFrame()
52
+ }
53
+ else {
54
+ unrefAVFrame(avframe)
55
+ }
56
+
57
+ avframe.format = mapPixelFormat(videoFrame.format)
58
+ avframe.pts = static_cast<int64>(videoFrame.timestamp)
59
+ avframe.bestEffortTimestamp = avframe.pts
60
+ avframe.width = videoFrame.codedWidth
61
+ avframe.height = videoFrame.codedHeight
62
+ avframe.duration = static_cast<int64>(videoFrame.duration)
63
+ avframe.timeBase.den = AV_TIME_BASE
64
+ avframe.timeBase.num = 1
65
+
66
+ avframe.colorSpace = mapColorSpace(videoFrame.colorSpace.matrix)
67
+ avframe.colorPrimaries = mapColorPrimaries(videoFrame.colorSpace.primaries)
68
+ avframe.colorTrc = mapColorTrc(videoFrame.colorSpace.transfer)
69
+ avframe.colorRange = videoFrame.colorSpace.fullRange ? AVColorRange.AVCOL_RANGE_JPEG : AVColorRange.AVCOL_RANGE_MPEG
70
+
71
+ if (videoFrame.visibleRect) {
72
+ avframe.cropLeft = reinterpret_cast<size>(videoFrame.visibleRect.left)
73
+ avframe.cropRight = reinterpret_cast<size>(videoFrame.codedWidth - videoFrame.visibleRect.right)
74
+ avframe.cropTop = reinterpret_cast<size>(videoFrame.visibleRect.top)
75
+ avframe.cropBottom = reinterpret_cast<size>(videoFrame.codedHeight - videoFrame.visibleRect.bottom)
76
+ }
77
+
78
+ getVideoBuffer(avframe)
79
+
80
+ const des = getAVPixelFormatDescriptor(avframe.format as AVPixelFormat)
81
+ const layout: PlaneLayout[] = []
82
+ for (let i = 0; i < des.comp.length; i++) {
83
+ if (des.comp[i].plane >= i) {
84
+ layout.push({
85
+ offset: static_cast<double>(reinterpret_cast<size>(avframe.data[i])),
86
+ stride: avframe.linesize[i]
87
+ })
88
+ }
89
+ }
90
+ await videoFrame.copyTo(getHeap(), {
91
+ layout
92
+ })
93
+
94
+ return avframe
95
+ }
@@ -0,0 +1,83 @@
1
+ /*
2
+ * libmedia AVFrame pool implement
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 { AVFramePool } from '../struct/avframe'
27
+ import { AVFrameRef } from '../struct/avframe'
28
+ import { avMallocz } from '../util/mem'
29
+ import { getAVFrameDefault, unrefAVFrame } from '../util/avframe'
30
+
31
+ import {
32
+ type List,
33
+ type Mutex,
34
+ atomics,
35
+ mutex
36
+ } from '@libmedia/cheap'
37
+
38
+ export default class AVFramePoolImpl implements AVFramePool {
39
+
40
+ private list: List<pointer<AVFrameRef>>
41
+
42
+ private mutex: pointer<Mutex>
43
+
44
+ constructor(list: List<pointer<AVFrameRef>>, mutex?: pointer<Mutex>) {
45
+ this.list = list
46
+ this.mutex = mutex
47
+ }
48
+
49
+ public alloc(): pointer<AVFrameRef> {
50
+ let avframe = this.list.find((avframe) => {
51
+ return atomics.compareExchange(addressof(avframe.refCount), -1, 1) === -1
52
+ })
53
+ if (!avframe) {
54
+ avframe = avMallocz(sizeof(AVFrameRef))
55
+
56
+ getAVFrameDefault(avframe)
57
+
58
+ atomics.store(addressof(avframe.refCount), 1)
59
+
60
+ if (defined(ENABLE_THREADS)) {
61
+ assert(this.mutex)
62
+ mutex.lock(this.mutex)
63
+ }
64
+
65
+ this.list.push(avframe)
66
+
67
+ if (defined(ENABLE_THREADS)) {
68
+ mutex.unlock(this.mutex)
69
+ }
70
+ }
71
+
72
+ return avframe
73
+ }
74
+ public release(avframe: pointer<AVFrameRef>): void {
75
+ if (atomics.load(addressof(avframe.refCount)) <= 0) {
76
+ return
77
+ }
78
+ if (atomics.sub(addressof(avframe.refCount), 1) === 1) {
79
+ unrefAVFrame(avframe)
80
+ atomics.store(addressof(avframe.refCount), -1)
81
+ }
82
+ }
83
+ }
@@ -0,0 +1,79 @@
1
+ /*
2
+ * libmedia AVPCMBuffer pool implement
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 { AVPCMBufferPool } from '../struct/avpcmbuffer'
27
+ import { AVPCMBufferRef } from '../struct/avpcmbuffer'
28
+ import { avMallocz } from '../util/mem'
29
+
30
+ import {
31
+ type List,
32
+ type Mutex,
33
+ atomics,
34
+ mutex
35
+ } from '@libmedia/cheap'
36
+
37
+ export default class AVPCMBufferPoolImpl implements AVPCMBufferPool {
38
+
39
+ private list: List<pointer<AVPCMBufferRef>>
40
+
41
+ private mutex: pointer<Mutex>
42
+
43
+ constructor(list: List<pointer<AVPCMBufferRef>>, mutex?: pointer<Mutex>) {
44
+ this.list = list
45
+ this.mutex = mutex
46
+ }
47
+
48
+ public alloc(): pointer<AVPCMBufferRef> {
49
+ let buffer = this.list.find((buffer) => {
50
+ return atomics.compareExchange(addressof(buffer.refCount), -1, 1) === -1
51
+ })
52
+ if (!buffer) {
53
+ buffer = avMallocz(sizeof(AVPCMBufferRef))
54
+
55
+ atomics.store(addressof(buffer.refCount), 1)
56
+
57
+ if (defined(ENABLE_THREADS)) {
58
+ assert(this.mutex)
59
+ mutex.lock(this.mutex)
60
+ }
61
+
62
+ this.list.push(buffer)
63
+
64
+ if (defined(ENABLE_THREADS)) {
65
+ mutex.unlock(this.mutex)
66
+ }
67
+ }
68
+
69
+ return buffer
70
+ }
71
+ public release(buffer: pointer<AVPCMBufferRef>): void {
72
+ if (atomics.load(addressof(buffer.refCount)) <= 0) {
73
+ return
74
+ }
75
+ if (atomics.sub(addressof(buffer.refCount), 1) === 1) {
76
+ atomics.store(addressof(buffer.refCount), -1)
77
+ }
78
+ }
79
+ }
@@ -0,0 +1,82 @@
1
+ /*
2
+ * libmedia AVPacket pool implement
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 { avMallocz } from '../util/mem'
27
+ import type { AVPacketPool } from '../struct/avpacket'
28
+ import { AVPacketRef } from '../struct/avpacket'
29
+ import { getAVPacketDefault, unrefAVPacket } from '../util/avpacket'
30
+
31
+ import {
32
+ type List,
33
+ type Mutex,
34
+ atomics,
35
+ mutex
36
+ } from '@libmedia/cheap'
37
+
38
+ export default class AVPacketPoolImpl implements AVPacketPool {
39
+
40
+ private list: List<pointer<AVPacketRef>>
41
+
42
+ private mutex: pointer<Mutex>
43
+
44
+ constructor(list: List<pointer<AVPacketRef>>, mutex?: pointer<Mutex>) {
45
+ this.list = list
46
+ this.mutex = mutex
47
+ }
48
+
49
+ public alloc(): pointer<AVPacketRef> {
50
+ let avpacket = this.list.find((avpacket) => {
51
+ return atomics.compareExchange(addressof(avpacket.refCount), -1, 1) === -1
52
+ })
53
+ if (!avpacket) {
54
+ avpacket = avMallocz(sizeof(AVPacketRef))
55
+ getAVPacketDefault(avpacket)
56
+
57
+ atomics.store(addressof(avpacket.refCount), 1)
58
+
59
+ if (defined(ENABLE_THREADS)) {
60
+ assert(this.mutex)
61
+ mutex.lock(this.mutex)
62
+ }
63
+
64
+ this.list.push(avpacket)
65
+
66
+ if (defined(ENABLE_THREADS)) {
67
+ mutex.unlock(this.mutex)
68
+ }
69
+ }
70
+
71
+ return avpacket
72
+ }
73
+ public release(avpacket: pointer<AVPacketRef>): void {
74
+ if (atomics.load(addressof(avpacket.refCount)) <= 0) {
75
+ return
76
+ }
77
+ if (atomics.sub(addressof(avpacket.refCount), 1) === 1) {
78
+ unrefAVPacket(avpacket)
79
+ atomics.store(addressof(avpacket.refCount), -1)
80
+ }
81
+ }
82
+ }
package/src/index.ts ADDED
@@ -0,0 +1,264 @@
1
+ export {
2
+ AVDiscard,
3
+ AVDisposition,
4
+ AVStreamGroup,
5
+ AVStreamGroupInterface,
6
+ AVStreamGroupParamsType,
7
+ AVStreamGroupTileGrid,
8
+ AVStreamInterface,
9
+ AVStreamMetadataEncryption,
10
+ AVStreamMetadataKey,
11
+ default as AVStream
12
+ } from './AVStream'
13
+
14
+ export {
15
+ AVFormat,
16
+ AVSeekFlags,
17
+ IOFlags,
18
+ IOType
19
+ } from './avformat'
20
+
21
+ export {
22
+ AVSampleFormat,
23
+ AVAudioServiceType,
24
+ AVChannel,
25
+ AVChannelOrder,
26
+ AVChannelLayout as AVChannelLayoutType
27
+ } from './audiosamplefmt'
28
+
29
+ export {
30
+ AVCodecID,
31
+ AVMediaType,
32
+ AVPacketSideDataType
33
+ } from './codec'
34
+
35
+ export * as errorType from './error'
36
+
37
+ export {
38
+ AVPixelFormatDescriptor,
39
+ AVPixelFormatFlags,
40
+ getAVPixelFormatDescriptor,
41
+ getBitsPerPixel
42
+ } from './pixelFormatDescriptor'
43
+
44
+ export {
45
+ AVColorSpace,
46
+ AVColorRange,
47
+ AVColorPrimaries,
48
+ AVColorTransferCharacteristic,
49
+ AVChromaLocation,
50
+ AVFieldOrder,
51
+ AVPixelFormat
52
+ } from './pixfmt'
53
+
54
+ export {
55
+ AVSampleFormatDescriptor,
56
+ AVSampleFormatDescriptors
57
+ } from './sampleFormatDescriptor'
58
+
59
+ export {
60
+ default as AVPacket,
61
+ AVPacketFlags,
62
+ AVPacketPool,
63
+ AVPacketRef,
64
+ AVPacketSideData,
65
+ AVPacketType,
66
+ AVProducerReferenceTime
67
+ } from './struct/avpacket'
68
+
69
+ export {
70
+ default as AVFrame,
71
+ AVContentLightMetadata,
72
+ AVFrameFlags,
73
+ AVFramePool,
74
+ AVFrameRef,
75
+ AVFrameSideData,
76
+ AVFrameSideDataType,
77
+ AVMasteringDisplayMetadata,
78
+ AVPictureType
79
+ } from './struct/avframe'
80
+
81
+ export {
82
+ AVBuffer,
83
+ AVBufferFlags,
84
+ AVBufferPool,
85
+ AVBufferRef,
86
+ BufferPoolEntry
87
+ } from './struct/avbuffer'
88
+
89
+ export {
90
+ AVChannelCustom,
91
+ AVChannelLayout
92
+ } from './struct/audiosample'
93
+
94
+ export {
95
+ default as AVCodecParameters,
96
+ AVCodecParameterFlags
97
+ } from './struct/avcodecparameters'
98
+
99
+ export {
100
+ AVDictFlags,
101
+ AVDictionary,
102
+ AVDictionaryEntry
103
+ } from './struct/avdict'
104
+
105
+ export {
106
+ default as AVPCMBuffer,
107
+ AVPCMBufferPool,
108
+ AVPCMBufferRef
109
+ } from './struct/avpcmbuffer'
110
+
111
+ export {
112
+ AVSubtitle,
113
+ AVSubtitleRect,
114
+ AVSubtitleType
115
+ } from './struct/avsubtitle'
116
+
117
+ export {
118
+ AVRational
119
+ } from './struct/rational'
120
+
121
+ export {
122
+ encryptionInfo2SideData,
123
+ encryptionInitInfo2SideData,
124
+ encryptionSideData2Info,
125
+ encryptionSideData2InitInfo
126
+ } from './util/encryption'
127
+
128
+ export {
129
+ AVEncryptionInfo,
130
+ AVEncryptionInitInfo,
131
+ AVSubsampleEncryptionInfo,
132
+ EncryptionInfo,
133
+ EncryptionInitInfo
134
+ } from './struct/encryption'
135
+
136
+ export {
137
+ getAVPacketData,
138
+ initAVPacketData,
139
+ getSideData,
140
+ getAVPacketSideData,
141
+ hasSideData,
142
+ hasAVPacketSideData,
143
+ addSideData,
144
+ newSideData,
145
+ addAVPacketSideData,
146
+ deleteAVPacketSideData,
147
+ createAVPacket,
148
+ destroyAVPacket,
149
+ freeAVPacketSideData,
150
+ getAVPacketDefault,
151
+ copyAVPacketSideData,
152
+ copyAVPacketProps,
153
+ refAVPacket,
154
+ unrefAVPacket,
155
+ copyAVPacketData,
156
+ addAVPacketData
157
+ } from './util/avpacket'
158
+
159
+ export {
160
+ createAVFrame,
161
+ destroyAVFrame,
162
+ freeSideData,
163
+ wipeSideData,
164
+ wipeAVFrameSideData,
165
+ removeAVFrameSideData,
166
+ newAVFrameSideData,
167
+ getAVFrameSideData,
168
+ getAVFrameDefault,
169
+ getVideoBuffer,
170
+ getAudioBuffer,
171
+ getBuffer,
172
+ refAVFrame,
173
+ unrefAVFrame,
174
+ copyAVFrameProps,
175
+ cloneAVFrame
176
+ } from './util/avframe'
177
+
178
+ export {
179
+ avMalloc,
180
+ avRealloc,
181
+ avFree,
182
+ avFreep,
183
+ avMallocz
184
+ } from './util/mem'
185
+
186
+ export {
187
+ AVPacketSerialize,
188
+ AVCodecParametersSerialize,
189
+ serializeAVCodecParameters,
190
+ serializeAVPacket,
191
+ unserializeAVCodecParameters,
192
+ unserializeAVPacket
193
+ } from './util/serialize'
194
+
195
+ export {
196
+ avbufferAlloc,
197
+ avbufferAllocz,
198
+ avbufferCreate,
199
+ avbufferGetOpaque,
200
+ avbufferGetRefCount,
201
+ avbufferIsWritable,
202
+ avbufferMakeWritable,
203
+ avbufferRealloc,
204
+ avbufferRef,
205
+ avbufferReplace,
206
+ avbufferUnref
207
+ } from './util/avbuffer'
208
+
209
+ export {
210
+ avD2Q,
211
+ avQ2D,
212
+ avQ2D2,
213
+ avReduce,
214
+ avReduce2,
215
+ avRescaleQ,
216
+ avRescaleQ2,
217
+ avRescaleQ3,
218
+ avRescaleQ4
219
+ } from './util/rational'
220
+
221
+ export {
222
+ NOPTS_VALUE,
223
+ NOPTS_VALUE_BIGINT
224
+ } from './constant'
225
+
226
+ export {
227
+ copyCodecParameters,
228
+ freeCodecParameters,
229
+ resetCodecParameters,
230
+ isHdr,
231
+ hasAlphaChannel
232
+ } from './util/codecparameters'
233
+
234
+ export * as avbuffer from './util/avbuffer'
235
+ export * as avdict from './util/avdict'
236
+ export * as intread from './util/intread'
237
+ export * as intwrite from './util/intwrite'
238
+ export * as nalu from './util/nalu'
239
+ export * as pixel from './util/pixel'
240
+ export * as sample from './util/sample'
241
+
242
+ export { avPCMBuffer2AVFrame } from './function/avPCMBuffer2AVFrame'
243
+ export { audioData2AVFrame } from './function/audioData2AVFrame'
244
+ export { avframe2AudioData } from './function/avframe2AudioData'
245
+ export { avframe2VideoFrame } from './function/avframe2VideoFrame'
246
+ export { videoFrame2AVFrame } from './function/videoFrame2AVFrame'
247
+
248
+ export { default as avpacket2EncodedAudioChunk } from './function/avpacket2EncodedAudioChunk'
249
+ export { default as avpacket2EncodedVideoChunk } from './function/avpacket2EncodedVideoChunk'
250
+ export { default as encodedAudioChunk2AVPacket } from './function/encodedAudioChunk2AVPacket'
251
+ export { default as encodedVideoChunk2AVPacket } from './function/encodedVideoChunk2AVPacket'
252
+
253
+ export { default as getAudioCodec } from './function/getAudioCodec'
254
+ export { default as getVideoCodec } from './function/getVideoCodec'
255
+ export { default as getAudioMimeType } from './function/getAudioMimeType'
256
+ export { default as getVideoMimeType } from './function/getVideoMimeType'
257
+ export { default as getWasmUrl } from './function/getWasmUrl'
258
+ export { default as compileResource } from './function/compileResource'
259
+ export { default as analyzeAVFormat } from './function/analyzeAVFormat'
260
+ export { default as analyzeUrlIOLoader } from './function/analyzeUrlIOLoader'
261
+
262
+ export { default as AVFramePoolImpl } from './implement/AVFramePoolImpl'
263
+ export { default as AVPCMBufferPoolImpl } from './implement/AVPCMBufferPoolImpl'
264
+ export { default as AVPacketPoolImpl } from './implement/AVPacketPoolImpl'
@@ -0,0 +1,71 @@
1
+ export {
2
+ AV_TIME_BASE,
3
+ AV_MILLI_TIME_BASE,
4
+ AV_NANO_TIME_BASE,
5
+ AV_TIME_BASE_Q,
6
+ AV_MILLI_TIME_BASE_Q,
7
+ AV_NANO_TIME_BASE_Q,
8
+ AV_TIME_BASE1_Q,
9
+ AV_NUM_DATA_POINTERS,
10
+ INT8_MAX,
11
+ INT16_MAX,
12
+ INT32_MAX,
13
+ INT64_MAX,
14
+ INT8_MIN,
15
+ INT16_MIN,
16
+ INT32_MIN,
17
+ UINT8_MAX,
18
+ UINT16_MAX,
19
+ UINT32_MAX,
20
+ UINT64_MAX
21
+ } from './constant'
22
+
23
+ export {
24
+ AVPALETTE_SIZE
25
+ } from './pixfmt'
26
+
27
+ export * as aac from './codecs/aac'
28
+ export * as ac3 from './codecs/ac3'
29
+ export * as av1 from './codecs/av1'
30
+ export * as dts from './codecs/dts'
31
+ export * as flac from './codecs/flac'
32
+ export * as h264 from './codecs/h264'
33
+ export * as hevc from './codecs/hevc'
34
+ export * as mp3 from './codecs/mp3'
35
+ export * as mpeg4 from './codecs/mpeg4'
36
+ export * as opus from './codecs/opus'
37
+ export * as vp9 from './codecs/vp9'
38
+ export * as vp8 from './codecs/vp8'
39
+ export * as vvc from './codecs/vvc'
40
+ export * as ttml from './codecs/ttml'
41
+ export * as mpegvideo from './codecs/mpegvideo'
42
+
43
+ export * as ntp from './util/ntp'
44
+ export * as common from './util/common'
45
+ export * as pcm from './util/pcm'
46
+ export * as amf from './util/amf'
47
+ export * as channel from './util/channel'
48
+ export * as expgolomb from './util/expgolomb'
49
+ export { getHardwarePreference } from './function/getHardwarePreference'
50
+ export { mapColorPrimaries, mapColorSpace, mapColorTrc, mapPixelFormat } from './function/videoFrame2AVFrame'
51
+
52
+ export {
53
+ CodecId2MimeType,
54
+ Ext2Format,
55
+ Ext2IOLoader,
56
+ VideoCodecString2CodecId,
57
+ AudioCodecString2CodecId,
58
+ SubtitleCodecString2CodecId,
59
+ SampleFmtString2SampleFormat,
60
+ streamGroup2ParamsType,
61
+ PixfmtString2AVPixelFormat,
62
+ colorPrimaries2AVColorPrimaries,
63
+ colorRange2AVColorRange,
64
+ colorSpace2AVColorSpace,
65
+ colorTrc2AVColorTransferCharacteristic,
66
+ DataCodecString2CodecId,
67
+ Format2AVFormat,
68
+ mediaType2AVMediaType,
69
+ layoutName2AVChannelLayout,
70
+ disposition2AVDisposition
71
+ } from './stringEnum'