183 lines
5.4 KiB
C
183 lines
5.4 KiB
C
|
|
/*
|
||
|
|
* Copyright (c) 2021 Rockchip, Inc. All Rights Reserved.
|
||
|
|
*
|
||
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
|
|
* you may not use this file except in compliance with the License.
|
||
|
|
* You may obtain a copy of the License at
|
||
|
|
*
|
||
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||
|
|
*
|
||
|
|
* Unless required by applicable law or agreed to in writing, software
|
||
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
|
|
* See the License for the specific language governing permissions and
|
||
|
|
* limitations under the License.
|
||
|
|
*/
|
||
|
|
|
||
|
|
#ifndef __RKADK_RECORD_H__
|
||
|
|
#define __RKADK_RECORD_H__
|
||
|
|
|
||
|
|
#ifdef __cplusplus
|
||
|
|
extern "C" {
|
||
|
|
#endif
|
||
|
|
|
||
|
|
#include "rkadk_common.h"
|
||
|
|
#include "rkadk_muxer.h"
|
||
|
|
#ifndef OS_RTT
|
||
|
|
#include "file_common.h"
|
||
|
|
#else
|
||
|
|
#include "../../common_algorithm/misc/include/file_common.h"
|
||
|
|
#endif
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
typedef RKADK_MUXER_FPS_ATTR_S RKADK_RECORD_FPS_ATTR_S;
|
||
|
|
typedef RKADK_MUXER_MANUAL_SPLIT_ATTR_S RKADK_REC_MANUAL_SPLIT_ATTR_S;
|
||
|
|
typedef RKADK_MUXER_EVENT_CALLBACK_FN RKADK_REC_EVENT_CALLBACK_FN;
|
||
|
|
typedef RKADK_MUXER_PTS_CALLBACK_FN RKADK_REC_PTS_CALLBACK_FN;
|
||
|
|
typedef RKADK_MUXER_REC_TYPE_E RKADK_REC_TYPE_E;
|
||
|
|
|
||
|
|
/* record create file function */
|
||
|
|
typedef RKADK_S32 (*RKADK_REC_REQUEST_FILE_NAMES_FN)(
|
||
|
|
RKADK_MW_PTR pRecorder, RKADK_U32 u32FileCnt,
|
||
|
|
RKADK_CHAR (*paszFilename)[RKADK_MAX_FILE_PATH_LEN]);
|
||
|
|
|
||
|
|
/** record task's attribute */
|
||
|
|
typedef struct {
|
||
|
|
RKADK_S32 s32CamID; /* camera id */
|
||
|
|
RKADK_U32 u32FragKeyFrame;
|
||
|
|
RKADK_REC_REQUEST_FILE_NAMES_FN pfnRequestFileNames; /* rec callbak */
|
||
|
|
RKADK_REC_EVENT_CALLBACK_FN pfnEventCallback; /* event callbak */
|
||
|
|
RKADK_REC_PTS_CALLBACK_FN pfnPtsCallback; /* pts callbak */
|
||
|
|
RKADK_AOV_ATTR_S stAovAttr;
|
||
|
|
RKADK_POST_ISP_ATTR_S *pstPostIspAttr;
|
||
|
|
RKADK_MOUMNT_SDCARD_FN pfnMountSdcard;
|
||
|
|
RKADK_PIP_ATTR_S stPipAttr[RECORD_FILE_NUM_MAX];
|
||
|
|
RKADK_U32 u32GetThumbTime[RECORD_FILE_NUM_MAX]; /* get thumbnail delay time(ms) when enbale file cache, default: 3000(ms) */
|
||
|
|
} RKADK_RECORD_ATTR_S;
|
||
|
|
|
||
|
|
/****************************************************************************/
|
||
|
|
/* Interface Definition */
|
||
|
|
/****************************************************************************/
|
||
|
|
/**
|
||
|
|
* @brief initialize file cache
|
||
|
|
* @return 0 success
|
||
|
|
* @return others failure
|
||
|
|
*/
|
||
|
|
RKADK_S32 RKADK_RECORD_FileCacheInit(FILE_CACHE_ARG *pstFileCacheAttr);
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief deinitialize file cache
|
||
|
|
* @return 0 success
|
||
|
|
* @return others failure
|
||
|
|
*/
|
||
|
|
RKADK_S32 RKADK_RECORD_FileCacheDeInit();
|
||
|
|
|
||
|
|
void RKADK_RECORD_FileCacheSetMode(RKADK_REC_TYPE_E enRecType);
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief create a new recorder
|
||
|
|
* @param[in]pstRecAttr : the attribute of recorder
|
||
|
|
* @param[out]ppRecorder : pointer of recorder
|
||
|
|
* @return 0 success
|
||
|
|
* @return others failure
|
||
|
|
*/
|
||
|
|
RKADK_S32 RKADK_RECORD_Create(RKADK_RECORD_ATTR_S *pstRecAttr,
|
||
|
|
RKADK_MW_PTR *ppRecorder);
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief destory a recorder.
|
||
|
|
* @param[in]pRecorder : pointer of recorder
|
||
|
|
* @return 0 success
|
||
|
|
* @return others failure
|
||
|
|
*/
|
||
|
|
RKADK_S32 RKADK_RECORD_Destroy(RKADK_MW_PTR pRecorder);
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief start recorder
|
||
|
|
* @param[in]pRecorder, pointer of recorder
|
||
|
|
* @return 0 success
|
||
|
|
* @return -1 failure
|
||
|
|
*/
|
||
|
|
RKADK_S32 RKADK_RECORD_Start(RKADK_MW_PTR pRecorder);
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief stop recorder
|
||
|
|
* @param[in]pRecorder : pointer of recorder
|
||
|
|
* @return 0 success
|
||
|
|
* @return others failure
|
||
|
|
*/
|
||
|
|
RKADK_S32 RKADK_RECORD_Stop(RKADK_MW_PTR pRecorder);
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief start recorder
|
||
|
|
* @param[in]pRecorder : pointer of recorder
|
||
|
|
* @param[in]enStrmType : stream type, mainStream or subStream
|
||
|
|
* @return 0 success
|
||
|
|
* @return -1 failure
|
||
|
|
*/
|
||
|
|
RKADK_S32 RKADK_RECORD_Single_Start(RKADK_MW_PTR pRecorder, RKADK_STREAM_TYPE_E enStrmType);
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief stop recorder
|
||
|
|
* @param[in]pRecorder : pointer of recorder
|
||
|
|
* @param[in]enStrmType : stream type, mainStream or subStream
|
||
|
|
* @return 0 success
|
||
|
|
* @return -1 failure
|
||
|
|
*/
|
||
|
|
RKADK_S32 RKADK_RECORD_Single_Stop(RKADK_MW_PTR pRecorder, RKADK_STREAM_TYPE_E enStrmType);
|
||
|
|
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @param[in]pRecorder : pointer of recorder
|
||
|
|
* @return 0 success
|
||
|
|
* @return others failure
|
||
|
|
*/
|
||
|
|
RKADK_S32 RKADK_RECORD_Reset(RKADK_MW_PTR *ppRecorder);
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief manual splite file.
|
||
|
|
* @param[in]pRecorder : pointer of recorder
|
||
|
|
* @param[in]pstSplitAttr : manual split attr.
|
||
|
|
* @return 0 success
|
||
|
|
* @return others failure
|
||
|
|
*/
|
||
|
|
RKADK_S32 RKADK_RECORD_ManualSplit(RKADK_MW_PTR pRecorder,
|
||
|
|
RKADK_REC_MANUAL_SPLIT_ATTR_S *pstSplitAttr);
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief get aenc chn id.
|
||
|
|
* @return aenc chn id success
|
||
|
|
* @return -1 failure
|
||
|
|
*/
|
||
|
|
RKADK_S32 RKADK_RECORD_GetAencChn();
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief toggle mirror implemented by VPSS
|
||
|
|
* @return 0 success
|
||
|
|
* @return -1 failure
|
||
|
|
*/
|
||
|
|
RKADK_S32 RKADK_RECORD_ToggleMirror(RKADK_MW_PTR pRecorder,
|
||
|
|
RKADK_STREAM_TYPE_E enStrmType,
|
||
|
|
int mirror);
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief toggle flip implemented by VPSS
|
||
|
|
* @return 0 success
|
||
|
|
* @return -1 failure
|
||
|
|
*/
|
||
|
|
RKADK_S32 RKADK_RECORD_ToggleFlip(RKADK_MW_PTR pRecorder,
|
||
|
|
RKADK_STREAM_TYPE_E enStrmType,
|
||
|
|
int flip);
|
||
|
|
|
||
|
|
RKADK_S32 RKADK_RECORD_SetRotation(RKADK_MW_PTR pRecorder,
|
||
|
|
ROTATION_E enRotation,
|
||
|
|
RKADK_STREAM_TYPE_E enStreamType);
|
||
|
|
|
||
|
|
RKADK_S32 RKADK_RECORD_SetPipAttr(RKADK_MW_PTR pRecorder, RKADK_PIP_ATTR_S *pstPipAttr);
|
||
|
|
|
||
|
|
#ifdef __cplusplus
|
||
|
|
}
|
||
|
|
#endif
|
||
|
|
#endif
|