MediaInfOsd.hpp
1 //
2 // Created by xiong on 2023/8/22.
3 //
4 
5 #ifndef EMX_MediaInfOsd_HPP
6 #define EMX_MediaInfOsd_HPP
7 
8 #include "media/common/MediaTypedef.hpp"
9 #include <vector>
10 #include <memory>
11 
12 namespace Emx {
17  class MediaInfOsd {
18  public:
19  static const int MaxTextSize = 512;
20  static const int RateBase = 10000;
21  static const int MaxOSDNum = 8;
22 
24  enum class TypeE : uint8_t {
25  Time = 0,
26  Text,
27  Image,
28  };
29 
31  enum class HAlignE : uint8_t {
32  Left,
33  Right,
34  Center,
35  };
36 
38  enum class VAlignE : uint8_t {
39  Top,
40  Bottom,
41  Center,
42  };
43 
45  struct Margin {
47  int rateX;
49  int rateY;
50  };
51 
53  struct ParamTime {
54  int size;
55  int thickness;
56  char font[64];
57  char formatString[128];
64  char weekFormat[7][16];
66  uint32_t color;
68  };
69 
71  struct ParamText {
72  int size;
73  int thickness;
74  bool wrapLine;
75  int lineSpace;
76  char font[64];
78  uint32_t color;
80  };
81 
83  struct ParamImage {
84  uint32_t alpha;
85  int width;
86  int height;
87  char path[EMX_MAX_PATH_SIZE];
88  };
89 
91  struct ParamItem {
93  bool ena;
94  uint16_t flickerInterval;
95  uint8_t isFlicker;
96  uint8_t layer;
98  union {
102  };
103  };
104 
106  struct OsdContent {
107  int index;
109  };
110 
117  virtual ErrCodeE SetOsdContent(OsdContent *pInfo) = 0;
118  struct Param {
119  std::vector<std::shared_ptr<ParamItem>> array;
120  };
121  };
123 }// namespace Emx
124 
125 #endif//EMX_MediaInfOsd_HPP
Definition: MediaInfOsd.hpp:17
TypeE
OSD类型
Definition: MediaInfOsd.hpp:24
static const int RateBase
偏移量比率基准
Definition: MediaInfOsd.hpp:20
VAlignE
竖直对齐方式
Definition: MediaInfOsd.hpp:38
static const int MaxTextSize
字符类型最大长度
Definition: MediaInfOsd.hpp:19
virtual ErrCodeE SetOsdContent(OsdContent *pInfo)=0
设置osd文字内容,一般长度变化不能超过初始值 应用场景:客流统计或区域人数统计osd实时显示
HAlignE
水平对齐方式
Definition: MediaInfOsd.hpp:31
static const int MaxOSDNum
最大通道数
Definition: MediaInfOsd.hpp:21
时间相关函数
Definition: Time.hpp:18
ErrCodeE
错误码定义
Definition: EmxTypeDef.hpp:29
Definition: EmxGpio.hpp:10
描述位置偏移以及对齐方式
Definition: MediaInfOsd.hpp:45
HAlignE horizon
水平对齐方式
Definition: MediaInfOsd.hpp:46
int rateY
竖直偏移值 1/RateBase
Definition: MediaInfOsd.hpp:49
int rateX
水平偏移值 1/RateBase
Definition: MediaInfOsd.hpp:47
VAlignE vertical
竖直对齐方式
Definition: MediaInfOsd.hpp:48
时间或文字类型OSD显示内容
Definition: MediaInfOsd.hpp:106
int index
初始设置array下标
Definition: MediaInfOsd.hpp:107
char content[MaxTextSize]
text内容或time 格式
Definition: MediaInfOsd.hpp:108
图片类型OSD持久化参数
Definition: MediaInfOsd.hpp:83
uint32_t alpha
透明度
Definition: MediaInfOsd.hpp:84
int height
图片高
Definition: MediaInfOsd.hpp:86
char path[EMX_MAX_PATH_SIZE]
图片路径
Definition: MediaInfOsd.hpp:87
int width
图片宽
Definition: MediaInfOsd.hpp:85
OSD持久化参数
Definition: MediaInfOsd.hpp:91
ParamText text
文字类型OSD持久化参数
Definition: MediaInfOsd.hpp:100
uint8_t isFlicker
是否闪烁显示
Definition: MediaInfOsd.hpp:95
TypeE type
OSD类型
Definition: MediaInfOsd.hpp:92
uint16_t flickerInterval
闪烁间隔,单位毫秒
Definition: MediaInfOsd.hpp:94
uint8_t layer
显示层级
Definition: MediaInfOsd.hpp:96
bool ena
是否使能
Definition: MediaInfOsd.hpp:93
ParamImage image
图片类型OSD持久化参数
Definition: MediaInfOsd.hpp:101
ParamTime time
时间戳类型OSD持久化参数
Definition: MediaInfOsd.hpp:99
Margin margin
对齐方式
Definition: MediaInfOsd.hpp:97
文字类型OSD持久化参数
Definition: MediaInfOsd.hpp:71
int lineSpace
行间距,分辨率万分比0~10000,wrapLine=true生效
Definition: MediaInfOsd.hpp:75
uint32_t color
字体位图主体rgba颜色 0=黑白描边自动
Definition: MediaInfOsd.hpp:78
char content[MaxTextSize]
显示内容
Definition: MediaInfOsd.hpp:77
char font[64]
字体文件名(字体文件均放置在configs/media/font目录下
Definition: MediaInfOsd.hpp:76
int thickness
边框大小
Definition: MediaInfOsd.hpp:73
bool wrapLine
使能换行操作
Definition: MediaInfOsd.hpp:74
bool autoSwitchColor
是否自动翻转黑白颜色
Definition: MediaInfOsd.hpp:79
int size
字体大小
Definition: MediaInfOsd.hpp:72
时间戳类型OSD持久化参数
Definition: MediaInfOsd.hpp:53
int size
字体大小
Definition: MediaInfOsd.hpp:54
int thickness
边框大小
Definition: MediaInfOsd.hpp:55
char formatString[128]
Definition: MediaInfOsd.hpp:57
uint32_t color
字体位图主体rgba颜色 0=黑白描边自动
Definition: MediaInfOsd.hpp:66
char weekFormat[7][16]
Definition: MediaInfOsd.hpp:64
bool autoSwitchColor
是否自动翻转黑白颜色
Definition: MediaInfOsd.hpp:67
char font[64]
字体文件名(字体文件均放置在configs/media/font目录下)
Definition: MediaInfOsd.hpp:56
Definition: MediaInfOsd.hpp:118
std::vector< std::shared_ptr< ParamItem > > array
Definition: MediaInfOsd.hpp:119