正在显示
9 个修改的文件
包含
163 行增加
和
20 行删除
@@ -56,7 +56,8 @@ | @@ -56,7 +56,8 @@ | ||
56 | "mediaparm.h": "c", | 56 | "mediaparm.h": "c", |
57 | "videostream_push.h": "c", | 57 | "videostream_push.h": "c", |
58 | "v4l2_record.h": "c", | 58 | "v4l2_record.h": "c", |
59 | - "deviceinfo.h": "c" | 59 | + "deviceinfo.h": "c", |
60 | + "mediaproc.h": "c" | ||
60 | }, | 61 | }, |
61 | "Codegeex.GenerationPreference": "automatic", | 62 | "Codegeex.GenerationPreference": "automatic", |
62 | "C_Cpp.dimInactiveRegions": false | 63 | "C_Cpp.dimInactiveRegions": false |
@@ -15,14 +15,9 @@ | @@ -15,14 +15,9 @@ | ||
15 | #define THREAD_POOL_SIZE 5 // 线程池大小 | 15 | #define THREAD_POOL_SIZE 5 // 线程池大小 |
16 | 16 | ||
17 | typedef struct { | 17 | typedef struct { |
18 | - void (*task_function)(void*); //任务函数指针,用于指定 执行的任务 | ||
19 | - void* data; // 任务参数 //任务参数的地址 用于输入任务内容 | ||
20 | -} t_JZsdk_TaskMgmt_TaskInput; | ||
21 | - | ||
22 | -typedef struct { | ||
23 | pthread_t thread; // 线程 //调用的线程 | 18 | pthread_t thread; // 线程 //调用的线程 |
24 | int is_busy; // 标识线程是否忙碌 | 19 | int is_busy; // 标识线程是否忙碌 |
25 | - t_JZsdk_TaskMgmt_TaskInput* task; // 线程执行的任务 | 20 | + t_JZsdk_TaskFuntionInput* task; // 线程执行的任务 |
26 | pthread_mutex_t lock; // 互斥锁 | 21 | pthread_mutex_t lock; // 互斥锁 |
27 | pthread_cond_t condition; // 条件变量 | 22 | pthread_cond_t condition; // 条件变量 |
28 | } t_ThreadPool; | 23 | } t_ThreadPool; |
@@ -73,7 +68,7 @@ T_JZsdkReturnCode TaskManagement_SubmitTask(void (*task_function)(void*), void* | @@ -73,7 +68,7 @@ T_JZsdkReturnCode TaskManagement_SubmitTask(void (*task_function)(void*), void* | ||
73 | return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | 68 | return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; |
74 | } | 69 | } |
75 | 70 | ||
76 | - t_JZsdk_TaskMgmt_TaskInput *task = (t_JZsdk_TaskMgmt_TaskInput*)malloc(sizeof(t_JZsdk_TaskMgmt_TaskInput)); | 71 | + t_JZsdk_TaskFuntionInput *task = (t_JZsdk_TaskFuntionInput*)malloc(sizeof(t_JZsdk_TaskFuntionInput)); |
77 | if (task == NULL) | 72 | if (task == NULL) |
78 | { | 73 | { |
79 | // 处理内存分配失败的情况 | 74 | // 处理内存分配失败的情况 |
@@ -81,7 +76,7 @@ T_JZsdkReturnCode TaskManagement_SubmitTask(void (*task_function)(void*), void* | @@ -81,7 +76,7 @@ T_JZsdkReturnCode TaskManagement_SubmitTask(void (*task_function)(void*), void* | ||
81 | } | 76 | } |
82 | 77 | ||
83 | task->task_function = task_function; | 78 | task->task_function = task_function; |
84 | - task->data = data; | 79 | + task->args = data; |
85 | 80 | ||
86 | //将发送内容放入任务 | 81 | //将发送内容放入任务 |
87 | TaskPool[i].task = task; | 82 | TaskPool[i].task = task; |
@@ -109,7 +104,7 @@ static void* TaskManagement_ThreadFunction(void* arg) | @@ -109,7 +104,7 @@ static void* TaskManagement_ThreadFunction(void* arg) | ||
109 | 104 | ||
110 | if (pool->task->task_function != NULL) | 105 | if (pool->task->task_function != NULL) |
111 | { | 106 | { |
112 | - pool->task->task_function(pool->task->data); | 107 | + pool->task->task_function(pool->task->args); |
113 | } | 108 | } |
114 | 109 | ||
115 | // 执行完成,将状态置为未忙碌 | 110 | // 执行完成,将状态置为未忙碌 |
@@ -23,6 +23,12 @@ extern "C" { | @@ -23,6 +23,12 @@ extern "C" { | ||
23 | 23 | ||
24 | /* Exported types ------------------------------------------------------------*/ | 24 | /* Exported types ------------------------------------------------------------*/ |
25 | 25 | ||
26 | +//用于传递指针函数的类型 | ||
27 | +typedef struct t_JZsdk_TaskFuntionInput{ | ||
28 | + void (*task_function)(void*); //任务函数指针,用于指定 执行的任务 | ||
29 | + void *args; // 任务参数 //任务参数的地址 用于输入任务内容 | ||
30 | +} t_JZsdk_TaskFuntionInput; | ||
31 | + | ||
26 | /* Exported functions --------------------------------------------------------*/ | 32 | /* Exported functions --------------------------------------------------------*/ |
27 | T_JZsdkReturnCode TaskManagement_Init(); | 33 | T_JZsdkReturnCode TaskManagement_Init(); |
28 | T_JZsdkReturnCode TaskManagement_SubmitTask(void (*task_function)(void*), void* data); | 34 | T_JZsdkReturnCode TaskManagement_SubmitTask(void (*task_function)(void*), void* data); |
@@ -7,7 +7,7 @@ | @@ -7,7 +7,7 @@ | ||
7 | #define VERSION_CHOOSE_H | 7 | #define VERSION_CHOOSE_H |
8 | #include "./ConfigParams.h" | 8 | #include "./ConfigParams.h" |
9 | //1~10行 除了D可以修改版本选择 禁止动任何东西 | 9 | //1~10行 除了D可以修改版本选择 禁止动任何东西 |
10 | -#define DEVICE_VERSION JZ_C1 | 10 | +#define DEVICE_VERSION JZ_H150S |
11 | 11 | ||
12 | //禁止修改行 选择是串口程序 还是 psdk程序 | 12 | //禁止修改行 选择是串口程序 还是 psdk程序 |
13 | #define APP_VERSION APP_PSDK | 13 | #define APP_VERSION APP_PSDK |
@@ -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 0x05 | 22 | +#define DEBUG_VERSION 0x02 |
23 | 23 | ||
24 | //禁止修改行 滤波方式 | 24 | //禁止修改行 滤波方式 |
25 | #define FILTERING_TYPE HIGH_PASS_FILTERING | 25 | #define FILTERING_TYPE HIGH_PASS_FILTERING |
@@ -75,10 +75,13 @@ | @@ -75,10 +75,13 @@ | ||
75 | //是否加载RTK_MPP模块 | 75 | //是否加载RTK_MPP模块 |
76 | #ifdef MACRO_RTK_MPP_MODULE | 76 | #ifdef MACRO_RTK_MPP_MODULE |
77 | #define RTK_MPP_STATUS VERSION_SWITCH_ON | 77 | #define RTK_MPP_STATUS VERSION_SWITCH_ON |
78 | + #define RTK_MPP_STATUS_ON | ||
78 | #else | 79 | #else |
79 | #define RTK_MPP_STATUS VERSION_SWITCH_OFF | 80 | #define RTK_MPP_STATUS VERSION_SWITCH_OFF |
80 | #endif | 81 | #endif |
81 | 82 | ||
83 | + | ||
84 | + | ||
82 | //是否加载WIRINGPI模块 | 85 | //是否加载WIRINGPI模块 |
83 | #ifdef MACRO_WIRINGPI_MODULE | 86 | #ifdef MACRO_WIRINGPI_MODULE |
84 | #define WIRINGPI_STATUS_ON | 87 | #define WIRINGPI_STATUS_ON |
@@ -109,6 +112,7 @@ | @@ -109,6 +112,7 @@ | ||
109 | 112 | ||
110 | //是否加载RTK_MPP模块 | 113 | //是否加载RTK_MPP模块 |
111 | #define RTK_MPP_STATUS VERSION_SWITCH_ON | 114 | #define RTK_MPP_STATUS VERSION_SWITCH_ON |
115 | + #define RTK_MPP_STATUS_ON | ||
112 | 116 | ||
113 | //是否加载WIRINGPI模块 | 117 | //是否加载WIRINGPI模块 |
114 | #define WIRINGPI_STATUS_ON | 118 | #define WIRINGPI_STATUS_ON |
@@ -17,6 +17,14 @@ | @@ -17,6 +17,14 @@ | ||
17 | 17 | ||
18 | static int CameraFd = 0; | 18 | static int CameraFd = 0; |
19 | 19 | ||
20 | +//临时方案 后续会改写法合并到t_JZsdk_TaskFuntionInput(搞起来有点麻烦) | ||
21 | +typedef struct t_FrameCatch_TaskFuntionInput | ||
22 | +{ | ||
23 | + void (*task_function)(void*); //任务函数指针,用于指定 执行的任务 | ||
24 | + void* data; //数据指针 | ||
25 | + unsigned int data_size; //数据大小 | ||
26 | +} t_FrameCatch_TaskFuntionInput; | ||
27 | + | ||
20 | //多线程抓取数据线程 | 28 | //多线程抓取数据线程 |
21 | static void *JZsdk_Catch_MultiThread(void *args) | 29 | static void *JZsdk_Catch_MultiThread(void *args) |
22 | { | 30 | { |
@@ -45,11 +53,55 @@ static void *JZsdk_Catch_MultiThread(void *args) | @@ -45,11 +53,55 @@ static void *JZsdk_Catch_MultiThread(void *args) | ||
45 | } | 53 | } |
46 | 54 | ||
47 | 55 | ||
56 | +/****************************** | ||
57 | + * | ||
58 | + * 相机抓取初始化 | ||
59 | + * ThreadMode: 0为单线程 1为多线程 | ||
60 | + * | ||
61 | + * ******************************/ | ||
62 | +T_JZsdkReturnCode JZsdk_FrameCatch_Init(int ThreadMode) | ||
63 | +{ | ||
64 | + T_JZsdkReturnCode ret; | ||
65 | + | ||
66 | + //初始化数据接收线程 | ||
67 | + pthread_t ReadDataTask; | ||
68 | + pthread_attr_t task_attribute; //线程属性 | ||
69 | + pthread_attr_init(&task_attribute); //初始化线程属性 | ||
70 | + pthread_attr_setdetachstate(&task_attribute, PTHREAD_CREATE_DETACHED); //设置线程分离属性 | ||
71 | + | ||
72 | + if (ThreadMode == 0) | ||
73 | + { | ||
74 | + int opus_Protection = pthread_create(&ReadDataTask,&task_attribute,JZsdk_Catch_SingleThread,NULL); //线程 | ||
75 | + if(opus_Protection != 0) | ||
76 | + { | ||
77 | + JZSDK_LOG_ERROR("创建相机抓取并处理初始化线程失败!"); | ||
78 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
79 | + } | ||
80 | + } | ||
81 | + else if (ThreadMode == 1) | ||
82 | + { | ||
83 | + int opus_Protection = pthread_create(&ReadDataTask,&task_attribute,JZsdk_Catch_MultiThread,NULL); //线程 | ||
84 | + if(opus_Protection != 0) | ||
85 | + { | ||
86 | + JZSDK_LOG_ERROR("创建相机抓取并处理初始化线程失败!"); | ||
87 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
88 | + } | ||
89 | + } | ||
90 | + | ||
91 | + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
92 | +} | ||
93 | + | ||
94 | + | ||
95 | + | ||
96 | + | ||
48 | //单线程抓取数据线程 | 97 | //单线程抓取数据线程 |
49 | -static void *JZsdk_Catch_SingleThread(void *args) | 98 | +static void *JZsdk_Catch_SingleThread2(void *args) |
50 | { | 99 | { |
100 | + t_FrameCatch_TaskFuntionInput *task = (t_FrameCatch_TaskFuntionInput *)args; | ||
51 | while (1) | 101 | while (1) |
52 | { | 102 | { |
103 | + task->task_function(); | ||
104 | + | ||
53 | unsigned int buf_size = 0; | 105 | unsigned int buf_size = 0; |
54 | unsigned char *buf = NULL; | 106 | unsigned char *buf = NULL; |
55 | 107 | ||
@@ -66,19 +118,25 @@ static void *JZsdk_Catch_SingleThread(void *args) | @@ -66,19 +118,25 @@ static void *JZsdk_Catch_SingleThread(void *args) | ||
66 | 118 | ||
67 | //进行数据处理 | 119 | //进行数据处理 |
68 | VideoMgmt_Single_FrameIn(buf, buf_size); | 120 | VideoMgmt_Single_FrameIn(buf, buf_size); |
121 | + | ||
122 | + task->task_function(); | ||
69 | 123 | ||
70 | //归还图片 | 124 | //归还图片 |
71 | V4L2_CameraFrameRecord_OnlyReturnFrame(); | 125 | V4L2_CameraFrameRecord_OnlyReturnFrame(); |
72 | } | 126 | } |
73 | } | 127 | } |
74 | 128 | ||
75 | -/****************************** | 129 | + |
130 | +/******************************************** | ||
131 | + * | ||
76 | * | 132 | * |
77 | * 相机抓取初始化 | 133 | * 相机抓取初始化 |
78 | - * ThreadMode: 0为单线程 1为多线程 | ||
79 | * | 134 | * |
80 | - * ******************************/ | ||
81 | -T_JZsdkReturnCode JZsdk_FrameCatch_Init(int ThreadMode) | 135 | + * 传入线程的抓取模式 ThreadMode: 0为单线程 1为多线程 |
136 | + * 传入线程的处理函数 task_function | ||
137 | + * | ||
138 | + * *****************************************/ | ||
139 | +T_JZsdkReturnCode JZsdk_FrameCatch_Init2(int ThreadMode, T_JZsdkReturnCode (*task_function)(void*)) | ||
82 | { | 140 | { |
83 | T_JZsdkReturnCode ret; | 141 | T_JZsdkReturnCode ret; |
84 | 142 | ||
@@ -88,9 +146,19 @@ T_JZsdkReturnCode JZsdk_FrameCatch_Init(int ThreadMode) | @@ -88,9 +146,19 @@ T_JZsdkReturnCode JZsdk_FrameCatch_Init(int ThreadMode) | ||
88 | pthread_attr_init(&task_attribute); //初始化线程属性 | 146 | pthread_attr_init(&task_attribute); //初始化线程属性 |
89 | pthread_attr_setdetachstate(&task_attribute, PTHREAD_CREATE_DETACHED); //设置线程分离属性 | 147 | pthread_attr_setdetachstate(&task_attribute, PTHREAD_CREATE_DETACHED); //设置线程分离属性 |
90 | 148 | ||
149 | + t_FrameCatch_TaskFuntionInput *task = (t_FrameCatch_TaskFuntionInput*)malloc(sizeof(t_FrameCatch_TaskFuntionInput)); | ||
150 | + if (task == NULL) | ||
151 | + { | ||
152 | + // 处理内存分配失败的情况 | ||
153 | + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; | ||
154 | + } | ||
155 | + | ||
156 | + task->task_function = task_function; | ||
157 | + task->args = NULL; | ||
158 | + | ||
91 | if (ThreadMode == 0) | 159 | if (ThreadMode == 0) |
92 | { | 160 | { |
93 | - int opus_Protection = pthread_create(&ReadDataTask,&task_attribute,JZsdk_Catch_SingleThread,NULL); //线程 | 161 | + int opus_Protection = pthread_create(&ReadDataTask,&task_attribute,JZsdk_Catch_SingleThread,(void *)task); //线程 |
94 | if(opus_Protection != 0) | 162 | if(opus_Protection != 0) |
95 | { | 163 | { |
96 | JZSDK_LOG_ERROR("创建相机抓取并处理初始化线程失败!"); | 164 | JZSDK_LOG_ERROR("创建相机抓取并处理初始化线程失败!"); |
@@ -99,7 +167,7 @@ T_JZsdkReturnCode JZsdk_FrameCatch_Init(int ThreadMode) | @@ -99,7 +167,7 @@ T_JZsdkReturnCode JZsdk_FrameCatch_Init(int ThreadMode) | ||
99 | } | 167 | } |
100 | else if (ThreadMode == 1) | 168 | else if (ThreadMode == 1) |
101 | { | 169 | { |
102 | - int opus_Protection = pthread_create(&ReadDataTask,&task_attribute,JZsdk_Catch_MultiThread,NULL); //线程 | 170 | + int opus_Protection = pthread_create(&ReadDataTask,&task_attribute,JZsdk_Catch_MultiThread,(void *)task); //线程 |
103 | if(opus_Protection != 0) | 171 | if(opus_Protection != 0) |
104 | { | 172 | { |
105 | JZSDK_LOG_ERROR("创建相机抓取并处理初始化线程失败!"); | 173 | JZSDK_LOG_ERROR("创建相机抓取并处理初始化线程失败!"); |
Module/MediaProc/Camera/JZC1/JZC1.c
0 → 100644
1 | + | ||
2 | +#include <stdio.h> | ||
3 | +#include "MediaProc.h" | ||
4 | +#include "IrcC1.h" | ||
5 | +#include "MediaParm.h" | ||
6 | + | ||
7 | +#include "JZsdkLib.h" | ||
8 | +#include "BaseConfig.h" | ||
9 | + | ||
10 | +#ifdef RTK_MPP_STATUS_ON | ||
11 | + | ||
12 | +#include "MediaProc/MultProc/RTK_mmp/RTK_mmp.h" | ||
13 | + | ||
14 | +//c1的红外编码权柄 | ||
15 | +void *JZC1_Irc_enc_handle = NULL; | ||
16 | + | ||
17 | +//c1的光学相机编码权柄 | ||
18 | +void *JZC1_Opt_enc_handle = NULL; | ||
19 | +void *JZC1_Opt_dec_handle = NULL; | ||
20 | + | ||
21 | +#endif | ||
22 | + | ||
23 | +T_JZsdkReturnCode JZC1_Init() | ||
24 | +{ | ||
25 | + T_JZsdkReturnCode ret = JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; | ||
26 | + | ||
27 | +#ifdef RTK_MPP_STATUS_ON | ||
28 | + //1、初始化编解码模块 | ||
29 | + | ||
30 | + //初始化红外的编解码器 | ||
31 | + RTK_mmp_enc_Init(&JZC1_Irc_enc_handle, MPP_VIDEO_CodingAVC, MPP_FMT_YUV420P, FIRST_WIDTH, FIRST_HEIGHT, 25, 5); | ||
32 | + | ||
33 | + //初始化光学的编解码器 | ||
34 | + RTK_mmp_enc_Init(&JZC1_Opt_enc_handle, MPP_VIDEO_CodingAVC, MPP_FMT_YUV420P, SECOND_WIDTH, SECOND_HEIGHT, 25, 5); | ||
35 | + RTK_mmp_dec_Init(&JZC1_Opt_dec_handle, MPP_VIDEO_CodingAVC, MPP_FMT_YUV420P, SECOND_WIDTH, SECOND_HEIGHT, 30, 15); | ||
36 | + | ||
37 | + //2、相机初始化 | ||
38 | + Camera_Init(); | ||
39 | + | ||
40 | + //初始化光学相机 | ||
41 | + ret = JZsdk_Kt_Camera_Init(); | ||
42 | + if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS) | ||
43 | + { | ||
44 | + JZSDK_LOG_ERROR("光学相机初始化失败"); | ||
45 | + } | ||
46 | + else | ||
47 | + { | ||
48 | + //初始化数据转换模块 | ||
49 | + JZsdk_Kt_Cam_DataDeal_Init(); | ||
50 | + } | ||
51 | + | ||
52 | + | ||
53 | +#endif | ||
54 | +} |
@@ -36,7 +36,6 @@ extern "C" { | @@ -36,7 +36,6 @@ extern "C" { | ||
36 | #define SATURATION (128) //饱和度 摄像头饱和度范围为 1-255 默认128 | 36 | #define SATURATION (128) //饱和度 摄像头饱和度范围为 1-255 默认128 |
37 | #define EXPSURE (100) //曝光值 摄像头曝光值范围: 5-2500 默认auto设置 | 37 | #define EXPSURE (100) //曝光值 摄像头曝光值范围: 5-2500 默认auto设置 |
38 | 38 | ||
39 | - | ||
40 | #define SECOND_WIDTH 1920 | 39 | #define SECOND_WIDTH 1920 |
41 | #define SECOND_HEIGHT 1080 | 40 | #define SECOND_HEIGHT 1080 |
42 | #define SECOND_FRAME_NUM 30 | 41 | #define SECOND_FRAME_NUM 30 |
@@ -26,6 +26,13 @@ static T_JZsdkReturnCode MediaProc_SingleThreading() | @@ -26,6 +26,13 @@ static T_JZsdkReturnCode MediaProc_SingleThreading() | ||
26 | //2、转码模块初始化 | 26 | //2、转码模块初始化 |
27 | VideoStreamTransCode_Init(); | 27 | VideoStreamTransCode_Init(); |
28 | } | 28 | } |
29 | + | ||
30 | + //如果是昆腾相机 红外+光学 则红外为1号,光学为2号 | ||
31 | + if (DEVICE_VERSION == JZ_C1) | ||
32 | + { | ||
33 | + //1、初始化编解码处理模块 | ||
34 | + JZsdk_Kt_IrcMMP_Init(FIRST_WIDTH ,FIRST_HEIGHT, 25, 5 ,SECOND_WIDTH ,SECOND_HEIGHT, 30, 15); | ||
35 | + } | ||
29 | } | 36 | } |
30 | 37 | ||
31 | //多线程方案 | 38 | //多线程方案 |
@@ -12,6 +12,15 @@ | @@ -12,6 +12,15 @@ | ||
12 | 12 | ||
13 | /* Includes ------------------------------------------------------------------*/ | 13 | /* Includes ------------------------------------------------------------------*/ |
14 | #include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h" | 14 | #include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h" |
15 | +#include "BaseConfig.h" | ||
16 | + | ||
17 | +#ifdef RTK_MPP_STATUS_ON | ||
18 | + | ||
19 | + | ||
20 | +#include "MediaProc/MultProc/RTK_mmp/Dec/RTK_mmp_dec.h" | ||
21 | +#include "MediaProc/MultProc/RTK_mmp/Enc/RTK_mmp_enc.h" | ||
22 | + | ||
23 | +#endif | ||
15 | 24 | ||
16 | #ifdef __cplusplus | 25 | #ifdef __cplusplus |
17 | extern "C" { | 26 | extern "C" { |
-
请 注册 或 登录 后发表评论