protected Decoder(AVStream *stream) : base(stream) { codecContext->Codec = FF.avcodec_find_decoder(codecContext->CodecId); int resultCode = FF.avcodec_open2(codecContext, codecContext->Codec, null); if (resultCode != 0) { throw new FFmpegException(resultCode); } }
private void Init(VideoEncoderParameters encoderParams) { var pixelFormats = GetSupportedPixelFormats(codec); if (pixelFormats != null && !pixelFormats.Contains(InFormat.PixelFormat)) { outFormat = new VideoFormat(InFormat.Width, InFormat.Height, pixelFormats[0]); resampler = new VideoResampler(InFormat, OutFormat, encoderParams.ResampleFlags); tempFrame = new VideoFrame(); } else { outFormat = InFormat; } framePerSecond = encoderParams.FrameRate; try { codecContext->PixFmt = OutFormat.PixelFormat; codecContext->Width = OutFormat.Width; codecContext->Height = OutFormat.Height; codecContext->BitRate = encoderParams.BitRate.Value; codecContext->TimeBase = encoderParams.FrameRate.Reciprocal; codecContext->Framerate = encoderParams.FrameRate; if (encoderParams.GopSize != 0) { codecContext->GopSize = encoderParams.GopSize; } if (encoderParams.MaxBFrames != 0) { codecContext->MaxBFrames = encoderParams.MaxBFrames; } if (encoderParams.MbDecision != 0) { codecContext->MbDecision = encoderParams.MbDecision; } if (encoderParams.Qmin != 0) { codecContext->Qmin = encoderParams.Qmin; } if (encoderParams.Qmax != 0) { codecContext->Qmax = encoderParams.Qmax; } var result = FF.avcodec_open2(codecContext, codec, null); if (result < 0) { throw new CSharp.FFmpegException(result); } } catch { Dispose(); throw; } }
private void Init(AVCodecID codecID, BitRate bitRate) { outFormat = MatchSupportedFormat(codecID, InFormat); if (!InFormat.Equals(OutFormat)) { resampler = new AudioResampler(InFormat, OutFormat); tempFrame = new AudioFrame(); } codecContext->SampleFmt = outFormat.SampleFormat; codecContext->SampleRate = outFormat.SampleRate; codecContext->ChannelLayout = outFormat.ChannelLayout; codecContext->Channels = outFormat.Channels; codecContext->BitRate = bitRate.Value; var rates = codecContext->Flags; int result = FF.avcodec_open2(codecContext, codec, null); if (result < 0) { throw new FFmpegException(result); } }