Cam_Zoom.c 2.3 KB
#include <stdio.h>
#include <pthread.h>


#include "BaseConfig.h"
#include "JZsdkLib.h"   

#define ZOOM_VALUE_DETECTION_FREQUENCY  50 //每秒检测50次变焦值

static int g_Cam_ZoomTempValue = 0; //相机对焦临时变量 用于各个模块的输入使用
static int g_Cam_ZoomValue = 0; //相机对焦变量的实际对焦值, 0为最远(完整画面), 1000为最近(最大放大画面)

/*****************
 * 
 * 
 *  设置临时变焦值
 * 
 * 
 * *******************/
T_JZsdkReturnCode Cam_Zoom_SetTempValue(int *value)
{
    if (*value > 1000)
    {
        *value = 1000;
    }
    else if (*value < 0)
    {
        *value = 0;
    }

    g_Cam_ZoomTempValue = *value;
    return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}

/*************
 * 
 * 
 *  获取变焦值
 * 
 * 
 * *****************/
T_JZsdkReturnCode Cam_Zoom_GetValue(int *value)
{
    *value = g_Cam_ZoomValue;
    return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}

/*********************
 * 
 * 
 *  设置实际变焦值
 * 
 * 
 * *********************/
static T_JZsdkReturnCode Cam_Zoom_SetValue(int value)
{
    g_Cam_ZoomValue = value;

    //对外广播变焦值

    return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}


static void *ZoomValue_Thread(void *args)
{
    while (1)
    {
        //每一段时间检测输入的变焦值是否有变化
        delayMs(1000/ZOOM_VALUE_DETECTION_FREQUENCY);
        if (g_Cam_ZoomTempValue != g_Cam_ZoomValue)
        {
            Cam_Zoom_SetValue(g_Cam_ZoomTempValue);
        }

        //JZSDK_LOG_DEBUG("g_Cam_ZoomValue = %d , g_Cam_ZoomTempValue = %d", g_Cam_ZoomValue, g_Cam_ZoomTempValue);
    }
}

/******************
 * 
 * 
 *  变焦模块初始化
 * 
 * *****************/
T_JZsdkReturnCode Cam_Zoom_Init()
{
    //初始化处理现场
    pthread_t ZoomValue_Task;
	pthread_attr_t attribute; //线程属性
	pthread_attr_init(&attribute);  //初始化线程属性
	pthread_attr_setdetachstate(&attribute, PTHREAD_CREATE_DETACHED);      //设置线程分离属性
	int bufferdata_Protection = pthread_create(&ZoomValue_Task,&attribute,ZoomValue_Thread,NULL);		//线程
	if(bufferdata_Protection != 0)
	{
		JZSDK_LOG_ERROR("创建变焦模块失败!");
		return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
	}

    JZSDK_LOG_INFO("变焦模块初始化成功!");

    return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}