linuxOS_AP06/app/rkadk/include/rkadk_record.h

183 lines
5.4 KiB
C
Raw Normal View History

2025-06-03 04:28:32 +00:00
/*
* 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