JZ_h150s_h150t.c 3.9 KB
#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"




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;

    //音频库初始化
    AudioDeal_Init();
    
    if (mode == APP_UART)
    {
        //串口设备1初始化
        int value[1];
        value[0] = UART_DEV1_BITRATE;
        JZsdk_HalPort_Init(UART_DEV_1, value);
    }
    
    //h150t额外开启4g
    if (DEVICE_VERSION == JZ_H150T)
    {
        //4g设备初始化
        int value[1];
        value[0] = COMM_4G_UART_BITRATE;
        JZsdk_HalPort_Init(UART_4G, value);
    }

    if (mode == APP_UART)
    {
        //网口初始化
        JZsdk_NetWork_Init();
    }

    //喊话器初始化
    Megaphone_Init();

    //云台初始化
    Gimbal_Init(JZ_MODULE_CONTROL_WAY_INDEPENDENT);

    //视频流模块初始化
    T_JZsdkVideoMgmtHandler VideoMgmtHandler = {
        .SetNextFrame_IDR = NULL,
    };
    VideoMgmt_Init(VideoMgmtHandler);
    
    //相机初始化
    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");
    
}