...
|
...
|
@@ -45,6 +45,11 @@ typedef struct C1_RgaInfo |
|
|
static C1_RgaInfo *g_C1_RgaIrcInfo = NULL;
|
|
|
static C1_RgaInfo *g_C1_RgaOptInfo = NULL;
|
|
|
|
|
|
static unsigned char *g_MixedIrc_Buffer = NULL;
|
|
|
|
|
|
static unsigned char *g_MixedOpt_Buffer = NULL;
|
|
|
static unsigned int g_MixedOptBuffer_UseFlag = JZ_FLAGCODE_OFF;
|
|
|
|
|
|
#endif
|
|
|
|
|
|
#ifdef MEDIA_PROC_CONFIG_STATUS_ON
|
...
|
...
|
@@ -88,7 +93,7 @@ static T_JZsdkReturnCode JZC1_PushFrame(int CameraIndex, unsigned char* data, un |
|
|
}
|
|
|
|
|
|
//红外相机
|
|
|
if (currentIndex == 1 && CameraIndex == 1)
|
|
|
if (currentIndex == VIDEOMGMT_STREAMING_FLOW_INDEX_FIRST && CameraIndex == VIDEOMGMT_STREAMING_FLOW_INDEX_FIRST)
|
|
|
{
|
|
|
|
|
|
//推送数据到流转模块
|
...
|
...
|
@@ -96,11 +101,19 @@ static T_JZsdkReturnCode JZC1_PushFrame(int CameraIndex, unsigned char* data, un |
|
|
}
|
|
|
|
|
|
//光学相机
|
|
|
if(CameraIndex == 2 && currentIndex == 2)
|
|
|
if(CameraIndex == VIDEOMGMT_STREAMING_FLOW_INDEX_SECOND && currentIndex == VIDEOMGMT_STREAMING_FLOW_INDEX_SECOND)
|
|
|
{
|
|
|
//推送数据到流转模块
|
|
|
VideoMgmt_Single_FrameIn(data, data_len);
|
|
|
}
|
|
|
|
|
|
//组合视频流
|
|
|
if (currentIndex == VIDEOMGMT_STREAMING_FLOW_INDEX_THIRD && CameraIndex == VIDEOMGMT_STREAMING_FLOW_INDEX_THIRD)
|
|
|
{
|
|
|
//推送数据到流转模块
|
|
|
VideoMgmt_Single_FrameIn(data, data_len);
|
|
|
}
|
|
|
|
|
|
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
|
|
|
}
|
|
|
|
...
|
...
|
@@ -173,18 +186,17 @@ static T_JZsdkReturnCode JZC1_OptDeal(unsigned char *data, unsigned int data_len |
|
|
memcpy(mpp_buffer_get_ptr(temp), temp_data, size);
|
|
|
|
|
|
free(temp_data);
|
|
|
|
|
|
}
|
|
|
|
|
|
//测试
|
|
|
MppBuffer temp = mpp_frame_get_buffer(yuv_data);
|
|
|
RK_U32 h = mpp_frame_get_hor_stride(yuv_data);
|
|
|
RK_U32 w = mpp_frame_get_ver_stride(yuv_data);
|
|
|
|
|
|
int size = (h * w * 1.5);
|
|
|
|
|
|
unsigned char *temp_data = (unsigned char *)malloc(size);
|
|
|
memcpy(temp_data, mpp_buffer_get_ptr(temp), size);
|
|
|
//将数据放入混合缓冲区
|
|
|
MppBuffer temp = mpp_frame_get_buffer(yuv_data);
|
|
|
if (g_MixedOpt_Buffer != NULL && g_MixedOptBuffer_UseFlag == JZ_FLAGCODE_OFF)
|
|
|
{
|
|
|
g_MixedOptBuffer_UseFlag = JZ_FLAGCODE_ON;
|
|
|
memcpy(g_MixedOpt_Buffer, mpp_buffer_get_ptr(temp), (mpp_frame_get_hor_stride(yuv_data) * mpp_frame_get_ver_stride(yuv_data) * 1.5));
|
|
|
g_MixedOptBuffer_UseFlag = JZ_FLAGCODE_OFF;
|
|
|
}
|
|
|
|
|
|
|
|
|
//将返回的数据输入进编码器
|
...
|
...
|
@@ -266,7 +278,9 @@ static T_JZsdkReturnCode JZC1_IrcDeal(unsigned char *data, unsigned int data_len |
|
|
break;
|
|
|
|
|
|
case 3:
|
|
|
ZoomRatio = 8;
|
|
|
//红外做不了8倍放大咧
|
|
|
ZoomRatio = 4;
|
|
|
//ZoomRatio = 8;
|
|
|
break;
|
|
|
|
|
|
default:
|
...
|
...
|
@@ -279,6 +293,12 @@ static T_JZsdkReturnCode JZC1_IrcDeal(unsigned char *data, unsigned int data_len |
|
|
JZC1_RgaDeal(g_C1_RgaIrcInfo, ZoomRatio, raw_data, &raw_data_len);
|
|
|
}
|
|
|
|
|
|
//将数据放入混合缓冲区
|
|
|
if (g_MixedIrc_Buffer != NULL)
|
|
|
{
|
|
|
memcpy(g_MixedIrc_Buffer, raw_data, raw_data_len);
|
|
|
}
|
|
|
|
|
|
//将原始码流数据写入到编码器 并转换为h264
|
|
|
unsigned char *h264Data = NULL;
|
|
|
unsigned int h264DataLen = 0;
|
...
|
...
|
@@ -586,8 +606,6 @@ static T_JZsdkReturnCode JZsdk_JZC1_Irc_Data_Init() |
|
|
*
|
|
|
* ******************/
|
|
|
|
|
|
static unsigned char *g_MixedIrc_Buffer = NULL;
|
|
|
static unsigned char *g_MixedOpt_Buffer = NULL;
|
|
|
|
|
|
/******************
|
|
|
*
|
...
|
...
|
@@ -615,51 +633,102 @@ static void *MixedVideo_Thread(void *args) |
|
|
//设置间隔时间
|
|
|
long long period = NSEC_PER_SEC / TARGET_FPS;
|
|
|
|
|
|
//混合视频缓冲区
|
|
|
unsigned char * MixedIrc_Buffer = (unsigned char *)malloc((JZ_ALIGN(FIRST_WIDTH, 16)) * (JZ_ALIGN(FIRST_HEIGHT, 16)) * 3 / 2);
|
|
|
unsigned char * MixedOpt_Buffer = (unsigned char *)malloc(JZ_ALIGN(SECOND_WIDTH, 16) * JZ_ALIGN(SECOND_HEIGHT, 16) * 3 / 2);
|
|
|
|
|
|
//初始化混合视频的rga
|
|
|
int Irc_width = JZ_ALIGN(FIRST_WIDTH, 16);
|
|
|
int Irc_height = JZ_ALIGN(FIRST_HEIGHT, 16);
|
|
|
int IRc_Rect_x = 0;
|
|
|
int IRc_Rect_y = 0;
|
|
|
int Irc_Rect_w = JZ_ALIGN(FIRST_WIDTH, 16);
|
|
|
int Irc_Rect_h = JZ_ALIGN(FIRST_HEIGHT, 16);
|
|
|
int Irc_Format = RK_FORMAT_YCbCr_420_SP;
|
|
|
|
|
|
int Opt_width = JZ_ALIGN(SECOND_WIDTH, 16);
|
|
|
int Opt_height = JZ_ALIGN(SECOND_HEIGHT, 16);
|
|
|
int Opt_Rect_x = 0;
|
|
|
int Opt_Rect_y = 0;
|
|
|
int Opt_Rect_w = JZ_ALIGN(SECOND_WIDTH, 16);
|
|
|
int Opt_Rect_h = JZ_ALIGN(SECOND_HEIGHT, 16);
|
|
|
int Opt_Format = RK_FORMAT_YCbCr_420_SP;
|
|
|
/***** 红外图像参数 **********************************************************************************************************/
|
|
|
|
|
|
//红外源图像
|
|
|
im_rect Irc_Rect;
|
|
|
Irc_Rect.x = 0;
|
|
|
Irc_Rect.y = 0;
|
|
|
Irc_Rect.width = JZ_ALIGN(FIRST_WIDTH, 16);
|
|
|
Irc_Rect.height = JZ_ALIGN(FIRST_HEIGHT, 16);
|
|
|
int IRc_Format = RK_FORMAT_YCbCr_420_SP;
|
|
|
|
|
|
//红外放大图像
|
|
|
im_rect Irc_ResizeRect;
|
|
|
Irc_ResizeRect.x = 0;
|
|
|
Irc_ResizeRect.y = 0;
|
|
|
Irc_ResizeRect.width = JZ_ALIGN(FIRST_WIDTH, 16) * 4;
|
|
|
Irc_ResizeRect.height = JZ_ALIGN(FIRST_HEIGHT, 16) * 4;
|
|
|
|
|
|
//红外裁剪区域
|
|
|
im_rect Irc_CropRect;
|
|
|
Irc_CropRect.width = Irc_ResizeRect.width / 4 * 3;
|
|
|
Irc_CropRect.height = Irc_ResizeRect.height / 4 * 3;
|
|
|
Irc_CropRect.x = (Irc_ResizeRect.width - Irc_CropRect.width)/2;
|
|
|
Irc_CropRect.y = (Irc_ResizeRect.height - Irc_CropRect.height)/2;
|
|
|
|
|
|
//红外源图像
|
|
|
RK_RgaImage *Irc_SrcImg = NULL;
|
|
|
RK_Rga_ImageInit(&Irc_SrcImg, Irc_width, Irc_height, Irc_Format, IRc_Rect_x, IRc_Rect_y, Irc_Rect_w, Irc_Rect_h);
|
|
|
RK_Rga_ImageInit(&Irc_SrcImg, Irc_Rect.width, Irc_Rect.height, IRc_Format, Irc_Rect.x, Irc_Rect.y, Irc_Rect.width, Irc_Rect.height);
|
|
|
|
|
|
//红外放大图像
|
|
|
RK_RgaImage *Irc_ResizeImg = NULL;
|
|
|
RK_Rga_ImageInit(&Irc_ResizeImg, Irc_width*4, Irc_height*4, Irc_Format, IRc_Rect_x, IRc_Rect_y, Irc_Rect_w*4, Irc_Rect_h*4);
|
|
|
RK_Rga_ImageInit(&Irc_ResizeImg, Irc_ResizeRect.width, Irc_ResizeRect.height, IRc_Format, Irc_ResizeRect.x, Irc_ResizeRect.y, Irc_ResizeRect.width, Irc_ResizeRect.height);
|
|
|
|
|
|
//红外裁剪图像
|
|
|
RK_RgaImage *Irc_CropImg = NULL;
|
|
|
RK_Rga_ImageInit(&Irc_CropImg, (Irc_width*4) /4 *3, (Irc_height*4) /4 *3, Irc_Format, (Irc_width*4)/4, (Irc_height*4)/4, (Irc_width*4) /4 *3, (Irc_height*4) /4 *3);
|
|
|
RK_Rga_ImageInit(&Irc_CropImg, Irc_CropRect.width, Irc_CropRect.height, IRc_Format, 0, 0, Irc_CropRect.width, Irc_CropRect.height);
|
|
|
|
|
|
/***** 光学图像参数 **********************************************************************************************************/
|
|
|
|
|
|
//光学源图像
|
|
|
im_rect Opt_Rect;
|
|
|
Opt_Rect.x = 0;
|
|
|
Opt_Rect.y = 0;
|
|
|
Opt_Rect.width = JZ_ALIGN(SECOND_WIDTH, 16);
|
|
|
Opt_Rect.height = JZ_ALIGN(SECOND_HEIGHT, 16);
|
|
|
int Opt_Format = RK_FORMAT_YCbCr_420_SP;
|
|
|
|
|
|
//光学源缩小图像
|
|
|
im_rect Opt_ResizeRect;
|
|
|
Opt_ResizeRect.x = 0;
|
|
|
Opt_ResizeRect.y = 0;
|
|
|
Opt_ResizeRect.width = JZ_ALIGN(SECOND_WIDTH, 16) / 2;
|
|
|
Opt_ResizeRect.height = JZ_ALIGN(SECOND_HEIGHT, 16) / 2;
|
|
|
|
|
|
//光学源图像
|
|
|
RK_RgaImage *Opt_SrcImg = NULL;
|
|
|
RK_Rga_ImageInit(&Opt_SrcImg, Opt_width, Opt_height, Opt_Format, Opt_Rect_x, Opt_Rect_y, Opt_Rect_w, Opt_Rect_h);
|
|
|
RK_Rga_ImageInit(&Opt_SrcImg, Opt_Rect.width, Opt_Rect.height, Opt_Format, Opt_Rect.x, Opt_Rect.y, Opt_Rect.width, Opt_Rect.height);
|
|
|
|
|
|
//光学的缩小图像
|
|
|
RK_RgaImage *Opt_ResizeImg = NULL;
|
|
|
RK_Rga_ImageInit(&Opt_ResizeImg, Opt_width/2, Opt_height/2, Opt_Format, Opt_Rect_x, Opt_Rect_y, Opt_Rect_w/2, Opt_Rect_h/2);
|
|
|
RK_Rga_ImageInit(&Opt_ResizeImg, Opt_ResizeRect.width, Opt_ResizeRect.height, Opt_Format, Opt_ResizeRect.x, Opt_ResizeRect.y, Opt_ResizeRect.width, Opt_ResizeRect.height);
|
|
|
|
|
|
|
|
|
/***** 目标图像参数 ***************************************************************************************************/
|
|
|
|
|
|
//目标图像的矩形
|
|
|
im_rect Dst_Rect;
|
|
|
Dst_Rect.x = 0;
|
|
|
Dst_Rect.y = 0;
|
|
|
Dst_Rect.width = JZ_ALIGN(SECOND_WIDTH, 16);
|
|
|
Dst_Rect.height = JZ_ALIGN(SECOND_HEIGHT, 16);
|
|
|
int Dst_Format = RK_FORMAT_YCbCr_420_SP;
|
|
|
|
|
|
//目标图像中光学图像的矩形
|
|
|
im_rect Dst_OptRect;
|
|
|
Dst_OptRect.x = Dst_Rect.width / 2;
|
|
|
Dst_OptRect.y = Dst_Rect.height / 4;
|
|
|
Dst_OptRect.width = Opt_ResizeRect.width;
|
|
|
Dst_OptRect.height = Opt_ResizeRect.height;
|
|
|
|
|
|
//目标图像中红外图像的矩形
|
|
|
im_rect Dst_IrcRect;
|
|
|
Dst_IrcRect.x = 0;
|
|
|
Dst_IrcRect.y = (Dst_Rect.height - Irc_CropRect.height) / 2;
|
|
|
Dst_IrcRect.width = Irc_CropRect.width;
|
|
|
Dst_IrcRect.height = Irc_CropRect.height;
|
|
|
|
|
|
//目标图像
|
|
|
RK_RgaImage *DstImg = NULL;
|
|
|
RK_Rga_ImageInit(&DstImg, Irc_width, Irc_height, Irc_Format, IRc_Rect_x, IRc_Rect_y, Irc_Rect_w, Irc_Rect_h);
|
|
|
RK_Rga_ImageInit(&DstImg, Dst_Rect.width, Dst_Rect.height, Dst_Format, Dst_Rect.x, Dst_Rect.y, Dst_Rect.width, Dst_Rect.height);
|
|
|
JZSDK_LOG_DEBUG("Dstimg witdh :%d height:%d DstImg->buf_size:%d", DstImg->width, DstImg->height, DstImg->buf_size);
|
|
|
|
|
|
//空缓冲区
|
|
|
rga_buffer_t EmptyImg = {0};
|
|
|
im_rect EmptyRect = {0};
|
|
|
|
|
|
//开始绘制画面,待优化,如多步骤合成为一个步骤
|
|
|
while (1)
|
|
|
{
|
|
|
//获取当前时间
|
...
|
...
|
@@ -672,23 +741,31 @@ static void *MixedVideo_Thread(void *args) |
|
|
//超过33ms
|
|
|
if (elapsed_time >= period)
|
|
|
{
|
|
|
// while (FrameBuffer_UseFlag == JZ_FLAGCODE_ON)
|
|
|
// {
|
|
|
// delayUs(100);
|
|
|
// }
|
|
|
if (g_MixedIrc_Buffer == NULL || g_MixedOpt_Buffer == NULL)
|
|
|
{
|
|
|
delayMs(100);
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
while (g_MixedOptBuffer_UseFlag == JZ_FLAGCODE_ON)
|
|
|
{
|
|
|
delayUs(100);
|
|
|
}
|
|
|
|
|
|
//将数据放入缓冲区
|
|
|
memcpy(MixedIrc_Buffer, g_MixedIrc_Buffer, (JZ_ALIGN(FIRST_WIDTH, 16)) * (JZ_ALIGN(FIRST_HEIGHT, 16)) * 3 / 2);
|
|
|
memcpy(MixedOpt_Buffer, g_MixedOpt_Buffer, JZ_ALIGN(SECOND_WIDTH, 16) * JZ_ALIGN(SECOND_HEIGHT, 16) * 3 / 2);
|
|
|
g_MixedOptBuffer_UseFlag = JZ_FLAGCODE_ON;
|
|
|
|
|
|
//填充输出图像
|
|
|
memset(DstImg->buf, 0x80, DstImg->buf_size);
|
|
|
|
|
|
//混合视频处理
|
|
|
memset(MixedIrc_Buffer, 0, sizeof(MixedIrc_Buffer));
|
|
|
memset(MixedOpt_Buffer, 0, sizeof(MixedOpt_Buffer));
|
|
|
memset(Irc_SrcImg->buf, 0, Irc_SrcImg->buf_size);
|
|
|
memset(Opt_SrcImg->buf, 0, Opt_SrcImg->buf_size);
|
|
|
|
|
|
memcpy(MixedIrc_Buffer, g_MixedIrc_Buffer, (JZ_ALIGN(FIRST_WIDTH, 16)) * (JZ_ALIGN(FIRST_HEIGHT, 16)) * 3 / 2);
|
|
|
memcpy(MixedOpt_Buffer, g_MixedOpt_Buffer, JZ_ALIGN(SECOND_WIDTH, 16) * JZ_ALIGN(SECOND_HEIGHT, 16) * 3 / 2);
|
|
|
//将数据放入缓冲区
|
|
|
memcpy(Irc_SrcImg->buf, g_MixedIrc_Buffer, (JZ_ALIGN(FIRST_WIDTH, 16)) * (JZ_ALIGN(FIRST_HEIGHT, 16)) * 3 / 2);
|
|
|
memcpy(Opt_SrcImg->buf, g_MixedOpt_Buffer, JZ_ALIGN(SECOND_WIDTH, 16) * JZ_ALIGN(SECOND_HEIGHT, 16) * 3 / 2);
|
|
|
|
|
|
//FrameBuffer_UseFlag = JZ_FLAGCODE_OFF;
|
|
|
g_MixedOptBuffer_UseFlag = JZ_FLAGCODE_OFF;
|
|
|
|
|
|
//光学数据处理
|
|
|
//缩小图像到1/2
|
...
|
...
|
@@ -709,21 +786,55 @@ static void *MixedVideo_Thread(void *args) |
|
|
}
|
|
|
|
|
|
//裁切红外图像
|
|
|
d_ret = imcrop(Irc_ResizeImg->img, Irc_CropImg->img, Irc_CropImg->rect);
|
|
|
d_ret = imcrop(Irc_ResizeImg->img, Irc_CropImg->img, Irc_CropRect);
|
|
|
if (d_ret != IM_STATUS_SUCCESS)
|
|
|
{
|
|
|
printf("opt crop failed\n");
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
//以下参考rga_alpha_yuv_demo.cpp
|
|
|
|
|
|
//将缩放好的光学画面放入目标画面
|
|
|
int usage = IM_SYNC | IM_ALPHA_BLEND_DST_OVER | IM_ALPHA_BLEND_PRE_MUL;
|
|
|
// d_ret = improcess()
|
|
|
d_ret = improcess(Opt_ResizeImg->img, DstImg->img, EmptyImg, Opt_ResizeRect, Dst_OptRect, EmptyRect, IM_SYNC);
|
|
|
if (d_ret != IM_STATUS_SUCCESS)
|
|
|
{
|
|
|
printf("opt improcess failed\n");
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
//将裁切好的红外画面放入目标画面
|
|
|
d_ret = improcess(Irc_CropImg->img, DstImg->img, EmptyImg, Irc_CropImg->rect, Dst_IrcRect, EmptyRect, IM_SYNC);
|
|
|
if (d_ret != IM_STATUS_SUCCESS)
|
|
|
{
|
|
|
printf("irc improcess failed\n");
|
|
|
}
|
|
|
|
|
|
//将原始码流数据写入到编码器 并转换为h264
|
|
|
unsigned char *h264Data = NULL;
|
|
|
unsigned int h264DataLen = 0;
|
|
|
|
|
|
//JZSDK_LOG_DEBUG("DstImg->buf_size:%d", DstImg->buf_size);
|
|
|
|
|
|
#ifdef RTK_MPP_STATUS_ON
|
|
|
MppPacket Packet = NULL;
|
|
|
|
|
|
RTK_mmp_enc_data_to_h264(JZsdk_RtkMmpGetEncHandleAddr(2), DstImg->buf, DstImg->buf_size, &Packet);
|
|
|
|
|
|
h264DataLen = mpp_packet_get_length(Packet);
|
|
|
h264Data = (unsigned char *)mpp_packet_get_pos(Packet);
|
|
|
//EncCfg->Packet_eos = mpp_packet_get_eos(packet);
|
|
|
// printf("获取到编码内容 len:%d\n",packet_len);
|
|
|
|
|
|
//释放掉packet
|
|
|
mpp_packet_deinit(&Packet);
|
|
|
#endif
|
|
|
|
|
|
// prev_time = current_time;
|
|
|
//推送视频流
|
|
|
JZC1_PushFrame(VIDEOMGMT_STREAMING_FLOW_INDEX_THIRD, h264Data, h264DataLen);
|
|
|
|
|
|
//JZSDK_LOG_DEBUG("混合一帧 :%d", h264DataLen);
|
|
|
|
|
|
//更新时间
|
|
|
prev_time = current_time;
|
|
|
}
|
|
|
|
|
|
// 为了防止过于频繁地调用 clock_gettime,可以添加一个小的睡眠时间
|
...
|
...
|
@@ -789,6 +900,10 @@ static T_JZsdkReturnCode JZC1_MediaInit() |
|
|
|
|
|
// RTK_mmp_dec_Init(JZsdk_RtkMmpGetDecHandleAddr(1), MPP_VIDEO_CodingMJPEG, MPP_FMT_YUV420SP, SECOND_WIDTH, SECOND_HEIGHT);
|
|
|
// RTK_mmp_enc_Init(JZsdk_RtkMmpGetEncHandleAddr(1), MPP_VIDEO_CodingAVC, MPP_FMT_YUV420SP, SECOND_WIDTH, SECOND_HEIGHT, 30, 15);
|
|
|
|
|
|
//初始化混合视频流的编码器
|
|
|
RTK_mmp_enc_Init(JZsdk_RtkMmpGetEncHandleAddr(2), MPP_VIDEO_CodingAVC, MPP_FMT_YUV420SP, SECOND_WIDTH, SECOND_HEIGHT, 30, 15);
|
|
|
|
|
|
#endif
|
|
|
|
|
|
//初始化Camera模块
|
...
|
...
|
@@ -824,7 +939,7 @@ static T_JZsdkReturnCode JZC1_MediaInit() |
|
|
//设置默认参数
|
|
|
|
|
|
//默认推送红外摄像头 后续改成 红外+光学 的组合画面
|
|
|
VideoMgmt_VideoStreamFlowIndex(VIDEOMGMT_STREAMING_FLOW_INDEX_FIRST);
|
|
|
VideoMgmt_VideoStreamFlowIndex(VIDEOMGMT_STREAMING_FLOW_INDEX_THIRD);
|
|
|
|
|
|
//设置快门为开
|
|
|
JZsdk_Camera_ShutterSwitch(JZ_FLAGCODE_ON);
|
...
|
...
|
@@ -837,6 +952,10 @@ static T_JZsdkReturnCode JZC1_MediaInit() |
|
|
value = 0;
|
|
|
Camera_param(JZ_FLAGCODE_SET, CAMERA_PIXEL_PSEUDO_COLOR_MODE, &value);
|
|
|
|
|
|
//设置默认打开自动校正
|
|
|
value = JZ_FLAGCODE_ON;
|
|
|
Proc_IRC_param(JZ_FLAGCODE_SET, JZSDK_WIDGET_BAD_PIXEL_CORRECT_MODE, &value);
|
|
|
|
|
|
//初始化变焦模块
|
|
|
Cam_Zoom_Init();
|
|
|
|
...
|
...
|
@@ -844,6 +963,9 @@ static T_JZsdkReturnCode JZC1_MediaInit() |
|
|
#ifdef RTK_RGA_STATUS_ON
|
|
|
ret = JZC1_RgaInit(&g_C1_RgaIrcInfo, JZ_ALIGN(FIRST_WIDTH, 16), JZ_ALIGN(FIRST_HEIGHT, 16), RK_FORMAT_YCbCr_420_SP);
|
|
|
ret = JZC1_RgaInit(&g_C1_RgaOptInfo, JZ_ALIGN(SECOND_WIDTH, 16), JZ_ALIGN(SECOND_HEIGHT, 16), RK_FORMAT_YCbCr_420_SP);
|
|
|
|
|
|
//混合视频初始化
|
|
|
JZC1_MixedVideo_Init();
|
|
|
#endif
|
|
|
|
|
|
#endif
|
...
|
...
|
@@ -938,7 +1060,7 @@ static T_JZsdkReturnCode JZC1_RgaDeal(C1_RgaInfo *rga_info, int resize, unsigned |
|
|
d_ret = imcrop(rga_info->src_img->img, rga_info->corp_img->img, rga_info->corp_img->rect);
|
|
|
if (d_ret != IM_STATUS_SUCCESS)
|
|
|
{
|
|
|
printf("crop failed\n");
|
|
|
printf("crop failed resize:%d\n",resize);
|
|
|
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
|
|
|
}
|
|
|
|
...
|
...
|
|