private VideoDecoder(VideoCodecId videoCodecId, IntPtr decoderHandle) { this.videoCodecId = videoCodecId; this.decoderHandle = decoderHandle; currentFrameParms = new DecodedVideoFrameParameters(0, 0, FFmpegPixelFormat.None); scalersMap = new Dictionary <TransformParameters, DecodedVideoScaler>(); }
public static VideoDecoder CreateDecoder(VideoCodecId videoCodecId) { int resultCode = FFmpegVideoPInvoke.CreateVideoDecoder(videoCodecId, out IntPtr decoderPtr); if (resultCode != 0) { throw new DecoderException($"An error occurred while creating video decoder for {videoCodecId} codec, code: {resultCode}"); } return(new VideoDecoder(videoCodecId, decoderPtr)); }
private VideoDecoder GetDecoderForFrame(RawVideoFrame videoFrame) { VideoCodecId codecId = DetectCodecId(videoFrame); if (!videoDecodersMap.TryGetValue(codecId, out VideoDecoder decoder)) { decoder = VideoDecoder.CreateDecoder(codecId); videoDecodersMap.Add(codecId, decoder); } return(decoder); }
public static extern int CreateVideoDecoder(VideoCodecId videoCodecId, out IntPtr handle);