@libmedia/avutil 0.11.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/AVStream.cjs +66 -0
- package/dist/cjs/AVStream.js.map +1 -1
- package/dist/cjs/audiosamplefmt.js.map +1 -1
- package/dist/cjs/avformat.js.map +1 -1
- package/dist/cjs/codec.js.map +1 -1
- package/dist/cjs/codecs/{aac.js → aac.cjs} +2 -8
- package/dist/cjs/codecs/aac.js.map +1 -1
- package/dist/cjs/codecs/{ac3.js → ac3.cjs} +2 -8
- package/dist/cjs/codecs/ac3.js.map +1 -1
- package/dist/cjs/codecs/{av1.js → av1.cjs} +6 -10
- package/dist/cjs/codecs/av1.js.map +1 -1
- package/dist/cjs/codecs/{dts.js → dts.cjs} +3 -9
- package/dist/cjs/codecs/dts.js.map +1 -1
- package/dist/cjs/codecs/{flac.js → flac.cjs} +2 -8
- package/dist/cjs/codecs/flac.js.map +1 -1
- package/dist/cjs/codecs/{h264.js → h264.cjs} +22 -26
- package/dist/cjs/codecs/h264.js.map +1 -1
- package/dist/cjs/codecs/{hevc.js → hevc.cjs} +25 -26
- package/dist/cjs/codecs/hevc.js.map +1 -1
- package/dist/cjs/codecs/{mp3.js → mp3.cjs} +1 -1
- package/dist/cjs/codecs/mp3.js.map +1 -1
- package/dist/cjs/codecs/{mpeg4.js → mpeg4.cjs} +1 -1
- package/dist/cjs/codecs/mpeg4.js.map +1 -1
- package/dist/cjs/codecs/{mpegvideo.js → mpegvideo.cjs} +1 -1
- package/dist/cjs/codecs/mpegvideo.js.map +1 -1
- package/dist/cjs/codecs/{opus.js → opus.cjs} +3 -9
- package/dist/cjs/codecs/opus.js.map +1 -1
- package/dist/cjs/codecs/ttml.cjs +51 -0
- package/dist/cjs/codecs/ttml.js.map +1 -1
- package/dist/cjs/codecs/{vp8.js → vp8.cjs} +2 -8
- package/dist/cjs/codecs/vp8.js.map +1 -1
- package/dist/cjs/codecs/{vp9.js → vp9.cjs} +4 -10
- package/dist/cjs/codecs/vp9.js.map +1 -1
- package/dist/cjs/codecs/{vvc.js → vvc.cjs} +27 -28
- package/dist/cjs/codecs/vvc.js.map +1 -1
- package/dist/cjs/constant.cjs +27 -0
- package/dist/cjs/constant.js.map +1 -1
- package/dist/cjs/{enum.js → enum.cjs} +39 -24
- package/dist/cjs/enum.js.map +1 -1
- package/dist/cjs/error.js.map +1 -1
- package/dist/cjs/function/analyzeAVFormat.js.map +1 -1
- package/dist/cjs/function/analyzeUrlIOLoader.cjs +66 -0
- package/dist/cjs/function/analyzeUrlIOLoader.js.map +1 -1
- package/dist/cjs/function/{audioData2AVFrame.js → audioData2AVFrame.cjs} +9 -9
- package/dist/cjs/function/audioData2AVFrame.js.map +1 -1
- package/dist/cjs/function/{avPCMBuffer2AVFrame.js → avPCMBuffer2AVFrame.cjs} +22 -22
- package/dist/cjs/function/avPCMBuffer2AVFrame.js.map +1 -1
- package/dist/cjs/function/{avframe2AudioData.js → avframe2AudioData.cjs} +7 -7
- package/dist/cjs/function/avframe2AudioData.js.map +1 -1
- package/dist/cjs/function/avframe2VideoFrame.cjs +48 -0
- package/dist/cjs/function/avframe2VideoFrame.js.map +1 -1
- package/dist/cjs/function/avpacket2EncodedAudioChunk.cjs +19 -0
- package/dist/cjs/function/avpacket2EncodedAudioChunk.js.map +1 -1
- package/dist/cjs/function/avpacket2EncodedVideoChunk.cjs +19 -0
- package/dist/cjs/function/avpacket2EncodedVideoChunk.js.map +1 -1
- package/dist/cjs/function/compileResource.cjs +19 -0
- package/dist/cjs/function/compileResource.js.map +1 -1
- package/dist/cjs/function/constant/webcodecs.cjs +50 -0
- package/dist/cjs/function/constant/webcodecs.js.map +1 -0
- package/dist/cjs/function/encodedAudioChunk2AVPacket.cjs +23 -0
- package/dist/cjs/function/encodedAudioChunk2AVPacket.js.map +1 -1
- package/dist/cjs/function/encodedVideoChunk2AVPacket.cjs +62 -0
- package/dist/cjs/function/encodedVideoChunk2AVPacket.js.map +1 -1
- package/dist/cjs/function/{getAudioCodec.js → getAudioCodec.cjs} +1 -1
- package/dist/cjs/function/getAudioCodec.js.map +1 -1
- package/dist/cjs/function/getAudioMimeType.cjs +19 -0
- package/dist/cjs/function/getAudioMimeType.js.map +1 -0
- package/dist/cjs/function/getHardwarePreference.cjs +10 -0
- package/dist/cjs/function/getHardwarePreference.js.map +1 -1
- package/dist/cjs/function/{getVideoCodec.js → getVideoCodec.cjs} +12 -12
- package/dist/cjs/function/getVideoCodec.js.map +1 -1
- package/dist/cjs/function/getVideoMimeType.cjs +18 -0
- package/dist/cjs/function/getVideoMimeType.js.map +1 -0
- package/dist/cjs/function/{getWasmUrl.js → getWasmUrl.cjs} +17 -3
- package/dist/cjs/function/getWasmUrl.js.map +1 -1
- package/dist/cjs/function/{hasAlphaChannel.js → hasAlphaChannel.cjs} +1 -1
- package/dist/cjs/function/hasAlphaChannel.js.map +1 -1
- package/dist/cjs/function/{isHdr.js → isHdr.cjs} +1 -1
- package/dist/cjs/function/isHdr.js.map +1 -1
- package/dist/cjs/function/videoFrame2AVFrame.cjs +51 -0
- package/dist/cjs/function/videoFrame2AVFrame.js.map +1 -1
- package/dist/cjs/implement/AVFramePoolImpl.cjs +28 -0
- package/dist/cjs/implement/AVFramePoolImpl.js.map +1 -1
- package/dist/cjs/implement/AVPCMBufferPoolImpl.cjs +27 -0
- package/dist/cjs/implement/AVPCMBufferPoolImpl.js.map +1 -1
- package/dist/cjs/implement/AVPacketPoolImpl.cjs +29 -0
- package/dist/cjs/implement/AVPacketPoolImpl.js.map +1 -1
- package/dist/cjs/index.cjs +840 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/internal.cjs +283 -0
- package/dist/cjs/internal.js.map +1 -0
- package/dist/cjs/{pixelFormatDescriptor.js → pixelFormatDescriptor.cjs} +19 -4
- package/dist/cjs/pixelFormatDescriptor.js.map +1 -1
- package/dist/cjs/pixfmt.js.map +1 -1
- package/dist/cjs/sampleFormatDescriptor.js.map +1 -1
- package/dist/cjs/{stringEnum.js → stringEnum.cjs} +40 -6
- package/dist/cjs/stringEnum.js.map +1 -1
- package/dist/cjs/struct/{audiosample.js → audiosample.cjs} +13 -13
- package/dist/cjs/struct/audiosample.js.map +1 -1
- package/dist/cjs/struct/{avbuffer.js → avbuffer.cjs} +18 -18
- package/dist/cjs/struct/avbuffer.js.map +1 -1
- package/dist/cjs/struct/{avcodecparameters.js → avcodecparameters.cjs} +11 -11
- package/dist/cjs/struct/avcodecparameters.js.map +1 -1
- package/dist/cjs/struct/{avdict.js → avdict.cjs} +9 -9
- package/dist/cjs/struct/avdict.js.map +1 -1
- package/dist/cjs/struct/{avframe.js → avframe.cjs} +34 -36
- package/dist/cjs/struct/avframe.js.map +1 -1
- package/dist/cjs/struct/{avpacket.js → avpacket.cjs} +19 -19
- package/dist/cjs/struct/avpacket.js.map +1 -1
- package/dist/cjs/struct/{avpcmbuffer.js → avpcmbuffer.cjs} +9 -9
- package/dist/cjs/struct/avpcmbuffer.js.map +1 -1
- package/dist/cjs/struct/avsubtitle.js.map +1 -1
- package/dist/cjs/struct/{encryption.js → encryption.cjs} +13 -13
- package/dist/cjs/struct/encryption.js.map +1 -1
- package/dist/cjs/struct/rational.cjs +43 -0
- package/dist/cjs/struct/rational.js.map +1 -1
- package/dist/cjs/util/{amf.js → amf.cjs} +7 -38
- package/dist/cjs/util/amf.js.map +1 -1
- package/dist/cjs/util/av1syntax.js.map +1 -1
- package/dist/cjs/util/avbuffer.cjs +122 -0
- package/dist/cjs/util/avbuffer.js.map +1 -1
- package/dist/cjs/util/avdict.cjs +75 -0
- package/dist/cjs/util/avdict.js.map +1 -1
- package/dist/cjs/util/{avframe.js → avframe.cjs} +85 -90
- package/dist/cjs/util/avframe.js.map +1 -1
- package/dist/cjs/util/{avpacket.js → avpacket.cjs} +58 -58
- package/dist/cjs/util/avpacket.js.map +1 -1
- package/dist/cjs/util/{channel.js → channel.cjs} +7 -7
- package/dist/cjs/util/channel.js.map +1 -1
- package/dist/cjs/util/codecparameters.cjs +95 -0
- package/dist/cjs/util/codecparameters.js.map +1 -1
- package/dist/cjs/util/common.js.map +1 -1
- package/dist/cjs/util/{encryption.js → encryption.cjs} +5 -11
- package/dist/cjs/util/encryption.js.map +1 -1
- package/dist/cjs/util/expgolomb.js.map +1 -1
- package/dist/cjs/util/{intread.js → intread.cjs} +1 -1
- package/dist/cjs/util/intread.js.map +1 -1
- package/dist/cjs/util/{intwrite.js → intwrite.cjs} +1 -1
- package/dist/cjs/util/intwrite.js.map +1 -1
- package/dist/cjs/util/mem.cjs +23 -0
- package/dist/cjs/util/mem.js.map +1 -1
- package/dist/cjs/util/{nalu.js → nalu.cjs} +7 -42
- package/dist/cjs/util/nalu.js.map +1 -1
- package/dist/cjs/util/ntp.js.map +1 -1
- package/dist/cjs/util/pcm.js.map +1 -1
- package/dist/cjs/util/{pixel.js → pixel.cjs} +26 -30
- package/dist/cjs/util/pixel.js.map +1 -1
- package/dist/cjs/util/{rational.js → rational.cjs} +5 -11
- package/dist/cjs/util/rational.js.map +1 -1
- package/dist/cjs/util/{sample.js → sample.cjs} +6 -12
- package/dist/cjs/util/sample.js.map +1 -1
- package/dist/cjs/util/{serialize.js → serialize.cjs} +40 -42
- package/dist/cjs/util/serialize.js.map +1 -1
- package/dist/esm/AVStream.d.ts +258 -15
- package/dist/esm/AVStream.js +39 -11
- package/dist/esm/AVStream.js.map +1 -1
- package/dist/esm/audiosamplefmt.js.map +1 -1
- package/dist/esm/avformat.d.ts +4 -1
- package/dist/esm/avformat.js.map +1 -1
- package/dist/esm/codec.d.ts +65 -1
- package/dist/esm/codec.js.map +1 -1
- package/dist/esm/codecs/aac.d.ts +10 -5
- package/dist/esm/codecs/aac.js +2 -2
- package/dist/esm/codecs/aac.js.map +1 -1
- package/dist/esm/codecs/ac3.d.ts +1 -1
- package/dist/esm/codecs/ac3.js +1 -1
- package/dist/esm/codecs/ac3.js.map +1 -1
- package/dist/esm/codecs/av1.d.ts +3 -3
- package/dist/esm/codecs/av1.js +4 -6
- package/dist/esm/codecs/av1.js.map +1 -1
- package/dist/esm/codecs/dts.d.ts +1 -1
- package/dist/esm/codecs/dts.js +2 -2
- package/dist/esm/codecs/dts.js.map +1 -1
- package/dist/esm/codecs/flac.d.ts +3 -3
- package/dist/esm/codecs/flac.js +1 -1
- package/dist/esm/codecs/flac.js.map +1 -1
- package/dist/esm/codecs/h264.d.ts +6 -6
- package/dist/esm/codecs/h264.js +15 -21
- package/dist/esm/codecs/h264.js.map +1 -1
- package/dist/esm/codecs/hevc.d.ts +6 -6
- package/dist/esm/codecs/hevc.js +18 -18
- package/dist/esm/codecs/hevc.js.map +1 -1
- package/dist/esm/codecs/mp3.d.ts +4 -4
- package/dist/esm/codecs/mp3.js +1 -1
- package/dist/esm/codecs/mp3.js.map +1 -1
- package/dist/esm/codecs/mpeg4.d.ts +1 -1
- package/dist/esm/codecs/mpeg4.js +1 -1
- package/dist/esm/codecs/mpeg4.js.map +1 -1
- package/dist/esm/codecs/mpegvideo.d.ts +1 -1
- package/dist/esm/codecs/mpegvideo.js +1 -1
- package/dist/esm/codecs/mpegvideo.js.map +1 -1
- package/dist/esm/codecs/opus.d.ts +3 -3
- package/dist/esm/codecs/opus.js +2 -4
- package/dist/esm/codecs/opus.js.map +1 -1
- package/dist/esm/codecs/ttml.js +5 -11
- package/dist/esm/codecs/ttml.js.map +1 -1
- package/dist/esm/codecs/vp8.d.ts +4 -4
- package/dist/esm/codecs/vp8.js +2 -2
- package/dist/esm/codecs/vp8.js.map +1 -1
- package/dist/esm/codecs/vp9.d.ts +4 -4
- package/dist/esm/codecs/vp9.js +8 -10
- package/dist/esm/codecs/vp9.js.map +1 -1
- package/dist/esm/codecs/vvc.d.ts +6 -6
- package/dist/esm/codecs/vvc.js +18 -20
- package/dist/esm/codecs/vvc.js.map +1 -1
- package/dist/esm/constant.d.ts +6 -7
- package/dist/esm/constant.js +7 -9
- package/dist/esm/constant.js.map +1 -1
- package/dist/esm/enum.d.ts +147 -13
- package/dist/esm/enum.js +39 -24
- package/dist/esm/enum.js.map +1 -1
- package/dist/esm/error.js.map +1 -1
- package/dist/esm/function/analyzeAVFormat.d.ts +2 -2
- package/dist/esm/function/analyzeAVFormat.js.map +1 -1
- package/dist/esm/function/analyzeUrlIOLoader.d.ts +2 -2
- package/dist/esm/function/analyzeUrlIOLoader.js +2 -10
- package/dist/esm/function/analyzeUrlIOLoader.js.map +1 -1
- package/dist/esm/function/audioData2AVFrame.d.ts +1 -1
- package/dist/esm/function/audioData2AVFrame.js +6 -6
- package/dist/esm/function/audioData2AVFrame.js.map +1 -1
- package/dist/esm/function/avPCMBuffer2AVFrame.d.ts +2 -2
- package/dist/esm/function/avPCMBuffer2AVFrame.js +9 -9
- package/dist/esm/function/avPCMBuffer2AVFrame.js.map +1 -1
- package/dist/esm/function/avframe2AudioData.d.ts +1 -1
- package/dist/esm/function/avframe2AudioData.js +6 -8
- package/dist/esm/function/avframe2AudioData.js.map +1 -1
- package/dist/esm/function/avframe2VideoFrame.d.ts +3 -3
- package/dist/esm/function/avframe2VideoFrame.js +14 -79
- package/dist/esm/function/avframe2VideoFrame.js.map +1 -1
- package/dist/esm/function/avpacket2EncodedAudioChunk.d.ts +1 -1
- package/dist/esm/function/avpacket2EncodedAudioChunk.js +6 -7
- package/dist/esm/function/avpacket2EncodedAudioChunk.js.map +1 -1
- package/dist/esm/function/avpacket2EncodedVideoChunk.d.ts +1 -1
- package/dist/esm/function/avpacket2EncodedVideoChunk.js +6 -7
- package/dist/esm/function/avpacket2EncodedVideoChunk.js.map +1 -1
- package/dist/esm/function/compileResource.d.ts +1 -1
- package/dist/esm/function/compileResource.js +2 -4
- package/dist/esm/function/compileResource.js.map +1 -1
- package/dist/esm/function/constant/webcodecs.d.ts +5 -0
- package/dist/esm/function/constant/webcodecs.js +51 -0
- package/dist/esm/function/constant/webcodecs.js.map +1 -0
- package/dist/esm/function/encodedAudioChunk2AVPacket.d.ts +1 -1
- package/dist/esm/function/encodedAudioChunk2AVPacket.js +7 -7
- package/dist/esm/function/encodedAudioChunk2AVPacket.js.map +1 -1
- package/dist/esm/function/encodedVideoChunk2AVPacket.d.ts +1 -1
- package/dist/esm/function/encodedVideoChunk2AVPacket.js +12 -9
- package/dist/esm/function/encodedVideoChunk2AVPacket.js.map +1 -1
- package/dist/esm/function/getAudioCodec.d.ts +1 -1
- package/dist/esm/function/getAudioCodec.js +2 -2
- package/dist/esm/function/getAudioCodec.js.map +1 -1
- package/dist/esm/function/getAudioMimeType.d.ts +2 -0
- package/dist/esm/function/getAudioMimeType.js +12 -0
- package/dist/esm/function/getAudioMimeType.js.map +1 -0
- package/dist/esm/function/getHardwarePreference.js +1 -1
- package/dist/esm/function/getHardwarePreference.js.map +1 -1
- package/dist/esm/function/getVideoCodec.d.ts +1 -1
- package/dist/esm/function/getVideoCodec.js +11 -13
- package/dist/esm/function/getVideoCodec.js.map +1 -1
- package/dist/esm/function/getVideoMimeType.d.ts +2 -0
- package/dist/esm/function/getVideoMimeType.js +8 -0
- package/dist/esm/function/getVideoMimeType.js.map +1 -0
- package/dist/esm/function/getWasmUrl.d.ts +1 -1
- package/dist/esm/function/getWasmUrl.js +17 -2
- package/dist/esm/function/getWasmUrl.js.map +1 -1
- package/dist/esm/function/hasAlphaChannel.d.ts +1 -1
- package/dist/esm/function/hasAlphaChannel.js +2 -2
- package/dist/esm/function/hasAlphaChannel.js.map +1 -1
- package/dist/esm/function/isHdr.d.ts +1 -1
- package/dist/esm/function/isHdr.js +2 -2
- package/dist/esm/function/isHdr.js.map +1 -1
- package/dist/esm/function/videoFrame2AVFrame.d.ts +6 -6
- package/dist/esm/function/videoFrame2AVFrame.js +13 -74
- package/dist/esm/function/videoFrame2AVFrame.js.map +1 -1
- package/dist/esm/implement/AVFramePoolImpl.d.ts +3 -3
- package/dist/esm/implement/AVFramePoolImpl.js +5 -7
- package/dist/esm/implement/AVFramePoolImpl.js.map +1 -1
- package/dist/esm/implement/AVPCMBufferPoolImpl.d.ts +3 -3
- package/dist/esm/implement/AVPCMBufferPoolImpl.js +4 -6
- package/dist/esm/implement/AVPCMBufferPoolImpl.js.map +1 -1
- package/dist/esm/implement/AVPacketPoolImpl.d.ts +3 -3
- package/dist/esm/implement/AVPacketPoolImpl.js +5 -7
- package/dist/esm/implement/AVPacketPoolImpl.js.map +1 -1
- package/dist/esm/index.d.ts +54 -0
- package/dist/esm/index.js +98 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/internal.d.ts +26 -0
- package/dist/esm/internal.js +52 -0
- package/dist/esm/internal.js.map +1 -0
- package/dist/esm/pixelFormatDescriptor.d.ts +2 -1
- package/dist/esm/pixelFormatDescriptor.js +15 -0
- package/dist/esm/pixelFormatDescriptor.js.map +1 -1
- package/dist/esm/pixfmt.d.ts +9 -1
- package/dist/esm/pixfmt.js.map +1 -1
- package/dist/esm/sampleFormatDescriptor.d.ts +1 -1
- package/dist/esm/sampleFormatDescriptor.js.map +1 -1
- package/dist/esm/stringEnum.d.ts +30 -5
- package/dist/esm/stringEnum.js +43 -5
- package/dist/esm/stringEnum.js.map +1 -1
- package/dist/esm/struct/audiosample.d.ts +1 -1
- package/dist/esm/struct/audiosample.js +2 -2
- package/dist/esm/struct/audiosample.js.map +1 -1
- package/dist/esm/struct/avbuffer.d.ts +1 -1
- package/dist/esm/struct/avbuffer.js +4 -4
- package/dist/esm/struct/avbuffer.js.map +1 -1
- package/dist/esm/struct/avcodecparameters.d.ts +14 -9
- package/dist/esm/struct/avcodecparameters.js +14 -16
- package/dist/esm/struct/avcodecparameters.js.map +1 -1
- package/dist/esm/struct/avdict.js +2 -2
- package/dist/esm/struct/avdict.js.map +1 -1
- package/dist/esm/struct/avframe.d.ts +12 -12
- package/dist/esm/struct/avframe.js +21 -27
- package/dist/esm/struct/avframe.js.map +1 -1
- package/dist/esm/struct/avpacket.d.ts +4 -4
- package/dist/esm/struct/avpacket.js +7 -9
- package/dist/esm/struct/avpacket.js.map +1 -1
- package/dist/esm/struct/avpcmbuffer.d.ts +1 -1
- package/dist/esm/struct/avpcmbuffer.js +2 -2
- package/dist/esm/struct/avpcmbuffer.js.map +1 -1
- package/dist/esm/struct/avsubtitle.d.ts +2 -2
- package/dist/esm/struct/avsubtitle.js.map +1 -1
- package/dist/esm/struct/encryption.js +2 -2
- package/dist/esm/struct/encryption.js.map +1 -1
- package/dist/esm/struct/rational.d.ts +1 -1
- package/dist/esm/struct/rational.js +4 -4
- package/dist/esm/struct/rational.js.map +1 -1
- package/dist/esm/util/amf.d.ts +1 -4
- package/dist/esm/util/amf.js +1 -5
- package/dist/esm/util/amf.js.map +1 -1
- package/dist/esm/util/av1syntax.d.ts +1 -1
- package/dist/esm/util/av1syntax.js.map +1 -1
- package/dist/esm/util/avbuffer.d.ts +2 -1
- package/dist/esm/util/avbuffer.js +7 -15
- package/dist/esm/util/avbuffer.js.map +1 -1
- package/dist/esm/util/avdict.d.ts +2 -1
- package/dist/esm/util/avdict.js +12 -16
- package/dist/esm/util/avdict.js.map +1 -1
- package/dist/esm/util/avframe.d.ts +2 -1
- package/dist/esm/util/avframe.js +22 -24
- package/dist/esm/util/avframe.js.map +1 -1
- package/dist/esm/util/avpacket.d.ts +3 -3
- package/dist/esm/util/avpacket.js +11 -13
- package/dist/esm/util/avpacket.js.map +1 -1
- package/dist/esm/util/channel.d.ts +1 -1
- package/dist/esm/util/channel.js +6 -6
- package/dist/esm/util/channel.js.map +1 -1
- package/dist/esm/util/codecparameters.d.ts +3 -1
- package/dist/esm/util/codecparameters.js +16 -12
- package/dist/esm/util/codecparameters.js.map +1 -1
- package/dist/esm/util/common.js.map +1 -1
- package/dist/esm/util/encryption.d.ts +2 -2
- package/dist/esm/util/encryption.js +1 -3
- package/dist/esm/util/encryption.js.map +1 -1
- package/dist/esm/util/expgolomb.d.ts +1 -2
- package/dist/esm/util/expgolomb.js.map +1 -1
- package/dist/esm/util/intread.js +1 -1
- package/dist/esm/util/intread.js.map +1 -1
- package/dist/esm/util/intwrite.js +1 -1
- package/dist/esm/util/intwrite.js.map +1 -1
- package/dist/esm/util/mem.js +7 -7
- package/dist/esm/util/mem.js.map +1 -1
- package/dist/esm/util/nalu.d.ts +1 -1
- package/dist/esm/util/nalu.js +3 -5
- package/dist/esm/util/nalu.js.map +1 -1
- package/dist/esm/util/ntp.js.map +1 -1
- package/dist/esm/util/pcm.d.ts +1 -1
- package/dist/esm/util/pcm.js.map +1 -1
- package/dist/esm/util/pixel.d.ts +1 -1
- package/dist/esm/util/pixel.js +8 -10
- package/dist/esm/util/pixel.js.map +1 -1
- package/dist/esm/util/rational.d.ts +10 -10
- package/dist/esm/util/rational.js +4 -4
- package/dist/esm/util/rational.js.map +1 -1
- package/dist/esm/util/sample.d.ts +1 -1
- package/dist/esm/util/sample.js +7 -7
- package/dist/esm/util/sample.js.map +1 -1
- package/dist/esm/util/serialize.d.ts +9 -9
- package/dist/esm/util/serialize.js +6 -6
- package/dist/esm/util/serialize.js.map +1 -1
- package/package.json +23 -390
- package/src/AVStream.ts +677 -0
- package/src/audiosamplefmt.ts +302 -0
- package/src/avformat.ts +96 -0
- package/src/codec.ts +1016 -0
- package/src/codecs/aac.ts +429 -0
- package/src/codecs/ac3.ts +309 -0
- package/src/codecs/av1.ts +503 -0
- package/src/codecs/dts.ts +100 -0
- package/src/codecs/flac.ts +118 -0
- package/src/codecs/h264.ts +1013 -0
- package/src/codecs/hevc.ts +1049 -0
- package/src/codecs/mp3.ts +172 -0
- package/src/codecs/mpeg4.ts +37 -0
- package/src/codecs/mpegvideo.ts +49 -0
- package/src/codecs/opus.ts +148 -0
- package/src/codecs/ttml.ts +158 -0
- package/src/codecs/vp8.ts +91 -0
- package/src/codecs/vp9.ts +213 -0
- package/src/codecs/vvc.ts +1086 -0
- package/src/constant.ts +72 -0
- package/src/enum.ts +47 -0
- package/src/error.ts +45 -0
- package/src/function/analyzeAVFormat.ts +94 -0
- package/src/function/analyzeUrlIOLoader.ts +166 -0
- package/src/function/audioData2AVFrame.ts +82 -0
- package/src/function/avPCMBuffer2AVFrame.ts +111 -0
- package/src/function/avframe2AudioData.ts +131 -0
- package/src/function/avframe2VideoFrame.ts +88 -0
- package/src/function/avpacket2EncodedAudioChunk.ts +39 -0
- package/src/function/avpacket2EncodedVideoChunk.ts +39 -0
- package/src/function/compileResource.ts +57 -0
- package/src/function/constant/webcodecs.ts +81 -0
- package/src/function/encodedAudioChunk2AVPacket.ts +62 -0
- package/src/function/encodedVideoChunk2AVPacket.ts +86 -0
- package/src/function/getAudioCodec.ts +45 -0
- package/src/function/getAudioMimeType.ts +44 -0
- package/src/function/getHardwarePreference.ts +45 -0
- package/src/function/getVideoCodec.ts +244 -0
- package/src/function/getVideoMimeType.ts +35 -0
- package/src/function/getWasmUrl.ts +190 -0
- package/src/function/hasAlphaChannel.ts +37 -0
- package/src/function/isHdr.ts +44 -0
- package/src/function/videoFrame2AVFrame.ts +95 -0
- package/src/implement/AVFramePoolImpl.ts +83 -0
- package/src/implement/AVPCMBufferPoolImpl.ts +79 -0
- package/src/implement/AVPacketPoolImpl.ts +82 -0
- package/src/index.ts +264 -0
- package/src/internal.ts +71 -0
- package/src/pixelFormatDescriptor.ts +819 -0
- package/src/pixfmt.ts +1400 -0
- package/src/sampleFormatDescriptor.ts +57 -0
- package/src/stringEnum.ts +366 -0
- package/src/struct/audiosample.ts +95 -0
- package/src/struct/avbuffer.ts +139 -0
- package/src/struct/avcodecparameters.ts +243 -0
- package/src/struct/avdict.ts +44 -0
- package/src/struct/avframe.ts +663 -0
- package/src/struct/avpacket.ts +178 -0
- package/src/struct/avpcmbuffer.ts +77 -0
- package/src/struct/avsubtitle.ts +59 -0
- package/src/struct/encryption.ts +180 -0
- package/src/struct/rational.ts +43 -0
- package/src/util/amf.ts +178 -0
- package/src/util/av1syntax.ts +112 -0
- package/src/util/avbuffer.ts +294 -0
- package/src/util/avdict.ts +171 -0
- package/src/util/avframe.ts +520 -0
- package/src/util/avpacket.ts +313 -0
- package/src/util/channel.ts +66 -0
- package/src/util/codecparameters.ts +148 -0
- package/src/util/common.ts +42 -0
- package/src/util/encryption.ts +154 -0
- package/src/util/expgolomb.ts +170 -0
- package/src/util/intread.ts +60 -0
- package/src/util/intwrite.ts +71 -0
- package/src/util/mem.ts +60 -0
- package/src/util/nalu.ts +297 -0
- package/src/util/ntp.ts +32 -0
- package/src/util/pcm.ts +161 -0
- package/src/util/pixel.ts +381 -0
- package/src/util/rational.ts +152 -0
- package/src/util/sample.ts +136 -0
- package/src/util/serialize.ts +268 -0
- package/dist/cjs/AVStream.d.ts +0 -334
- package/dist/cjs/AVStream.js +0 -37
- package/dist/cjs/audiosamplefmt.d.ts +0 -248
- package/dist/cjs/avformat.d.ts +0 -63
- package/dist/cjs/codec.d.ts +0 -863
- package/dist/cjs/codecs/aac.d.ts +0 -121
- package/dist/cjs/codecs/ac3.d.ts +0 -72
- package/dist/cjs/codecs/av1.d.ts +0 -75
- package/dist/cjs/codecs/dts.d.ts +0 -17
- package/dist/cjs/codecs/flac.d.ts +0 -46
- package/dist/cjs/codecs/h264.d.ts +0 -188
- package/dist/cjs/codecs/hevc.d.ts +0 -220
- package/dist/cjs/codecs/mp3.d.ts +0 -17
- package/dist/cjs/codecs/mpeg4.d.ts +0 -7
- package/dist/cjs/codecs/mpegvideo.d.ts +0 -7
- package/dist/cjs/codecs/opus.d.ts +0 -26
- package/dist/cjs/codecs/ttml.d.ts +0 -9
- package/dist/cjs/codecs/ttml.js +0 -87
- package/dist/cjs/codecs/vp8.d.ts +0 -31
- package/dist/cjs/codecs/vp9.d.ts +0 -45
- package/dist/cjs/codecs/vvc.d.ts +0 -235
- package/dist/cjs/constant.d.ts +0 -35
- package/dist/cjs/constant.js +0 -27
- package/dist/cjs/enum.d.ts +0 -3159
- package/dist/cjs/error.d.ts +0 -10
- package/dist/cjs/function/analyzeAVFormat.d.ts +0 -3
- package/dist/cjs/function/analyzeUrlIOLoader.d.ts +0 -7
- package/dist/cjs/function/analyzeUrlIOLoader.js +0 -101
- package/dist/cjs/function/audioData2AVFrame.d.ts +0 -2
- package/dist/cjs/function/avPCMBuffer2AVFrame.d.ts +0 -3
- package/dist/cjs/function/avframe2AudioData.d.ts +0 -2
- package/dist/cjs/function/avframe2VideoFrame.d.ts +0 -5
- package/dist/cjs/function/avframe2VideoFrame.js +0 -146
- package/dist/cjs/function/avpacket2EncodedAudioChunk.d.ts +0 -2
- package/dist/cjs/function/avpacket2EncodedAudioChunk.js +0 -17
- package/dist/cjs/function/avpacket2EncodedVideoChunk.d.ts +0 -2
- package/dist/cjs/function/avpacket2EncodedVideoChunk.js +0 -17
- package/dist/cjs/function/compileResource.d.ts +0 -2
- package/dist/cjs/function/compileResource.js +0 -53
- package/dist/cjs/function/encodedAudioChunk2AVPacket.d.ts +0 -2
- package/dist/cjs/function/encodedAudioChunk2AVPacket.js +0 -23
- package/dist/cjs/function/encodedVideoChunk2AVPacket.d.ts +0 -7
- package/dist/cjs/function/encodedVideoChunk2AVPacket.js +0 -30
- package/dist/cjs/function/getAudioCodec.d.ts +0 -2
- package/dist/cjs/function/getHardwarePreference.d.ts +0 -1
- package/dist/cjs/function/getHardwarePreference.js +0 -16
- package/dist/cjs/function/getVideoCodec.d.ts +0 -2
- package/dist/cjs/function/getWasmUrl.d.ts +0 -2
- package/dist/cjs/function/hasAlphaChannel.d.ts +0 -2
- package/dist/cjs/function/isHdr.d.ts +0 -2
- package/dist/cjs/function/videoFrame2AVFrame.d.ts +0 -7
- package/dist/cjs/function/videoFrame2AVFrame.js +0 -113
- package/dist/cjs/implement/AVFramePoolImpl.d.ts +0 -10
- package/dist/cjs/implement/AVFramePoolImpl.js +0 -59
- package/dist/cjs/implement/AVPCMBufferPoolImpl.d.ts +0 -10
- package/dist/cjs/implement/AVPCMBufferPoolImpl.js +0 -57
- package/dist/cjs/implement/AVPacketPoolImpl.d.ts +0 -10
- package/dist/cjs/implement/AVPacketPoolImpl.js +0 -60
- package/dist/cjs/pixelFormatDescriptor.d.ts +0 -99
- package/dist/cjs/pixfmt.d.ts +0 -1293
- package/dist/cjs/sampleFormatDescriptor.d.ts +0 -6
- package/dist/cjs/stringEnum.d.ts +0 -136
- package/dist/cjs/struct/audiosample.d.ts +0 -64
- package/dist/cjs/struct/avbuffer.d.ts +0 -85
- package/dist/cjs/struct/avcodecparameters.d.ts +0 -176
- package/dist/cjs/struct/avdict.d.ts +0 -17
- package/dist/cjs/struct/avframe.d.ts +0 -559
- package/dist/cjs/struct/avpacket.d.ts +0 -124
- package/dist/cjs/struct/avpcmbuffer.d.ts +0 -49
- package/dist/cjs/struct/avsubtitle.d.ts +0 -30
- package/dist/cjs/struct/encryption.d.ts +0 -137
- package/dist/cjs/struct/rational.d.ts +0 -15
- package/dist/cjs/struct/rational.js +0 -43
- package/dist/cjs/util/amf.d.ts +0 -10
- package/dist/cjs/util/av1syntax.d.ts +0 -9
- package/dist/cjs/util/avbuffer.d.ts +0 -17
- package/dist/cjs/util/avbuffer.js +0 -153
- package/dist/cjs/util/avdict.d.ts +0 -8
- package/dist/cjs/util/avdict.js +0 -111
- package/dist/cjs/util/avframe.d.ts +0 -20
- package/dist/cjs/util/avpacket.d.ts +0 -24
- package/dist/cjs/util/channel.d.ts +0 -5
- package/dist/cjs/util/codecparameters.d.ts +0 -4
- package/dist/cjs/util/codecparameters.js +0 -70
- package/dist/cjs/util/common.d.ts +0 -3
- package/dist/cjs/util/crypto.d.ts +0 -1
- package/dist/cjs/util/crypto.js +0 -8
- package/dist/cjs/util/crypto.js.map +0 -1
- package/dist/cjs/util/encryption.d.ts +0 -6
- package/dist/cjs/util/expgolomb.d.ts +0 -26
- package/dist/cjs/util/intread.d.ts +0 -9
- package/dist/cjs/util/intwrite.d.ts +0 -9
- package/dist/cjs/util/mem.d.ts +0 -5
- package/dist/cjs/util/mem.js +0 -54
- package/dist/cjs/util/nalu.d.ts +0 -32
- package/dist/cjs/util/ntp.d.ts +0 -1
- package/dist/cjs/util/pcm.d.ts +0 -4
- package/dist/cjs/util/pixel.d.ts +0 -11
- package/dist/cjs/util/rational.d.ts +0 -58
- package/dist/cjs/util/sample.d.ts +0 -7
- package/dist/cjs/util/serialize.d.ts +0 -63
- package/dist/esm/util/crypto.d.ts +0 -1
- package/dist/esm/util/crypto.js +0 -4
- package/dist/esm/util/crypto.js.map +0 -1
- /package/dist/cjs/{audiosamplefmt.js → audiosamplefmt.cjs} +0 -0
- /package/dist/cjs/{avformat.js → avformat.cjs} +0 -0
- /package/dist/cjs/{codec.js → codec.cjs} +0 -0
- /package/dist/cjs/{error.js → error.cjs} +0 -0
- /package/dist/cjs/function/{analyzeAVFormat.js → analyzeAVFormat.cjs} +0 -0
- /package/dist/cjs/{pixfmt.js → pixfmt.cjs} +0 -0
- /package/dist/cjs/{sampleFormatDescriptor.js → sampleFormatDescriptor.cjs} +0 -0
- /package/dist/cjs/struct/{avsubtitle.js → avsubtitle.cjs} +0 -0
- /package/dist/cjs/util/{av1syntax.js → av1syntax.cjs} +0 -0
- /package/dist/cjs/util/{common.js → common.cjs} +0 -0
- /package/dist/cjs/util/{expgolomb.js → expgolomb.cjs} +0 -0
- /package/dist/cjs/util/{ntp.js → ntp.cjs} +0 -0
- /package/dist/cjs/util/{pcm.js → pcm.cjs} +0 -0
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* libmedia mp3 util
|
|
3
|
+
*
|
|
4
|
+
* 版权所有 (C) 2024 赵高兴
|
|
5
|
+
* Copyright (C) 2024 Gaoxing Zhao
|
|
6
|
+
*
|
|
7
|
+
* 此文件是 libmedia 的一部分
|
|
8
|
+
* This file is part of libmedia.
|
|
9
|
+
*
|
|
10
|
+
* libmedia 是自由软件;您可以根据 GNU Lesser General Public License(GNU LGPL)3.1
|
|
11
|
+
* 或任何其更新的版本条款重新分发或修改它
|
|
12
|
+
* libmedia is free software; you can redistribute it and/or
|
|
13
|
+
* modify it under the terms of the GNU Lesser General Public
|
|
14
|
+
* License as published by the Free Software Foundation; either
|
|
15
|
+
* version 3.1 of the License, or (at your option) any later version.
|
|
16
|
+
*
|
|
17
|
+
* libmedia 希望能够为您提供帮助,但不提供任何明示或暗示的担保,包括但不限于适销性或特定用途的保证
|
|
18
|
+
* 您应自行承担使用 libmedia 的风险,并且需要遵守 GNU Lesser General Public License 中的条款和条件。
|
|
19
|
+
* libmedia is distributed in the hope that it will be useful,
|
|
20
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
21
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
22
|
+
* Lesser General Public License for more details.
|
|
23
|
+
*
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
import { NOPTS_VALUE } from '../constant'
|
|
27
|
+
import type AVCodecParameters from '../struct/avcodecparameters'
|
|
28
|
+
import type { AVPacketSideDataType } from '../codec'
|
|
29
|
+
|
|
30
|
+
import {
|
|
31
|
+
type Uint8ArrayInterface
|
|
32
|
+
} from '@libmedia/common/io'
|
|
33
|
+
|
|
34
|
+
const MpegAudioV10SampleRateTable = [44100, 48000, 32000, 0]
|
|
35
|
+
|
|
36
|
+
const MpegAudioV20SampleRateTable = [22050, 24000, 16000, 0]
|
|
37
|
+
|
|
38
|
+
const MpegAudioV25SampleRateTable = [11025, 12000, 8000, 0]
|
|
39
|
+
|
|
40
|
+
const MpegAudioV10FrameSizeTable = [0, 1152, 1152, 384]
|
|
41
|
+
|
|
42
|
+
const MpegAudioV20FrameSizeTable = [0, 576, 1152, 384]
|
|
43
|
+
|
|
44
|
+
const MpegAudioV25FrameSizeTable = [0, 576, 1152, 384]
|
|
45
|
+
|
|
46
|
+
const MpegAudioV1L1BitRateTable = [0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, -1]
|
|
47
|
+
|
|
48
|
+
const MpegAudioV1L2BitRateTable = [0, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384, -1]
|
|
49
|
+
|
|
50
|
+
const MpegAudioV1L3BitRateTable = [0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, -1]
|
|
51
|
+
|
|
52
|
+
const MpegAudioV2L1BitRateTable = [0, 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256, -1]
|
|
53
|
+
|
|
54
|
+
const MpegAudioV2L2L3BitRateTable = [0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160, -1]
|
|
55
|
+
|
|
56
|
+
export function getSampleRateByVersionIndex(version: number, samplingFreqIndex: number) {
|
|
57
|
+
switch (version) {
|
|
58
|
+
case 0:
|
|
59
|
+
// MPEG 2.5
|
|
60
|
+
return MpegAudioV25SampleRateTable[samplingFreqIndex]
|
|
61
|
+
case 2:
|
|
62
|
+
// MPEG 2
|
|
63
|
+
return MpegAudioV20SampleRateTable[samplingFreqIndex]
|
|
64
|
+
case 3:
|
|
65
|
+
// MPEG 1
|
|
66
|
+
return MpegAudioV10SampleRateTable[samplingFreqIndex]
|
|
67
|
+
}
|
|
68
|
+
return NOPTS_VALUE
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export function getFrameSizeByVersionLayer(version: number, layer: number) {
|
|
72
|
+
switch (version) {
|
|
73
|
+
case 0:
|
|
74
|
+
// MPEG 2.5
|
|
75
|
+
return MpegAudioV25FrameSizeTable[layer]
|
|
76
|
+
case 2:
|
|
77
|
+
// MPEG 2
|
|
78
|
+
return MpegAudioV20FrameSizeTable[layer]
|
|
79
|
+
case 3:
|
|
80
|
+
// MPEG 1
|
|
81
|
+
return MpegAudioV10FrameSizeTable[layer]
|
|
82
|
+
}
|
|
83
|
+
return NOPTS_VALUE
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
export function getBitRateByVersionLayerIndex(version: number, layer: number, index: number) {
|
|
87
|
+
|
|
88
|
+
switch (layer) {
|
|
89
|
+
// layer3
|
|
90
|
+
case 1:
|
|
91
|
+
switch (version) {
|
|
92
|
+
case 0:
|
|
93
|
+
case 2:
|
|
94
|
+
return MpegAudioV2L2L3BitRateTable[index]
|
|
95
|
+
case 3:
|
|
96
|
+
return MpegAudioV1L3BitRateTable[index]
|
|
97
|
+
}
|
|
98
|
+
break
|
|
99
|
+
// layer2
|
|
100
|
+
case 2:
|
|
101
|
+
switch (version) {
|
|
102
|
+
case 0:
|
|
103
|
+
case 2:
|
|
104
|
+
return MpegAudioV2L2L3BitRateTable[index]
|
|
105
|
+
case 3:
|
|
106
|
+
return MpegAudioV1L2BitRateTable[index]
|
|
107
|
+
}
|
|
108
|
+
// layer1
|
|
109
|
+
case 3:
|
|
110
|
+
switch (version) {
|
|
111
|
+
case 0:
|
|
112
|
+
case 2:
|
|
113
|
+
return MpegAudioV2L1BitRateTable[index]
|
|
114
|
+
case 3:
|
|
115
|
+
return MpegAudioV1L1BitRateTable[index]
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return NOPTS_VALUE
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
export function getProfileByLayer(layer: number) {
|
|
122
|
+
switch (layer) {
|
|
123
|
+
case 1:
|
|
124
|
+
// Layer 3
|
|
125
|
+
return 34
|
|
126
|
+
case 2:
|
|
127
|
+
// Layer 2
|
|
128
|
+
return 33
|
|
129
|
+
case 3:
|
|
130
|
+
// Layer 1
|
|
131
|
+
return 32
|
|
132
|
+
}
|
|
133
|
+
return NOPTS_VALUE
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
export const enum MP3Profile {
|
|
137
|
+
Layer1 = 32,
|
|
138
|
+
Layer2 = 33,
|
|
139
|
+
Layer3 = 34
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
export const MP3Profile2Name: Record<MP3Profile, string> = {
|
|
143
|
+
[MP3Profile.Layer1]: 'Layer1',
|
|
144
|
+
[MP3Profile.Layer2]: 'Layer2',
|
|
145
|
+
[MP3Profile.Layer3]: 'Layer3'
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
export function parseAVCodecParameters(
|
|
150
|
+
stream: {
|
|
151
|
+
codecpar: AVCodecParameters,
|
|
152
|
+
sideData: Partial<Record<AVPacketSideDataType, Uint8Array>>,
|
|
153
|
+
},
|
|
154
|
+
buffer?: Uint8ArrayInterface
|
|
155
|
+
) {
|
|
156
|
+
if (buffer && buffer.length >= 4) {
|
|
157
|
+
const ver = (buffer[1] >>> 3) & 0x03
|
|
158
|
+
const layer = (buffer[1] & 0x06) >> 1
|
|
159
|
+
// const bitrateIndex = (buffer[2] & 0xF0) >>> 4
|
|
160
|
+
const samplingFreqIndex = (buffer[2] & 0x0C) >>> 2
|
|
161
|
+
|
|
162
|
+
const channelMode = (buffer[3] >>> 6) & 0x03
|
|
163
|
+
|
|
164
|
+
const channelCount = channelMode !== 3 ? 2 : 1
|
|
165
|
+
const profile = getProfileByLayer(layer)
|
|
166
|
+
const sampleRate = getSampleRateByVersionIndex(ver, samplingFreqIndex)
|
|
167
|
+
|
|
168
|
+
stream.codecpar.profile = profile
|
|
169
|
+
stream.codecpar.sampleRate = sampleRate
|
|
170
|
+
stream.codecpar.chLayout.nbChannels = channelCount
|
|
171
|
+
}
|
|
172
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* libmedia mpeg4 util
|
|
3
|
+
*
|
|
4
|
+
* 版权所有 (C) 2024 赵高兴
|
|
5
|
+
* Copyright (C) 2024 Gaoxing Zhao
|
|
6
|
+
*
|
|
7
|
+
* 此文件是 libmedia 的一部分
|
|
8
|
+
* This file is part of libmedia.
|
|
9
|
+
*
|
|
10
|
+
* libmedia 是自由软件;您可以根据 GNU Lesser General Public License(GNU LGPL)3.1
|
|
11
|
+
* 或任何其更新的版本条款重新分发或修改它
|
|
12
|
+
* libmedia is free software; you can redistribute it and/or
|
|
13
|
+
* modify it under the terms of the GNU Lesser General Public
|
|
14
|
+
* License as published by the Free Software Foundation; either
|
|
15
|
+
* version 3.1 of the License, or (at your option) any later version.
|
|
16
|
+
*
|
|
17
|
+
* libmedia 希望能够为您提供帮助,但不提供任何明示或暗示的担保,包括但不限于适销性或特定用途的保证
|
|
18
|
+
* 您应自行承担使用 libmedia 的风险,并且需要遵守 GNU Lesser General Public License 中的条款和条件。
|
|
19
|
+
* libmedia is distributed in the hope that it will be useful,
|
|
20
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
21
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
22
|
+
* Lesser General Public License for more details.
|
|
23
|
+
*
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
import type AVPacket from '../struct/avpacket'
|
|
27
|
+
|
|
28
|
+
export const enum Mpeg4PictureType {
|
|
29
|
+
I = 0,
|
|
30
|
+
P,
|
|
31
|
+
B
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export function isIDR(avpacket: pointer<AVPacket>) {
|
|
35
|
+
const byte = accessof(reinterpret_cast<pointer<uint8>>(avpacket.data + 4))
|
|
36
|
+
return (byte >>> 6) === Mpeg4PictureType.I
|
|
37
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* libmedia mpegvideo util
|
|
3
|
+
*
|
|
4
|
+
* 版权所有 (C) 2024 赵高兴
|
|
5
|
+
* Copyright (C) 2024 Gaoxing Zhao
|
|
6
|
+
*
|
|
7
|
+
* 此文件是 libmedia 的一部分
|
|
8
|
+
* This file is part of libmedia.
|
|
9
|
+
*
|
|
10
|
+
* libmedia 是自由软件;您可以根据 GNU Lesser General Public License(GNU LGPL)3.1
|
|
11
|
+
* 或任何其更新的版本条款重新分发或修改它
|
|
12
|
+
* libmedia is free software; you can redistribute it and/or
|
|
13
|
+
* modify it under the terms of the GNU Lesser General Public
|
|
14
|
+
* License as published by the Free Software Foundation; either
|
|
15
|
+
* version 3.1 of the License, or (at your option) any later version.
|
|
16
|
+
*
|
|
17
|
+
* libmedia 希望能够为您提供帮助,但不提供任何明示或暗示的担保,包括但不限于适销性或特定用途的保证
|
|
18
|
+
* 您应自行承担使用 libmedia 的风险,并且需要遵守 GNU Lesser General Public License 中的条款和条件。
|
|
19
|
+
* libmedia is distributed in the hope that it will be useful,
|
|
20
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
21
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
22
|
+
* Lesser General Public License for more details.
|
|
23
|
+
*
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
import type AVPacket from '../struct/avpacket'
|
|
27
|
+
import { getAVPacketData } from '../util/avpacket'
|
|
28
|
+
|
|
29
|
+
export const enum MpegVideoPictureType {
|
|
30
|
+
I = 1,
|
|
31
|
+
P,
|
|
32
|
+
B
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export function isIDR(avpacket: pointer<AVPacket>) {
|
|
36
|
+
const data = getAVPacketData(avpacket)
|
|
37
|
+
|
|
38
|
+
for (let i = 0; i < data.length - 6; i++) {
|
|
39
|
+
if (data[i] === 0
|
|
40
|
+
&& data[i + 1] === 0
|
|
41
|
+
&& data[i + 2] === 1
|
|
42
|
+
&& data[i + 3] === 0
|
|
43
|
+
) {
|
|
44
|
+
const picType = (data[i + 5] >> 3) & 7
|
|
45
|
+
return picType === MpegVideoPictureType.I
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return false
|
|
49
|
+
}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* libmedia opus util
|
|
3
|
+
*
|
|
4
|
+
* 版权所有 (C) 2024 赵高兴
|
|
5
|
+
* Copyright (C) 2024 Gaoxing Zhao
|
|
6
|
+
*
|
|
7
|
+
* 此文件是 libmedia 的一部分
|
|
8
|
+
* This file is part of libmedia.
|
|
9
|
+
*
|
|
10
|
+
* libmedia 是自由软件;您可以根据 GNU Lesser General Public License(GNU LGPL)3.1
|
|
11
|
+
* 或任何其更新的版本条款重新分发或修改它
|
|
12
|
+
* libmedia is free software; you can redistribute it and/or
|
|
13
|
+
* modify it under the terms of the GNU Lesser General Public
|
|
14
|
+
* License as published by the Free Software Foundation; either
|
|
15
|
+
* version 3.1 of the License, or (at your option) any later version.
|
|
16
|
+
*
|
|
17
|
+
* libmedia 希望能够为您提供帮助,但不提供任何明示或暗示的担保,包括但不限于适销性或特定用途的保证
|
|
18
|
+
* 您应自行承担使用 libmedia 的风险,并且需要遵守 GNU Lesser General Public License 中的条款和条件。
|
|
19
|
+
* libmedia is distributed in the hope that it will be useful,
|
|
20
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
21
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
22
|
+
* Lesser General Public License for more details.
|
|
23
|
+
*
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
import { AVPacketSideDataType } from '../codec'
|
|
27
|
+
import type AVCodecParameters from '../struct/avcodecparameters'
|
|
28
|
+
import { avRescaleQ } from '../util/rational'
|
|
29
|
+
|
|
30
|
+
import {
|
|
31
|
+
BufferReader,
|
|
32
|
+
BufferWriter,
|
|
33
|
+
type Uint8ArrayInterface
|
|
34
|
+
} from '@libmedia/common/io'
|
|
35
|
+
|
|
36
|
+
export const durations = [
|
|
37
|
+
/* Silk NB */
|
|
38
|
+
480, 960, 1920, 2880,
|
|
39
|
+
/* Silk MB */
|
|
40
|
+
480, 960, 1920, 2880,
|
|
41
|
+
/* Silk WB */
|
|
42
|
+
480, 960, 1920, 2880,
|
|
43
|
+
/* Hybrid SWB */
|
|
44
|
+
480, 960,
|
|
45
|
+
/* Hybrid FB */
|
|
46
|
+
480, 960,
|
|
47
|
+
/* CELT NB */
|
|
48
|
+
120, 240, 480, 960,
|
|
49
|
+
/* CELT NB */
|
|
50
|
+
120, 240, 480, 960,
|
|
51
|
+
/* CELT NB */
|
|
52
|
+
120, 240, 480, 960,
|
|
53
|
+
/* CELT NB */
|
|
54
|
+
120, 240, 480, 960
|
|
55
|
+
]
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
export function getBufferSamples(buffer: Uint8Array) {
|
|
59
|
+
let toc = 0, frameDuration = 0, nframes = 0
|
|
60
|
+
|
|
61
|
+
if (buffer.length < 1) {
|
|
62
|
+
return 0
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
toc = buffer[0]
|
|
66
|
+
|
|
67
|
+
frameDuration = durations[toc >> 3]
|
|
68
|
+
|
|
69
|
+
switch (toc & 3) {
|
|
70
|
+
case 0:
|
|
71
|
+
nframes = 1
|
|
72
|
+
break
|
|
73
|
+
case 1:
|
|
74
|
+
nframes = 2
|
|
75
|
+
break
|
|
76
|
+
case 2:
|
|
77
|
+
nframes = 2
|
|
78
|
+
break
|
|
79
|
+
case 3:
|
|
80
|
+
if (buffer.length < 2) {
|
|
81
|
+
return 0
|
|
82
|
+
}
|
|
83
|
+
nframes = buffer[1] & 63
|
|
84
|
+
break
|
|
85
|
+
}
|
|
86
|
+
return nframes * frameDuration
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* opus extradata
|
|
91
|
+
*
|
|
92
|
+
* - 8 bytes Magic Signature: OpusHead
|
|
93
|
+
* - 1 bytes unsigned, 对应值 0x01 version
|
|
94
|
+
* - 1 bytes unsigned, channels 它可能和编码声道数不一致, 它可能被修改成 packet-by-packet, 对应值 0x01
|
|
95
|
+
* - 2 bytes unsigned, preSkip 这是要从开始播放时的解码器输出, 从页面的颗粒位置减去以计算其 PCM 样本位置。
|
|
96
|
+
* - 4 bytes unsigned, sampleRate 原始输入采样率
|
|
97
|
+
* - 2 bytes signed, outputGain 这是解码时要应用的增益, 20 * log10 缩放解码器输出以实现所需的播放音量
|
|
98
|
+
* - 1 bytes unsigned, channelMappingFamily 指示输出渠道的顺序和语音含义。该八位位组的每个当前指定的值表示一个映射系列,它定义了一组允许的通道数,以及每个允许的通道数的通道名称的有序集合
|
|
99
|
+
* - channelMappingTable 可选, 当 Channel Mapping Family 为 0 时被省略。
|
|
100
|
+
* - 1 bytes, streamCount, unsigned ogg packet 里面编码了多少路 stream
|
|
101
|
+
* - 1 bytes, coupledStreamCount, unsigned 标识有多少路流是双声声道,必须小于 streamCount
|
|
102
|
+
* - C bytes, C 为总输出声道数 coupledStreamCount + streamCount
|
|
103
|
+
*
|
|
104
|
+
*/
|
|
105
|
+
export function parseAVCodecParameters(
|
|
106
|
+
stream: {
|
|
107
|
+
codecpar: AVCodecParameters,
|
|
108
|
+
sideData: Partial<Record<AVPacketSideDataType, Uint8Array>>,
|
|
109
|
+
},
|
|
110
|
+
extradata?: Uint8ArrayInterface
|
|
111
|
+
) {
|
|
112
|
+
if (!extradata && stream.sideData[AVPacketSideDataType.AV_PKT_DATA_NEW_EXTRADATA]) {
|
|
113
|
+
extradata = stream.sideData[AVPacketSideDataType.AV_PKT_DATA_NEW_EXTRADATA]
|
|
114
|
+
}
|
|
115
|
+
if (extradata && extradata.length >= 19) {
|
|
116
|
+
const reader = new BufferReader(extradata, false)
|
|
117
|
+
reader.skip(9)
|
|
118
|
+
stream.codecpar.chLayout.nbChannels = reader.readUint8()
|
|
119
|
+
stream.codecpar.initialPadding = reader.readUint16()
|
|
120
|
+
stream.codecpar.sampleRate = reader.readUint32()
|
|
121
|
+
|
|
122
|
+
stream.codecpar.seekPreroll = Number(avRescaleQ(
|
|
123
|
+
80n,
|
|
124
|
+
{
|
|
125
|
+
den: 1000,
|
|
126
|
+
num: 1
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
den: 48000,
|
|
130
|
+
num: 1
|
|
131
|
+
}
|
|
132
|
+
))
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
export function avCodecParameters2Extradata(codecpar: AVCodecParameters) {
|
|
137
|
+
const extradata = new Uint8Array(19)
|
|
138
|
+
|
|
139
|
+
const writer = new BufferWriter(extradata, false)
|
|
140
|
+
|
|
141
|
+
writer.writeString('OpusHead')
|
|
142
|
+
writer.writeUint8(0x01)
|
|
143
|
+
writer.writeUint8(codecpar.chLayout.nbChannels)
|
|
144
|
+
writer.writeUint16(codecpar.initialPadding)
|
|
145
|
+
writer.writeUint32(codecpar.sampleRate)
|
|
146
|
+
|
|
147
|
+
return extradata
|
|
148
|
+
}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
|
|
2
|
+
import {
|
|
3
|
+
array,
|
|
4
|
+
is,
|
|
5
|
+
xml2Json,
|
|
6
|
+
time
|
|
7
|
+
} from '@libmedia/common'
|
|
8
|
+
|
|
9
|
+
interface Span {
|
|
10
|
+
context: string | (string | { tagName: string, context?: string } )[]
|
|
11
|
+
region?: string
|
|
12
|
+
begin: string
|
|
13
|
+
end?: string
|
|
14
|
+
br?: string
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
interface P {
|
|
18
|
+
begin: string
|
|
19
|
+
end?: string
|
|
20
|
+
dur?: string
|
|
21
|
+
context: string | (string | { tagName: string, context?: string } )[]
|
|
22
|
+
region?: string
|
|
23
|
+
span?: Span | Span[]
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export function parse(text: string) {
|
|
27
|
+
const xml = xml2Json(text, {
|
|
28
|
+
aloneValueName: 'context'
|
|
29
|
+
})
|
|
30
|
+
|
|
31
|
+
if (!xml.tt) {
|
|
32
|
+
return {
|
|
33
|
+
queue: [],
|
|
34
|
+
head: {}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const queue: {
|
|
39
|
+
pts: int64
|
|
40
|
+
duration: int64
|
|
41
|
+
context: string
|
|
42
|
+
region: string
|
|
43
|
+
}[] = []
|
|
44
|
+
|
|
45
|
+
function formatContext(list: (string | { tagName: string, context?: string } )[]) {
|
|
46
|
+
let context = ''
|
|
47
|
+
array.each(list, ((c) => {
|
|
48
|
+
if (is.string(c)) {
|
|
49
|
+
context += c
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
if (c.context) {
|
|
53
|
+
context += `<${c.tagName}>${c.context}</${c.tagName}>`
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
context += `<${c.tagName}/>`
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}))
|
|
60
|
+
return context
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function add(p: P, start: string, end: string) {
|
|
64
|
+
let pts = time.hhColonDDColonSSDotMill2Int64(start || p.begin)
|
|
65
|
+
|
|
66
|
+
let context = p.context || ''
|
|
67
|
+
let region = p.region || 'Default'
|
|
68
|
+
let spanEnd = ''
|
|
69
|
+
|
|
70
|
+
if (is.array(context)) {
|
|
71
|
+
context = formatContext(context)
|
|
72
|
+
}
|
|
73
|
+
if (is.array(p.span)) {
|
|
74
|
+
array.each(p.span, (span) => {
|
|
75
|
+
if (span.context) {
|
|
76
|
+
if (pts === -1n && span.begin) {
|
|
77
|
+
pts = time.hhColonDDColonSSDotMill2Int64(span.begin)
|
|
78
|
+
}
|
|
79
|
+
if (!region && span.region) {
|
|
80
|
+
region = span.region
|
|
81
|
+
}
|
|
82
|
+
if (is.string(span.context)) {
|
|
83
|
+
context += span.context
|
|
84
|
+
if (span.br) {
|
|
85
|
+
context += '<br>'
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
context += formatContext(span.context)
|
|
90
|
+
if (span.br) {
|
|
91
|
+
context += '<br>'
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
if (span.end) {
|
|
96
|
+
spanEnd = span.end
|
|
97
|
+
}
|
|
98
|
+
})
|
|
99
|
+
}
|
|
100
|
+
else if (p.span) {
|
|
101
|
+
if (p.span.context) {
|
|
102
|
+
if (pts === -1n && p.span.begin) {
|
|
103
|
+
pts = time.hhColonDDColonSSDotMill2Int64(p.span.begin)
|
|
104
|
+
}
|
|
105
|
+
if (!region && p.span.region) {
|
|
106
|
+
region = p.span.region
|
|
107
|
+
}
|
|
108
|
+
if (is.string(p.span.context)) {
|
|
109
|
+
context += p.span.context
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
context += formatContext(p.span.context)
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
if (p.span.end) {
|
|
116
|
+
spanEnd = p.span.end
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
queue.push({
|
|
120
|
+
context,
|
|
121
|
+
pts,
|
|
122
|
+
region: region,
|
|
123
|
+
duration: p.dur ? time.hhColonDDColonSSDotMill2Int64(p.dur) : (time.hhColonDDColonSSDotMill2Int64(end || p.end || spanEnd) - pts)
|
|
124
|
+
})
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
function praseP(p: P | P[], start: string, end: string) {
|
|
128
|
+
if (is.array(p)) {
|
|
129
|
+
array.each(p, (_) => {
|
|
130
|
+
add(_, start, end)
|
|
131
|
+
})
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
add(p, start, end)
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
if (xml.tt.body) {
|
|
139
|
+
if (xml.tt.body.div) {
|
|
140
|
+
if (is.array(xml.tt.body.div)) {
|
|
141
|
+
array.each(xml.tt.body.div, (div: any) => {
|
|
142
|
+
if (div.p) {
|
|
143
|
+
praseP(div.p, div.begin, div.end)
|
|
144
|
+
}
|
|
145
|
+
})
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
if (xml.tt.body.div.p) {
|
|
149
|
+
praseP(xml.tt.body.div.p, xml.tt.body.div.begin, xml.tt.body.end)
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
return {
|
|
155
|
+
queue,
|
|
156
|
+
head: xml.tt.head || {}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* libmedia vp8 util
|
|
3
|
+
*
|
|
4
|
+
* 版权所有 (C) 2024 赵高兴
|
|
5
|
+
* Copyright (C) 2024 Gaoxing Zhao
|
|
6
|
+
*
|
|
7
|
+
* 此文件是 libmedia 的一部分
|
|
8
|
+
* This file is part of libmedia.
|
|
9
|
+
*
|
|
10
|
+
* libmedia 是自由软件;您可以根据 GNU Lesser General Public License(GNU LGPL)3.1
|
|
11
|
+
* 或任何其更新的版本条款重新分发或修改它
|
|
12
|
+
* libmedia is free software; you can redistribute it and/or
|
|
13
|
+
* modify it under the terms of the GNU Lesser General Public
|
|
14
|
+
* License as published by the Free Software Foundation; either
|
|
15
|
+
* version 3.1 of the License, or (at your option) any later version.
|
|
16
|
+
*
|
|
17
|
+
* libmedia 希望能够为您提供帮助,但不提供任何明示或暗示的担保,包括但不限于适销性或特定用途的保证
|
|
18
|
+
* 您应自行承担使用 libmedia 的风险,并且需要遵守 GNU Lesser General Public License 中的条款和条件。
|
|
19
|
+
* libmedia is distributed in the hope that it will be useful,
|
|
20
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
21
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
22
|
+
* Lesser General Public License for more details.
|
|
23
|
+
*
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
import type AVCodecParameters from '../struct/avcodecparameters'
|
|
27
|
+
import { AVPacketSideDataType } from '../codec'
|
|
28
|
+
import type AVPacket from '../struct/avpacket'
|
|
29
|
+
|
|
30
|
+
import {
|
|
31
|
+
BitReader,
|
|
32
|
+
type Uint8ArrayInterface
|
|
33
|
+
} from '@libmedia/common/io'
|
|
34
|
+
|
|
35
|
+
export function parseAVCodecParameters(
|
|
36
|
+
stream: {
|
|
37
|
+
codecpar: AVCodecParameters,
|
|
38
|
+
sideData: Partial<Record<AVPacketSideDataType, Uint8Array>>,
|
|
39
|
+
},
|
|
40
|
+
extradata?: Uint8ArrayInterface
|
|
41
|
+
) {
|
|
42
|
+
if (!extradata && stream.sideData[AVPacketSideDataType.AV_PKT_DATA_NEW_EXTRADATA]) {
|
|
43
|
+
extradata = stream.sideData[AVPacketSideDataType.AV_PKT_DATA_NEW_EXTRADATA]
|
|
44
|
+
}
|
|
45
|
+
if (extradata && extradata.length >= 6) {
|
|
46
|
+
const params = parseExtraData(extradata)
|
|
47
|
+
stream.codecpar.profile = params.profile
|
|
48
|
+
stream.codecpar.level = params.level
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* - 1 byte profile
|
|
54
|
+
* - 1 byte level
|
|
55
|
+
* - 4 bit bitdepth
|
|
56
|
+
* - 3 bit chroma_subsampling
|
|
57
|
+
* - 1 bit full_range_flag
|
|
58
|
+
* - 1 byte color_primaries
|
|
59
|
+
* - 1 byte color_trc
|
|
60
|
+
* - 1 byte color_space
|
|
61
|
+
*
|
|
62
|
+
* @param extradata
|
|
63
|
+
*/
|
|
64
|
+
export function parseExtraData(extradata: Uint8ArrayInterface) {
|
|
65
|
+
const bitReader = new BitReader(extradata.length)
|
|
66
|
+
bitReader.appendBuffer(extradata.subarray(4))
|
|
67
|
+
const profile = bitReader.readU(8)
|
|
68
|
+
const level = bitReader.readU(8)
|
|
69
|
+
let bitDepth = bitReader.readU(4)
|
|
70
|
+
const chromaSubsampling = bitReader.readU(3)
|
|
71
|
+
const fullRangeFlag = bitReader.readU1()
|
|
72
|
+
const colorPrimaries = bitReader.readU(8)
|
|
73
|
+
const colorTrc = bitReader.readU(8)
|
|
74
|
+
const colorSpace = bitReader.readU(8)
|
|
75
|
+
|
|
76
|
+
return {
|
|
77
|
+
profile,
|
|
78
|
+
level,
|
|
79
|
+
bitDepth,
|
|
80
|
+
chromaSubsampling,
|
|
81
|
+
fullRangeFlag,
|
|
82
|
+
colorPrimaries,
|
|
83
|
+
colorTrc,
|
|
84
|
+
colorSpace
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
export function isIDR(avpacket: pointer<AVPacket>) {
|
|
89
|
+
const first = accessof(avpacket.data)
|
|
90
|
+
return !(first >>> 7)
|
|
91
|
+
}
|