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