@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,381 @@
1
+ /*
2
+ * libmedia video pixel util
3
+ *
4
+ * 版权所有 (C) 2024 赵高兴
5
+ * Copyright (C) 2024 Gaoxing Zhao
6
+ *
7
+ * 此文件是 libmedia 的一部分
8
+ * This file is part of libmedia.
9
+ *
10
+ * libmedia 是自由软件;您可以根据 GNU Lesser General Public License(GNU LGPL)3.1
11
+ * 或任何其更新的版本条款重新分发或修改它
12
+ * libmedia is free software; you can redistribute it and/or
13
+ * modify it under the terms of the GNU Lesser General Public
14
+ * License as published by the Free Software Foundation; either
15
+ * version 3.1 of the License, or (at your option) any later version.
16
+ *
17
+ * libmedia 希望能够为您提供帮助,但不提供任何明示或暗示的担保,包括但不限于适销性或特定用途的保证
18
+ * 您应自行承担使用 libmedia 的风险,并且需要遵守 GNU Lesser General Public License 中的条款和条件。
19
+ * libmedia is distributed in the hope that it will be useful,
20
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
21
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
22
+ * Lesser General Public License for more details.
23
+ *
24
+ */
25
+
26
+ import type { AVPixelFormatDescriptor } from '../pixelFormatDescriptor'
27
+ import { getAVPixelFormatDescriptor, AVPixelFormatFlags } from '../pixelFormatDescriptor'
28
+ import { AVChromaLocation, AVPixelFormat } from '../pixfmt'
29
+ import * as errorType from '../error'
30
+ import { INT32_MAX } from '../constant'
31
+ import { avFree, avMalloc } from './mem'
32
+
33
+ import { memset, stack } from '@libmedia/cheap'
34
+ import { align as alignFunc } from '@libmedia/common/math'
35
+
36
+ export function chromaLocation2Pos(pos: AVChromaLocation) {
37
+ if (pos <= AVChromaLocation.AVCHROMA_LOC_UNSPECIFIED || pos >= AVChromaLocation.AVCHROMA_LOC_NB) {
38
+ return
39
+ }
40
+ return {
41
+ x: (pos & 1) * 128,
42
+ y: ((pos >>> 1) ^ (pos < 4 ? 1 : 0)) * 128
43
+ }
44
+ }
45
+
46
+ function getMaxPixSteps(desc: AVPixelFormatDescriptor) {
47
+ const maxPixSteps: int32[] = [0, 0, 0, 0]
48
+ const maxPixStepsComps: int32[] = [0, 0, 0, 0]
49
+
50
+ for (let i = 0; i < 4; i++) {
51
+ if (desc.comp[i] && desc.comp[i].step > maxPixSteps[desc.comp[i].plane]) {
52
+ maxPixSteps[desc.comp[i].plane] = desc.comp[i].step
53
+ maxPixStepsComps[desc.comp[i].plane] = i
54
+ }
55
+ }
56
+
57
+ return {
58
+ maxPixSteps,
59
+ maxPixStepsComps
60
+ }
61
+ }
62
+
63
+ function setSystematicPal(pal: pointer<uint32>, pixfmt: AVPixelFormat) {
64
+ for (let i = 0; i < 256; i++) {
65
+ let r: int32, g: int32, b: int32
66
+
67
+ switch (pixfmt) {
68
+ case AVPixelFormat.AV_PIX_FMT_RGB8:
69
+ r = (i >> 5) * 36
70
+ g = ((i >> 2) & 7) * 36
71
+ b = (i & 3) * 85
72
+ break
73
+ case AVPixelFormat.AV_PIX_FMT_BGR8:
74
+ b = (i >> 6) * 85
75
+ g = ((i >> 3) & 7) * 36
76
+ r = (i & 7) * 36
77
+ break
78
+ case AVPixelFormat.AV_PIX_FMT_RGB4_BYTE:
79
+ r = (i >> 3) * 255
80
+ g = ((i >> 1) & 3) * 85
81
+ b = (i & 1) * 255
82
+ break
83
+ case AVPixelFormat.AV_PIX_FMT_BGR4_BYTE:
84
+ b = (i >> 3) * 255
85
+ g = ((i >> 1) & 3) * 85
86
+ r = (i & 1) * 255
87
+ break
88
+ case AVPixelFormat.AV_PIX_FMT_GRAY8:
89
+ r = b = g = i
90
+ break
91
+ default:
92
+ return errorType.INVALID_ARGUMENT
93
+ }
94
+ pal[i] = b + (g << 8) + (r << 16) + (0xFF << 24)
95
+ }
96
+
97
+ return 0
98
+ }
99
+
100
+ function pixelGetLinesize_(width: int32, plane: int32, maxStep: int32, maxStepComp: int32, desc: AVPixelFormatDescriptor) {
101
+ if (!desc) {
102
+ return errorType.INVALID_ARGUMENT
103
+ }
104
+
105
+ if (width < 0) {
106
+ return errorType.INVALID_ARGUMENT
107
+ }
108
+
109
+ const s = (maxStepComp === 1 || maxStepComp === 2) ? desc.log2ChromaW : 0
110
+
111
+ const shiftedW = ((width + (1 << s) - 1)) >>> s
112
+
113
+ if (shiftedW && maxStep > INT32_MAX / shiftedW) {
114
+ return errorType.INVALID_ARGUMENT
115
+ }
116
+
117
+ let linesize = maxStep * shiftedW
118
+
119
+ if (desc.flags & AVPixelFormatFlags.BIT_STREAM) {
120
+ linesize = (linesize + 7) >>> 3
121
+ }
122
+
123
+ return linesize
124
+ }
125
+
126
+ export function pixelGetLinesize(pixfmt: AVPixelFormat, width: int32, plane: int32) {
127
+ const desc = getAVPixelFormatDescriptor(pixfmt)
128
+
129
+ if (!desc) {
130
+ return errorType.INVALID_ARGUMENT
131
+ }
132
+
133
+ const { maxPixSteps, maxPixStepsComps } = getMaxPixSteps(desc)
134
+
135
+ return pixelGetLinesize_(width, plane, maxPixSteps[plane], maxPixStepsComps[plane], desc)
136
+ }
137
+
138
+ export function pixelFillLinesizes(linesizes: pointer<int32>, pixfmt: AVPixelFormat, width: int32) {
139
+ const desc = getAVPixelFormatDescriptor(pixfmt)
140
+
141
+ if (!desc) {
142
+ return errorType.INVALID_ARGUMENT
143
+ }
144
+
145
+ const { maxPixSteps, maxPixStepsComps } = getMaxPixSteps(desc)
146
+
147
+ memset(linesizes, 0, 4 * sizeof(linesizes[0]))
148
+
149
+ let ret = 0
150
+
151
+ for (let i = 0; i < 4; i++) {
152
+ if ((ret = pixelGetLinesize_(width, i, maxPixSteps[i], maxPixStepsComps[i], desc)) < 0) {
153
+ return ret
154
+ }
155
+ linesizes[i] = ret
156
+ }
157
+ }
158
+
159
+ export function pixelFillPlaneSizes(sizes: pointer<size>, pixfmt: AVPixelFormat, height: int32, linesizes: pointer<int32>) {
160
+ const hasPlane = [0, 0, 0, 0]
161
+
162
+ const desc = getAVPixelFormatDescriptor(pixfmt)
163
+
164
+ if (!desc) {
165
+ return errorType.INVALID_ARGUMENT
166
+ }
167
+
168
+ memset(sizes, 0, 4 * sizeof(sizes[0]))
169
+
170
+ if (linesizes[0] > INT32_MAX / height) {
171
+ return errorType.INVALID_ARGUMENT
172
+ }
173
+
174
+ sizes[0] = reinterpret_cast<size>(linesizes[0] * height)
175
+
176
+ if (desc.flags & AVPixelFormatFlags.PALETTE) {
177
+ sizes[1] = reinterpret_cast<size>(256 * 4)
178
+ return 0
179
+ }
180
+
181
+ for (let i = 0; i < 4; i++) {
182
+ if (desc.comp[i]) {
183
+ hasPlane[desc.comp[i].plane] = 1
184
+ }
185
+ }
186
+
187
+ for (let i = 0; i < 4 && hasPlane[i]; i++) {
188
+ let s = (i === 1 || i === 2) ? desc.log2ChromaH : 0
189
+ let h = (height + (1 << s) - 1) >> s
190
+
191
+ if (linesizes[i] > INT32_MAX / h) {
192
+ return errorType.INVALID_ARGUMENT
193
+ }
194
+
195
+ sizes[i] = reinterpret_cast<size>(h * linesizes[i])
196
+ }
197
+ return 0
198
+ }
199
+
200
+ export function pixelFillPointer(
201
+ data: pointer<pointer<uint8>>,
202
+ pixfmt: AVPixelFormat,
203
+ height: int32,
204
+ ptr: pointer<uint8>,
205
+ linesizes: pointer<int32>
206
+ ) {
207
+ const linesizes1 = reinterpret_cast<pointer<int32>>(stack.malloc(sizeof(linesizes[0]) * 4))
208
+ const sizes = reinterpret_cast<pointer<size>>(stack.malloc(sizeof(size) * 4))
209
+
210
+ memset(data, 0, 4 * sizeof(data[0]))
211
+
212
+ for (let i = 0; i < 4; i++) {
213
+ linesizes1[i] = linesizes[i]
214
+ }
215
+
216
+ let ret = pixelFillPlaneSizes(sizes, pixfmt, height, linesizes1)
217
+
218
+ if (ret < 0) {
219
+ defer()
220
+ return ret
221
+ }
222
+
223
+ ret = 0
224
+
225
+ for (let i = 0; i < 4; i++) {
226
+ if (sizes[i] > INT32_MAX - ret) {
227
+ defer()
228
+ return errorType.INVALID_ARGUMENT
229
+ }
230
+ ret += reinterpret_cast<double>(sizes[i])
231
+ }
232
+
233
+ if (!ptr) {
234
+ defer()
235
+ return ret
236
+ }
237
+
238
+ data[0] = ptr
239
+ for (let i = 1; i < 4 && sizes[i]; i++) {
240
+ data[i] = reinterpret_cast<pointer<uint8>>(data[i - 1] + sizes[i - 1])
241
+ }
242
+
243
+ defer()
244
+ return ret
245
+
246
+ function defer() {
247
+ stack.free(sizeof(linesizes[0]) * 4)
248
+ stack.free(sizeof(size) * 4)
249
+ }
250
+ }
251
+
252
+ export function pixelAlloc(
253
+ pointers: pointer<pointer<uint8>>,
254
+ linesizes: pointer<int32>,
255
+ w: int32,
256
+ h: int32,
257
+ pixfmt: AVPixelFormat,
258
+ align: int32 = 1
259
+ ) {
260
+
261
+ const desc = getAVPixelFormatDescriptor(pixfmt)
262
+
263
+ if (!desc) {
264
+ return errorType.INVALID_ARGUMENT
265
+ }
266
+
267
+ const linesizes1 = reinterpret_cast<pointer<int32>>(stack.malloc(sizeof(linesizes[0]) * 4))
268
+ const sizes = reinterpret_cast<pointer<size>>(stack.malloc(sizeof(size) * 4))
269
+
270
+ let ret = 0
271
+
272
+ if ((ret = pixelFillLinesizes(linesizes, pixfmt, align > 7 ? alignFunc(w, 8) : w)) < 0) {
273
+ defer()
274
+ return ret
275
+ }
276
+
277
+ for (let i = 0; i < 4; i++) {
278
+ linesizes[i] = alignFunc(linesizes[i], align)
279
+ linesizes1[i] = linesizes[i]
280
+ }
281
+
282
+ if ((ret = pixelFillPlaneSizes(sizes, pixfmt, h, linesizes1)) < 0) {
283
+ defer()
284
+ return ret
285
+ }
286
+
287
+ let totalSize: size = static_cast<size>(align)
288
+
289
+ for (let i = 0; i < 4; i++) {
290
+ if (totalSize > static_cast<size>(INT32_MAX) - sizes[i]) {
291
+ defer()
292
+ return errorType.INVALID_ARGUMENT
293
+ }
294
+ totalSize += sizes[i]
295
+ }
296
+
297
+ const buf: pointer<uint8> = avMalloc(totalSize)
298
+
299
+ if (!buf) {
300
+ defer()
301
+ return errorType.NO_MEMORY
302
+ }
303
+
304
+ if ((ret = pixelFillPointer(pointers, pixfmt, h, buf, linesizes)) < 0) {
305
+ defer()
306
+ return ret
307
+ }
308
+
309
+ if (desc.flags & AVPixelFormatFlags.PALETTE) {
310
+ if (align < 4) {
311
+ avFree(buf)
312
+ defer()
313
+ return ret
314
+ }
315
+ setSystematicPal(reinterpret_cast<pointer<uint32>>(pointers[1]), pixfmt)
316
+ }
317
+
318
+ if ((desc.flags & AVPixelFormatFlags.PALETTE)
319
+ && pointers[1]
320
+ && pointers[1] - pointers[0] > linesizes[0] * h
321
+ ) {
322
+ /* zero-initialize the padding before the palette */
323
+ memset(pointers[0] + linesizes[0] * h, 0, pointers[1] - pointers[0] - linesizes[0] * h)
324
+ }
325
+
326
+ defer()
327
+ return ret
328
+
329
+ function defer() {
330
+ stack.free(sizeof(linesizes[0]) * 4)
331
+ stack.free(sizeof(size) * 4)
332
+ }
333
+ }
334
+
335
+ export function pixelGetSize(pixfmt: AVPixelFormat, width: int32, height: int32, align: int32) {
336
+ const desc = getAVPixelFormatDescriptor(pixfmt)
337
+
338
+ if (!desc) {
339
+ return errorType.INVALID_ARGUMENT
340
+ }
341
+
342
+ const linesizes = reinterpret_cast<pointer<int32>>(stack.malloc(sizeof(int32) * 4))
343
+ const alignedLinesizes = reinterpret_cast<pointer<int32>>(stack.malloc(sizeof(int32) * 4))
344
+ const sizes = reinterpret_cast<pointer<size>>(stack.malloc(sizeof(size) * 4))
345
+
346
+ let ret = 0
347
+
348
+ if ((ret = pixelFillLinesizes(linesizes, pixfmt, width)) < 0) {
349
+ defer()
350
+ return ret
351
+ }
352
+
353
+ for (let i = 0; i < 4; i++) {
354
+ alignedLinesizes[i] = alignFunc(linesizes[i], align)
355
+ }
356
+
357
+ if ((ret = pixelFillPlaneSizes(sizes, pixfmt, height, alignedLinesizes)) < 0) {
358
+ defer()
359
+ return ret
360
+ }
361
+
362
+ let totalSize: size = 0
363
+
364
+ for (let i = 0; i < 4; i++) {
365
+ if (totalSize > reinterpret_cast<size>(INT32_MAX) - sizes[i]) {
366
+ defer()
367
+ return errorType.INVALID_ARGUMENT
368
+ }
369
+ totalSize += sizes[i]
370
+ }
371
+
372
+ defer()
373
+
374
+ return totalSize
375
+
376
+ function defer() {
377
+ stack.free(sizeof(int32) * 4)
378
+ stack.free(sizeof(int32) * 4)
379
+ stack.free(sizeof(size) * 4)
380
+ }
381
+ }
@@ -0,0 +1,152 @@
1
+ /*
2
+ * libmedia rational util
3
+ *
4
+ * 版权所有 (C) 2024 赵高兴
5
+ * Copyright (C) 2024 Gaoxing Zhao
6
+ *
7
+ * 此文件是 libmedia 的一部分
8
+ * This file is part of libmedia.
9
+ *
10
+ * libmedia 是自由软件;您可以根据 GNU Lesser General Public License(GNU LGPL)3.1
11
+ * 或任何其更新的版本条款重新分发或修改它
12
+ * libmedia is free software; you can redistribute it and/or
13
+ * modify it under the terms of the GNU Lesser General Public
14
+ * License as published by the Free Software Foundation; either
15
+ * version 3.1 of the License, or (at your option) any later version.
16
+ *
17
+ * libmedia 希望能够为您提供帮助,但不提供任何明示或暗示的担保,包括但不限于适销性或特定用途的保证
18
+ * 您应自行承担使用 libmedia 的风险,并且需要遵守 GNU Lesser General Public License 中的条款和条件。
19
+ * libmedia is distributed in the hope that it will be useful,
20
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
21
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
22
+ * Lesser General Public License for more details.
23
+ *
24
+ */
25
+
26
+ import { INT32_MAX } from '../constant'
27
+ import type { AVRational } from '../struct/rational'
28
+ import { gcd } from '@libmedia/common/math'
29
+
30
+ /**
31
+ * 将一个时间戳由一个时间基转换到另一个时间基
32
+ *
33
+ * @param a 待转换时间戳
34
+ * @param bp 待转换时间戳的时间基
35
+ * @param cq 目标时间基
36
+ */
37
+ export function avRescaleQ(a: int64, bq: AVRational, cq: AVRational) {
38
+ const b = a * static_cast<int64>(bq.num as unknown as uint32) * static_cast<int64>(cq.den as unknown as uint32)
39
+ const c = static_cast<int64>(bq.den as unknown as uint32) * static_cast<int64>(cq.num as unknown as uint32)
40
+ return b / c
41
+ }
42
+
43
+ /**
44
+ * 将一个时间戳由一个时间基转换到另一个时间基
45
+ *
46
+ * @param a 待转换时间戳
47
+ * @param bp 待转换时间戳的时间基
48
+ * @param cq 目标时间基
49
+ */
50
+ export function avRescaleQ2(a: int64, bq: pointer<AVRational>, cq: AVRational) {
51
+ const b = a * static_cast<int64>(bq.num as unknown as uint32) * static_cast<int64>(cq.den as unknown as uint32)
52
+ const c = static_cast<int64>(bq.den as unknown as uint32) * static_cast<int64>(cq.num as unknown as uint32)
53
+ return b / c
54
+ }
55
+
56
+ /**
57
+ * 将一个时间戳由一个时间基转换到另一个时间基
58
+ *
59
+ * @param a 待转换时间戳
60
+ * @param bp 待转换时间戳的时间基
61
+ * @param cq 目标时间基
62
+ */
63
+ export function avRescaleQ3(a: int64, bq: AVRational, cq: pointer<AVRational>) {
64
+ const b = a * static_cast<int64>(bq.num as unknown as uint32) * static_cast<int64>(cq.den as unknown as uint32)
65
+ const c = static_cast<int64>(bq.den as unknown as uint32) * static_cast<int64>(cq.num as unknown as uint32)
66
+ return b / c
67
+ }
68
+
69
+ /**
70
+ * 将一个时间戳由一个时间基转换到另一个时间基
71
+ *
72
+ * @param a 待转换时间戳
73
+ * @param bp 待转换时间戳的时间基
74
+ * @param cq 目标时间基
75
+ */
76
+ export function avRescaleQ4(a: int64, bq: pointer<AVRational>, cq: pointer<AVRational>) {
77
+ const b = a * static_cast<int64>(bq.num as unknown as uint32) * static_cast<int64>(cq.den as unknown as uint32)
78
+ const c = static_cast<int64>(bq.den as unknown as uint32) * static_cast<int64>(cq.num as unknown as uint32)
79
+ return b / c
80
+ }
81
+
82
+ /**
83
+ * 将一个时间基转换成 double
84
+ *
85
+ * @param a
86
+ */
87
+ export function avQ2D(a: AVRational) {
88
+ return a.num / a.den
89
+ }
90
+
91
+ /**
92
+ * 将一个时间基转换成 double
93
+ *
94
+ * @param a
95
+ */
96
+ export function avQ2D2(a: pointer<AVRational>) {
97
+ return a.num / a.den
98
+ }
99
+
100
+ export function avD2Q(d: double, max: int32): AVRational {
101
+ if (isNaN(double)) {
102
+ return {
103
+ den: 0,
104
+ num: 0
105
+ }
106
+ }
107
+ if (Math.abs(d) > INT32_MAX + 3) {
108
+ return {
109
+ den: 0,
110
+ num: d < 0 ? -1 : 1
111
+ }
112
+ }
113
+ const q = d > 1
114
+ ? {
115
+ den: Math.floor(max / d + 0.5),
116
+ num: max
117
+ }
118
+ : {
119
+ den: max,
120
+ num: Math.floor(d * max + 0.5)
121
+ }
122
+ avReduce(q)
123
+ return q
124
+ }
125
+
126
+ /**
127
+ * 化简 Rational
128
+ *
129
+ * @param a
130
+ */
131
+ export function avReduce(a: AVRational) {
132
+ const gcdValue = gcd(a.num, a.den)
133
+ if (gcdValue <= 1) {
134
+ return
135
+ }
136
+ a.den /= gcdValue
137
+ a.num /= gcdValue
138
+ }
139
+
140
+ /**
141
+ * 化简 Rational
142
+ *
143
+ * @param a
144
+ */
145
+ export function avReduce2(a: pointer<AVRational>) {
146
+ const gcdValue = gcd(a.num, a.den)
147
+ if (gcdValue <= 1) {
148
+ return
149
+ }
150
+ a.den /= gcdValue
151
+ a.num /= gcdValue
152
+ }
@@ -0,0 +1,136 @@
1
+ /*
2
+ * libmedia audio sample util
3
+ *
4
+ * 版权所有 (C) 2024 赵高兴
5
+ * Copyright (C) 2024 Gaoxing Zhao
6
+ *
7
+ * 此文件是 libmedia 的一部分
8
+ * This file is part of libmedia.
9
+ *
10
+ * libmedia 是自由软件;您可以根据 GNU Lesser General Public License(GNU LGPL)3.1
11
+ * 或任何其更新的版本条款重新分发或修改它
12
+ * libmedia is free software; you can redistribute it and/or
13
+ * modify it under the terms of the GNU Lesser General Public
14
+ * License as published by the Free Software Foundation; either
15
+ * version 3.1 of the License, or (at your option) any later version.
16
+ *
17
+ * libmedia 希望能够为您提供帮助,但不提供任何明示或暗示的担保,包括但不限于适销性或特定用途的保证
18
+ * 您应自行承担使用 libmedia 的风险,并且需要遵守 GNU Lesser General Public License 中的条款和条件。
19
+ * libmedia is distributed in the hope that it will be useful,
20
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
21
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
22
+ * Lesser General Public License for more details.
23
+ *
24
+ */
25
+
26
+ import { memset } from '@libmedia/cheap'
27
+ import { AVSampleFormat } from '../audiosamplefmt'
28
+ import { INT32_MAX } from '../constant'
29
+ import { avFree, avMalloc } from '../util/mem'
30
+ import { AVSampleFormatDescriptors } from '../sampleFormatDescriptor'
31
+
32
+ import { align as alignFunc } from '@libmedia/common/math'
33
+
34
+ export function getBytesPerSample(format: AVSampleFormat) {
35
+ return (format < 0 || format >= AVSampleFormat.AV_SAMPLE_FMT_NB)
36
+ ? 0
37
+ : AVSampleFormatDescriptors[format].bits >> 3
38
+ }
39
+
40
+ export function sampleFormatIsPlanar(format: AVSampleFormat) {
41
+ return (format < 0 || format >= AVSampleFormat.AV_SAMPLE_FMT_NB)
42
+ ? false
43
+ : AVSampleFormatDescriptors[format].planar
44
+ }
45
+
46
+ export function sampleFormatGetLinesize(format: AVSampleFormat, channels: int32, nbSamples: int32, align?: int32) {
47
+ const sampleSize = getBytesPerSample(format)
48
+ const planar = sampleFormatIsPlanar(format)
49
+
50
+ if (!sampleSize || nbSamples <= 0 || channels <= 0) {
51
+ return -1
52
+ }
53
+
54
+ if (!align) {
55
+ align = 1
56
+ nbSamples = alignFunc(nbSamples, 32)
57
+ }
58
+
59
+ if (channels > INT32_MAX / align || channels * nbSamples > (INT32_MAX - align * channels) / sampleSize) {
60
+ return -1
61
+ }
62
+
63
+ return planar ? alignFunc(nbSamples * sampleSize, align) : alignFunc(nbSamples * sampleSize * channels, align)
64
+ }
65
+
66
+ export function sampleFillArrays(
67
+ audioData: pointer<pointer<uint8>>,
68
+ buf: pointer<uint8>,
69
+ format: AVSampleFormat,
70
+ linesize: int32,
71
+ channels: int32
72
+ ) {
73
+ const planar = sampleFormatIsPlanar(format)
74
+
75
+ memset(audioData, 0, planar ? reinterpret_cast<int32>(sizeof(accessof(audioData))) * channels : sizeof(accessof(audioData)))
76
+
77
+ if (!buf) {
78
+ return -1
79
+ }
80
+
81
+ audioData[0] = buf
82
+
83
+ if (planar) {
84
+ for (let i = 1; i < channels; i++) {
85
+ audioData[i] = reinterpret_cast<pointer<uint8>>(audioData[i - 1] + linesize)
86
+ }
87
+ }
88
+ return 0
89
+ }
90
+
91
+ export function sampleAlloc(
92
+ audioData: pointer<pointer<uint8>>,
93
+ format: AVSampleFormat,
94
+ linesize: int32,
95
+ channels: int32
96
+ ) {
97
+ const planar = sampleFormatIsPlanar(format)
98
+ const bufSize = planar ? linesize * channels : linesize
99
+
100
+ if (bufSize < 0) {
101
+ return bufSize
102
+ }
103
+
104
+ const buf: pointer<uint8> = avMalloc(bufSize)
105
+
106
+ const ret = sampleFillArrays(audioData, buf, format, linesize, channels)
107
+
108
+ if (ret < 0) {
109
+ avFree(buf)
110
+ return ret
111
+ }
112
+
113
+ return 0
114
+ }
115
+
116
+ export function sampleSetSilence(
117
+ audioData: pointer<pointer<uint8>>,
118
+ offset: int32,
119
+ format: AVSampleFormat,
120
+ nbSamples: int32,
121
+ channels: int32
122
+ ) {
123
+ const planar = sampleFormatIsPlanar(format)
124
+ const planes = planar ? channels : 1
125
+ const blockAlign = getBytesPerSample(format) * (planar ? 1 : channels)
126
+ const dataSize = nbSamples * blockAlign
127
+ const fillChar = (format === AVSampleFormat.AV_SAMPLE_FMT_U8 || format === AVSampleFormat.AV_SAMPLE_FMT_U8P)
128
+ ? 0x80
129
+ : 0x00
130
+
131
+ offset *= blockAlign
132
+
133
+ for (let i = 0; i < planes; i++) {
134
+ memset(audioData[i] + offset, fillChar, dataSize)
135
+ }
136
+ }