Пример #1
0
 private VideoDecoder(VideoCodecId videoCodecId, IntPtr decoderHandle)
 {
     this.videoCodecId  = videoCodecId;
     this.decoderHandle = decoderHandle;
     currentFrameParms  = new DecodedVideoFrameParameters(0, 0, FFmpegPixelFormat.None);
     scalersMap         = new Dictionary <TransformParameters, DecodedVideoScaler>();
 }
Пример #2
0
        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));
        }
Пример #3
0
        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);
        }
Пример #4
0
 public static extern int CreateVideoDecoder(VideoCodecId videoCodecId, out IntPtr handle);