FrameFormat.h 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #ifndef _FRAMEFORMAT_H_
  2. #define _FRAMEFORMAT_H_
  3. #include <QImage>
  4. struct Image_YUV420P;
  5. /**
  6. * @brief 支持的帧格式枚举
  7. *
  8. */
  9. enum class EFrameFormat
  10. {
  11. Frame_YUV420P = 0, /* YUV420P格式 */
  12. Frame_RGBA8888, /* RGBA格式 */
  13. };
  14. /**
  15. * @brief 帧数据基础类
  16. *
  17. */
  18. struct FrameBase
  19. {
  20. protected:
  21. EFrameFormat format; /* 帧格式 */
  22. public:
  23. FrameBase(EFrameFormat fmt = EFrameFormat::Frame_YUV420P) : format(fmt) { }
  24. virtual ~FrameBase() { } /* 虚析构函数,确保派生类的析构函数被调用 */
  25. EFrameFormat frameFormat() const { return format; } /* 获取帧格式 */
  26. };
  27. /**
  28. * @brief YUV420P格式的帧数据结构
  29. *
  30. */
  31. struct Frame_YUV420P : public FrameBase
  32. {
  33. Image_YUV420P* frameData = nullptr; /* YUV420P格式的图像数据 */
  34. Frame_YUV420P();
  35. ~Frame_YUV420P() override;
  36. };
  37. struct Frame_RGBA8888 : public FrameBase
  38. {
  39. QImage* frameData = nullptr; /* RGBA格式的图像数据 */
  40. Frame_RGBA8888();
  41. ~Frame_RGBA8888() override;
  42. };
  43. /* 删除一个图片 */
  44. bool deleteOneFrame(FrameBase* frame);
  45. #endif /* _FRAMEFORMAT_H_ */