作者 ookk303

相机更新

@@ -63,7 +63,8 @@ @@ -63,7 +63,8 @@
63 "rtk_mmp_dec.h": "c", 63 "rtk_mmp_dec.h": "c",
64 "rtk_mmp_enc.h": "c", 64 "rtk_mmp_enc.h": "c",
65 "videostreamtranscode.h": "c", 65 "videostreamtranscode.h": "c",
66 - "time.h": "c" 66 + "time.h": "c",
  67 + "cam_framecatch.h": "c"
67 }, 68 },
68 "Codegeex.GenerationPreference": "automatic", 69 "Codegeex.GenerationPreference": "automatic",
69 "C_Cpp.dimInactiveRegions": false 70 "C_Cpp.dimInactiveRegions": false
@@ -19,7 +19,7 @@ @@ -19,7 +19,7 @@
19 #define MAJOR_VERSION 0x01 19 #define MAJOR_VERSION 0x01
20 #define MINOR_VERSION 0x03 20 #define MINOR_VERSION 0x03
21 #define MODIFY_VERSION 0x09 21 #define MODIFY_VERSION 0x09
22 -#define DEBUG_VERSION 0x06 22 +#define DEBUG_VERSION 0x05
23 23
24 //禁止修改行 滤波方式 24 //禁止修改行 滤波方式
25 #define FILTERING_TYPE HIGH_PASS_FILTERING 25 #define FILTERING_TYPE HIGH_PASS_FILTERING
@@ -3,6 +3,8 @@ @@ -3,6 +3,8 @@
3 #include <stdlib.h> 3 #include <stdlib.h>
4 #include <string.h> 4 #include <string.h>
5 #include <pthread.h> 5 #include <pthread.h>
  6 +#include <time.h>
  7 +#include <unistd.h>
6 8
7 9
8 #include "JZsdkLib.h" 10 #include "JZsdkLib.h"
@@ -13,25 +15,35 @@ @@ -13,25 +15,35 @@
13 15
14 16
15 #ifdef RTK_MPP_STATUS_ON 17 #ifdef RTK_MPP_STATUS_ON
16 -  
17 #include "MediaProc/MultProc/RTK_mmp/RTK_mmp.h" 18 #include "MediaProc/MultProc/RTK_mmp/RTK_mmp.h"
18 -#include "MediaProc/Camera/Cam_FrameCatch/Cam_FrameCatch.h"  
19 -#include "MediaProc/MediaParm.h"  
20 #include "MediaProc/MultProc/RTK_mmp/Dec/RTK_mmp_dec.h" 19 #include "MediaProc/MultProc/RTK_mmp/Dec/RTK_mmp_dec.h"
21 #include "MediaProc/MultProc/RTK_mmp/Enc/RTK_mmp_enc.h" 20 #include "MediaProc/MultProc/RTK_mmp/Enc/RTK_mmp_enc.h"
  21 +
  22 +#endif
  23 +
  24 +#ifdef MEDIA_PROC_CONFIG_STATUS_ON
  25 +
  26 +#include "MediaProc/Camera/Cam_FrameCatch/Cam_FrameCatch.h"
  27 +#include "MediaProc/MediaParm.h"
22 #include "MediaProc/VideoMgmt/VideoStreamPush/VideoStream_Push.h" 28 #include "MediaProc/VideoMgmt/VideoStreamPush/VideoStream_Push.h"
23 #include "MediaProc/VideoMgmt/VideoMgmt.h" 29 #include "MediaProc/VideoMgmt/VideoMgmt.h"
24 #include "MediaProc/IRC_funtion/IRC_Param.h" 30 #include "MediaProc/IRC_funtion/IRC_Param.h"
25 #include "MediaProc/IRC_funtion/IRC_funtion.h" 31 #include "MediaProc/IRC_funtion/IRC_funtion.h"
26 #include "MediaProc/MediaProc_Param.h" 32 #include "MediaProc/MediaProc_Param.h"
27 33
28 -#endif 34 +
29 35
30 static void *g_usb_index = NULL; 36 static void *g_usb_index = NULL;
31 37
32 // 定义 昆腾的 帧头长度和帧头内容 38 // 定义 昆腾的 帧头长度和帧头内容
33 #define FRAME_HEADER_SIZE 4 39 #define FRAME_HEADER_SIZE 4
34 static const unsigned char FRAME_HEADER[FRAME_HEADER_SIZE] = {0xaa, 0xbb, 0xcc, 0xdd}; 40 static const unsigned char FRAME_HEADER[FRAME_HEADER_SIZE] = {0xaa, 0xbb, 0xcc, 0xdd};
  41 +#define NSEC_PER_SEC 1000000000L //1秒的纳秒数
  42 +#define TARGET_FPS 30
  43 +
  44 +static unsigned char FrameBuffer[FIRST_HEIGHT * FIRST_WIDTH *2]; //用于存储帧数据的缓冲区
  45 +static unsigned int FrameBufferLen = 0; //用于存储帧数据的长度
  46 +static FrameBuffer_UseFlag = JZ_FLAGCODE_OFF;
35 47
36 48
37 //数据推送函数 49 //数据推送函数
@@ -48,6 +60,7 @@ static T_JZsdkReturnCode JZC1_PushFrame(int CameraIndex, unsigned char* data, un @@ -48,6 +60,7 @@ static T_JZsdkReturnCode JZC1_PushFrame(int CameraIndex, unsigned char* data, un
48 //红外相机 60 //红外相机
49 if (currentIndex == 1 && CameraIndex == 1) 61 if (currentIndex == 1 && CameraIndex == 1)
50 { 62 {
  63 +
51 //推送数据到流转模块 64 //推送数据到流转模块
52 VideoMgmt_Single_FrameIn(data, data_len); 65 VideoMgmt_Single_FrameIn(data, data_len);
53 } 66 }
@@ -58,7 +71,6 @@ static T_JZsdkReturnCode JZC1_PushFrame(int CameraIndex, unsigned char* data, un @@ -58,7 +71,6 @@ static T_JZsdkReturnCode JZC1_PushFrame(int CameraIndex, unsigned char* data, un
58 //推送数据到流转模块 71 //推送数据到流转模块
59 VideoMgmt_Single_FrameIn(data, data_len); 72 VideoMgmt_Single_FrameIn(data, data_len);
60 } 73 }
61 -  
62 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 74 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
63 } 75 }
64 76
@@ -113,6 +125,11 @@ static T_JZsdkReturnCode JZC1_Irc_DataCorrect(unsigned char *data) @@ -113,6 +125,11 @@ static T_JZsdkReturnCode JZC1_Irc_DataCorrect(unsigned char *data)
113 static T_JZsdkReturnCode JZC1_IrcDeal(unsigned char *data, unsigned int data_len) 125 static T_JZsdkReturnCode JZC1_IrcDeal(unsigned char *data, unsigned int data_len)
114 { 126 {
115 //JZSDK_LOG_DEBUG("irc数据处理"); 127 //JZSDK_LOG_DEBUG("irc数据处理");
  128 + if (data_len == 0)
  129 + {
  130 + JZSDK_LOG_ERROR("无数据错误");
  131 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  132 + }
116 133
117 //红外数据纠正处理 134 //红外数据纠正处理
118 JZC1_Irc_DataCorrect(data); 135 JZC1_Irc_DataCorrect(data);
@@ -121,6 +138,8 @@ static T_JZsdkReturnCode JZC1_IrcDeal(unsigned char *data, unsigned int data_len @@ -121,6 +138,8 @@ static T_JZsdkReturnCode JZC1_IrcDeal(unsigned char *data, unsigned int data_len
121 U16_t * u16Data = (U16_t *)malloc(sizeof(U16_t) * (data_len / 2)); 138 U16_t * u16Data = (U16_t *)malloc(sizeof(U16_t) * (data_len / 2));
122 int u16DataSize = data_len / 2; 139 int u16DataSize = data_len / 2;
123 140
  141 + //JZSDK_LOG_DEBUG("data_len:%d u16DataSize:%d", data_len / 2, FIRST_HEIGHT * FIRST_WIDTH);
  142 +
124 //合成像素,u8转换合并成u16 143 //合成像素,u8转换合并成u16
125 JZsdk_Merge_U8_to_U16_byReverse(data, data_len, u16Data, &u16DataSize); 144 JZsdk_Merge_U8_to_U16_byReverse(data, data_len, u16Data, &u16DataSize);
126 145
@@ -168,6 +187,83 @@ static T_JZsdkReturnCode JZC1_IrcDeal(unsigned char *data, unsigned int data_len @@ -168,6 +187,83 @@ static T_JZsdkReturnCode JZC1_IrcDeal(unsigned char *data, unsigned int data_len
168 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 187 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
169 } 188 }
170 189
  190 +static void *JZC1_IrcDataBuffer_Thread(void *args)
  191 +{
  192 +
  193 + struct timespec now;
  194 +
  195 + //获取起始时间
  196 + struct timespec start_time;
  197 + clock_gettime(CLOCK_MONOTONIC, &start_time);
  198 + long long prev_time = start_time.tv_sec * NSEC_PER_SEC + start_time.tv_nsec;
  199 +
  200 + //设置间隔时间
  201 + long long period = NSEC_PER_SEC / TARGET_FPS;
  202 +
  203 + unsigned char *TempBuffer = (unsigned char *)malloc(163840);
  204 + unsigned int TempBufferLen = 0;
  205 +
  206 +
  207 +
  208 + while (1)
  209 + {
  210 + //获取当前时间
  211 + clock_gettime(CLOCK_MONOTONIC, &now);
  212 + long long current_time = now.tv_sec * NSEC_PER_SEC + now.tv_nsec;
  213 +
  214 + //计算时间差
  215 + long long elapsed_time = current_time - prev_time;
  216 +
  217 + //超过33ms
  218 + if (elapsed_time >= period)
  219 + {
  220 + while (FrameBuffer_UseFlag == JZ_FLAGCODE_ON)
  221 + {
  222 + delayUs(100);
  223 + }
  224 +
  225 + FrameBuffer_UseFlag = JZ_FLAGCODE_ON;
  226 +
  227 + memset(TempBuffer, 0, sizeof(TempBuffer));
  228 + memcpy(TempBuffer, FrameBuffer, FrameBufferLen);
  229 + TempBufferLen = FrameBufferLen;
  230 +
  231 + FrameBuffer_UseFlag = JZ_FLAGCODE_OFF;
  232 +
  233 + //红外数据缓冲线程
  234 + JZC1_IrcDeal(TempBuffer, TempBufferLen);
  235 +
  236 + prev_time = current_time;
  237 + }
  238 +
  239 + // 为了防止过于频繁地调用 clock_gettime,可以添加一个小的睡眠时间
  240 + // 例如,休眠1毫秒(100000000纳秒),以减少CPU占用
  241 + struct timespec req = { .tv_sec = 0, .tv_nsec = 1000000 };
  242 + nanosleep(&req, NULL);
  243 + }
  244 +
  245 +
  246 +}
  247 +
  248 +static T_JZsdkReturnCode JZC1_IrcDataSave(unsigned char *data, unsigned int data_len)
  249 +{
  250 + //避免缓冲区被同时操作
  251 + while (FrameBuffer_UseFlag == JZ_FLAGCODE_ON)
  252 + {
  253 + delayUs(100);
  254 + }
  255 +
  256 + FrameBuffer_UseFlag = JZ_FLAGCODE_ON;
  257 +
  258 + memset(FrameBuffer, 0, sizeof(FrameBuffer));
  259 + memcpy(FrameBuffer, data, data_len);
  260 + FrameBufferLen = data_len;
  261 +
  262 + FrameBuffer_UseFlag = JZ_FLAGCODE_OFF;
  263 +
  264 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  265 +}
  266 +
171 //红外数据接收线程 267 //红外数据接收线程
172 static void *JZC1_IrcDataRecv_Thread(void *args) 268 static void *JZC1_IrcDataRecv_Thread(void *args)
173 { 269 {
@@ -245,7 +341,7 @@ static void *JZC1_IrcDataRecv_Thread(void *args) @@ -245,7 +341,7 @@ static void *JZC1_IrcDataRecv_Thread(void *args)
245 { 341 {
246 memcpy( &frameData[frameDataLen], buf, frame_len-frameDataLen ); 342 memcpy( &frameData[frameDataLen], buf, frame_len-frameDataLen );
247 343
248 - JZC1_IrcDeal(frameData, frame_len); 344 + JZC1_IrcDataSave(frameData, frame_len);
249 345
250 frame = 2; 346 frame = 2;
251 frameDataLen = 0; 347 frameDataLen = 0;
@@ -265,7 +361,7 @@ static void *JZC1_IrcDataRecv_Thread(void *args) @@ -265,7 +361,7 @@ static void *JZC1_IrcDataRecv_Thread(void *args)
265 361
266 //JZSDK_LOG_INFO("写入1 %d %x", i, frameData[20]); 362 //JZSDK_LOG_INFO("写入1 %d %x", i, frameData[20]);
267 363
268 - JZC1_IrcDeal(frameData, frame_len); 364 + JZC1_IrcDataSave(frameData, frame_len);
269 //JZSDK_LOG_INFO("放入数据到缓冲区"); 365 //JZSDK_LOG_INFO("放入数据到缓冲区");
270 //memset(frameData,0,sizeof(frameData)); 366 //memset(frameData,0,sizeof(frameData));
271 } 367 }
@@ -282,7 +378,7 @@ static void *JZC1_IrcDataRecv_Thread(void *args) @@ -282,7 +378,7 @@ static void *JZC1_IrcDataRecv_Thread(void *args)
282 memcpy( &frameData[0], buf, frame_len); 378 memcpy( &frameData[0], buf, frame_len);
283 379
284 //将未处理raw数据放入缓冲区 380 //将未处理raw数据放入缓冲区
285 - JZC1_IrcDeal(frameData, frame_len); 381 + JZC1_IrcDataSave(frameData, frame_len);
286 //JZSDK_LOG_INFO("放入数据到缓冲区"); 382 //JZSDK_LOG_INFO("放入数据到缓冲区");
287 } 383 }
288 frame++; 384 frame++;
@@ -317,17 +413,30 @@ static T_JZsdkReturnCode JZsdk_JZC1_Irc_Data_Init() @@ -317,17 +413,30 @@ static T_JZsdkReturnCode JZsdk_JZC1_Irc_Data_Init()
317 pthread_attr_t task_attribute; //线程属性 413 pthread_attr_t task_attribute; //线程属性
318 pthread_attr_init(&task_attribute); //初始化线程属性 414 pthread_attr_init(&task_attribute); //初始化线程属性
319 pthread_attr_setdetachstate(&task_attribute, PTHREAD_CREATE_DETACHED); //设置线程分离属性 415 pthread_attr_setdetachstate(&task_attribute, PTHREAD_CREATE_DETACHED); //设置线程分离属性
320 - int opus_Protection = pthread_create(&ReadDataTask,&task_attribute,JZC1_IrcDataRecv_Thread,NULL); //线程  
321 - if(opus_Protection != 0) 416 + int Urcdata_Protection = pthread_create(&ReadDataTask,&task_attribute,JZC1_IrcDataRecv_Thread,NULL); //线程
  417 + if(Urcdata_Protection != 0)
322 { 418 {
323 JZSDK_LOG_ERROR("创建视频usb线程失败!"); 419 JZSDK_LOG_ERROR("创建视频usb线程失败!");
324 return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; 420 return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
325 } 421 }
326 422
  423 + //初始化送usb数据去处理的线程
  424 + pthread_t BufferDataTask;
  425 + pthread_attr_t BufferDataTask_attribute; //线程属性
  426 + pthread_attr_init(&BufferDataTask_attribute); //初始化线程属性
  427 + pthread_attr_setdetachstate(&BufferDataTask_attribute, PTHREAD_CREATE_DETACHED); //设置线程分离属性
  428 + int bufferdata_Protection = pthread_create(&BufferDataTask,&BufferDataTask_attribute,JZC1_IrcDataBuffer_Thread,NULL); //线程
  429 + if(bufferdata_Protection != 0)
  430 + {
  431 + JZSDK_LOG_ERROR("创建usb缓冲失败!");
  432 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  433 + }
  434 +
327 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 435 return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
328 } 436 }
329 437
330 438
  439 +#endif
331 440
332 //JZ_C1 的媒体初始化 441 //JZ_C1 的媒体初始化
333 static T_JZsdkReturnCode JZC1_MediaInit() 442 static T_JZsdkReturnCode JZC1_MediaInit()
@@ -344,7 +453,7 @@ static T_JZsdkReturnCode JZC1_MediaInit() @@ -344,7 +453,7 @@ static T_JZsdkReturnCode JZC1_MediaInit()
344 //初始化Mulit模块 453 //初始化Mulit模块
345 #ifdef RTK_MPP_STATUS_ON 454 #ifdef RTK_MPP_STATUS_ON
346 //初始化红外的编解码器 455 //初始化红外的编解码器
347 - RTK_mmp_enc_Init(JZsdk_RtkMmpGetEncHandleAddr(0), MPP_VIDEO_CodingAVC, MPP_FMT_YUV420P, FIRST_WIDTH, FIRST_HEIGHT, 25, 5); 456 + RTK_mmp_enc_Init(JZsdk_RtkMmpGetEncHandleAddr(0), MPP_VIDEO_CodingAVC, MPP_FMT_YUV420P, FIRST_WIDTH, FIRST_HEIGHT, 30, 5);
348 457
349 //初始化光学的编解码器 458 //初始化光学的编解码器
350 RTK_mmp_dec_Init(JZsdk_RtkMmpGetDecHandleAddr(1), MPP_VIDEO_CodingMJPEG, MPP_FMT_YUV420SP, SECOND_WIDTH, SECOND_HEIGHT); 459 RTK_mmp_dec_Init(JZsdk_RtkMmpGetDecHandleAddr(1), MPP_VIDEO_CodingMJPEG, MPP_FMT_YUV420SP, SECOND_WIDTH, SECOND_HEIGHT);
@@ -55,8 +55,11 @@ T_JZsdkReturnCode IRC_LowT_CycleCalibration(U16_t *ImageData,struct IRC_param *d @@ -55,8 +55,11 @@ T_JZsdkReturnCode IRC_LowT_CycleCalibration(U16_t *ImageData,struct IRC_param *d
55 dealInfo->LowT_NineFrameAdd[i] += ImageData[i]; 55 dealInfo->LowT_NineFrameAdd[i] += ImageData[i];
56 } 56 }
57 dealInfo->LowT_flag++; 57 dealInfo->LowT_flag++;
  58 +
58 } 59 }
59 60
  61 + JZSDK_LOG_DEBUG("低温标定基准值已存入%d组",dealInfo->LowT_flag - 1);
  62 +
60 if (dealInfo->LowT_flag > 9) //已经存储了9组数据 63 if (dealInfo->LowT_flag > 9) //已经存储了9组数据
61 { 64 {
62 for (int i = 0; i < (dealInfo->Width * dealInfo->Height); i++) 65 for (int i = 0; i < (dealInfo->Width * dealInfo->Height); i++)
@@ -111,6 +114,8 @@ T_JZsdkReturnCode IRC_HighT_CycleCalibration(U16_t *ImageData, struct IRC_param @@ -111,6 +114,8 @@ T_JZsdkReturnCode IRC_HighT_CycleCalibration(U16_t *ImageData, struct IRC_param
111 dealInfo->HighT_flag++; 114 dealInfo->HighT_flag++;
112 } 115 }
113 116
  117 + JZSDK_LOG_DEBUG("高温标定基准值已存入%d组",dealInfo->LowT_flag - 1);
  118 +
114 if (dealInfo->HighT_flag > 9) //已经存储了9组数据 119 if (dealInfo->HighT_flag > 9) //已经存储了9组数据
115 { 120 {
116 for (int i = 0; i < (dealInfo->Width * dealInfo->Height); i++) 121 for (int i = 0; i < (dealInfo->Width * dealInfo->Height); i++)
@@ -697,7 +702,6 @@ T_JZsdkReturnCode IRC_LocalFrame_DataRead(int flag,struct IRC_param *dealInfo) @@ -697,7 +702,6 @@ T_JZsdkReturnCode IRC_LocalFrame_DataRead(int flag,struct IRC_param *dealInfo)
697 int capacity = 0; // 用于记录当前分配的内存容量 702 int capacity = 0; // 用于记录当前分配的内存容量
698 U16_t *numbers = NULL; // 用于存储已读取的整数 703 U16_t *numbers = NULL; // 用于存储已读取的整数
699 704
700 - // 读取数据  
701 while (fscanf(fp, "%d", &num) == 1) { 705 while (fscanf(fp, "%d", &num) == 1) {
702 // 如果当前容量不足以存储新元素,则增加容量 706 // 如果当前容量不足以存储新元素,则增加容量
703 if (count >= capacity) { 707 if (count >= capacity) {
@@ -177,7 +177,6 @@ unsigned int Get_2DImage_PointToArray(int x, int y, int width, int height) @@ -177,7 +177,6 @@ unsigned int Get_2DImage_PointToArray(int x, int y, int width, int height)
177 */ 177 */
178 static T_JZsdkReturnCode IRC_Postdeal(unsigned char *rgb_data, struct IRC_param *dealInfo) 178 static T_JZsdkReturnCode IRC_Postdeal(unsigned char *rgb_data, struct IRC_param *dealInfo)
179 { 179 {
180 -  
181 //将rgb图形镜像 180 //将rgb图形镜像
182 int MirrorImageFlag = JZ_FLAGCODE_ON; 181 int MirrorImageFlag = JZ_FLAGCODE_ON;
183 182
@@ -197,7 +196,7 @@ static T_JZsdkReturnCode IRC_Postdeal(unsigned char *rgb_data, struct IRC_param @@ -197,7 +196,7 @@ static T_JZsdkReturnCode IRC_Postdeal(unsigned char *rgb_data, struct IRC_param
197 for (y = 0; y < dealInfo->Height; y++) 196 for (y = 0; y < dealInfo->Height; y++)
198 { 197 {
199 // 复制当前行到临时缓冲区 198 // 复制当前行到临时缓冲区
200 - memcpy(temp_row, rgb_data + y * bytes_per_row, bytes_per_row); 199 + memcpy(temp_row, rgb_data + (y * bytes_per_row), bytes_per_row);
201 200
202 // 从右向左(即反向)复制临时缓冲区的数据回原位置 201 // 从右向左(即反向)复制临时缓冲区的数据回原位置
203 for (x = 0; x < dealInfo->Width; x++) { 202 for (x = 0; x < dealInfo->Width; x++) {
@@ -214,7 +213,6 @@ static T_JZsdkReturnCode IRC_Postdeal(unsigned char *rgb_data, struct IRC_param @@ -214,7 +213,6 @@ static T_JZsdkReturnCode IRC_Postdeal(unsigned char *rgb_data, struct IRC_param
214 free(temp_row); // 释放临时缓冲区 213 free(temp_row); // 释放临时缓冲区
215 } 214 }
216 215
217 -  
218 //修复外圈图像 216 //修复外圈图像
219 if (dealInfo->RingRepair == JZ_FLAGCODE_ON) 217 if (dealInfo->RingRepair == JZ_FLAGCODE_ON)
220 { 218 {
@@ -374,6 +372,8 @@ T_JZsdkReturnCode IRC_FrameDeal(U16_t *rawData ,unsigned int dataSize, unsigned @@ -374,6 +372,8 @@ T_JZsdkReturnCode IRC_FrameDeal(U16_t *rawData ,unsigned int dataSize, unsigned
374 //1、数据预处理(移除数据的盲点,并记录标定数据) 372 //1、数据预处理(移除数据的盲点,并记录标定数据)
375 IRC_data_PreliminaryDeal(rawData , &dataSize, g_IRC_Param); 373 IRC_data_PreliminaryDeal(rawData , &dataSize, g_IRC_Param);
376 374
  375 + //JZSDK_LOG_DEBUG("数据预处理完成");
  376 +
377 //2、数据前处理,将原始数据和16位数据 合成为rgb数据 377 //2、数据前处理,将原始数据和16位数据 合成为rgb数据
378 U8_t *RGB_data = NULL; 378 U8_t *RGB_data = NULL;
379 unsigned int RGB_dataSize = 0; 379 unsigned int RGB_dataSize = 0;
@@ -394,10 +394,12 @@ T_JZsdkReturnCode IRC_FrameDeal(U16_t *rawData ,unsigned int dataSize, unsigned @@ -394,10 +394,12 @@ T_JZsdkReturnCode IRC_FrameDeal(U16_t *rawData ,unsigned int dataSize, unsigned
394 break; 394 break;
395 } 395 }
396 396
  397 + //JZSDK_LOG_DEBUG("数据前处理完成");
  398 +
397 //3、数据后处理,在rgb数据上,进行图像处理 399 //3、数据后处理,在rgb数据上,进行图像处理
398 IRC_Postdeal(RGB_data, g_IRC_Param); 400 IRC_Postdeal(RGB_data, g_IRC_Param);
399 401
400 - //printf("后处理完成\n"); 402 + //JZSDK_LOG_DEBUG("数据后处理完成");
401 403
402 //4、数据转换,将rgb数据,转换为yuv数据 404 //4、数据转换,将rgb数据,转换为yuv数据
403 if (g_IRC_Param->IRC_outPixelMode == PIXEL_MODE_YUV420) 405 if (g_IRC_Param->IRC_outPixelMode == PIXEL_MODE_YUV420)
@@ -1042,80 +1044,80 @@ static T_JZsdkReturnCode IRC_param_Init(struct IRC_param **index, int height, in @@ -1042,80 +1044,80 @@ static T_JZsdkReturnCode IRC_param_Init(struct IRC_param **index, int height, in
1042 IrcDealCfg->LowT_flag = JZ_FLAGCODE_OFF; 1044 IrcDealCfg->LowT_flag = JZ_FLAGCODE_OFF;
1043 IrcDealCfg->HighT_flag = JZ_FLAGCODE_OFF; 1045 IrcDealCfg->HighT_flag = JZ_FLAGCODE_OFF;
1044 1046
1045 - IrcDealCfg->TPC_Diff = (double *)malloc(IrcDealCfg->Height * IrcDealCfg->Width * sizeof(double)); 1047 + IrcDealCfg->TPC_Diff = (double *)malloc(IrcDealCfg->PixelNum * sizeof(double));
1046 if (IrcDealCfg->TPC_Diff == NULL) 1048 if (IrcDealCfg->TPC_Diff == NULL)
1047 { 1049 {
1048 JZSDK_LOG_ERROR("TPC_Diff注册失败"); 1050 JZSDK_LOG_ERROR("TPC_Diff注册失败");
1049 } 1051 }
1050 1052
1051 - IrcDealCfg->TPC_Slope = (double *)malloc(IrcDealCfg->Height * IrcDealCfg->Width * sizeof(double)); 1053 + IrcDealCfg->TPC_Slope = (double *)malloc(IrcDealCfg->PixelNum * sizeof(double));
1052 if (IrcDealCfg->TPC_Slope == NULL) 1054 if (IrcDealCfg->TPC_Slope == NULL)
1053 { 1055 {
1054 JZSDK_LOG_ERROR("TPC_Slope注册失败"); 1056 JZSDK_LOG_ERROR("TPC_Slope注册失败");
1055 } 1057 }
1056 1058
1057 - IrcDealCfg->HighT_NineFrameAdd = (U16_t *)malloc(IrcDealCfg->Height * IrcDealCfg->Width * sizeof(U16_t)); 1059 + IrcDealCfg->HighT_NineFrameAdd = (U16_t *)malloc(IrcDealCfg->PixelNum * sizeof(U16_t));
1058 if (IrcDealCfg->HighT_NineFrameAdd == NULL) 1060 if (IrcDealCfg->HighT_NineFrameAdd == NULL)
1059 { 1061 {
1060 JZSDK_LOG_ERROR("HighT_NineFrameAdd注册失败"); 1062 JZSDK_LOG_ERROR("HighT_NineFrameAdd注册失败");
1061 } 1063 }
1062 1064
1063 - IrcDealCfg->LowT_NineFrameAdd = (U16_t *)malloc(IrcDealCfg->Height * IrcDealCfg->Width * sizeof(U16_t)); 1065 + IrcDealCfg->LowT_NineFrameAdd = (U16_t *)malloc(IrcDealCfg->PixelNum * sizeof(U16_t));
1064 if (IrcDealCfg->LowT_NineFrameAdd == NULL) 1066 if (IrcDealCfg->LowT_NineFrameAdd == NULL)
1065 { 1067 {
1066 JZSDK_LOG_ERROR("LowT_NineFrameAdd注册失败"); 1068 JZSDK_LOG_ERROR("LowT_NineFrameAdd注册失败");
1067 } 1069 }
1068 1070
1069 - IrcDealCfg->HighT_NineFrame_Avg = (U16_t *)malloc(IrcDealCfg->Height * IrcDealCfg->Width * sizeof(U16_t)); 1071 + IrcDealCfg->HighT_NineFrame_Avg = (U16_t *)malloc(IrcDealCfg->PixelNum * sizeof(U16_t));
1070 if (IrcDealCfg->HighT_NineFrame_Avg == NULL) 1072 if (IrcDealCfg->HighT_NineFrame_Avg == NULL)
1071 { 1073 {
1072 JZSDK_LOG_ERROR("HighT_NineFrame_Avg注册失败"); 1074 JZSDK_LOG_ERROR("HighT_NineFrame_Avg注册失败");
1073 } 1075 }
1074 1076
1075 - IrcDealCfg->LowT_NineFrame_Avg = (U16_t *)malloc(IrcDealCfg->Height * IrcDealCfg->Width * sizeof(U16_t)); 1077 + IrcDealCfg->LowT_NineFrame_Avg = (U16_t *)malloc(IrcDealCfg->PixelNum * sizeof(U16_t));
1076 if (IrcDealCfg->LowT_NineFrame_Avg == NULL) 1078 if (IrcDealCfg->LowT_NineFrame_Avg == NULL)
1077 { 1079 {
1078 JZSDK_LOG_ERROR("LowT_NineFrame_Avg注册失败"); 1080 JZSDK_LOG_ERROR("LowT_NineFrame_Avg注册失败");
1079 } 1081 }
1080 1082
1081 - IrcDealCfg->SPC_Diff = (double *)malloc(IrcDealCfg->Height * IrcDealCfg->Width * sizeof(double)); 1083 + IrcDealCfg->SPC_Diff = (double *)malloc(IrcDealCfg->PixelNum * sizeof(double));
1082 if (IrcDealCfg->SPC_Diff == NULL) 1084 if (IrcDealCfg->SPC_Diff == NULL)
1083 { 1085 {
1084 JZSDK_LOG_ERROR("SPC_Diff注册失败"); 1086 JZSDK_LOG_ERROR("SPC_Diff注册失败");
1085 } 1087 }
1086 1088
1087 - IrcDealCfg->SPC_Slope = (double *)malloc(IrcDealCfg->Height * IrcDealCfg->Width * sizeof(double)); 1089 + IrcDealCfg->SPC_Slope = (double *)malloc(IrcDealCfg->PixelNum * sizeof(double));
1088 if (IrcDealCfg->SPC_Slope == NULL) 1090 if (IrcDealCfg->SPC_Slope == NULL)
1089 { 1091 {
1090 JZSDK_LOG_ERROR("SPC_Slope注册失败"); 1092 JZSDK_LOG_ERROR("SPC_Slope注册失败");
1091 } 1093 }
1092 1094
1093 - IrcDealCfg->DGCE_Area = (U16_t *)malloc(IrcDealCfg->Height * IrcDealCfg->Width * sizeof(U16_t)); 1095 + IrcDealCfg->DGCE_Area = (U16_t *)malloc(IrcDealCfg->PixelNum * sizeof(U16_t));
1094 if (IrcDealCfg->DGCE_Area == NULL) 1096 if (IrcDealCfg->DGCE_Area == NULL)
1095 { 1097 {
1096 JZSDK_LOG_ERROR("DGCE_Area注册失败"); 1098 JZSDK_LOG_ERROR("DGCE_Area注册失败");
1097 } 1099 }
1098 1100
1099 - IrcDealCfg->DGCE_Mark_Data = (U16_t *)malloc(IrcDealCfg->Height * IrcDealCfg->Width * sizeof(U16_t)); 1101 + IrcDealCfg->DGCE_Mark_Data = (U16_t *)malloc(IrcDealCfg->PixelNum * sizeof(U16_t));
1100 if (IrcDealCfg->DGCE_Mark_Data == NULL) 1102 if (IrcDealCfg->DGCE_Mark_Data == NULL)
1101 { 1103 {
1102 JZSDK_LOG_ERROR("DGCE_Mark_Data注册失败"); 1104 JZSDK_LOG_ERROR("DGCE_Mark_Data注册失败");
1103 } 1105 }
1104 1106
1105 - IrcDealCfg->SPC_Mark_Data = (U16_t *)malloc(IrcDealCfg->Height * IrcDealCfg->Width * sizeof(U16_t)); 1107 + IrcDealCfg->SPC_Mark_Data = (U16_t *)malloc(IrcDealCfg->PixelNum * sizeof(U16_t));
1106 if (IrcDealCfg->SPC_Mark_Data == NULL) 1108 if (IrcDealCfg->SPC_Mark_Data == NULL)
1107 { 1109 {
1108 JZSDK_LOG_ERROR("SPC_Mark_Data注册失败"); 1110 JZSDK_LOG_ERROR("SPC_Mark_Data注册失败");
1109 } 1111 }
1110 1112
1111 - IrcDealCfg->Factory_HighT_Mark_Data = (U16_t *)malloc(IrcDealCfg->Height * IrcDealCfg->Width * sizeof(U16_t)); 1113 + IrcDealCfg->Factory_HighT_Mark_Data = (U16_t *)malloc(IrcDealCfg->PixelNum * sizeof(U16_t));
1112 if (IrcDealCfg->Factory_HighT_Mark_Data == NULL) 1114 if (IrcDealCfg->Factory_HighT_Mark_Data == NULL)
1113 { 1115 {
1114 JZSDK_LOG_ERROR("Factory_HighT_Mark_Data注册失败"); 1116 JZSDK_LOG_ERROR("Factory_HighT_Mark_Data注册失败");
1115 } 1117 }
1116 IrcDealCfg->Factory_HighT_Mark_Data_flag = JZ_FLAGCODE_OFF; 1118 IrcDealCfg->Factory_HighT_Mark_Data_flag = JZ_FLAGCODE_OFF;
1117 1119
1118 - IrcDealCfg->Factory_LowT_Mark_Data = (U16_t *)malloc(IrcDealCfg->Height * IrcDealCfg->Width * sizeof(U16_t)); 1120 + IrcDealCfg->Factory_LowT_Mark_Data = (U16_t *)malloc(IrcDealCfg->PixelNum * sizeof(U16_t));
1119 if (IrcDealCfg->Factory_LowT_Mark_Data == NULL) 1121 if (IrcDealCfg->Factory_LowT_Mark_Data == NULL)
1120 { 1122 {
1121 JZSDK_LOG_ERROR("Factory_LowT_Mark_Data注册失败"); 1123 JZSDK_LOG_ERROR("Factory_LowT_Mark_Data注册失败");
@@ -1129,7 +1131,6 @@ static T_JZsdkReturnCode IRC_param_Init(struct IRC_param **index, int height, in @@ -1129,7 +1131,6 @@ static T_JZsdkReturnCode IRC_param_Init(struct IRC_param **index, int height, in
1129 * 1131 *
1130 **********************************************************************************************/ 1132 **********************************************************************************************/
1131 1133
1132 -  
1133 //填入高温数据 1134 //填入高温数据
1134 IRC_Set_HighTempData(IrcDealCfg); 1135 IRC_Set_HighTempData(IrcDealCfg);
1135 1136
@@ -39,7 +39,7 @@ extern "C" { @@ -39,7 +39,7 @@ extern "C" {
39 #define MAX_TTS_VOLUME 92 39 #define MAX_TTS_VOLUME 92
40 #elif DEVICE_VERSION == JZ_H10 40 #elif DEVICE_VERSION == JZ_H10
41 #define MAX_VOLUME (65) 41 #define MAX_VOLUME (65)
42 - #define MAX_TTS_VOLUME (70) //115 42 + #define MAX_TTS_VOLUME (70)
43 #elif DEVICE_VERSION == JZ_H10T 43 #elif DEVICE_VERSION == JZ_H10T
44 #define MAX_VOLUME (83) 44 #define MAX_VOLUME (83)
45 #define MAX_TTS_VOLUME (83) 45 #define MAX_TTS_VOLUME (83)