@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.
- package/dist/cjs/{AVStream.js → AVStream.cjs} +5 -5
- package/dist/cjs/AVStream.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} +20 -23
- package/dist/cjs/codecs/h264.js.map +1 -1
- package/dist/cjs/codecs/{hevc.js → hevc.cjs} +23 -23
- 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} +25 -25
- package/dist/cjs/codecs/vvc.js.map +1 -1
- package/dist/cjs/{constant.js → constant.cjs} +6 -7
- package/dist/cjs/constant.js.map +1 -1
- package/dist/cjs/{enum.js → enum.cjs} +3 -1
- 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} +20 -20
- 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.js → avpacket2EncodedAudioChunk.cjs} +3 -3
- package/dist/cjs/function/avpacket2EncodedAudioChunk.js.map +1 -1
- package/dist/cjs/function/{avpacket2EncodedVideoChunk.js → avpacket2EncodedVideoChunk.cjs} +3 -3
- 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.js → encodedVideoChunk2AVPacket.cjs} +8 -8
- 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} +2 -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} +2 -0
- 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} +4 -1
- 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} +30 -30
- 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/{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} +82 -87
- 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 +7 -7
- package/dist/esm/AVStream.js +10 -12
- package/dist/esm/AVStream.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 +5 -5
- package/dist/esm/codecs/h264.js +13 -18
- package/dist/esm/codecs/h264.js.map +1 -1
- package/dist/esm/codecs/hevc.d.ts +5 -5
- package/dist/esm/codecs/hevc.js +16 -15
- 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 +5 -5
- package/dist/esm/codecs/vvc.js +16 -17
- package/dist/esm/codecs/vvc.js.map +1 -1
- package/dist/esm/constant.d.ts +5 -7
- package/dist/esm/constant.js +5 -9
- package/dist/esm/constant.js.map +1 -1
- package/dist/esm/enum.d.ts +9 -1
- package/dist/esm/enum.js +3 -1
- 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 +5 -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 +5 -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 +6 -6
- package/dist/esm/function/encodedAudioChunk2AVPacket.js.map +1 -1
- package/dist/esm/function/encodedVideoChunk2AVPacket.d.ts +1 -1
- package/dist/esm/function/encodedVideoChunk2AVPacket.js +7 -7
- 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 +2 -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 -4
- 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 -4
- 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 -4
- 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 +1 -1
- package/dist/esm/pixelFormatDescriptor.js +2 -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 +5 -5
- package/dist/esm/stringEnum.js +4 -1
- 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 +9 -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 +18 -22
- 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/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 -2
- 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 -2
- 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 -2
- 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 -577
- package/dist/cjs/audiosamplefmt.d.ts +0 -248
- package/dist/cjs/avformat.d.ts +0 -66
- package/dist/cjs/codec.d.ts +0 -927
- 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 -36
- package/dist/cjs/enum.d.ts +0 -3285
- 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/avpacket2EncodedVideoChunk.d.ts +0 -2
- 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/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 -11
- package/dist/cjs/implement/AVFramePoolImpl.js +0 -59
- package/dist/cjs/implement/AVPCMBufferPoolImpl.d.ts +0 -11
- package/dist/cjs/implement/AVPCMBufferPoolImpl.js +0 -57
- package/dist/cjs/implement/AVPacketPoolImpl.d.ts +0 -11
- package/dist/cjs/implement/AVPacketPoolImpl.js +0 -60
- package/dist/cjs/pixelFormatDescriptor.d.ts +0 -100
- package/dist/cjs/pixfmt.d.ts +0 -1293
- package/dist/cjs/sampleFormatDescriptor.d.ts +0 -6
- package/dist/cjs/stringEnum.d.ts +0 -161
- 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 -181
- 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 -18
- package/dist/cjs/util/avbuffer.js +0 -153
- package/dist/cjs/util/avdict.d.ts +0 -9
- package/dist/cjs/util/avdict.js +0 -111
- package/dist/cjs/util/avframe.d.ts +0 -21
- 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
package/src/constant.ts
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* libmedia constant
|
|
3
|
+
*
|
|
4
|
+
* 版权所有 (C) 2024 赵高兴
|
|
5
|
+
* Copyright (C) 2024 Gaoxing Zhao
|
|
6
|
+
*
|
|
7
|
+
* 此文件是 libmedia 的一部分
|
|
8
|
+
* This file is part of libmedia.
|
|
9
|
+
*
|
|
10
|
+
* libmedia 是自由软件;您可以根据 GNU Lesser General Public License(GNU LGPL)3.1
|
|
11
|
+
* 或任何其更新的版本条款重新分发或修改它
|
|
12
|
+
* libmedia is free software; you can redistribute it and/or
|
|
13
|
+
* modify it under the terms of the GNU Lesser General Public
|
|
14
|
+
* License as published by the Free Software Foundation; either
|
|
15
|
+
* version 3.1 of the License, or (at your option) any later version.
|
|
16
|
+
*
|
|
17
|
+
* libmedia 希望能够为您提供帮助,但不提供任何明示或暗示的担保,包括但不限于适销性或特定用途的保证
|
|
18
|
+
* 您应自行承担使用 libmedia 的风险,并且需要遵守 GNU Lesser General Public License 中的条款和条件。
|
|
19
|
+
* libmedia is distributed in the hope that it will be useful,
|
|
20
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
21
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
22
|
+
* Lesser General Public License for more details.
|
|
23
|
+
*
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
import { AVRational } from './struct/rational'
|
|
27
|
+
|
|
28
|
+
export const NOPTS_VALUE_BIGINT: int64 = -1n
|
|
29
|
+
|
|
30
|
+
export const NOPTS_VALUE: int32 = -1
|
|
31
|
+
|
|
32
|
+
export const AV_TIME_BASE: int32 = 1000000
|
|
33
|
+
|
|
34
|
+
export const AV_MILLI_TIME_BASE: int32 = 1000
|
|
35
|
+
|
|
36
|
+
export const AV_NANO_TIME_BASE: int32 = 1000000000
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* 微秒时间基
|
|
40
|
+
*/
|
|
41
|
+
export const AV_TIME_BASE_Q = new AVRational({ den: AV_TIME_BASE, num: 1 })
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* 毫秒时间基
|
|
45
|
+
*/
|
|
46
|
+
export const AV_MILLI_TIME_BASE_Q = new AVRational({ den: AV_MILLI_TIME_BASE, num: 1 })
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* 纳秒时间基
|
|
50
|
+
*/
|
|
51
|
+
export const AV_NANO_TIME_BASE_Q = new AVRational({ den: AV_NANO_TIME_BASE, num: 1 })
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* 秒时间基
|
|
55
|
+
*/
|
|
56
|
+
export const AV_TIME_BASE1_Q = new AVRational({ den: 1, num: 1 })
|
|
57
|
+
|
|
58
|
+
export const INT8_MAX: int8 = 127
|
|
59
|
+
export const INT16_MAX: int16 = 32767
|
|
60
|
+
export const INT32_MAX: int32 = 2147483647
|
|
61
|
+
export const INT64_MAX: int64 = 9223372036854775807n
|
|
62
|
+
|
|
63
|
+
export const INT8_MIN: int8 = -128
|
|
64
|
+
export const INT16_MIN: int16 = -32768
|
|
65
|
+
export const INT32_MIN: int32 = -INT32_MAX - 1
|
|
66
|
+
|
|
67
|
+
export const UINT8_MAX: uint8 = 255
|
|
68
|
+
export const UINT16_MAX: uint16 = 65535
|
|
69
|
+
export const UINT32_MAX: uint32 = 4294967295
|
|
70
|
+
export const UINT64_MAX: uint64 = 18446744073709551615n
|
|
71
|
+
|
|
72
|
+
export const AV_NUM_DATA_POINTERS = 8
|
package/src/enum.ts
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
export { AVCodecID, AVMediaType, AVPacketSideDataType } from './codec'
|
|
2
|
+
|
|
3
|
+
export { AVDisposition, AVStreamMetadataKey } from './AVStream'
|
|
4
|
+
|
|
5
|
+
export { AVFormat, AVSeekFlags, IOFlags, IOType } from './avformat'
|
|
6
|
+
|
|
7
|
+
export { AVSampleFormat, AVAudioServiceType, AVChannel, AVChannelOrder, AVChannelLayout } from './audiosamplefmt'
|
|
8
|
+
|
|
9
|
+
export { AVPixelFormatFlags } from './pixelFormatDescriptor'
|
|
10
|
+
|
|
11
|
+
export { AVCodecParameterFlags } from './struct/avcodecparameters'
|
|
12
|
+
|
|
13
|
+
export { AVChromaLocation, AVColorPrimaries, AVColorRange, AVColorSpace, AVColorTransferCharacteristic, AVFieldOrder, AVPixelFormat } from './pixfmt'
|
|
14
|
+
|
|
15
|
+
export { AV1Profile } from './codecs/av1'
|
|
16
|
+
|
|
17
|
+
export { VP9Profile } from './codecs/vp9'
|
|
18
|
+
|
|
19
|
+
export { H264NaluType, H264Profile, H264SliceType } from './codecs/h264'
|
|
20
|
+
|
|
21
|
+
export { HEVCNaluType, HEVCProfile, HEVCSliceType } from './codecs/hevc'
|
|
22
|
+
|
|
23
|
+
export { VVCNaluType, VVCSliceType } from './codecs/vvc'
|
|
24
|
+
|
|
25
|
+
export { MP3Profile } from './codecs/mp3'
|
|
26
|
+
|
|
27
|
+
export { AVBufferFlags } from './struct/avbuffer'
|
|
28
|
+
|
|
29
|
+
export { AVDictFlags } from './struct/avdict'
|
|
30
|
+
|
|
31
|
+
export { AVFrameFlags, FFDecodeError, AVPictureType, AVFrameSideDataType } from './struct/avframe'
|
|
32
|
+
|
|
33
|
+
export { AVPacketType, AVPacketFlags } from './struct/avpacket'
|
|
34
|
+
|
|
35
|
+
export { AVSubtitleType } from './struct/avsubtitle'
|
|
36
|
+
|
|
37
|
+
export { IOError } from '../../common/src/io/error'
|
|
38
|
+
|
|
39
|
+
export { RenderMode } from '../../avrender/src/image/ImageRender'
|
|
40
|
+
|
|
41
|
+
export { AVDiscard } from '../../avcodec/src/wasmcodec/VideoDecoder'
|
|
42
|
+
|
|
43
|
+
export { AVPlayerStatus, AVPlayerProgress } from '../../avplayer/src/AVPlayer'
|
|
44
|
+
|
|
45
|
+
export { IOLoaderStatus } from '../../avnetwork/src/ioLoader/IOLoader'
|
|
46
|
+
|
|
47
|
+
export { Mp4FragmentMode, Mp4Mode } from '../../avformat/src/formats/OIsobmffFormat'
|
package/src/error.ts
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
|
|
2
|
+
/*
|
|
3
|
+
* libmedia error defined
|
|
4
|
+
*
|
|
5
|
+
* 版权所有 (C) 2024 赵高兴
|
|
6
|
+
* Copyright (C) 2024 Gaoxing Zhao
|
|
7
|
+
*
|
|
8
|
+
* 此文件是 libmedia 的一部分
|
|
9
|
+
* This file is part of libmedia.
|
|
10
|
+
*
|
|
11
|
+
* libmedia 是自由软件;您可以根据 GNU Lesser General Public License(GNU LGPL)3.1
|
|
12
|
+
* 或任何其更新的版本条款重新分发或修改它
|
|
13
|
+
* libmedia is free software; you can redistribute it and/or
|
|
14
|
+
* modify it under the terms of the GNU Lesser General Public
|
|
15
|
+
* License as published by the Free Software Foundation; either
|
|
16
|
+
* version 3.1 of the License, or (at your option) any later version.
|
|
17
|
+
*
|
|
18
|
+
* libmedia 希望能够为您提供帮助,但不提供任何明示或暗示的担保,包括但不限于适销性或特定用途的保证
|
|
19
|
+
* 您应自行承担使用 libmedia 的风险,并且需要遵守 GNU Lesser General Public License 中的条款和条件。
|
|
20
|
+
* libmedia is distributed in the hope that it will be useful,
|
|
21
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
22
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
23
|
+
* Lesser General Public License for more details.
|
|
24
|
+
*
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
export const FORMAT_NOT_SUPPORT = -1
|
|
28
|
+
|
|
29
|
+
export const DATA_INVALID = -2
|
|
30
|
+
|
|
31
|
+
export const INVALID_ARGUMENT = -3
|
|
32
|
+
|
|
33
|
+
export const NO_MEMORY = -4
|
|
34
|
+
|
|
35
|
+
export const INVALID_OPERATE = -5
|
|
36
|
+
|
|
37
|
+
export const EAGAIN = -6
|
|
38
|
+
|
|
39
|
+
export const EOF = -7
|
|
40
|
+
|
|
41
|
+
export const CODEC_NOT_SUPPORT = -8
|
|
42
|
+
|
|
43
|
+
export const OPERATE_NOT_SUPPORT = -9
|
|
44
|
+
|
|
45
|
+
export const INVALID_PARAMETERS = -10
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* libmedia analyzeAVFormat
|
|
3
|
+
*
|
|
4
|
+
* 版权所有 (C) 2024 赵高兴
|
|
5
|
+
* Copyright (C) 2024 Gaoxing Zhao
|
|
6
|
+
*
|
|
7
|
+
* 此文件是 libmedia 的一部分
|
|
8
|
+
* This file is part of libmedia.
|
|
9
|
+
*
|
|
10
|
+
* libmedia 是自由软件;您可以根据 GNU Lesser General Public License(GNU LGPL)3.1
|
|
11
|
+
* 或任何其更新的版本条款重新分发或修改它
|
|
12
|
+
* libmedia is free software; you can redistribute it and/or
|
|
13
|
+
* modify it under the terms of the GNU Lesser General Public
|
|
14
|
+
* License as published by the Free Software Foundation; either
|
|
15
|
+
* version 3.1 of the License, or (at your option) any later version.
|
|
16
|
+
*
|
|
17
|
+
* libmedia 希望能够为您提供帮助,但不提供任何明示或暗示的担保,包括但不限于适销性或特定用途的保证
|
|
18
|
+
* 您应自行承担使用 libmedia 的风险,并且需要遵守 GNU Lesser General Public License 中的条款和条件。
|
|
19
|
+
* libmedia is distributed in the hope that it will be useful,
|
|
20
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
21
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
22
|
+
* Lesser General Public License for more details.
|
|
23
|
+
*
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
import { AVFormat } from '../avformat'
|
|
27
|
+
|
|
28
|
+
import {
|
|
29
|
+
type IOReader
|
|
30
|
+
} from '@libmedia/common/io'
|
|
31
|
+
|
|
32
|
+
export default async function analyzeAVFormat(ioReader: IOReader, defaultFormat: AVFormat = AVFormat.UNKNOWN): Promise<AVFormat> {
|
|
33
|
+
let magic = await ioReader.peekString(8)
|
|
34
|
+
if (/^FLV/.test(magic)) {
|
|
35
|
+
return AVFormat.FLV
|
|
36
|
+
}
|
|
37
|
+
else if (/^DKIF/.test(magic)) {
|
|
38
|
+
return AVFormat.IVF
|
|
39
|
+
}
|
|
40
|
+
else if (/^ftyp/.test(magic.slice(4, 8))) {
|
|
41
|
+
return AVFormat.ISOBMFF
|
|
42
|
+
}
|
|
43
|
+
else if (/^OggS/.test(magic)) {
|
|
44
|
+
return AVFormat.OGG
|
|
45
|
+
}
|
|
46
|
+
else if (/^ID3/.test(magic)) {
|
|
47
|
+
return AVFormat.MP3
|
|
48
|
+
}
|
|
49
|
+
else if (/^fLaC/.test(magic)) {
|
|
50
|
+
return AVFormat.FLAC
|
|
51
|
+
}
|
|
52
|
+
else if (/^RIFF/.test(magic)) {
|
|
53
|
+
const dataType = (await ioReader.peekString(12)).slice(8)
|
|
54
|
+
if (/^WAVE/.test(dataType)) {
|
|
55
|
+
return AVFormat.WAV
|
|
56
|
+
}
|
|
57
|
+
else if (/^AVI/.test(dataType)) {
|
|
58
|
+
return AVFormat.AVI
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
else if (/^ADIF/.test(magic)) {
|
|
62
|
+
return AVFormat.AAC
|
|
63
|
+
}
|
|
64
|
+
else if ((await ioReader.peekUint32()) === 0x1A45DFA3) {
|
|
65
|
+
return AVFormat.MATROSKA
|
|
66
|
+
}
|
|
67
|
+
else if (/^WEBVTT/.test(magic)) {
|
|
68
|
+
return AVFormat.WEBVTT
|
|
69
|
+
}
|
|
70
|
+
// 私有的 magic
|
|
71
|
+
else if (/^LIMA/.test(magic)) {
|
|
72
|
+
await ioReader.skip(4)
|
|
73
|
+
return await ioReader.readUint16() as AVFormat
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
const buf = await ioReader.peekBuffer(2)
|
|
77
|
+
switch (buf[0]) {
|
|
78
|
+
case 0x56:
|
|
79
|
+
if ((buf[1] & 0xe0) === 0xe0) {
|
|
80
|
+
return AVFormat.AAC
|
|
81
|
+
}
|
|
82
|
+
break
|
|
83
|
+
case 0xff:
|
|
84
|
+
if ((buf[1] & 0xf6) === 0xf0) {
|
|
85
|
+
return AVFormat.AAC
|
|
86
|
+
}
|
|
87
|
+
else if ([0xf2, 0xf4, 0xf6, 0xfa, 0xfc].includes(buf[1] & 0xfe)) {
|
|
88
|
+
return AVFormat.MP3
|
|
89
|
+
}
|
|
90
|
+
break
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return defaultFormat
|
|
94
|
+
}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/* libmedia check is ioloader protocol
|
|
2
|
+
*
|
|
3
|
+
* 版权所有 (C) 2024 赵高兴
|
|
4
|
+
* Copyright (C) 2024 Gaoxing Zhao
|
|
5
|
+
*
|
|
6
|
+
* 此文件是 libmedia 的一部分
|
|
7
|
+
* This file is part of libmedia.
|
|
8
|
+
*
|
|
9
|
+
* libmedia 是自由软件;您可以根据 GNU Lesser General Public License(GNU LGPL)3.1
|
|
10
|
+
* 或任何其更新的版本条款重新分发或修改它
|
|
11
|
+
* libmedia is free software; you can redistribute it and/or
|
|
12
|
+
* modify it under the terms of the GNU Lesser General Public
|
|
13
|
+
* License as published by the Free Software Foundation; either
|
|
14
|
+
* version 3.1 of the License, or (at your option) any later version.
|
|
15
|
+
*
|
|
16
|
+
* libmedia 希望能够为您提供帮助,但不提供任何明示或暗示的担保,包括但不限于适销性或特定用途的保证
|
|
17
|
+
* 您应自行承担使用 libmedia 的风险,并且需要遵守 GNU Lesser General Public License 中的条款和条件。
|
|
18
|
+
* libmedia is distributed in the hope that it will be useful,
|
|
19
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
20
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
21
|
+
* Lesser General Public License for more details.
|
|
22
|
+
*
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
import { IOType } from '../avformat'
|
|
26
|
+
import { Ext2IOLoader } from '../stringEnum'
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
import {
|
|
30
|
+
type Data,
|
|
31
|
+
type HttpOptions,
|
|
32
|
+
array,
|
|
33
|
+
object,
|
|
34
|
+
text,
|
|
35
|
+
url as urlUtils,
|
|
36
|
+
concatTypeArray
|
|
37
|
+
} from '@libmedia/common'
|
|
38
|
+
|
|
39
|
+
import {
|
|
40
|
+
BitReader,
|
|
41
|
+
BufferReader,
|
|
42
|
+
BufferWriter,
|
|
43
|
+
type Uint8ArrayInterface
|
|
44
|
+
} from '@libmedia/common/io'
|
|
45
|
+
|
|
46
|
+
const RestExt = ['php', 'asp', 'aspx', 'jsp', 'do', 'pl']
|
|
47
|
+
|
|
48
|
+
async function analyzeUrlFileExt(url: string, httpOptions: HttpOptions = {}) {
|
|
49
|
+
const params: RequestInit = {
|
|
50
|
+
method: 'GET',
|
|
51
|
+
headers: {},
|
|
52
|
+
mode: 'cors',
|
|
53
|
+
cache: 'default',
|
|
54
|
+
referrerPolicy: 'no-referrer-when-downgrade'
|
|
55
|
+
}
|
|
56
|
+
if (httpOptions.headers) {
|
|
57
|
+
object.each(httpOptions.headers, (value, key) => {
|
|
58
|
+
params.headers[key] = value
|
|
59
|
+
})
|
|
60
|
+
}
|
|
61
|
+
if (httpOptions.credentials) {
|
|
62
|
+
params.credentials = httpOptions.credentials
|
|
63
|
+
}
|
|
64
|
+
if (httpOptions.referrerPolicy) {
|
|
65
|
+
params.referrerPolicy = httpOptions.referrerPolicy
|
|
66
|
+
}
|
|
67
|
+
let abortController: AbortController
|
|
68
|
+
if (typeof AbortController === 'function') {
|
|
69
|
+
abortController = new AbortController()
|
|
70
|
+
params.signal = abortController.signal
|
|
71
|
+
}
|
|
72
|
+
const res = await fetch(url, params)
|
|
73
|
+
if (res.ok && (res.status >= 200 && res.status <= 299)) {
|
|
74
|
+
const reader = res.body.getReader()
|
|
75
|
+
const buffers: Uint8Array[] = []
|
|
76
|
+
let len = 0
|
|
77
|
+
while (true) {
|
|
78
|
+
let result = await reader.read()
|
|
79
|
+
if (result.done) {
|
|
80
|
+
break
|
|
81
|
+
}
|
|
82
|
+
len += result.value.length
|
|
83
|
+
buffers.push(result.value)
|
|
84
|
+
if (len >= 100) {
|
|
85
|
+
break
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
if (abortController) {
|
|
89
|
+
abortController.abort()
|
|
90
|
+
}
|
|
91
|
+
if (buffers.length) {
|
|
92
|
+
const buffer = buffers.length > 1 ? concatTypeArray(Uint8Array, buffers) : buffers[0]
|
|
93
|
+
if (buffer.length) {
|
|
94
|
+
const context = text.decode(buffer.subarray(0, 100))
|
|
95
|
+
if (/<\?xml/.test(context)) {
|
|
96
|
+
if (context.indexOf('<MPD') > -1) {
|
|
97
|
+
return 'mpd'
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
else if (/#EXTM3U/.test(context)) {
|
|
101
|
+
return 'm3u8'
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return ''
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
export default async function analyzeUrlIOLoader(source: string, defaultExt: string = '', httpOptions: HttpOptions = {}) {
|
|
110
|
+
let type: IOType
|
|
111
|
+
let ext: string = ''
|
|
112
|
+
let info: Data = {
|
|
113
|
+
url: source
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
if (defined(ENABLE_PROTOCOL_RTSP) && /^rtsp/.test(source)
|
|
117
|
+
|| defined(ENABLE_PROTOCOL_RTMP) && /^rtmp/.test(source)
|
|
118
|
+
) {
|
|
119
|
+
if (defined(ENABLE_PROTOCOL_RTSP) && /^rtsp/.test(source)) {
|
|
120
|
+
ext = 'rtsp'
|
|
121
|
+
}
|
|
122
|
+
else if (defined(ENABLE_PROTOCOL_RTMP) && /^rtmp/.test(source)) {
|
|
123
|
+
ext = 'rtmp'
|
|
124
|
+
}
|
|
125
|
+
type = IOType.WEBSOCKET
|
|
126
|
+
const protocol = urlUtils.parse(source).protocol
|
|
127
|
+
const subProtocol = protocol.split('+')[1] || 'wss'
|
|
128
|
+
if (subProtocol === 'wss' || subProtocol === 'ws') {
|
|
129
|
+
type = IOType.WEBSOCKET
|
|
130
|
+
}
|
|
131
|
+
else if (subProtocol === 'webtransport') {
|
|
132
|
+
type = IOType.WEBTRANSPORT
|
|
133
|
+
}
|
|
134
|
+
info.url = info.url.replace(/^\S+:\/\//, subProtocol + '://')
|
|
135
|
+
if (ext === 'rtmp') {
|
|
136
|
+
info.subProtocol = type
|
|
137
|
+
type = IOType.RTMP
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
|
|
142
|
+
const protocol = urlUtils.parse(source).protocol
|
|
143
|
+
|
|
144
|
+
ext = defaultExt || urlUtils.parse(source).file.split('.').pop()
|
|
145
|
+
// 没有文件后缀,我们需要分析是不是 m3u8 和 mpd 文件
|
|
146
|
+
// 这两种格式需要提前知道来创建指定的 ioloader
|
|
147
|
+
if ((!ext || array.has(RestExt, ext)) && /^https?/.test(protocol)) {
|
|
148
|
+
ext = await analyzeUrlFileExt(source, httpOptions)
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
let defaultType: IOType = IOType.Fetch
|
|
152
|
+
if (protocol === 'wss' || protocol === 'ws') {
|
|
153
|
+
defaultType = IOType.WEBSOCKET
|
|
154
|
+
}
|
|
155
|
+
else if (protocol === 'webtransport') {
|
|
156
|
+
defaultType = IOType.WEBTRANSPORT
|
|
157
|
+
}
|
|
158
|
+
type = Ext2IOLoader[ext] ?? defaultType
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
return {
|
|
162
|
+
type,
|
|
163
|
+
ext,
|
|
164
|
+
info
|
|
165
|
+
}
|
|
166
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/* libmedia AudioData to AVFrame utils
|
|
2
|
+
*
|
|
3
|
+
* 版权所有 (C) 2024 赵高兴
|
|
4
|
+
* Copyright (C) 2024 Gaoxing Zhao
|
|
5
|
+
*
|
|
6
|
+
* 此文件是 libmedia 的一部分
|
|
7
|
+
* This file is part of libmedia.
|
|
8
|
+
*
|
|
9
|
+
* libmedia 是自由软件;您可以根据 GNU Lesser General Public License(GNU LGPL)3.1
|
|
10
|
+
* 或任何其更新的版本条款重新分发或修改它
|
|
11
|
+
* libmedia is free software; you can redistribute it and/or
|
|
12
|
+
* modify it under the terms of the GNU Lesser General Public
|
|
13
|
+
* License as published by the Free Software Foundation; either
|
|
14
|
+
* version 3.1 of the License, or (at your option) any later version.
|
|
15
|
+
*
|
|
16
|
+
* libmedia 希望能够为您提供帮助,但不提供任何明示或暗示的担保,包括但不限于适销性或特定用途的保证
|
|
17
|
+
* 您应自行承担使用 libmedia 的风险,并且需要遵守 GNU Lesser General Public License 中的条款和条件。
|
|
18
|
+
* libmedia is distributed in the hope that it will be useful,
|
|
19
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
20
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
21
|
+
* Lesser General Public License for more details.
|
|
22
|
+
*
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
import { createAVFrame, getAudioBuffer } from '../util/avframe'
|
|
26
|
+
import { AVSampleFormat } from '../audiosamplefmt'
|
|
27
|
+
import type AVFrame from '../struct/avframe'
|
|
28
|
+
import { sampleFormatIsPlanar } from '../util/sample'
|
|
29
|
+
import { AV_TIME_BASE, NOPTS_VALUE_BIGINT } from '../constant'
|
|
30
|
+
|
|
31
|
+
import { mapUint8Array } from '@libmedia/cheap'
|
|
32
|
+
|
|
33
|
+
function mapFormat(format: AudioSampleFormat) {
|
|
34
|
+
switch (format) {
|
|
35
|
+
case 'u8':
|
|
36
|
+
return AVSampleFormat.AV_SAMPLE_FMT_U8
|
|
37
|
+
case 's16':
|
|
38
|
+
return AVSampleFormat.AV_SAMPLE_FMT_S16
|
|
39
|
+
case 's32':
|
|
40
|
+
return AVSampleFormat.AV_SAMPLE_FMT_S32
|
|
41
|
+
case 'f32':
|
|
42
|
+
return AVSampleFormat.AV_SAMPLE_FMT_FLT
|
|
43
|
+
case 'u8-planar':
|
|
44
|
+
return AVSampleFormat.AV_SAMPLE_FMT_U8P
|
|
45
|
+
case 's16-planar':
|
|
46
|
+
return AVSampleFormat.AV_SAMPLE_FMT_S16P
|
|
47
|
+
case 's32-planar':
|
|
48
|
+
return AVSampleFormat.AV_SAMPLE_FMT_S32P
|
|
49
|
+
case 'f32-planar':
|
|
50
|
+
return AVSampleFormat.AV_SAMPLE_FMT_FLTP
|
|
51
|
+
default:
|
|
52
|
+
throw new Error('not support')
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export function audioData2AVFrame(audioData: AudioData, avframe: pointer<AVFrame> = nullptr) {
|
|
57
|
+
if (avframe === nullptr) {
|
|
58
|
+
avframe = createAVFrame()
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
avframe.sampleRate = audioData.sampleRate
|
|
62
|
+
avframe.nbSamples = audioData.numberOfFrames
|
|
63
|
+
avframe.chLayout.nbChannels = audioData.numberOfChannels
|
|
64
|
+
avframe.format = mapFormat(audioData.format)
|
|
65
|
+
avframe.pts = audioData.timestamp < 0 ? NOPTS_VALUE_BIGINT : static_cast<int64>(audioData.timestamp)
|
|
66
|
+
avframe.duration = static_cast<int64>(audioData.duration)
|
|
67
|
+
avframe.timeBase.den = AV_TIME_BASE
|
|
68
|
+
avframe.timeBase.num = 1
|
|
69
|
+
|
|
70
|
+
getAudioBuffer(avframe)
|
|
71
|
+
|
|
72
|
+
const planar = sampleFormatIsPlanar(avframe.format)
|
|
73
|
+
const planes = planar ? avframe.chLayout.nbChannels : 1
|
|
74
|
+
|
|
75
|
+
for (let i = 0; i < planes; i++) {
|
|
76
|
+
audioData.copyTo(mapUint8Array(avframe.extendedData[i], reinterpret_cast<size>(avframe.linesize[0])), {
|
|
77
|
+
planeIndex: i
|
|
78
|
+
})
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
return avframe
|
|
82
|
+
}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/* libmedia AVPCMBuffer to AVFrame utils
|
|
2
|
+
*
|
|
3
|
+
* 版权所有 (C) 2024 赵高兴
|
|
4
|
+
* Copyright (C) 2024 Gaoxing Zhao
|
|
5
|
+
*
|
|
6
|
+
* 此文件是 libmedia 的一部分
|
|
7
|
+
* This file is part of libmedia.
|
|
8
|
+
*
|
|
9
|
+
* libmedia 是自由软件;您可以根据 GNU Lesser General Public License(GNU LGPL)3.1
|
|
10
|
+
* 或任何其更新的版本条款重新分发或修改它
|
|
11
|
+
* libmedia is free software; you can redistribute it and/or
|
|
12
|
+
* modify it under the terms of the GNU Lesser General Public
|
|
13
|
+
* License as published by the Free Software Foundation; either
|
|
14
|
+
* version 3.1 of the License, or (at your option) any later version.
|
|
15
|
+
*
|
|
16
|
+
* libmedia 希望能够为您提供帮助,但不提供任何明示或暗示的担保,包括但不限于适销性或特定用途的保证
|
|
17
|
+
* 您应自行承担使用 libmedia 的风险,并且需要遵守 GNU Lesser General Public License 中的条款和条件。
|
|
18
|
+
* libmedia is distributed in the hope that it will be useful,
|
|
19
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
20
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
21
|
+
* Lesser General Public License for more details.
|
|
22
|
+
*
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
import { createAVFrame, unrefAVFrame } from '../util/avframe'
|
|
26
|
+
import type AVFrame from '../struct/avframe'
|
|
27
|
+
import { sampleFormatIsPlanar } from '../util/sample'
|
|
28
|
+
import type AVPCMBuffer from '../struct/avpcmbuffer'
|
|
29
|
+
import { avFreep, avMalloc } from '../util/mem'
|
|
30
|
+
import * as errorType from '../error'
|
|
31
|
+
import { avbufferCreate } from '../util/avbuffer'
|
|
32
|
+
import { memcpy } from '@libmedia/cheap'
|
|
33
|
+
import { AV_NUM_DATA_POINTERS } from '../constant'
|
|
34
|
+
|
|
35
|
+
export function avPCMBuffer2AVFrame(pcmBuffer: pointer<AVPCMBuffer>, copy: boolean = false, avframe: pointer<AVFrame> = nullptr) {
|
|
36
|
+
if (avframe === nullptr) {
|
|
37
|
+
avframe = createAVFrame()
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
const pts = avframe.pts
|
|
41
|
+
const duration = avframe.duration
|
|
42
|
+
const den = avframe.timeBase.den
|
|
43
|
+
const num = avframe.timeBase.num
|
|
44
|
+
unrefAVFrame(avframe)
|
|
45
|
+
avframe.pts = pts
|
|
46
|
+
avframe.duration = duration
|
|
47
|
+
avframe.timeBase.den = den
|
|
48
|
+
avframe.timeBase.num = num
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
avframe.nbSamples = pcmBuffer.nbSamples
|
|
52
|
+
avframe.sampleRate = pcmBuffer.sampleRate
|
|
53
|
+
avframe.chLayout.nbChannels = pcmBuffer.channels
|
|
54
|
+
avframe.linesize[0] = pcmBuffer.linesize
|
|
55
|
+
avframe.format = pcmBuffer.format
|
|
56
|
+
|
|
57
|
+
const planar = sampleFormatIsPlanar(avframe.format)
|
|
58
|
+
const planes = planar ? pcmBuffer.channels : 1
|
|
59
|
+
|
|
60
|
+
if (planes > AV_NUM_DATA_POINTERS) {
|
|
61
|
+
avframe.extendedData = reinterpret_cast<pointer<pointer<uint8>>>(avMalloc(planes * reinterpret_cast<int32>(sizeof(accessof(avframe.extendedData)))))
|
|
62
|
+
if (!avframe.extendedData) {
|
|
63
|
+
avFreep(reinterpret_cast<pointer<pointer<uint8>>>(addressof(avframe.extendedData)))
|
|
64
|
+
return reinterpret_cast<pointer<AVFrame>>(errorType.NO_MEMORY)
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
avframe.extendedData = addressof(avframe.data)
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
for (let i = 0; i < Math.min(planes, AV_NUM_DATA_POINTERS); i++) {
|
|
72
|
+
if (i === 0) {
|
|
73
|
+
if (copy) {
|
|
74
|
+
avframe.buf[0] = avbufferCreate(
|
|
75
|
+
avMalloc(pcmBuffer.linesize * (planar ? pcmBuffer.channels : 1)),
|
|
76
|
+
pcmBuffer.linesize * (planar ? pcmBuffer.channels : 1)
|
|
77
|
+
)
|
|
78
|
+
memcpy(avframe.buf[0].data, pcmBuffer.data[0], pcmBuffer.linesize * (planar ? pcmBuffer.channels : 1))
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
avframe.buf[0] = avbufferCreate(pcmBuffer.data[0], pcmBuffer.linesize * (planar ? pcmBuffer.channels : 1))
|
|
82
|
+
}
|
|
83
|
+
if (!avframe.buf[0]) {
|
|
84
|
+
unrefAVFrame(avframe)
|
|
85
|
+
return reinterpret_cast<pointer<AVFrame>>(errorType.NO_MEMORY)
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
if (copy) {
|
|
89
|
+
avframe.extendedData[i] = avframe.data[i] = reinterpret_cast<pointer<uint8>>(avframe.buf[0].data + i * pcmBuffer.linesize)
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
avframe.extendedData[i] = avframe.data[i] = pcmBuffer.data[i]
|
|
93
|
+
pcmBuffer.data[i] = nullptr
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
for (let i = 0; i < planes - AV_NUM_DATA_POINTERS; i++) {
|
|
98
|
+
if (copy) {
|
|
99
|
+
avframe.extendedData[i + AV_NUM_DATA_POINTERS] = reinterpret_cast<pointer<uint8>>(avframe.buf[0].data + i * pcmBuffer.linesize)
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
avframe.extendedData[i + AV_NUM_DATA_POINTERS] = pcmBuffer.data[i]
|
|
103
|
+
pcmBuffer.data[i] = nullptr
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
if (!copy) {
|
|
107
|
+
pcmBuffer.maxnbSamples = 0
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
return avframe
|
|
111
|
+
}
|