@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,45 @@
1
+ /*
2
+ * libmedia webcodec hardware preference different chrome version
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 { browser } from '@libmedia/common'
27
+
28
+ export function getHardwarePreference(enable: boolean): HardwareAcceleration {
29
+ if (enable) {
30
+ if (!browser.chrome || browser.checkVersion(browser.majorVersion, '94', true)) {
31
+ return 'prefer-hardware'
32
+ }
33
+ else {
34
+ return 'allow' as HardwareAcceleration
35
+ }
36
+ }
37
+ else {
38
+ if (!browser.chrome || browser.checkVersion(browser.majorVersion, '94', true)) {
39
+ return 'prefer-software'
40
+ }
41
+ else {
42
+ return 'deny' as HardwareAcceleration
43
+ }
44
+ }
45
+ }
@@ -0,0 +1,244 @@
1
+ /*
2
+ * libmedia generate video codec string
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 { AVCodecID } from '../codec'
27
+ import { CodecId2MimeType } from '../stringEnum'
28
+ import { H264Profile } from '../codecs/h264'
29
+ import * as av1 from '../codecs/av1'
30
+ import * as vp8 from '../codecs/vp8'
31
+ import * as vp9 from '../codecs/vp9'
32
+ import * as vvc from '../codecs/vvc'
33
+ import * as hevc from '../codecs/hevc'
34
+ import { NOPTS_VALUE } from '../constant'
35
+ import type AVCodecParameters from '../struct/avcodecparameters'
36
+ import { mapUint8Array } from '@libmedia/cheap'
37
+ import { base32, string } from '@libmedia/common'
38
+ import * as naluUtil from '../util/nalu'
39
+
40
+ export default function getVideoCodec(codecpar: pointer<AVCodecParameters>, extradata?: Uint8Array) {
41
+ const codecId = codecpar.codecId
42
+ let profile = codecpar.profile
43
+ let level = codecpar.level
44
+ if (!extradata && codecpar.extradata !== nullptr && codecpar.extradataSize) {
45
+ extradata = mapUint8Array(codecpar.extradata, reinterpret_cast<size>(codecpar.extradataSize))
46
+ }
47
+
48
+ let entry = CodecId2MimeType[codecId]
49
+ let codec = ''
50
+
51
+ if (codecId === AVCodecID.AV_CODEC_ID_H264) {
52
+ /*
53
+ * avc1.profile_idc.constraint_set.level_idc
54
+ * 每个参数 1 个字节转成 16 进制
55
+ * url: https://developer.mozilla.org/en-US/docs/Web/Media/Formats/codecs_parameter#iso_base_media_file_format_mp4_quicktime_and_3gp
56
+ */
57
+
58
+ // High 10 Profile 会提示不支持,但是能解码出来
59
+ if (profile === H264Profile.kHigh10) {
60
+ profile = H264Profile.kHigh
61
+ }
62
+ codec = string.format(
63
+ '%s.%02x00%02x',
64
+ entry,
65
+ profile & 0xff,
66
+ level & 0xff
67
+ )
68
+ }
69
+ else if (codecId === AVCodecID.AV_CODEC_ID_HEVC) {
70
+ /**
71
+ *
72
+ * hev1.[general_profile_space?general_profile_idc].[general_profile_compatibility_flags( 十六进制)][general_tier_flag general_level_idc][constraint_flags( 十六进制)]
73
+ * general_profile_space:
74
+ * A -> 1
75
+ * B -> 2
76
+ * C -> 3
77
+ * empty -> 0
78
+ *
79
+ * general_tier_flag:
80
+ * L -> 0
81
+ * H -> 1
82
+ *
83
+ */
84
+
85
+ let generalProfileSpace = 0
86
+ let generalProfileCompatibilityFlags = 0
87
+ let generalTierFlag = 0
88
+ let constraintFlags = 0
89
+
90
+ if (extradata) {
91
+ if (naluUtil.isAnnexb(extradata)) {
92
+ extradata = hevc.annexbExtradata2AvccExtradata(extradata)
93
+ }
94
+ if (extradata.length > 13) {
95
+ generalProfileSpace = (extradata[1] >>> 6) & 0x03
96
+ generalTierFlag = (extradata[1] >>> 5) & 0x01
97
+ generalProfileCompatibilityFlags = extradata[2] | (extradata[3] << 8) | (extradata[4] << 16) | (extradata[5] << 24)
98
+ // constraintFlags 目前只能使用 4 个 bit
99
+ constraintFlags = extradata[6] & 0xf0
100
+ }
101
+ }
102
+
103
+ const generalProfileSpaceMap = {
104
+ 0: '',
105
+ 1: 'A',
106
+ 2: 'B',
107
+ 3: 'C'
108
+ }
109
+
110
+ codec = string.format(
111
+ '%s.%s%d.%x.%s%d.%x',
112
+ entry,
113
+ generalProfileSpaceMap[generalProfileSpace],
114
+ profile,
115
+ generalProfileCompatibilityFlags,
116
+ generalTierFlag === 0 ? 'L' : 'H',
117
+ level,
118
+ constraintFlags
119
+ )
120
+ }
121
+ else if (codecId === AVCodecID.AV_CODEC_ID_VVC) {
122
+ /**
123
+ *
124
+ * vvc1.<sample entry 4CC>.<general_profile_idc>.[LH]<op_level_idc>{.C<general_constraint_info>}{.S<general_sub_profile_idc>}{.O{<OlsIdx>}{+<MaxTid>}}
125
+ */
126
+
127
+ let generalTierFlag = 0
128
+
129
+ if (extradata?.length > 13) {
130
+ generalTierFlag = extradata[5] & 0x01
131
+ }
132
+
133
+ codec = string.format(
134
+ '%s.%d.%s%d',
135
+ entry,
136
+ profile,
137
+ generalTierFlag === 0 ? 'L' : 'H',
138
+ level
139
+ )
140
+
141
+ if (extradata) {
142
+
143
+ if (naluUtil.isAnnexb(extradata)) {
144
+ extradata = vvc.annexbExtradata2AvccExtradata(extradata)
145
+ }
146
+
147
+ const params = vvc.parseExtraData(extradata)
148
+ if (params.generalConstraintInfo.length) {
149
+ let index = params.generalConstraintInfo.length - 1
150
+ while (index > 0 && params.generalConstraintInfo[index] === 0) {
151
+ index--
152
+ }
153
+ const generalConstraintInfo = (params.generalConstraintInfo as number[]).slice(0, index + 1)
154
+ if (generalConstraintInfo.length) {
155
+ codec += `.C${base32.encode(new Uint8Array(generalConstraintInfo), false)}`
156
+ }
157
+ }
158
+ if (params.generalSubProfileIdc.length) {
159
+ codec += `.S${params.generalSubProfileIdc.map((profile: number) => profile.toString(16)).join('+')}`
160
+ }
161
+ codec += `.O${params.olsIdx}+${params.numSublayers}`
162
+ }
163
+ }
164
+ else if (codecId === AVCodecID.AV_CODEC_ID_AV1) {
165
+ /*
166
+ * av01.profile.level+seqTier.bitDepth[.monochrome[.chromaSubsampling[.colorPrimaries[.colorPrimaries[.matrixCoefficients]]]]]
167
+ * url: https://aomediacodec.github.io/av1-isobmff/#codecsparam
168
+ * url: https://developer.mozilla.org/en-US/docs/Web/Media/Formats/codecs_parameter#av1
169
+ */
170
+
171
+ if (extradata) {
172
+ const params = av1.parseExtraData(extradata)
173
+ codec = string.format(
174
+ '%s.%d.%02d%s.%02d.%d.%d%d%d',
175
+ entry,
176
+ params.profile,
177
+ params.level,
178
+ params.tier ? 'H' : 'M',
179
+ params.bitDepth,
180
+ params.monochrome,
181
+ params.chromaSubsamplingX,
182
+ params.chromaSubsamplingY,
183
+ params.chromaSamplePosition
184
+ )
185
+ }
186
+ else {
187
+ codec = string.format('%s.%d.%02dM.08', entry, profile, level)
188
+ }
189
+ }
190
+ else if (codecId === AVCodecID.AV_CODEC_ID_VP8) {
191
+ /*
192
+ * url: https://developer.mozilla.org/en-US/docs/Web/Media/Formats/codecs_parameter#videowebmcodecsvp08.00.41.08vorbis
193
+ */
194
+ if (extradata) {
195
+ const params = vp8.parseExtraData(extradata)
196
+ codec = string.format(
197
+ '%s.%02d.%02d.%02d',
198
+ entry,
199
+ params.profile,
200
+ params.level,
201
+ params.bitDepth
202
+ )
203
+ }
204
+ else if (profile !== NOPTS_VALUE && level !== NOPTS_VALUE) {
205
+ codec = string.format('%s.%02d.%02d.08', entry, profile, level)
206
+ }
207
+ else {
208
+ codec = entry
209
+ }
210
+ }
211
+ else if (codecId === AVCodecID.AV_CODEC_ID_VP9) {
212
+ /*
213
+ * vp09.profile.level.colorDepth.chromaSubsampling[.colorPrimaries[.transferCharacteristics[.matrixCoefficients[.blackLevel and color range]]]]
214
+ * url: https://www.webmproject.org/vp9/mp4/#CodecsParameterString
215
+ * url: https://developer.mozilla.org/en-US/docs/Web/Media/Formats/codecs_parameter#webm
216
+ */
217
+ if (extradata) {
218
+ const params = vp9.parseExtraData(extradata)
219
+ codec = string.format(
220
+ '%s.%02d.%02d.%02d.%02d.%02d.%02d.%02d.%02d',
221
+ entry,
222
+ params.profile,
223
+ params.level,
224
+ params.bitDepth,
225
+ params.chromaSubsampling,
226
+ params.colorPrimaries,
227
+ params.colorTrc,
228
+ params.colorSpace,
229
+ params.fullRangeFlag
230
+ )
231
+ }
232
+ else if (profile !== NOPTS_VALUE && level !== NOPTS_VALUE) {
233
+ codec = string.format('%s.%02d.%02d.08.00', entry, profile, level)
234
+ }
235
+ else {
236
+ codec = string.format('%s.%02d.%02d.08.00', entry, 0, 40)
237
+ }
238
+ }
239
+ else {
240
+ codec = entry || 'unknown'
241
+ }
242
+
243
+ return codec
244
+ }
@@ -0,0 +1,35 @@
1
+ /*
2
+ * libmedia get video mimetype
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 getVideoCodec from './getVideoCodec'
27
+ import { AVCodecID } from '../codec'
28
+ import type AVCodecParameters from '../struct/avcodecparameters'
29
+
30
+ export default function getVideoMimeType(codecpar: pointer<AVCodecParameters>) {
31
+ if (codecpar.codecId === AVCodecID.AV_CODEC_ID_VP8) {
32
+ return `video/webm; codecs="${getVideoCodec(codecpar)}"`
33
+ }
34
+ return `video/mp4; codecs="${getVideoCodec(codecpar)}"`
35
+ }
@@ -0,0 +1,190 @@
1
+ import { base64 } from '@libmedia/common'
2
+ import { AVCodecID } from '../codec'
3
+
4
+ let supportAtomic = WebAssembly.validate(base64.base64ToUint8Array('AGFzbQEAAAABBgFgAX8BfwISAQNlbnYGbWVtb3J5AgMBgIACAwIBAAcJAQVsb2FkOAAACgoBCAAgAP4SAAAL'))
5
+ let supportSimd = WebAssembly.validate(base64.base64ToUint8Array('AGFzbQEAAAABBQFgAAF7AhIBA2VudgZtZW1vcnkCAwGAgAIDAgEACgoBCABBAP0ABAAL'))
6
+
7
+ export default function getWasmUrl(baseUrl: string, type: 'decoder' | 'encoder' | 'resampler' | 'scaler' | 'stretchpitcher', codecId?: AVCodecID): string {
8
+
9
+ let tag = defined(WASM_64) ? '-64' : (supportSimd ? '-simd' : (supportAtomic ? '-atomic' : ''))
10
+
11
+ switch (type) {
12
+ case 'decoder': {
13
+
14
+ if (codecId > AVCodecID.AV_CODEC_ID_FIRST_AUDIO && codecId <= AVCodecID.AV_CODEC_ID_PCM_SGA) {
15
+ return `${baseUrl}/decode/pcm${tag}.wasm`
16
+ }
17
+ else if (codecId >= AVCodecID.AV_CODEC_ID_ADPCM_IMA_QT && codecId <= AVCodecID.AV_CODEC_ID_ADPCM_XMD) {
18
+ return `${baseUrl}/decode/adpcm${tag}.wasm`
19
+ }
20
+
21
+ switch (codecId) {
22
+ // mpeg1/2
23
+ case AVCodecID.AV_CODEC_ID_MPEG2VIDEO:
24
+ return `${baseUrl}/decode/mpeg2video${tag}.wasm`
25
+ // H264
26
+ case AVCodecID.AV_CODEC_ID_H264:
27
+ return `${baseUrl}/decode/h264${tag}.wasm`
28
+ // theora
29
+ case AVCodecID.AV_CODEC_ID_THEORA:
30
+ return `${baseUrl}/decode/theora${tag}.wasm`
31
+ // AAC
32
+ case AVCodecID.AV_CODEC_ID_AAC:
33
+ return `${baseUrl}/decode/aac${tag}.wasm`
34
+ // ac3
35
+ case AVCodecID.AV_CODEC_ID_AC3:
36
+ return `${baseUrl}/decode/ac3${tag}.wasm`
37
+ // eac3
38
+ case AVCodecID.AV_CODEC_ID_EAC3:
39
+ return `${baseUrl}/decode/eac3${tag}.wasm`
40
+ // dts
41
+ case AVCodecID.AV_CODEC_ID_DTS:
42
+ return `${baseUrl}/decode/dca${tag}.wasm`
43
+ // MP3
44
+ case AVCodecID.AV_CODEC_ID_MP3:
45
+ return `${baseUrl}/decode/mp3${tag}.wasm`
46
+ // HEVC
47
+ case AVCodecID.AV_CODEC_ID_HEVC:
48
+ return `${baseUrl}/decode/hevc${tag}.wasm`
49
+ // VVC
50
+ case AVCodecID.AV_CODEC_ID_VVC:
51
+ return `${baseUrl}/decode/vvc${tag}.wasm`
52
+ // Mpeg4
53
+ case AVCodecID.AV_CODEC_ID_MPEG4:
54
+ return `${baseUrl}/decode/mpeg4${tag}.wasm`
55
+ // AV1
56
+ case AVCodecID.AV_CODEC_ID_AV1:
57
+ return `${baseUrl}/decode/av1${tag}.wasm`
58
+ // Speex
59
+ case AVCodecID.AV_CODEC_ID_SPEEX:
60
+ return `${baseUrl}/decode/speex${tag}.wasm`
61
+ // Opus
62
+ case AVCodecID.AV_CODEC_ID_OPUS:
63
+ return `${baseUrl}/decode/opus${tag}.wasm`
64
+ // flac
65
+ case AVCodecID.AV_CODEC_ID_FLAC:
66
+ return `${baseUrl}/decode/flac${tag}.wasm`
67
+ // vorbis
68
+ case AVCodecID.AV_CODEC_ID_VORBIS:
69
+ return `${baseUrl}/decode/vorbis${tag}.wasm`
70
+ // vp8
71
+ case AVCodecID.AV_CODEC_ID_VP8:
72
+ return `${baseUrl}/decode/vp8${tag}.wasm`
73
+ // vp9
74
+ case AVCodecID.AV_CODEC_ID_VP9:
75
+ return `${baseUrl}/decode/vp9${tag}.wasm`
76
+ case AVCodecID.AV_CODEC_ID_DVAUDIO:
77
+ return `${baseUrl}/decode/dvaudio${tag}.wasm`
78
+ case AVCodecID.AV_CODEC_ID_DVVIDEO:
79
+ return `${baseUrl}/decode/dvvideo${tag}.wasm`
80
+ case AVCodecID.AV_CODEC_ID_H261:
81
+ return `${baseUrl}/decode/h261${tag}.wasm`
82
+ case AVCodecID.AV_CODEC_ID_H263:
83
+ case AVCodecID.AV_CODEC_ID_H263I:
84
+ case AVCodecID.AV_CODEC_ID_H263P:
85
+ return `${baseUrl}/decode/h263${tag}.wasm`
86
+ case AVCodecID.AV_CODEC_ID_MSMPEG4V1:
87
+ case AVCodecID.AV_CODEC_ID_MSMPEG4V2:
88
+ case AVCodecID.AV_CODEC_ID_MSMPEG4V3:
89
+ return `${baseUrl}/decode/msmpeg4${tag}.wasm`
90
+ case AVCodecID.AV_CODEC_ID_RV10:
91
+ case AVCodecID.AV_CODEC_ID_RV20:
92
+ case AVCodecID.AV_CODEC_ID_RV30:
93
+ case AVCodecID.AV_CODEC_ID_RV40:
94
+ return `${baseUrl}/decode/msmpeg4${tag}.wasm`
95
+ case AVCodecID.AV_CODEC_ID_COOK:
96
+ case AVCodecID.AV_CODEC_ID_SIPR:
97
+ case AVCodecID.AV_CODEC_ID_RALF:
98
+ return `${baseUrl}/decode/ra${tag}.wasm`
99
+ case AVCodecID.AV_CODEC_ID_WMAV1:
100
+ case AVCodecID.AV_CODEC_ID_WMAV2:
101
+ case AVCodecID.AV_CODEC_ID_WMAVOICE:
102
+ case AVCodecID.AV_CODEC_ID_WMALOSSLESS:
103
+ case AVCodecID.AV_CODEC_ID_WMAPRO:
104
+ return `${baseUrl}/decode/wma${tag}.wasm`
105
+ case AVCodecID.AV_CODEC_ID_WMV1:
106
+ case AVCodecID.AV_CODEC_ID_WMV2:
107
+ case AVCodecID.AV_CODEC_ID_WMV3:
108
+ return `${baseUrl}/decode/wmv${tag}.wasm`
109
+ case AVCodecID.AV_CODEC_ID_MJPEG:
110
+ return `${baseUrl}/decode/mjpeg${tag}.wasm`
111
+ case AVCodecID.AV_CODEC_ID_PNG:
112
+ return `${baseUrl}/decode/png${tag}.wasm`
113
+ case AVCodecID.AV_CODEC_ID_WEBP:
114
+ return `${baseUrl}/decode/webp${tag}.wasm`
115
+ case AVCodecID.AV_CODEC_ID_GIF:
116
+ return `${baseUrl}/decode/gif${tag}.wasm`
117
+ case AVCodecID.AV_CODEC_ID_TIFF:
118
+ return `${baseUrl}/decode/tiff${tag}.wasm`
119
+ case AVCodecID.AV_CODEC_ID_BMP:
120
+ return `${baseUrl}/decode/bmp${tag}.wasm`
121
+ default:
122
+ return null
123
+ }
124
+ }
125
+ case 'encoder': {
126
+
127
+ if (codecId > AVCodecID.AV_CODEC_ID_FIRST_AUDIO && codecId <= AVCodecID.AV_CODEC_ID_PCM_SGA) {
128
+ return `${baseUrl}/encode/pcm${tag}.wasm`
129
+ }
130
+
131
+ switch (codecId) {
132
+ // H264
133
+ case AVCodecID.AV_CODEC_ID_H264:
134
+ return `${baseUrl}/encode/x264${tag}.wasm`
135
+ // theora
136
+ case AVCodecID.AV_CODEC_ID_THEORA:
137
+ return `${baseUrl}/encode/theora${tag}.wasm`
138
+ // AAC
139
+ case AVCodecID.AV_CODEC_ID_AAC:
140
+ return `${baseUrl}/encode/aac${tag}.wasm`
141
+ // ac3
142
+ case AVCodecID.AV_CODEC_ID_AC3:
143
+ return `${baseUrl}/encode/ac3${tag}.wasm`
144
+ // eac3
145
+ case AVCodecID.AV_CODEC_ID_EAC3:
146
+ return `${baseUrl}/encode/eac3${tag}.wasm`
147
+ // dts
148
+ case AVCodecID.AV_CODEC_ID_DTS:
149
+ return `${baseUrl}/encode/dca${tag}.wasm`
150
+ // MP3
151
+ case AVCodecID.AV_CODEC_ID_MP3:
152
+ return `${baseUrl}/encode/mp3lame${tag}.wasm`
153
+ // HEVC
154
+ case AVCodecID.AV_CODEC_ID_HEVC:
155
+ return `${baseUrl}/encode/x265${tag}.wasm`
156
+ case AVCodecID.AV_CODEC_ID_MPEG4:
157
+ return `${baseUrl}/encode/mpeg4${tag}.wasm`
158
+ // AV1
159
+ case AVCodecID.AV_CODEC_ID_AV1:
160
+ return `${baseUrl}/encode/av1${tag}.wasm`
161
+ // Speex
162
+ case AVCodecID.AV_CODEC_ID_SPEEX:
163
+ return `${baseUrl}/encode/speex${tag}.wasm`
164
+ // Opus
165
+ case AVCodecID.AV_CODEC_ID_OPUS:
166
+ return `${baseUrl}/encode/opus${tag}.wasm`
167
+ // flac
168
+ case AVCodecID.AV_CODEC_ID_FLAC:
169
+ return `${baseUrl}/encode/flac${tag}.wasm`
170
+ // vorbis
171
+ case AVCodecID.AV_CODEC_ID_VORBIS:
172
+ return `${baseUrl}/encode/vorbis${tag}.wasm`
173
+ // vp8
174
+ case AVCodecID.AV_CODEC_ID_VP8:
175
+ return `${baseUrl}/encode/vp8${tag}.wasm`
176
+ // vp9
177
+ case AVCodecID.AV_CODEC_ID_VP9:
178
+ return `${baseUrl}/encode/vp9${tag}.wasm`
179
+ default:
180
+ return null
181
+ }
182
+ }
183
+ case 'resampler':
184
+ return `${baseUrl}/resample/resample${tag}.wasm`
185
+ case 'scaler':
186
+ return `${baseUrl}/scale/scale${tag}.wasm`
187
+ case 'stretchpitcher':
188
+ return `${baseUrl}/stretchpitch/stretchpitch${tag}.wasm`
189
+ }
190
+ }
@@ -0,0 +1,37 @@
1
+ /*
2
+ * libmedia hasAlphaChannel
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 { getAVPixelFormatDescriptor, AVPixelFormatFlags } from '../pixelFormatDescriptor'
27
+ import { AVMediaType } from '../codec'
28
+ import type AVCodecParameters from '../struct/avcodecparameters'
29
+ import type { AVPixelFormat } from '../pixfmt'
30
+
31
+ export default function hasAlphaChannel(parameters: pointer<AVCodecParameters>) {
32
+ if (parameters.codecType !== AVMediaType.AVMEDIA_TYPE_VIDEO) {
33
+ return false
34
+ }
35
+ const descriptor = getAVPixelFormatDescriptor(parameters.format as AVPixelFormat)
36
+ return descriptor && (descriptor.flags & AVPixelFormatFlags.ALPHA)
37
+ }
@@ -0,0 +1,44 @@
1
+ /*
2
+ * libmedia isHdr
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 { getAVPixelFormatDescriptor } from '../pixelFormatDescriptor'
27
+ import { AVMediaType } from '../codec'
28
+ import type AVCodecParameters from '../struct/avcodecparameters'
29
+ import type { AVPixelFormat } from '../pixfmt'
30
+ import { AVColorTransferCharacteristic } from '../pixfmt'
31
+
32
+ export default function isHdr(parameters: pointer<AVCodecParameters>) {
33
+ if (parameters.codecType !== AVMediaType.AVMEDIA_TYPE_VIDEO) {
34
+ return false
35
+ }
36
+
37
+ const descriptor = getAVPixelFormatDescriptor(parameters.format as AVPixelFormat)
38
+ if (!descriptor || descriptor.comp[0].depth <= 8) {
39
+ return false
40
+ }
41
+
42
+ return parameters.colorTrc === AVColorTransferCharacteristic.AVCOL_TRC_ARIB_STD_B67
43
+ || parameters.colorTrc === AVColorTransferCharacteristic.AVCOL_TRC_SMPTE2084
44
+ }