mobile CCTV,mobile surveillance,police body worn cameras

 forgetPW
 registerNow
search
view: 1383|reply: 1

SmartEye客户端文件检索文件类型显示错误

[copyURL]

7

主题

16

帖子

69

积分

member

Rank: 2

积分
69
poston 2018-12-29 11:41 | 显示全部楼层 |阅读模式
如题:
客户端显示的所有文件类型为视频文件,出GPS文件除外



PU端文件检索接口的部分实现,红色部分已经根据文件类型,修改了iFileType
BVCU_Result pu_search_list(BVCSP_HSession hSession, BVCSP_Command* pCommand, BVCSP_Event_SessionCmd* pParam)
{
    PU_CHECK_POINTER(pCommand);
    PU_CHECK_POINTER(pParam);

    BVCU_Search_Request *pRequest = (BVCU_Search_Request *)pCommand->stMsgContent.pData;
    PU_CHECK_POINTER(pRequest);

    HI_S32 s32Ret = HI_FAILURE;
    BVCU_Search_FileInfo *pstFileInfo = NULL;
    HI_U32 u32Size = 0;
    BVCU_Search_Response stResponse;
    memset(&stResponse, 0x0, sizeof(stResponse));
    HI_U32 u32FileCount = 0;
    HI_U32 u32Count = 0;
    HI_U32 u32Idx = 0;
    HI_U32 u32GPSIdx = 0;
    HI_U32 u32SearchIdx = 0;
    HI_U32 u32Year, u32Month, u32Day, u32Hour, u32Minute, u32Second;
    HI_CHAR azFileName[256] = {0};
    HI_CHAR azTmpFileName[256] = {0};
    HI_CHAR azIMPFileName[256] = {0};
    HI_CHAR azMP4FileName[256] = {0};
    HI_CHAR azMP4PathName[256] = {0};
    HI_CHAR azMP4PathFileName[256] = {0};
    HI_CHAR azFilePerfixName[256] = {0};
    BVCSP_SessionInfo stSessionInfo;
    memset(&stSessionInfo, 0, sizeof(stSessionInfo));
    HI_U64 u64LastModifyTime = 0;
    struct tm stTm;
    BVCSP_Event_SessionCmd stParam;
    memset(&stParam, 0x0, sizeof(stParam));
#ifdef BVCSP_AUTH_ON
    HI_CHAR azID[32] = {0};
#endif


    MLOGD("SearchInfo : iType[%d], iPostition[%d], iCount[%d], iTotalCount[%d]\n", pRequest->stSearchInfo.iType, pRequest->stSearchInfo.iPostition,
            pRequest->stSearchInfo.iCount, pRequest->stSearchInfo.iTotalCount);

    /*
    *   TODO: Get file list by type
    */
    if (BVCU_SEARCH_TYPE_FILE == pRequest->stSearchInfo.iType)
    {
        s32Ret = HI_PDT_FileMng_GetFileCount(&u32FileCount);
        if (s32Ret != HI_SUCCESS)
        {
            MLOGE("HI_PDT_FileMng_GetGroupCount failed!\n");
            return BVCU_RESULT_E_FAILED;
        }

        u32GPSIdx = search_gps_filenum();
        MLOGD("GPS File  Count [%d]\n", u32GPSIdx);

        u32Size = (u32FileCount + u32GPSIdx) * sizeof(BVCU_Search_FileInfo);
        if (0 != u32Size)
        {
            pstFileInfo = (BVCU_Search_FileInfo *)malloc(u32Size);
            if (NULL == pstFileInfo)
            {
                MLOGE("malloc size %dKB failed!\n", u32Size / 1024);
                return BVCU_RESULT_E_FAILED;
            }

            memset(pstFileInfo, 0x0, u32Size);
        }

        s32Ret = search_gps_fileinfo(pstFileInfo);
        if (s32Ret != HI_SUCCESS)
        {
            MLOGW("search_gps_fileinfo failed! \n");
        }

        for (u32Idx = 0; u32Idx < u32FileCount; u32Idx ++)
        {
            memset(azFileName, 0x0, sizeof(azFileName));
            s32Ret = HI_PDT_FileMng_GetFileByIndex(u32Idx, azFileName, 256);
            if (s32Ret != HI_SUCCESS)
            {
                MLOGW("HI_PDT_FileMng_GetFileByIndex failed! %#x\n", s32Ret);
                continue;
            }

            u32SearchIdx = u32Idx + u32GPSIdx;

            pstFileInfo[u32SearchIdx].iRecordType = BVCU_STORAGE_RECORDTYPE_MANUAL;
            pstFileInfo[u32SearchIdx].iRecordID = (u32SearchIdx);
            memset(pstFileInfo[u32SearchIdx].szDesc1, 0x0, 64);
            memset(pstFileInfo[u32SearchIdx].szDesc2, 0x0, 64);

            memset(azFilePerfixName, 0x0, sizeof(azFilePerfixName));
            memset(azTmpFileName, 0x0, sizeof(azTmpFileName));

            sscanf(azFileName, "/%*[^/]/%*[^/]/%*[^/]/%*[^/]/%s", azTmpFileName);
            memcpy(azFilePerfixName, azFileName, strlen(azFileName) - strlen(azTmpFileName));

            /*
            * note : PU_1 is based on libBVCSP.so
            */
            if (NULL != strstr(azTmpFileName, ".MP4"))
            {
                memset(azMP4FileName, 0x0, sizeof(azMP4FileName));
                memcpy(azMP4FileName, azTmpFileName, strlen(azTmpFileName) - 6 /*_s.MP4 */);
                memset(azMP4PathName, 0x0, sizeof(azMP4PathName));
                memcpy(azMP4PathName, azFilePerfixName, strlen(azFilePerfixName) - 3 /*_s/ */);

                memset(azMP4PathFileName, 0x0, sizeof(azMP4PathFileName));
                sprintf(azMP4PathFileName, "%s/%s.MP4", azMP4PathName, azMP4FileName);

                /*
                *   libBVSCP no support IMP_ file
                */
                if (NULL != strstr(azTmpFileName, "IMP_"))
                {
                    memset(azIMPFileName, 0x0, sizeof(azIMPFileName));
                    sscanf(azMP4FileName, "IMP_%s", azIMPFileName);

                #ifdef BVCSP_AUTH_ON
                    memset(azID, 0x0, sizeof(azID));
                    snprintf(azID, 32, "PU_%s", g_pstPDTCfg->stDevMngParam.zfyinfo.device_id + BVCSP_DEVID_OFFSET);

                    sprintf(pstFileInfo[u32SearchIdx].szFilePath, "%s/%s_00_%s.MP4", azMP4PathName, azID, azIMPFileName);
                #else
                    sprintf(pstFileInfo[u32SearchIdx].szFilePath, "%s/PU_1_00_%s.MP4", azMP4PathName, azIMPFileName);
                #endif
                }
                else
                {
                #ifdef BVCSP_AUTH_ON
                    memset(azID, 0x0, sizeof(azID));
                    snprintf(azID, 32, "PU_%s", g_pstPDTCfg->stDevMngParam.zfyinfo.device_id + BVCSP_DEVID_OFFSET);

                    sprintf(pstFileInfo[u32SearchIdx].szFilePath, "%s/%s_00_%s.MP4", azMP4PathName, azID, azMP4FileName);
                #else
                    sprintf(pstFileInfo[u32SearchIdx].szFilePath, "%s/PU_1_00_%s.MP4", azMP4PathName, azMP4FileName);
                #endif
                }

                pstFileInfo[u32SearchIdx].iFileSize = search_get_fileinfo(azMP4PathFileName, &u64LastModifyTime);
            }
            else
            {
                if (NULL != strstr(azTmpFileName, "IMP_"))
                {
                    memset(azIMPFileName, 0x0, sizeof(azIMPFileName));
                    sscanf(azTmpFileName, "IMP_%s", azIMPFileName);

                #ifdef BVCSP_AUTH_ON
                    memset(azID, 0x0, sizeof(azID));
                    snprintf(azID, 32, "PU_%s", g_pstPDTCfg->stDevMngParam.zfyinfo.device_id + BVCSP_DEVID_OFFSET);

                    sprintf(pstFileInfo[u32SearchIdx].szFilePath, "%s%s_00_%s", azFilePerfixName, azID, azIMPFileName);
                #else
                    sprintf(pstFileInfo[u32SearchIdx].szFilePath, "%sPU_1_00_%s", azFilePerfixName, azIMPFileName);
                #endif
                }
                else
                {
                #ifdef BVCSP_AUTH_ON
                    memset(azID, 0x0, sizeof(azID));
                    snprintf(azID, 32, "PU_%s", g_pstPDTCfg->stDevMngParam.zfyinfo.device_id + BVCSP_DEVID_OFFSET);

                    sprintf(pstFileInfo[u32SearchIdx].szFilePath, "%s%s_00_%s", azFilePerfixName, azID, azTmpFileName);
                #else
                    sprintf(pstFileInfo[u32SearchIdx].szFilePath, "%sPU_1_00_%s", azFilePerfixName, azTmpFileName);
                #endif
                }

                pstFileInfo[u32SearchIdx].iFileSize = search_get_fileinfo(azFileName, &u64LastModifyTime);
            }

        #ifdef BVCSP_AUTH_ON
            memset(azID, 0x0, sizeof(azID));
            snprintf(azID, 32, "PU_%s", g_pstPDTCfg->stDevMngParam.zfyinfo.device_id + BVCSP_DEVID_OFFSET);

            sprintf(pstFileInfo[u32SearchIdx].szSourceID, "%s", azID);
        #else
            sprintf(pstFileInfo[u32SearchIdx].szSourceID, "%s", "PU_1");
        #endif

            if (0 == strncmp(azTmpFileName, "IMP_", 4))
            {
                snprintf(pstFileInfo[u32SearchIdx].szDesc1, 64, "%s", PU_CFG_IMPORTANT_FILE);
                sscanf(azTmpFileName, "IMP_%4d%2d%2d_%2d%2d%2d%*s", &u32Year, &u32Month, &u32Day,
                    &u32Hour, &u32Minute, &u32Second);
            }
            else
            {
                sscanf(azTmpFileName, "%4d%2d%2d_%2d%2d%2d%*s", &u32Year, &u32Month, &u32Day,
                    &u32Hour, &u32Minute, &u32Second);
            }

            /*
             *  Time calc
             */
            stTm.tm_year = (u32Year - 1900);
            stTm.tm_mon  = (u32Month - 1);
            stTm.tm_mday = u32Day;
            stTm.tm_hour = u32Hour;
            stTm.tm_min  = u32Minute;
            stTm.tm_sec  = u32Second;
            pstFileInfo[u32SearchIdx].iTimeBegin = (mktime(&stTm) - (8 * 3600));
            pstFileInfo[u32SearchIdx].iTimeEnd = (u64LastModifyTime - (8 * 3600));
            pstFileInfo[u32SearchIdx].iTimeRecord = pstFileInfo[u32SearchIdx].iTimeBegin;

            /*
             * Only support MP4 JPG and WAV
             */
            if (NULL != strstr(azTmpFileName, ".MP4"))
            {
                pstFileInfo[u32SearchIdx].iFileType = BVCU_STORAGE_FILE_TYPE_RECORD;
            }
            else if (NULL != strstr(azTmpFileName, ".JPG"))
            {
                pstFileInfo[u32SearchIdx].iFileType = BVCU_STORAGE_FILE_TYPE_CAPTURE;
                pstFileInfo[u32SearchIdx].iTimeEnd = pstFileInfo[u32SearchIdx].iTimeBegin;
            }
            else if (NULL != strstr(azTmpFileName, ".WAV"))
            {
                pstFileInfo[u32SearchIdx].iFileType = BVCU_STORAGE_FILE_TYPE_AUDIO;
            }

            u32Count ++;
        }

        u32Count += u32GPSIdx;

        MLOGD("u32FileCount [%d], u32Count [%d], u32Size [%dKB]\n", u32FileCount, u32Count, u32Size / 1024);

        stResponse.iCount = u32Count;
        stResponse.pData.pFileInfo = pstFileInfo;
        stResponse.stSearchInfo.iCount = u32Count;
        stResponse.stSearchInfo.iTotalCount = u32Count;
        stResponse.stSearchInfo.iType = BVCU_SEARCH_TYPE_FILE;
        stResponse.stSearchInfo.iPostition = 0;

        stParam.iPercent = 100;
        stParam.iResult = BVCU_RESULT_S_OK;
        stParam.stContent.pData = &stResponse;
        stParam.stContent.iDataCount = 1;
        pCommand->OnEvent(hSession, pCommand, &stParam);

        if (pstFileInfo)
        {
            free(pstFileInfo);
            pstFileInfo = NULL;
        }
    }

    return BVCU_RESULT_S_OK;
}




本帖子中包含更多资源

pls login 才可以下载或查看,没有帐号?registerNow

x
reply

使用道具 report

11

主题

199

帖子

921

积分

advMem

Rank: 4

积分
921
poston 2018-12-29 11:58 | 显示全部楼层
您好,文件类型和文件名不匹配的问题,我们已经修复过了,请等待下个版本。
reply agree Against

使用道具 report

creditRule

QQ|wireless surveillance

GMT+8, 2024-4-19 03:40 , Processed in 0.061526 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

QuickReply backToTop BackToList