From fdad2677a720623d72037a5cffecff2e33670dcf Mon Sep 17 00:00:00 2001 From: hyzboy Date: Sat, 29 Mar 2025 20:08:29 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E5=90=84=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E4=BD=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FrameRecviver.h | 4 ++-- VideoDecoder.cpp | 2 +- VideoEncoder.cpp | 8 +++++++- VideoEncoder.h | 15 +++------------ 4 files changed, 13 insertions(+), 16 deletions(-) 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;