diff --git a/FrameRecviver.h b/FrameRecviver.h index ea9efa5..0b765dc 100644 --- a/FrameRecviver.h +++ b/FrameRecviver.h @@ -25,7 +25,7 @@ public: } virtual ~FrameRecviver()=default; - virtual void SetFrameRate(const AVRational &fr){frame_rate=fr;} + virtual void OnFrameRate(const AVRational &fr){frame_rate=fr;} virtual bool OnFrame(const AVFrame *frame)=0; @@ -47,7 +47,7 @@ class RGBAFrameRecviver:public FrameRecviver private: FrameConvert *convert=nullptr; - + private: bool OnFrame(const AVFrame *frame); diff --git a/VideoDecoder.cpp b/VideoDecoder.cpp index 8b73652..18ea03a 100644 --- a/VideoDecoder.cpp +++ b/VideoDecoder.cpp @@ -169,7 +169,7 @@ public: frame=av_frame_alloc(); - frame_recviver->SetFrameRate(video_stream->avg_frame_rate); + frame_recviver->OnFrameRate(video_stream->avg_frame_rate); return(true); } diff --git a/VideoEncoder.cpp b/VideoEncoder.cpp index e26eb25..5e477b7 100644 --- a/VideoEncoder.cpp +++ b/VideoEncoder.cpp @@ -71,9 +71,13 @@ namespace class FFMPEGVideoEncoder:public VideoEncoder { + AVFormatContext* fmt_ctx; + AVCodecContext* codec_ctx; + const AVCodec *codec; AVFrame *frame; + uint bit_rate; AVStream *video_stream=nullptr; uint pts; @@ -89,10 +93,12 @@ class FFMPEGVideoEncoder:public VideoEncoder public: - FFMPEGVideoEncoder(const char *fn,const AVCodec *eco,const uint br):VideoEncoder(fn,br) + FFMPEGVideoEncoder(const char *fn,const AVCodec *eco,const uint br):VideoEncoder(fn) { codec=eco; + bit_rate=br; + frame=av_frame_alloc(); codec_ctx=avcodec_alloc_context3(codec); diff --git a/VideoEncoder.h b/VideoEncoder.h index 46aae6e..2ecbd9c 100644 --- a/VideoEncoder.h +++ b/VideoEncoder.h @@ -19,33 +19,24 @@ class VideoEncoder { protected: - AVFormatContext* fmt_ctx; - AVCodecContext* codec_ctx; - - Size2u frame_size; AVRational frame_rate; - uint bit_rate; + Size2u frame_size; char filename[_MAX_PATH]; public: - VideoEncoder(const char *fn,const uint br) + VideoEncoder(const char *fn) { strcpy_s(filename,_MAX_PATH,fn); - - bit_rate=br; } - AVFormatContext *GetFrmCtx(){return fmt_ctx;} - AVCodecContext *GetCodecCtx(){return codec_ctx;} - virtual ~VideoEncoder()=default; virtual void SetFrameRateSize(const AVRational &fr,const Size2u &size) { - frame_size=size; frame_rate=fr; + frame_size=size; } virtual bool Init(int pass)=0;