VideoEvolution/FrameConvert.h

44 lines
1.0 KiB
C
Raw Normal View History

#pragma once
2025-03-29 15:35:01 +08:00
#include"DataType.h"
extern "C"
{
#include<libavutil/pixfmt.h>
#include<libswscale/swscale.h>
}
typedef uint8_t *FrameData[8];
typedef int FrameLinesize[8];
class FrameConvert
{
AVPixelFormat src_fmt,dst_fmt;
2025-03-29 15:35:01 +08:00
Size2u frame_size;
SwsContext *ctx;
FrameData dst_data;
FrameLinesize dst_linesize;
private:
2025-03-29 15:35:01 +08:00
friend FrameConvert *InitFrameConvert(enum AVPixelFormat dst,enum AVPixelFormat src,const Size2u &);
2025-03-29 15:35:01 +08:00
FrameConvert(SwsContext *sc,enum AVPixelFormat dst,enum AVPixelFormat src,const Size2u &);
public:
~FrameConvert();
void Convert(const FrameData &src_data,const FrameLinesize &src_linesize);
const FrameData &GetData()const{return dst_data;}
const FrameLinesize &GetLinesize()const{return dst_linesize;}
const uint8_t *GetData(const int index)const{return dst_data[index];}
const int GetLinesize(const int index)const{return dst_linesize[index];}
};//class FrameConvert
2025-03-29 15:35:01 +08:00
FrameConvert *InitFrameConvert(enum AVPixelFormat dst,enum AVPixelFormat src,const Size2u &src_size);