/// <exception cref="DecoderException"></exception> public static FFmpegAudioDecoder CreateDecoder(FFmpegAudioCodecId audioCodecId, int bitsPerCodedSample) { int resultCode = FFmpegAudioPInvoke.CreateAudioDecoder(audioCodecId, bitsPerCodedSample, out IntPtr decoderPtr); if (resultCode != 0) { throw new DecoderException($"An error occurred while creating audio decoder for {audioCodecId} codec, code: {resultCode}"); } return(new FFmpegAudioDecoder(audioCodecId, bitsPerCodedSample, decoderPtr)); }
private FFmpegAudioDecoder GetDecoderForFrame(RawAudioFrame audioFrame) { FFmpegAudioCodecId codecId = DetectCodecId(audioFrame); if (!_audioDecodersMap.TryGetValue(codecId, out FFmpegAudioDecoder decoder)) { int bitsPerCodedSample = 0; if (audioFrame is RawG726Frame g726Frame) { bitsPerCodedSample = g726Frame.BitsPerCodedSample; } decoder = FFmpegAudioDecoder.CreateDecoder(codecId, bitsPerCodedSample); _audioDecodersMap.Add(codecId, decoder); } return(decoder); }
public static extern int CreateAudioDecoder(FFmpegAudioCodecId audioCodecId, int bitsPerCodedSample, out IntPtr handle);
private FFmpegAudioDecoder(FFmpegAudioCodecId audioCodecId, int bitsPerCodedSample, IntPtr decoderHandle) { _audioCodecId = audioCodecId; BitsPerCodedSample = bitsPerCodedSample; _decoderHandle = decoderHandle; }