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