VideoEvolution/VideoEncoder.h

50 lines
882 B
C
Raw Normal View History

#pragma once
#include"DataType.h"
extern "C"
{
#include <libavformat/avformat.h>
#include<libavcodec/avcodec.h>
}
class EncodeOutput
{
public:
virtual ~EncodeOutput()=default;
virtual bool Write(const void *,const uint)=0;
};//class EncodeOutput
class VideoEncoder
{
protected:
AVRational frame_rate;
2025-03-29 20:08:29 +08:00
Size2u frame_size;
char filename[_MAX_PATH];
public:
2025-03-29 20:08:29 +08:00
VideoEncoder(const char *fn)
{
strcpy_s(filename,_MAX_PATH,fn);
}
virtual ~VideoEncoder()=default;
2025-03-29 20:01:02 +08:00
virtual void SetFrameRateSize(const AVRational &fr,const Size2u &size)
{
frame_rate=fr;
2025-03-29 20:08:29 +08:00
frame_size=size;
}
2025-03-29 20:01:02 +08:00
virtual bool Init(int pass)=0;
virtual bool WriteFrame(const uint8 *rgba_data)=0;
virtual bool Finish()=0;
};//class VideoEncoder
VideoEncoder *CreateVideoEncoder(const char *filename,const uint bit_rate,const bool);