JZ_h150s_h150t.c
4.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
#include "JZsdkLib.h"
#include "BaseConfig.h"
#include <pthread.h>
#include "JZsdk_Hal.h"
#include "Megaphone/Megaphone.h"
#include "AudioDeal/AudioDeal.h"
#include "Gimbal/Gimbal.h"
#include "MediaProc/MediaProc.h"
#include "Ircut/Ircut.h"
typedef struct T_H150S_Info
{
JZsdk_CameraInfo *CamereInfo;
}T_H150S_Info;
static T_H150S_Info g_H150S_Info;
#define JZ_H150S_OPT_WIDTH 1920
#define JZ_H150S_OPT_HEIGHT 1080
#define JZ_H150S_OPT_FRAMERATE 25
#define JZ_H150S_OPT_INDEX VIDEOMGMT_STREAMING_FLOW_INDEX_FIRST
#define JZ_H150S_OPT_DEV_PATH ("/dev/video0")
#define JZ_H150S_OPT_PIXEL V4L2_PIX_FMT_H264
#define JZ_H150S_OPT_BRIGHTNESS (80) //亮度,该摄像头亮度范围为 1-255 默认128
#define JZ_H150S_OPT_CONTRAST (155) //对比度,摄像头对比度范围为 1-255 默认128
#define JZ_H150S_OPT_SATURATION (128) //饱和度 摄像头饱和度范围为 1-255 默认128
static T_JZsdkReturnCode JZ_h150s_h150t_PushFrame(int CameraIndex,unsigned char *data, int data_len)
{
int currentIndex = VideoMgmt_GetVideoStreamFlowIndexNum(); //获取当前视频流索引
//无视频流
if (currentIndex == 0)
{
//不推送视频
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
//相机
if (currentIndex == JZ_H150S_OPT_INDEX && CameraIndex == JZ_H150S_OPT_INDEX)
{
//推送数据到流转模块
VideoMgmt_Single_FrameIn(data, data_len);
}
}
static T_JZsdkReturnCode JZ_h150s_h150t_Opt_deal(unsigned char *buf, int len)
{
JZ_h150s_h150t_PushFrame(VIDEOMGMT_STREAMING_FLOW_INDEX_FIRST, buf, len);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/****************************
*
* h150s h150t 初始化
*
* mode psdk为psdk模式 uart为串口模式
*
* ****************************/
T_JZsdkReturnCode JZ_h150s_h150t_init(int mode)
{
T_JZsdkReturnCode ret;
//引脚初始化
IrcutInfo ircut_info;
ircut_info.Amplifiter_Pin.Enable = JZ_FLAGCODE_ON;
ircut_info.Amplifiter_Pin.Port = JZ_IRC_PORT_PA;
ircut_info.Amplifiter_Pin.index = 17;
ircut_info.Amplifiter_Pin.Group = 0;
ircut_info.Amplifiter_Pin.mode = JZ_IRC_PIN_MODE_OUT;
Ircut_Init(ircut_info);
if (mode == APP_UART)
{
//串口设备1初始化
s_JZ_SerialPortHalRegInfo SerialInfo = {
.BitRate = UART_DEV1_BITRATE,
.ConnectType = PORT_CONNECT_TYPE_AS_SUB
};
JZsdk_HalPort_Init(UART_DEV_1, (void *)&SerialInfo);
}
if (mode == APP_PSDK)
{
//外接传输模块,用于与飞机的数据通信
JZsdk_data_transmisson_Receive_Init();
}
//h150t额外开启4g
if (DEVICE_VERSION == JZ_H150T)
{
//串口设备4g初始化
s_JZ_SerialPortHalRegInfo Serial_4G_Info = {
.BitRate = COMM_4G_UART_BITRATE,
.ConnectType = PORT_CONNECT_TYPE_AS_SUB
};
JZsdk_HalPort_Init(UART_4G, (void *)&Serial_4G_Info);
}
if (mode == APP_UART)
{
//网口初始化
JZsdk_NetWork_Init();
}
//音频库初始化
AudioDeal_Init();
//喊话器初始化
Megaphone_Init();
//云台初始化
Gimbal_Init(JZ_MODULE_CONTROL_WAY_INDEPENDENT);
//媒体模块初始化
T_JZsdkMediaProcHandler MediaProcHandler = {
.VideoMgmtHandler.SetNextFrame_IDR = NULL,
};
MediaProc_Init(MediaProcHandler);
//相机初始化
g_H150S_Info.CamereInfo = (JZsdk_CameraInfo *)malloc(sizeof(JZsdk_CameraInfo));
if (g_H150S_Info.CamereInfo == NULL)
{
JZSDK_LOG_ERROR("malloc error");
}
memset(g_H150S_Info.CamereInfo, 0, sizeof(JZsdk_CameraInfo));
g_H150S_Info.CamereInfo->width = JZ_H150S_OPT_WIDTH;
g_H150S_Info.CamereInfo->height = JZ_H150S_OPT_HEIGHT;
g_H150S_Info.CamereInfo->FrameNum = JZ_H150S_OPT_FRAMERATE;
g_H150S_Info.CamereInfo->CameraFormat = JZ_H150S_OPT_PIXEL;
memcpy(g_H150S_Info.CamereInfo->CmeraDevPath, JZ_H150S_OPT_DEV_PATH, strlen(JZ_H150S_OPT_DEV_PATH));
g_H150S_Info.CamereInfo->ThreadMode = JZSDK_SINGLE_THREAD;
g_H150S_Info.CamereInfo->SingleDataOutput = JZ_h150s_h150t_Opt_deal;
g_H150S_Info.CamereInfo->CameraParam.Brightness = JZ_H150S_OPT_BRIGHTNESS;
g_H150S_Info.CamereInfo->CameraParam.Contrast = JZ_H150S_OPT_CONTRAST;
g_H150S_Info.CamereInfo->CameraParam.Saturation = JZ_H150S_OPT_SATURATION;
ret = Camera_Init(g_H150S_Info.CamereInfo);
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
JZSDK_LOG_ERROR("光学相机启动失败");
}
VideoMgmt_VideoStreamFlowIndex(JZ_H150S_OPT_INDEX);
JZSDK_LOG_INFO("Module Init success");
}