Rockchip RKADK Development Guide
:::info 文档信息
文档标识:RK-KF-YF-904 · 发布版本:V1.3.1 · 发布日期:2021-12-20 · 页数:129 · 语言:英文
原始文档:Rockchip_Developer_Guide_Linux_RKADK_CN.pdf
:::
章节大纲
- Rockchip RKADK Development Guide(P1)
- 系统概述(P8)
- 录像(P8)
- 概述(P8)
- API参考(P8)
- RKADK_RECORD_Create(P8)
- RKADK_RECORD_Destroy(P9)
- RKADK_RECORD_Start(P10)
- RKADK_RECORD_Stop(P11)
- RKADK_RECORD_ManualSplit(P12)
- RKADK_RECORD_RegisterEventCallback(P13)
- RKADK_RECORD_GetAencChn(P13)
- RKADK_GetThmInMp4(P14)
- RKADK_GetThmInMp4Ex(P15)
- RKADK_ThmBufFree(P15)
- 数据类型(P16)
- 公共数据类型(P17)
- RKADK_MW_PTR(P18)
- RKADK_MAX_SENSOR_CNT(P18)
- RECORD_FILE_NUM_MAX(P18)
- MUXER_EVENT_E(P18)
- MUXER_FILE_EVENT_INFO_S(P19)
- RKADK_REC_EVENT_INFO_S(P20)
- RKADK_REC_EVENT_CALLBACK_FN(P20)
- RKADK_REC_TYPE_E(P21)
- RKADK_REC_REQUEST_FILE_NAMES_FN(P21)
- RKADK_RECORD_ATTR_S(P22)
- MUXER_MANUAL_SPLIT_TYPE_E(P23)
- MUXER_PRE_MANUAL_SPLIT_ATTR_S(P23)
- RKADK_REC_MANUAL_SPLIT_ATTR_S(P24)
- 拍照(P25)
- 概述(P25)
- API 参考(P25)
- RKADK_PHOTO_Init(P25)
- RKADK_PHOTO_DeInit(P26)
- RKADK_PHOTO_TakePhoto(P26)
- RKADK_PHOTO_GetThmInJpg(P27)
- RKADK_PHOTO_GetThmInJpgEx(P28)
- RKADK_PHOTO_ThumbBufFree(P29)
- RKADK_PHOTO_GetData(P30)
- RKADK_PHOTO_FreeData(P31)
- 数据类型(P31)
- RKADK_PHOTO_TYPE_E(P32)
- RKADK_PHOTO_SINGLE_ATTR_S(P32)
- RKADK_PHOTO_MULTIPLE_ATTR_S(P33)
- RKADK_PHOTO_THUMB_ATTR_S(P33)
- RKADK_PHOTO_DATA_RECV_FN_PTR(P34)
- RKADK_PHOTO_ATTR_S(P35)
- RKADK_JPG_THUMB_TYPE_E(P36)
- RKADK_THUMB_TYPE_E(P37)
- RKADK_THUMB_ATTR_S(P38)
- RKADK_PHOTO_DATA_ATTR_S(P38)
- 远程预览(P40)
- 概述(P40)
- API参考(P40)
- RKADK_STREAM_VideoInit(P40)
- RKADK_STREAM_VideoDeInit(P41)
- RKADK_STREAM_VencStart(P41)
- RKADK_STREAM_VencStop(P42)
- RKADK_STREAM_GetVideoInfo(P43)
- RKADK_STREAM_VencRegisterCallback(P44)
- RKADK_STREAM_VencUnRegisterCallback(P45)
- RKADK_STREAM_AudioInit(P46)
- RKADK_STREAM_AudioDeInit(P46)
- RKADK_STREAM_AencStart(P47)
- RKADK_STREAM_AencStop(P48)
- RKADK_STREAM_GetAudioInfo(P49)
- RKADK_STREAM_AencRegisterCallback(P50)
- RKADK_STREAM_AencUnRegisterCallback(P50)
- 数据类型(P51)
- RKADK_CODEC_TYPE_E(P51)
- RKADK_VENC_DATA_PROC_FUNC(P52)
- RKADK_VIDEO_STREAM_S(P52)
- RKADK_VENC_DATA_PACK_S(P53)
- RKADK_VENC_DATA_TYPE_S(P54)
- RKADK_VIDEO_INFO_S(P55)
- RKADK_AENC_DATA_PROC_FUNC(P56)
- RKADK_AUDIO_STREAM_S(P56)
- RKADK_AUDIO_INFO_S(P57)
- 播放器(P58)
- 概述(P58)
- API 参考(P58)
- RKADK_PLAYER_Create(P58)
- RKADK_PLAYER_Destroy(P59)
- RKADK_PLAYER_SetDataSource(P59)
- RKADK_PLAYER_Prepare(P60)
- RKADK_PLAYER_SetVideoSink(P61)
- RKADK_PLAYER_Play(P62)
- RKADK_PLAYER_Stop(P63)
- RKADK_PLAYER_Pause(P64)
- RKADK_PLAYER_Seek(P64)
- RKADK_PLAYER_GetPlayStatus(P65)
- RKADK_PLAYER_GetDuration(P66)
- 数据类型(P67)
- RKADK_PLAYER_EVENT_E(P67)
- RKADK_PLAYER_EVENT_FN(P68)
- RKADK_PLAYER_CFG_S(P69)
- RKADK_PLAYER_VO_FORMAT_E(P70)
- RKADK_PLAYER_VO_DEV_E(P70)
- RKADK_PLAYER_VO_INTF_TYPE_E(P71)
- RKADK_PLAYER_VO_ATTR_S(P71)
- RKADK_PLAYER_FRAMEINFO_S(P72)
- RKADK_PLAYER_STATE_E(P74)
- 直播(P75)
- 概述(P75)
- API参考(P75)
- RTSP(P75)
- RKADK_RTSP_Init(P75)
- RKADK_RTSP_DeInit(P76)
- RKADK_RTSP_Start(P77)
- RKADK_RTSP_Stop(P77)
- RTMP(P78)
- RKADK_RTMP_Init(P78)
- RKADK_RTMP_DeInit(P79)
- RTSP(P75)
- 存储(P80)
- 概述(P80)
- API参考(P80)
- RKADK_STORAGE_Init(P80)
- RKADK_STORAGE_Deinit(P81)
- RKADK_STORAGE_GetDevAttr(P82)
- RKADK_STORAGE_GetMountStatus(P82)
- RKADK_STORAGE_GetCapacity(P83)
- RKADK_STORAGE_GetFileList(P84)
- RKADK_STORAGE_FreeFileList(P85)
- RKADK_STORAGE_GetFileNum(P86)
- RKADK_STORAGE_GetDevPath(P86)
- RKADK_STORAGE_Format(P87)
- 数据类型(P88)
- RKADK_MOUNT_STATUS(P88)
- RKADK_SORT_TYPE(P89)
- RKADK_SORT_CONDITION(P90)
- RKADK_STR_FOLDER_ATTR(P90)
- RKADK_STR_DEV_ATTR(P91)
- RKADK_FILE_INFO(P92)
- RKADK_FILE_LIST(P93)
- RKADK_FILE_LIST_ARRAY(P93)
- 本地预览(P94)
- 概述(P94)
- API参考(P94)
- RKADK_DISP_Init(P94)
- RKADK_DISP_DeInit(P95)
- VI ISP API(P97)
- 概述(P97)
- API参考(P97)
- RKADK_VI_ISP_Start(P97)
- RKADK_VI_ISP_Stop(P98)
- 参数设置(P99)
- 概述(P99)
- API参考(P99)
- RKADK_PARAM_Init(P99)
- RKADK_PARAM_GetCamParam(P100)
- RKADK_PARAM_SetCamParam(P101)
- RKADK_PARAM_GetCommParam(P102)
- RKADK_PARAM_SetCommParam(P103)
- RKADK_PARAM_SetDefault(P104)
- RKADK_PARAM_GetResolution(P104)
- RKADK_PARAM_GetResType(P105)
- RKADK_PARAM_GetVencChnId(P106)
- 数据类型(P107)
- RKADK_DEFPARAM_PATH(P108)
- RKADK_DEFPARAM_PATH_SENSOR_PREFIX(P108)
- RKADK_PARAM_PATH(P108)
- RKADK_PARAM_PATH_SENSOR_PREFIX(P108)
- RKADK_PARAM_TYPE_E(P109)
- RKADK_PARAM_RES_E(P112)
- RKADK_STREAM_TYPE_E(P113)
- RKADK_PARAM_CODEC_CFG_S(P114)
- RKADK_PARAM_BITRATE_S(P114)
- RKADK_PARAM_REC_TIME_S(P115)
- RKADK_PARAM_GOP_S(P115)
- RKADK_VQE_MODE_E(P116)
- MUXER_TYPE_E(P117)
- MUXER_PRE_RECORD_MODE_E(P117)
- INI文件解析(P118)
- 全局INI配置文件(P118)
- Sensor INI配置文件(P119)
- INI 配置注意事项(P123)
- 示例(P123)
- rkadk_record_test(P123)
- rkadk_photo_test(P124)
- rkadk_stream_test(P124)
- rkadk_player_test(P125)
- rkadk_thumb_test(P126)
- rkadk_rtsp_test(P127)
- rkadk_rtmp_test(P127)
- rkadk_storage_test(P128)
- rkadk_disp_test(P128)
在线预览
若预览无法显示,请直接下载 PDF 后用本地阅读器打开。
1. 系统概述
rkadk在rkmedia和rockit的基础上做了进一步封装,提供了基础通用组件,如录像、拍照、播放、预览等,简化了应用开发难度,支持应用软件快速开发。
该组件仅支持单进程的功能实现,如无特殊说明,不支持多进程同时使用。
2. 录像
2.1 概述
提供基本的录像功能,向产品层提供如下功能:
录像任务的创建与销毁录像任务的启动与停止手动切分
录像任务通过参数模块获取Video和Audio信息,启停VENC,启停AENC;调用封装模块创建录像文件,写帧到文件。
每个录像任务对应一个或多个录像文件,每个文件必须对应一路视频编码通道,如果需要录制音频,需要加上一路音频编码通道。
同一录像任务下的多个录像文件,具有相同的录像类型,相同的切分条件,缩时录像模式下还具有相同的缩时间隔;可以配置不同的录像时间。
2.2 API参考
2.2.1 RKADK_RECORD_Create
创建录像任务。
RKADK_S32 RKADK_RECORD_Create(RKADK_RECORD_ATTR_S *pstRecAttr, RKADK_MW_PTR *ppRecorder);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| pstRecAttr | 录像任务属性 | 输入 |
| ppRecorder | 创建的录像任务指针 | 输出 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_record.h
每个录像任务最大支持同时录制2个录像文件。每个录像文件最少有1路视频流,最大支持同时封装1路视频流和1路音频流。不支持重复创建同一任务。
rkadk_record_test。
RKADK_RECORD_Destroy。
2.2.2 RKADK_RECORD_Destroy
销毁录像任务。
RKADK_S32 RKADK_RECORD_Destroy(RKADK_MW_PTR pRecorder);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| pRecorder | 录像任务指针 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_record.h
创建录像任务后,才能使用RKADK_RECORD_Destroy接口。只能销毁已创建的录像任务,不支持重复销毁同一录像任务。
rkadk_record_test。
RKADK_RECORD_Create
2.2.3 RKADK_RECORD_Start
启动录像任务。
RKADK_S32 RKADK_RECORD_Start(RKADK_MW_PTR pRecorder);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| pRecorder | 录像任务指针 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_record.h
创建录像任务后,才能使用RKADK_RECORD_Start接口。支持在停止录像任务后重新启动录像任务。
rkadk_record_test。
RKADK_RECORD_Stop
2.2.4 RKADK_RECORD_Stop
停止录像任务。
RKADK_S32 RKADK_RECORD_Stop(RKADK_MW_PTR pRecorder);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| pRecorder | 录像任务指针 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_record.h
创建录像任务后,才能使用RKADK_RECORD_Stop接口。不支持重复停止同一录像任务。rkadk_record_test。
RKADK_RECORD_Start
2.2.5 RKADK_RECORD_ManualSplit
手动切分录像文件。
RKADK_S32 RKADK_RECORD_ManualSplit(RKADK_MW_PTR pRecorder, RKADK_REC_MANUAL_SPLIT_ATTR_S *pstSplitAttr);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| pRecorder | 录像任务指针 | 输入 |
| pstSplitAttr | 手动切分属性参数 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_record.h
创建录像任务后,才能使用RKADK_RECORD_ManualSplit接口。支持在手动切分录像文件未结束时,重复手动切分录像文件。
rkadk_record_test。
无
2.2.6 RKADK_RECORD_RegisterEventCallback
注册录像事件回调。
RKADK_S32 RKADK_RECORD_RegisterEventCallback(RKADK_MW_PTR pRecorder, RKADK_REC_EVENT_CALLBACK_FN pfnEventCallback);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| pRecorder | 录像任务指针 | 输入 |
| pfnEventCallback | 录像事件回调函数指针 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_record.h
创建录像任务后,才能使用RKADK_RECORD_RegisterEventCallback 接口。
rkadk_record_test。
无
2.2.7 RKADK_RECORD_GetAencChn
获取录像AENC通道号。
RKADK_S32 RKADK_RECORD_GetAencChn();
录像所使用的AENC通道号。
头文件:rkadk_record.h
2.2.8 RKADK_GetThmInMp4
从MP4文件中获取缩略图数据。
RKADK_S32 RKADK_GetThmInMp4(RKADK_CHAR *pszFileName, RKADK_U8 *pu8Buf, RKADK_U32 *pu32Size);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| pszFileName | MP4文件路径 | 输入 |
| pu8Buf | 缩略图数据指针 | 输出 |
| pu32Size | 输入:pu8Buf长度,输出:实际缩略图数据长度 | 输入/输出 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_thumb.h
rkadk_thumb_test
无
2.2.9 RKADK_GetThmInMp4Ex
MP4获取缩略图扩展接口,从MP4文件中获取缩略图数据,支持指定输出缩略图的类型和分辨率。必须和RKADK_ThmBufFree配套使用。
RKADK_S32 RKADK_GetThmInMp4Ex(RKADK_CHAR *pszFileName, RKADK_THUMB_ATTR_S *pstThumbAttr);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| pszFileName | MP4文件路径 | 输入 |
| pstThumbAttr | 缩略图属性结构体指针 | 输入/输出 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_thumb.h
rkadk_thumb_test
RKADK_ThmBufFree
2.2.10 RKADK_ThmBufFree
释放RKADK_GetThmInMp4Ex申请的内存。必须和RKADK_GetThmInMp4Ex配套使用。
RKADK_S32 RKADK_ThmBufFree(RKADK_THUMB_ATTR_S *pstThumbAttr);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| pstThumbAttr | 缩略图属性结构体指针 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_thumb.h
rkadk_thumb_test
RKADK_GetThmInMp4Ex
2.3 数据类型
录像模块主要提供以下数据类型:
RKADK_MW_PTR:录像任务指针
RECORD_FILE_NUM_MAX:单个录像任务同时录制最大文件个数
MUXER_EVENT_E:录像事件枚举类型
MUXER_FILE_EVENT_INFO_S:文件相关事件信息结构体
RKADK_REC_EVENT_INFO_S:录像事件信息结构体
RKADK_REC_EVENT_CALLBACK_FN:事件回调函数指针
RKADK_REC_TYPE_E:录像类型枚举
RKADK_REC_REQUEST_FILE_NAMES_FN:请求录像文件名函数指针
RKADK_RECORD_ATTR_S:录像任务属性结构体
MUXER_MANUAL_SPLIT_TYPE_E:手动切分枚举类型
MUXER_PRE_MANUAL_SPLIT_ATTR_S:手动切分预录属性结构体
RKADK_REC_MANUAL_SPLIT_ATTR_S:手动切分属性结构体
2.3.1 公共数据类型
【说明】
基本数据类型定义。
【定义】
typedef unsigned char RKADK_U8;
typedef unsigned short RKADK_U16;
typedef unsigned int RKADK_U32;
typedef signed char RKADK_S8;
typedef short RKADK_S16;
typedef int RKADK_S32;
typedef unsigned long RKADK_UL;
typedef signed long RKADK_SL;
typedef float RKADK_FLOAT;
typedef double RKADK_DOUBLE;
#ifndef _M_IX86
typedef unsigned long long RKADK_U64;
typedef long long RKADK_S64;
#else
typedef unsigned __int64 RKADK_U64;
typedef __int64 RKADK_S64;
#endif
typedef char RKADK_CHAR;
#define RKADK_VOID void
typedef unsigned int RKADK_HANDLE;
typedef RKADK_VOID *RKADK_MW_PTR;
typedef char (*ARRAY_FILE_NAME)[RKADK_MAX_FILE_PATH_LEN];
typedef enum {
RKADK_FALSE = 0,
RKADK_TRUE = 1,
} RKADK_BOOL;
#ifndef NULL
#define NULL 0L
#endif
#define RKADK_NULL 0L
#define RKADK_SUCCESS 0
#define RKADK_FAILURE (-1)
2.3.2 RKADK_MW_PTR
【说明】
定义任务指针
【定义】
typedef RKADK_VOID *RKADK_MW_PTR;
2.3.3 RKADK_MAX_SENSOR_CNT
【说明】
定义支持的最大Sensor个数,可根据实际情况调整
【定义】
#define RKADK_MAX_SENSOR_CNT 3
2.3.4 RECORD_FILE_NUM_MAX
【说明】
定义单个录像任务同时录制最大文件个数
【定义】
#define RECORD_FILE_NUM_MAX 2
2.3.5 MUXER_EVENT_E
【说明】
定义录像事件枚举类型。
【定义】
typedef enum rkMUXER_EVENT_E {
MUXER_EVENT_STREAM_START = 0,
MUXER_EVENT_STREAM_STOP,
MUXER_EVENT_FILE_BEGIN,
MUXER_EVENT_FILE_END,
MUXER_EVENT_MANUAL_SPLIT_END,
MUXER_EVENT_ERR_CREATE_FILE_FAIL,
MUXER_EVENT_ERR_WRITE_FILE_FAIL,
MUXER_EVENT_BUTT
} MUXER_EVENT_E;
【成员】
| 成员名称 | 描述 |
|---|---|
| MUXER EVENT STREAM START _ _ _ | Reserved |
| MUXER EVENT STREAM STOP _ _ _ | Reserved |
| MUXER EVENT FILE BEGIN _ _ _ | 开始录制一个新文件 |
| MUXER EVENT FILE END _ _ _ | 文件录制结束 |
| MUXER EVENT MANUAL SPLIT END _ _ _ _ | 手动切分文件录制结束 |
| MUXER EVENT ERR CREATE FILE FAIL _ _ _ _ _ | Reserved |
| MUXER EVENT ERR WRITE FILE FAIL _ _ _ _ _ | Reserved |
【相关数据类型及接口】
RKADK_REC_EVENT_INFO_S
2.3.6 MUXER_FILE_EVENT_INFO_S
【说明】
定义文件相关事件信息结构体。
【定义】
typedef struct rkMUXER_FILE_EVENT_INFO_S {
RK_CHAR asFileName[MUXER_FILE_NAME_LEN];
RK_U32 u32Duration; // ms
} MUXER_FILE_EVENT_INFO_S;
【成员】
| 成员名称 | 描述 |
|---|---|
| asFileName | 文件名 |
| u32Duration | 实际录制的文件时长 |
【相关数据类型及接口】
RKADK_REC_EVENT_INFO_S
2.3.7 RKADK_REC_EVENT_INFO_S
【说明】
定义录像事件信息结构体。
【定义】
typedef struct rkMUXER_EVENT_INFO_S {
MUXER_EVENT_E enEvent;
union {
MUXER_FILE_EVENT_INFO_S stFileInfo;
MUXER_ERROR_EVENT_INFO_S stErrorInfo;
} unEventInfo;
} MUXER_EVENT_INFO_S;
typedef MUXER_EVENT_INFO_S RKADK_REC_EVENT_INFO_S;
【成员】
| 成员名称 | 描述 |
|---|---|
| enEvent | 录像事件类型 |
| stFileInfo | 文件事件信息 |
| stErrorInfo | 错误事件信息 (Reserved) |
【相关数据类型及接口】
MUXER_EVENT_E
MUXER_FILE_EVENT_INFO_S
2.3.8 RKADK_REC_EVENT_CALLBACK_FN
【说明】定义录像事件回调函数指针。
【定义】
typedef RKADK_VOID (*RKADK_REC_EVENT_CALLBACK_FN)(RKADK_MW_PTR pRecorder, const
RKADK_REC_EVENT_INFO_S *pstEventInfo);
【相关数据类型及接口】
RKADK_MW_PTR
RKADK_REC_EVENT_INFO_S
RKADK_RECORD_RegisterEventCallback
2.3.9 RKADK_REC_TYPE_E
【说明】
定义录像类型枚举。
【定义】
typedef enum {
RKADK_REC_TYPE_NORMAL = 0, /* normal record */
RKADK_REC_TYPE_LAPSE, /* time lapse record */
RKADK_REC_TYPE_BUTT
} RKADK_REC_TYPE_E;
【成员】
| 成员名称 | 描述 |
|---|---|
| RKADK REC TYPE NORMAL _ _ _ | 普通录像 |
| RKADK REC TYPE LAPSE _ _ _ | 缩时录像 |
【相关数据类型及接口】
RKADK_RECORD_ATTR_S
2.3.10 RKADK_REC_REQUEST_FILE_NAMES_FN
【说明】
定义请求录像文件名回调函数指针。
【定义】
typedef RKADK_S32 (*RKADK_REC_REQUEST_FILE_NAMES_FN)(RKADK_MW_PTR pRecorder, RKADK_U32
u32FileCnt, RKADK_CHAR(*paszFilename)[RKADK_MAX_FILE_PATH_LEN]);
【成员】
| 成员名称 | 描述 |
|---|---|
| pRecorder | 录像任务指针 |
| u32FileCnt | 请求文件名个数 |
| paszFilename | 存储文件名buffer |
【相关数据类型及接口】
RKADK_MW_PTR
RKADK_RECORD_ATTR_S
2.3.11 RKADK_RECORD_ATTR_S
【说明】
定义录像任务属性结构体。
【定义】
typedef struct {
RKADK_S32 s32CamID; /* camera id */
RKADK_REC_TYPE_E enRecType; /* record type */
RKADK_REC_REQUEST_FILE_NAMES_FN pfnRequestFileNames; /* rec callbak */
} RKADK_RECORD_ATTR_S;
【成员】
| 成员名称 | 描述 |
|---|---|
| s32CamID | Camera id |
| enRecType | 录像类型 |
| pfnRequestFileNames | 请求文件名函数指针 |
【相关数据类型及接口】
RKADK_REC_TYPE_E
RKADK_REC_REQUEST_FILE_NAMES_FN RKADK_RECORD_Create
2.3.12 MUXER_MANUAL_SPLIT_TYPE_E
【说明】
定义手动切分类型。
【定义】
typedef enum {
MUXER_POST_MANUAL_SPLIT = 0, /* post maunal split type */
MUXER_PRE_MANUAL_SPLIT, /* pre manual split type */
MUXER_NORMAL_MANUAL_SPLIT, /* normal manual split type */
MUXER_MANUAL_SPLIT_BUTT
} MUXER_MANUAL_SPLIT_TYPE_E;
【成员】
| 成员名称 | 描述 |
|---|---|
| MUXER POST MANUAL SPLIT _ _ _ | Reserved |
| MUXER PRE MANUAL SPLIT _ _ _ | 手动切分预录 |
| MUXER NORMAL MANUAL SPLIT _ _ _ | Reserved |
【相关数据类型及接口】
RKADK_REC_MANUAL_SPLIT_ATTR_S
2.3.13 MUXER_PRE_MANUAL_SPLIT_ATTR_S
【说明】
定义手动切分预录结构体。
【定义】
typedef struct {
RK_U32 u32DurationSec; /* file duration of manual split file */
} MUXER_PRE_MANUAL_SPLIT_ATTR_S;
【成员】
| 成员名称 | 描述 |
|---|---|
| u32DurationSec | 手动切分录像文件时长 |
【相关数据类型及接口】
RKADK_REC_MANUAL_SPLIT_ATTR_S
2.3.14 RKADK_REC_MANUAL_SPLIT_ATTR_S
【说明】
定义手动切分属性结构体。
【定义】
typedef struct {
MUXER_MANUAL_SPLIT_TYPE_E enManualType; /* maual split type */
union {
MUXER_POST_MANUAL_SPLIT_ATTR_S stPostSplitAttr; /* post manual split attr */
MUXER_PRE_MANUAL_SPLIT_ATTR_S stPreSplitAttr; /* pre manual split attr */
MUXER_NORMAL_MANUAL_SPLIT_ATTR_S stNormalSplitAttr; /* normal manual split attr */
};
} MUXER_MANUAL_SPLIT_ATTR_S;
typedef MUXER_MANUAL_SPLIT_ATTR_S RKADK_REC_MANUAL_SPLIT_ATTR_S;
【成员】
| 成员名称 | 描述 |
|---|---|
| enManualType | 手动切分类型 |
| stPostSplitAttr | Reserved |
| stPreSplitAttr | 手动切分预录属性结构体 |
| stNormalSplitAttr | Reserved |
【相关数据类型及接口】
MUXER_MANUAL_SPLIT_TYPE_E
MUXER_PRE_MANUAL_SPLIT_ATTR_S
RKADK_RECORD_ManualSplit
3. 拍照
3.1 概述
提供基本的抓拍功能,提供JPEG封装拍照,支持单拍、多拍模式。
3.2 API 参考
3.2.1 RKADK_PHOTO_Init
拍照任务初始化。
RKADK_S32 RKADK_PHOTO_Init(RKADK_PHOTO_ATTR_S *pstPhotoAttr);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| pstPhotoAttr | 拍照任务属性指针 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_photo.h
不支持重复初始化。
rkadk_photo_test RKADK_PHOTO_DeInit
3.2.2 RKADK_PHOTO_DeInit
拍照任务反初始化。
RKADK_S32 RKADK_PHOTO_DeInit(RKADK_U32 u32CamID);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| u32CamID | Camera id | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_photo.h
不支持重复反初始化。
rkadk_photo_test
RKADK_PHOTO_DeInit
3.2.3 RKADK_PHOTO_TakePhoto
拍照。
RKADK_S32 RKADK_PHOTO_TakePhoto(RKADK_PHOTO_ATTR_S *pstPhotoAttr);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| pstPhotoAttr | 拍照任务属性指针 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_photo.h
录像任务初始化后,才能使用RKADK_PHOTO_TakePhoto 接口。
rkadk_photo_test
无
3.2.4 RKADK_PHOTO_GetThmInJpg
从JPG文件中获取缩略图数据。
RKADK_S32 RKADK_PHOTO_GetThmInJpg(RKADK_CHAR *pszFileName, RKADK_JPG_THUMB_TYPE_E eThmType, RKADK_U8 *pu8Buf, RKADK_U32 *pu32Size);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| pszFileName | JPG文件路径 | 输入 |
| eThmType | 缩略图类型 | 输入 |
| pu8Buf | 缩略图数据指针 | 输出 |
| pu32Size | 输入:pu8Buf长度,输出:实际缩略图数据长度 | 输入/输出 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_photo.h
rkadk_thumb_test
无
3.2.5 RKADK_PHOTO_GetThmInJpgEx
JPG获取缩略图扩展接口,从JPG文件中获取缩略图数据,支持指定输出缩略图的类型和分辨率。必须和RKADK_PHOTO_ThumbBufFree配套使用。
RKADK_S32 RKADK_PHOTO_GetThmInJpgEx(RKADK_CHAR *pszFileName, RKADK_JPG_THUMB_TYPE_E eThmType, RKADK_THUMB_ATTR_S *pstThumbAttr);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| pszFileName | JPG文件路径 | 输入 |
| eThmType | 缩略图类型 | 输入 |
| pstThumbAttr | 缩略图属性结构体指针 | 输入/输出 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_photo.h
rkadk_thumb_test
RKADK_PHOTO_ThumbBufFree
3.2.6 RKADK_PHOTO_ThumbBufFree
释放RKADK_PHOTO_GetThmInJpgEx申请的内存。必须和RKADK_PHOTO_GetThmInJpgEx配套使用。
RKADK_S32 RKADK_PHOTO_ThumbBufFree(RKADK_THUMB_ATTR_S *pstThumbAttr);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| pstThumbAttr | 缩略图属性结构体指针 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_photo.h
rkadk_thumb_test
RKADK_PHOTO_GetThmInJpgEx
3.2.7 RKADK_PHOTO_GetData
获取JPG数据,默认输出JPG原始分辨率。
RKADK_S32 RKADK_PHOTO_GetData(RKADK_CHAR *pcFileName, RKADK_PHOTO_DATA_ATTR_S *pstDataAttr);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| pstDataAttr | JPG数据属性结构体指针 | 输入/输出 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_photo.h rkadk_photo_test
RKADK_PHOTO_FreeData
3.2.8 RKADK_PHOTO_FreeData
释放RKADK_PHOTO_GetData申请的内存。必须和RKADK_PHOTO_GetData配套使用。
RKADK_S32 RKADK_PHOTO_FreeData(RKADK_PHOTO_DATA_ATTR_S *pstDataAttr);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| pstDataAttr | JPG数据属性结构体指针 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_photo.h
rkadk_photo_test
RKADK_PHOTO_GetData
3.3 数据类型
拍照模块主要提供以下数据类型:
RKADK_PHOTO_TYPE_E:拍照类型枚举RKADK_PHOTO_SINGLE_ATTR_S:单拍属性结构体
RKADK_PHOTO_MULTIPLE_ATTR_S:多拍属性结构体
RKADK_PHOTO_DATA_RECV_FN_PTR:拍照数据接收函数指针
RKADK_PHOTO_ATTR_S:拍照任务属性结构体
RKADK_JPG_THUMB_TYPE_E:JPG缩略图类型枚举
RKADK_THUMB_TYPE_E:输出缩略图类型枚举
RKADK_THUMB_ATTR_S:缩略图属性结构体
RKADK_PHOTO_DATA_ATTR_S:JPG数据属性结构体
3.3.1 RKADK_PHOTO_TYPE_E
【说明】
定义拍照类型枚举。
【定义】
typedef enum {
RKADK_PHOTO_TYPE_SINGLE = 0,
RKADK_PHOTO_TYPE_MULTIPLE,
RKADK_PHOTO_TYPE_LAPSE, // TODO
RKADK_PHOTO_TYPE_BUTT
} RKADK_PHOTO_TYPE_E;
【成员】
| 成员名称 | 描述 |
|---|---|
| RKADK PHOTO TYPE SINGLE _ _ _ | 单拍模式 |
| RKADK PHOTO TYPE MULTIPLE _ _ _ | 多拍模式 |
| RKADK PHOTO TYPE LAPSE _ _ _ | 缩时拍照(Reserved) |
【相关数据类型及接口】
RKADK_PHOTO_ATTR_S
3.3.2 RKADK_PHOTO_SINGLE_ATTR_S
【说明】
定义单拍属性结构体。【定义】
typedef struct {
// TODO
RKADK_S32 s32Time_sec;
} RKADK_PHOTO_SINGLE_ATTR_S;
【成员】
| 成员名称 | 描述 |
|---|---|
| s32Time sec _ | Reserved |
【相关数据类型及接口】
RKADK_PHOTO_ATTR_S
3.3.3 RKADK_PHOTO_MULTIPLE_ATTR_S
【说明】
定义多拍属性结构体。
【定义】
typedef struct {
/* s32Count is -1 that means continuous photo, larger than 0 that meas photo
* number */
RKADK_S32 s32Count;
} RKADK_PHOTO_MULTIPLE_ATTR_S;
【成员】
| 成员名称 | 描述 |
|---|---|
| s32Count | 连拍数量,-1 代表连续拍照直到调用RKADK PHOTO DeInit停止 _ _ |
【相关数据类型及接口】
RKADK_PHOTO_ATTR_S
3.3.4 RKADK_PHOTO_THUMB_ATTR_S
【说明】
定义缩略图参数属性结构体。【定义】
#define RKADK_MPF_LARGE_THUMB_NUM_MAX 2 /* 支持同时生成的最大MPF缩略图个数 */
typedef struct rkSIZE_S {
RK_U32 u32Width; /* 缩略图宽 */
RK_U32 u32Height; /* 缩略图高 */
} SIZE_S;
typedef enum {
RKADK_PHOTO_MPF_SINGLE = 0, /* 单个MPF缩略图 */
RKADK_PHOTO_MPF_MULTI, /* 多个MPF缩略图 */
RKADK_PHOTO_MPF_BUTT
} RKADK_PHOTO_MPF_MODE_E;
typedef struct {
RKADK_U8 u8LargeThumbNum; /* 生成的MPF缩略图个数 */
SIZE_S astLargeThumbSize[RKADK_MPF_LARGE_THUMB_NUM_MAX]; /* 各缩略图分辨率 */
} RKADK_PHOTO_MPF_CFG_S;
typedef struct {
RKADK_PHOTO_MPF_MODE_E eMode; /* MPF缩略图模式 */
RKADK_PHOTO_MPF_CFG_S sCfg; /* MPF缩略图配置 */
} RKADK_PHOTO_MPF_ATTR_S;
typedef struct {
RKADK_BOOL bSupportDCF; /* Fixed resolution: 160 * 120 jpg */
RKADK_PHOTO_MPF_ATTR_S stMPFAttr;
} RKADK_PHOTO_THUMB_ATTR_S;
【成员】
| 成员名称 | 描述 |
|---|---|
| bSupportDCF | 是否生成DCF缩略图(固定分辨率160*120) |
| stMPFAttr | MPF缩略图属性参数 |
【相关数据类型及接口】
RKADK_PHOTO_ATTR_S
3.3.5 RKADK_PHOTO_DATA_RECV_FN_PTR
【说明】
定义拍照数据接收函数指针。
【定义】
typedef void (*RKADK_PHOTO_DATA_RECV_FN_PTR)(RKADK_U8 *pu8DataBuf,
RKADK_U32 u32DataLen);
【成员】
| 成员名称 | 描述 |
|---|---|
| pu8DataBuf | 数据指针 |
| u32DataLen | 数据长度 |
【相关数据类型及接口】
RKADK_PHOTO_ATTR_S
3.3.6 RKADK_PHOTO_ATTR_S
【说明】
定义拍照任务属性结构体。
【定义】
typedef struct {
RKADK_U32 u32CamID;
RKADK_PHOTO_TYPE_E enPhotoType;
union tagPhotoTypeAttr {
RKADK_PHOTO_SINGLE_ATTR_S stSingleAttr;
RKADK_PHOTO_LAPSE_ATTR_S stLapseAttr; // TODO
RKADK_PHOTO_MULTIPLE_ATTR_S stMultipleAttr;
} unPhotoTypeAttr;
RKADK_PHOTO_THUMB_ATTR_S stThumbAttr;
RKADK_PHOTO_DATA_RECV_FN_PTR pfnPhotoDataProc;
} RKADK_PHOTO_ATTR_S;
【成员】
| 成员名称 | 描述 |
|---|---|
| u32CamID | Camera id |
| RKADK PHOTO TYPE E _ _ _ | 拍照类型 |
| stSingleAttr | 单拍参数属性 |
| stMultipleAttr | 多拍参数属性 |
| stLapseAttr | 缩时拍照参数属性(Reserved) |
| stThumbAttr | 缩略图参数属性 |
| pfnPhotoDataProc | 拍照数据接收回调函数指针 |
【相关数据类型及接口】
RKADK_PHOTO_TYPE_E
RKADK_PHOTO_SINGLE_ATTR_S
RKADK_PHOTO_MULTIPLE_ATTR_S
RKADK_PHOTO_THUMB_ATTR_S
RKADK_PHOTO_DATA_RECV_FN_PTR
RKADK_PHOTO_Init
RKADK_PHOTO_TakePhoto
3.3.7 RKADK_JPG_THUMB_TYPE_E
【说明】
定义JPG缩略图类型枚举。
【定义】
typedef enum {
RKADK_JPG_THUMB_TYPE_DCF,
RKADK_JPG_THUMB_TYPE_MFP1,
RKADK_JPG_THUMB_TYPE_MFP2,
RKADK_JPG_THUMB_TYPE_BUTT
} RKADK_JPG_THUMB_TYPE_E;
【成员】
| 成员名称 | 描述 |
|---|---|
| RKADK JPG THUMB TYPE DCF _ _ _ _ | DCF缩略图 |
| RKADK JPG THUMB TYPE MFP1 _ _ _ _ | MPF1缩略图 |
| RKADK JPG THUMB TYPE MFP2 _ _ _ _ | MPF2缩略图 |
【相关数据类型及接口】
RKADK_PHOTO_GetThmInJpg
RKADK_PHOTO_GetThmInJpgEx
3.3.8 RKADK_THUMB_TYPE_E
【说明】
定义输出缩略图类型枚举。
【定义】
typedef enum {
RKADK_THUMB_TYPE_NV12 = 0,
RKADK_THUMB_TYPE_JPEG,
RKADK_THUMB_TYPE_RGB565,
RKADK_THUMB_TYPE_RGB888,
RKADK_THUMB_TYPE_RGBA8888
} RKADK_THUMB_TYPE_E;
【成员】
| 成员名称 | 描述 |
|---|---|
| RKADK THUMB TYPE NV12 _ _ _ | 输出NV12格式缩略图 |
| RKADK THUMB TYPE JPEG _ _ _ | 输出JPG格式缩略图 |
| RKADK THUMB TYPE RGB565 _ _ _ | 输出RGB565格式缩略图 |
| RKADK THUMB TYPE RGB888 _ _ _ | 输出RGB888格式缩略图 |
| RKADK THUMB TYPE RGBA8888 _ _ _ | 输出RGB8888格式缩略图 |
【相关数据类型及接口】
RKADK_THUMB_ATTR_S
RKADK_GetThmInMp4Ex RKADK_PHOTO_GetThmInJpgEx
3.3.9 RKADK_THUMB_ATTR_S
【说明】
定义缩略图属性结构体。
【定义】
typedef struct {
RKADK_THUMB_TYPE_E enType;
// 4 alignment
RKADK_U32 u32Width;
// 2 alignment
RKADK_U32 u32Height;
// 4 alignment
RKADK_U32 u32VirWidth;
// 2 alignment
RKADK_U32 u32VirHeight;
RKADK_U8 *pu8Buf;
RKADK_U32 u32BufSize;
} RKADK_THUMB_ATTR_S;
【成员】
| 成员名称 | 描述 |
|---|---|
| enType | 希望获取的缩略图类型 |
| u32Width | 输入希望获取的缩略图宽,输出实际缩略图宽 |
| u32Height | 输入希望获取的缩略图高,输出实际缩略图高 |
| u32VirWidth | 输入希望获取的缩略图虚宽,输出实际缩略图虚宽 |
| u32VirHeight | 输入希望获取的缩略图虚高,输出实际缩略图虚高 |
| pu8Buf | 缩略图数据指针 |
| u32BufSize | 缩略图数据长度 |
【相关数据类型及接口】
RKADK_THUMB_TYPE_E
RKADK_GetThmInMp4Ex
RKADK_PHOTO_GetThmInJpgEx
3.3.10 RKADK_PHOTO_DATA_ATTR_S
【说明】
定义缩略图属性结构体。
【定义】
typedef RKADK_THUMB_ATTR_S RKADK_PHOTO_DATA_ATTR_S;
【相关数据类型及接口】
RKADK_THUMB_ATTR_S
RKADK_PHOTO_GetData
RKADK_PHOTO_FreeData
4. 远程预览
4.1 概述
为预览提供获取Video和Audio信息,启停VENC,启停AENC ,注册处理音视频帧数据函数的回调接口。
4.2 API参考
4.2.1 RKADK_STREAM_VideoInit
初始化Video模块:VI、VENC。
RKADK_S32 RKADK_STREAM_VideoInit(RKADK_U32 u32CamID, RKADK_CODEC_TYPE_E enCodecType);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| u32CamID | Camera id | 输入 |
| enCodecType | 编码类型 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_stream.h
不支持重复初始化Video模块。rkadk_stream_test
RKADK_STREAM_VideoDeInit
4.2.2 RKADK_STREAM_VideoDeInit
反初始化Video模块:VI、VENC。
RKADK_S32 RKADK_STREAM_VideoDeInit(RKADK_U32 u32CamID);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| u32CamID | Camera id | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_stream.h
无
rkadk_stream_test
RKADK_STREAM_VideoInit
4.2.3 RKADK_STREAM_VencStart
启动VENC。
RKADK_S32 RKADK_STREAM_VencStart(RKADK_U32 u32CamID, RKADK_CODEC_TYPE_E enCodecType, RKADK_S32 s32FrameCnt);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| u32CamID | Camera id | 输入 |
| enCodecType | 编码类型 | 输入 |
| s32FrameCnt | 指定需要接收的图像帧数,-1 代表无限接收,直到调用VencStop为止 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_stream.h
初始化Video模块后,才能调用RKADK_STREAM_VencStart接口。调用RKADK_STREAM_VencStart后,触发VENC数据回调函数开始接收数据。
rkadk_stream_test
RKADK_STREAM_VencStop
4.2.4 RKADK_STREAM_VencStop
停止VENC。
RKADK_S32 RKADK_STREAM_VencStop(RKADK_U32 u32CamID);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| u32CamID | Camera id | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_stream.h
无
rkadk_stream_test
RKADK_STREAM_VencStart
4.2.5 RKADK_STREAM_GetVideoInfo
获取Video信息。
RKADK_S32 RKADK_STREAM_GetVideoInfo(RKADK_U32 u32CamID, RKADK_VIDEO_INFO_S *pstVideoInfo);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| u32CamID | Camera id | 输入 |
| pstVideoInfo | Video 信息结构体指针 | 输出 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_stream.h
无
rkadk_stream_test
无
4.2.6 RKADK_STREAM_VencRegisterCallback
注册Video数据输出回调。
RKADK_S32 RKADK_STREAM_VencRegisterCallback(RKADK_U32 u32CamID, RKADK_VENC_DATA_PROC_FUNC pfnDataCB);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| u32CamID | Camera id | 输入 |
| pfnDataCB | 数据输出回调函数 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_stream.h
回调函数不能处理耗时操作,否则数据流将被阻塞。
rkadk_stream_test
RKADK_STREAM_VencUnRegisterCallback
4.2.7 RKADK_STREAM_VencUnRegisterCallback
反注册Video数据输出回调。
RKADK_S32 RKADK_STREAM_VencUnRegisterCallback(RKADK_U32 u32CamID);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| u32CamID | Camera id | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_stream.h
无rkadk_stream_test
RKADK_STREAM_VencRegisterCallback
4.2.8 RKADK_STREAM_AudioInit
初始化Audio模块:AI、AENC。
RKADK_S32 RKADK_STREAM_AudioInit(RKADK_CODEC_TYPE_E enCodecType);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| enCodecType | 编码类型 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_stream.h
不支持重复初始化Audio模块。
rkadk_stream_test
RKADK_STREAM_AudioDeInit
4.2.9 RKADK_STREAM_AudioDeInit
反初始化Audio模块:AI、AENC。
RKADK_S32 RKADK_STREAM_AudioDeInit(RKADK_CODEC_TYPE_E enCodecType);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| enCodecType | 编码类型 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_stream.h
无
rkadk_stream_test
RKADK_STREAM_AudioInit
4.2.10 RKADK_STREAM_AencStart
启动AENC。
RKADK_S32 RKADK_STREAM_AencStart();
无
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_stream.h
初始化Audio模块后,才能调用RKADK_STREAM_AencStart接口。调用RKADK_STREAM_AencStart后,触发AENC数据回调函数开始接收数据。
rkadk_stream_test
RKADK_STREAM_AencStop
4.2.11 RKADK_STREAM_AencStop
停止AENC。
RKADK_S32 RKADK_STREAM_AencStop();
无
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_stream.h无
rkadk_stream_test
RKADK_STREAM_AencStart
4.2.12 RKADK_STREAM_GetAudioInfo
获取Audio信息。
RKADK_S32 RKADK_STREAM_GetAudioInfo(RKADK_AUDIO_INFO_S *pstAudioInfo);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| pstAudioInfo | Audio 信息结构体指针 | 输出 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_stream.h
无
rkadk_stream_test
无
4.2.13 RKADK_STREAM_AencRegisterCallback
注册Audio数据输出回调。
RKADK_VOID RKADK_STREAM_AencRegisterCallback(RKADK_CODEC_TYPE_E enCodecType, RKADK_AENC_DATA_PROC_FUNC pfnDataCB);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| enCodecType | 编码类型 | 输入 |
| pfnDataCB | 数据输出回调函数 | 输入 |
无
头文件:rkadk_stream.h
回调函数不能处理耗时操作,否则数据流将被阻塞。允许同时注册两个回调,同时获取PCM和AENC音频流,通过enCodecType 区分。
rkadk_stream_test
RKADK_STREAM_AencUnRegisterCallback
4.2.14 RKADK_STREAM_AencUnRegisterCallback
反注册Audio数据输出回调。
RKADK_VOID RKADK_STREAM_AencUnRegisterCallback(RKADK_CODEC_TYPE_E enCodecType);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| enCodecType | 编码格式 | 输入 |
无
头文件:rkadk_stream.h
无
rkadk_stream_test
RKADK_STREAM_AencRegisterCallback
4.3 数据类型
播放模块主要提供以下数据类型:
RKADK_CODEC_TYPE_E:编码格式枚举
RKADK_VENC_DATA_PROC_FUNC:VENC数据回调函数指针
RKADK_VIDEO_STREAM_S:Video数据流结构体
RKADK_VENC_DATA_PACK_S:VENC数据包结构体
RKADK_VENC_DATA_TYPE_S:VENC数据包类型
RKADK_VIDEO_INFO_S:Video信息结构体
RKADK_AENC_DATA_PROC_FUNC:AENC数据回调函数指针
RKADK_AUDIO_STREAM_S:Audio数据结构体
RKADK_AUDIO_INFO_S:Audio信息结构体
4.3.1 RKADK_CODEC_TYPE_E
【说明】
定义编码格式枚举类型,Audio编码默认不支持MP3和AAC。【定义】
typedef enum {
//Video
RKADK_CODEC_TYPE_H264 = 0,
RKADK_CODEC_TYPE_H265,
RKADK_CODEC_TYPE_MJPEG,
RKADK_CODEC_TYPE_JPEG,
//Audio
RKADK_CODEC_TYPE_MP3,
RKADK_CODEC_TYPE_G711A,
RKADK_CODEC_TYPE_G711U,
RKADK_CODEC_TYPE_G726,
RKADK_CODEC_TYPE_MP2,
RKADK_CODEC_TYPE_PCM,
RKADK_CODEC_TYPE_BUTT
} RKADK_CODEC_TYPE_E;
4.3.2 RKADK_VENC_DATA_PROC_FUNC
【说明】
定义VENC数据回调函数指针。
【定义】
typedef RKADK_S32 (*RKADK_VENC_DATA_PROC_FUNC)(RKADK_VIDEO_STREAM_S *pVStreamData);
【相关数据类型及接口】
RKADK_VIDEO_STREAM_S
RKADK_STREAM_VencRegisterCallback
4.3.3 RKADK_VIDEO_STREAM_S
【说明】
定义Video 数据流结构体。
【定义】
typedef struct {
RKADK_VENC_DATA_PACK_S astPack; /* stream pack attribute */
RKADK_U32 u32Seq; /* the list number of stream */
RKADK_BOOL bEndOfStream; /* frame end flag */
} RKADK_VIDEO_STREAM_S;
【成员】
| 成员名称 | 描述 |
|---|---|
| astPack | 数据包结构体 |
| u32Seq | 数据包序列号 |
| bEndOfStream | Reserved |
【相关数据类型及接口】
RKADK_VENC_DATA_PACK_S
RKADK_VENC_DATA_PROC_FUNC
4.3.4 RKADK_VENC_DATA_PACK_S
【说明】
定义VENC数据包结构体。
【定义】
typedef struct {
RKADK_U8 *apu8Addr; /* the virtual address of stream */
RKADK_U32 au32Len; /* the length of stream */
RKADK_U64 u64PTS; /* time stamp */
RKADK_VENC_DATA_TYPE_S stDataType; /* the type of stream */
} RKADK_VENC_DATA_PACK_S;
【成员】
| 成员名称 | 描述 |
|---|---|
| apu8Addr | 数据指针 |
| au32Len | 数据长度 |
| u64PTS | 时间戳 |
| stDataType | 数据类型 |
【相关数据类型及接口】
RKADK_VENC_DATA_TYPE_S
RKADK_VIDEO_STREAM_S
4.3.5 RKADK_VENC_DATA_TYPE_S
【说明】
定义VENC数据包类型。
【定义】
/* the nalu type of H264 */
typedef enum {
RKADK_H264E_NALU_BSLICE = 0, /* B SLICE types */
RKADK_H264E_NALU_PSLICE = 1, /* P SLICE types */
RKADK_H264E_NALU_ISLICE = 2, /* I SLICE types */
RKADK_H264E_NALU_IDRSLICE = 5, /* IDR SLICE types */
RKADK_H264E_NALU_SEI = 6, /* SEI types */
RKADK_H264E_NALU_SPS = 7, /* SPS types */
RKADK_H264E_NALU_PPS = 8, /* PPS types */
RKADK_H264E_NALU_BUTT
} RKADK_H264E_NALU_TYPE_E;
/* the nalu type of H265 */
typedef enum {
RKADK_H265E_NALU_BSLICE = 0, /* B SLICE types */
RKADK_H265E_NALU_PSLICE = 1, /* P SLICE types */
RKADK_H265E_NALU_ISLICE = 2, /* I SLICE types */
RKADK_H265E_NALU_IDRSLICE = 19, /* IDR SLICE types */
RKADK_H265E_NALU_VPS = 32, /* VPS types */
RKADK_H265E_NALU_SPS = 33, /* SPS types */
RKADK_H265E_NALU_PPS = 34, /* PPS types */
RKADK_H265E_NALU_SEI = 39, /* SEI types */
RKADK_H265E_NALU_BUTT
} RKADK_H265E_NALU_TYPE_E;
typedef struct {
RKADK_CODEC_TYPE_E enPayloadType; /* H.264/H.265/JPEG/MJPEG */
union {
RKADK_H264E_NALU_TYPE_E enH264EType; /* H264E NALU types */
RKADK_H265E_NALU_TYPE_E enH265EType; /* H265E NALU types */
RKADK_JPEGE_PACK_TYPE_E enJPEGEType; /* TODO: JPEGE PACK types*/
};
} RKADK_VENC_DATA_TYPE_S;
【成员】
| 成员名称 | 描述 |
|---|---|
| enPayloadType | 编码类型 |
| enH264EType | H264 编码数据包类型 |
| enH265EType | H265 编码数据包类型 |
| enJPEGEType | Reserved |
【相关数据类型及接口】
RKADK_CODEC_TYPE_E
RKADK_VENC_DATA_PACK_S
4.3.6 RKADK_VIDEO_INFO_S
【说明】
定义Video信息结构体。
【定义】
typedef struct {
RKADK_CODEC_TYPE_E enCodecType;
RKADK_U32 u32Width;
RKADK_U32 u32Height;
RKADK_U32 u32BitRate;
RKADK_U32 u32FrameRate;
RKADK_U32 u32Gop;
} RKADK_VIDEO_INFO_S;
【成员】
| 成员名称 | 描述 |
|---|---|
| enPayloadType | 编码类型 |
| u32Width | 分辨率宽度 |
| u32Height | 分辨率高度 |
| u32BitRate | 比特率 |
| u32FrameRate | 帧率 |
| u32Gop | I 帧间隔 |
【相关数据类型及接口】
RKADK_CODEC_TYPE_E
RKADK_STREAM_GetVideoInfo
4.3.7 RKADK_AENC_DATA_PROC_FUNC
【说明】
定义AENC数据回调函数指针。
【定义】
typedef RKADK_S32 (*RKADK_AENC_DATA_PROC_FUNC)(RKADK_AUDIO_STREAM_S *pAStreamData);
【相关数据类型及接口】
RKADK_AUDIO_STREAM_S
RKADK_STREAM_AencRegisterCallback
4.3.8 RKADK_AUDIO_STREAM_S
【说明】
定义Audio数据流结构体。
【定义】
typedef struct {
RKADK_U8 *pStream; /* the virtual address of stream */
RKADK_U32 u32Len; /* stream lenth, by bytes */
RKADK_U64 u64TimeStamp; /* frame time stamp */
RKADK_U32 u32Seq; /* frame seq, if stream is not a valid frame,u32Seq is 0 */
} RKADK_AUDIO_STREAM_S;
【成员】
| 成员名称 | 描述 |
|---|---|
| pStream | 数据指针 |
| u32Len | 数据长度 |
| u64TimeStamp | 时间戳 |
| u32Seq | 序列号 |
【相关数据类型及接口】
RKADK_AENC_DATA_PROC_FUNC
4.3.9 RKADK_AUDIO_INFO_S
【说明】
定义Audio信息结构体。
【定义】
typedef struct {
RKADK_CODEC_TYPE_E enCodecType;
RKADK_U32 u32ChnCnt;
RKADK_U32 u32SampleRate;
RKADK_U32 u32AvgBytesPerSec;
RKADK_U32 u32SamplesPerFrame;
RKADK_U16 u16SampleBitWidth;
} RKADK_AUDIO_INFO_S;
【成员】
| 成员名称 | 描述 |
|---|---|
| enPayloadType | 编码类型 |
| u32ChnCntt | 通道数 |
| u32SampleRate | 采样率 |
| u32AvgBytesPerSec | 字节率 |
| u32SamplesPerFrame | 每一帧采样数 |
| u16SampleBitWidth | 每个样本比特数 |
【相关数据类型及接口】
RKADK_CODEC_TYPE_E
RKADK_STREAM_GetAudioInfo
5. 播放器
5.1 概述
提供本地录像文件和音频文件播放功能,支持基本的播控操作:播放、暂停、 Seek 。
5.2 API 参考
5.2.1 RKADK_PLAYER_Create
创建播放器。
RKADK_S32 RKADK_PLAYER_Create(RKADK_MW_PTR *ppPlayer, RKADK_PLAYER_CFG_S *pstPlayCfg);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| ppPlayer | 创建的播放器指针 | 输出 |
| pstPlayCfg | 播放器属性 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_player.h
不支持重复创建同一播放器。rkadk_player_test
RKADK_PLAYER_Destroy
5.2.2 RKADK_PLAYER_Destroy
销毁播放器。
RKADK_S32 RKADK_PLAYER_Destroy(RKADK_MW_PTR pPlayer);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| pPlayer | 播放器指针 | 输人 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_player.h
不支持重复销毁同一播放器。
rkadk_player_test
RKADK_PLAYER_Create
5.2.3 RKADK_PLAYER_SetDataSource
设置待播放文件路径。
RKADK_S32 RKADK_PLAYER_SetDataSource(RKADK_MW_PTR pPlayer, const RKADK_CHAR *pszfilePath);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| pPlayer | 播放器指针 | 输人 |
| pszfilePath | 待播放文件路径 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_player.h
创建播放器后,才能调用RKADK_PLAYER_SetDataSource接口。
rkadk_player_test
无
5.2.4 RKADK_PLAYER_Prepare
播放准备。
RKADK_S32 RKADK_PLAYER_Prepare(RKADK_MW_PTR pPlayer);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| pPlayer | 播放器指针 | 输人 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_player.h
创建播放器和设置播放路径后,才能调用RKADK_PLAYER_Prepare接口。
rkadk_player_test
无
5.2.5 RKADK_PLAYER_SetVideoSink
注册视频播放回调对象,播放音频不需要调用该接口。
RKADK_S32 RKADK_PLAYER_SetVideoSink(RKADK_MW_PTR pPlayer, RKADK_PLAYER_FRAMEINFO_S *pstFrameInfo);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| pPlayer | 播放器指针 | 输人 |
| pstFrameInfo | 图像信息结构体 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_player.h
无
rkadk_player_test
无
5.2.6 RKADK_PLAYER_Play
开始播放。
RKADK_S32 RKADK_PLAYER_Play(RKADK_MW_PTR pPlayer);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| pPlayer | 播放器指针 | 输人 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_player.h调用RKADK_PLAYER_Prepare 后,才能调用RKADK_PLAYER_Play接口。
rkadk_player_test
RKADK_PLAYER_Stop
5.2.7 RKADK_PLAYER_Stop
停止播放,并释放资源。
RKADK_S32 RKADK_PLAYER_Stop(RKADK_MW_PTR pPlayer);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| pPlayer | 播放器指针 | 输人 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_player.h
无
rkadk_player_test RKADK_PLAYER_Play
5.2.8 RKADK_PLAYER_Pause
暂停播放。
RKADK_S32 RKADK_PLAYER_Pause(RKADK_MW_PTR pPlayer);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| pPlayer | 播放器指针 | 输人 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_player.h
无
rkadk_player_test
RKADK_PLAYER_Play
5.2.9 RKADK_PLAYER_Seek
Seek。
RKADK_S32 RKADK_PLAYER_Seek(RKADK_MW_PTR pPlayer, RKADK_S64 s64TimeInMs);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| pPlayer | 播放器指针 | 输人 |
| s64TimeInMs | Seek 时长 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_player.h
调用RKADK_PLAYER_Play后,才能调用RKADK_PLAYER_Seek接口。
rkadk_player_test
RKADK_PLAYER_Play
5.2.10 RKADK_PLAYER_GetPlayStatus
获取当前播放状态。
RKADK_S32 RKADK_PLAYER_GetPlayStatus(RKADK_MW_PTR pPlayer, RKADK_PLAYER_STATE_E *penState);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| pPlayer | 播放器指针 | 输人 |
| penState | 当前播放状态 | 输出 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_player.h
无
rkadk_player_test
无
5.2.11 RKADK_PLAYER_GetDuration
获取当前播放文件时长。
RKADK_S32 RKADK_PLAYER_GetDuration(RKADK_MW_PTR pPlayer, RKADK_U32 *pDuration);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| pPlayer | 播放器指针 | 输人 |
| pDuration | 当前播放文件时长,单位ms | 输出 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_player.h
无
rkadk_player_test
无
5.3 数据类型
播放模块主要提供以下数据类型:
RKADK_PLAYER_EVENT_E:播放事件枚举类型
RKADK_PLAYER_EVENT_FN:播放事件回调函数指针
RKADK_PLAYER_CFG_S:播放器属性结构体
RKADK_PLAYER_VO_FORMAT_E:图像像素格式枚举类型
RKADK_PLAYER_VO_DEV_E:显示输出设备号枚举类型
RKADK_PLAYER_VO_INTF_TYPE_E:显示接口枚举类型
RKADK_PLAYER_FRAMEINFO_S:图像信息结构体
RKADK_PLAYER_STATE_E:播放状态枚举类型
RKADK_PLAYER_VO_ATTR_S:视频输出属性结构体
5.3.1 RKADK_PLAYER_EVENT_E
【说明】
定义播放事件枚举类型。【定义】
typedef enum {
RKADK_PLAYER_EVENT_STATE_CHANGED = 0x0,
RKADK_PLAYER_EVENT_PREPARED,
RKADK_PLAYER_EVENT_STARTED,
RKADK_PLAYER_EVENT_PAUSED,
RKADK_PLAYER_EVENT_STOPPED,
RKADK_PLAYER_EVENT_EOF,
RKADK_PLAYER_EVENT_SOF,
RKADK_PLAYER_EVENT_PROGRESS,
RKADK_PLAYER_EVENT_SEEK_END,
RKADK_PLAYER_EVENT_ERROR,
RKADK_PLAYER_EVENT_BUTT
} RKADK_PLAYER_EVENT_E;
【成员】
| 成员名称 | 描述 |
|---|---|
| RKADK PLAYER EVENT STATE CHANGED _ _ _ _ | 状态改变(Reserved) |
| RKADK PLAYER EVENT PREPARED _ _ _ | Prepared 完成 |
| RKADK PLAYER EVENT STARTED _ _ _ | 开始播放 |
| RKADK PLAYER EVENT PAUSED _ _ _ | 暂停播放 |
| RKADK PLAYER EVENT STOPPED _ _ _ | 停止播放 |
| RKADK PLAYER EVENT EOF _ _ _ | 播放结束 |
| RKADK PLAYER EVENT SOF _ _ _ | Reserved |
| RKADK PLAYER EVENT PROGRESS _ _ _ | 播放进度,附加值为当前播放时间,单位ms |
| RKADK PLAYER EVENT SEEK END _ _ _ _ | Seek 完成 |
| RKADK PLAYER EVENT ERROR _ _ _ | 播放错误 |
【相关数据类型及接口】
RKADK_PLAYER_EVENT_FN
5.3.2 RKADK_PLAYER_EVENT_FN
【说明】
定义播放事件回调函数指针。
【定义】
typedef RKADK_VOID (*RKADK_PLAYER_EVENT_FN)(RKADK_MW_PTR pPlayer, RKADK_PLAYER_EVENT_E
enEvent, RKADK_VOID *pData);
【成员】
| 成员名称 | 描述 |
|---|---|
| pPlayer | 播放器指针 |
| enEvent | 事件类型 |
| pData | 事件相关参数 |
【相关数据类型及接口】
RKADK_PLAYER_EVENT_E
RKADK_PLAYER_CFG_S
5.3.3 RKADK_PLAYER_CFG_S
【说明】
定义播放器属性结构体。
【定义】
typedef struct {
RKADK_BOOL bEnableVideo;
RKADK_BOOL bEnableAudio;
RKADK_PLAYER_EVENT_FN pfnPlayerCallback;
} RKADK_PLAYER_CFG_S;
【成员】
| 成员名称 | 描述 |
|---|---|
| bEnableVideo | Reserved |
| bEnableAudio | Reserved |
| pfnPlayerCallback | 播放事件回调函数指针 |
【相关数据类型及接口】
RKADK_PLAYER_EVENT_FN
RKADK_PLAYER_Create
5.3.4 RKADK_PLAYER_VO_FORMAT_E
【说明】
定义图像像素格式枚举类型。
【定义】
typedef enum {
VO_FORMAT_ARGB8888 = 0,
VO_FORMAT_ABGR8888,
VO_FORMAT_RGB888,
VO_FORMAT_BGR888,
VO_FORMAT_ARGB1555,
VO_FORMAT_ABGR1555,
VO_FORMAT_NV12,
VO_FORMAT_NV21
} RKADK_PLAYER_VO_FORMAT_E;
【相关数据类型及接口】
RKADK_PLAYER_FRAMEINFO_S
5.3.5 RKADK_PLAYER_VO_DEV_E
【说明】
定义显示输出设备号枚举类型。
【定义】
typedef enum {
VO_DEV_HD0 = 0,
VO_DEV_HD1
} RKADK_PLAYER_VO_DEV_E;
【成员】
| 成员名称 | 描述 |
|---|---|
| VO DEV HD0 _ _ | 显示输出设备0 |
| VO DEV HD1 _ _ | 显示输出设备1 |
【相关数据类型及接口】
RKADK_PLAYER_FRAMEINFO_S
5.3.6 RKADK_PLAYER_VO_INTF_TYPE_E
【说明】
定义显示接口枚举类型。
【定义】
typedef enum {
DISPLAY_TYPE_HDMI = 0,
DISPLAY_TYPE_EDP,
DISPLAY_TYPE_VGA,
DISPLAY_TYPE_MIPI,
} RKADK_PLAYER_VO_INTF_TYPE_E;
【成员】
| 成员名称 | 描述 |
|---|---|
| DISPLAY TYPE HDMI _ _ | 显示接口为HDMI |
| DISPLAY TYPE EDP _ _ | 显示接口为EDP |
| DISPLAY TYPE VGA _ _ | 显示接口为VGA |
| DISPLAY TYPE MIPI _ _ | 显示接口为MIPI |
【相关数据类型及接口】
RKADK_PLAYER_FRAMEINFO_S
5.3.7 RKADK_PLAYER_VO_ATTR_S
【说明】
定义视频输出属性结构体。
【定义】
typedef struct {
RKADK_BOOL bMirror;
RKADK_BOOL bFlip;
RKADK_U32 u32Rotation;
RKADK_RECT_S stChnRect;
} RKADK_PLAYER_VO_ATTR_S;
【成员】
| 成员名称 | 描述 |
|---|---|
| bMirror | 视频镜像 |
| bFlip | 视频翻转 |
| u32Rotation | 视频旋转:0, 90, 180, 270 |
| stChnRect | 视频输出显示区域 |
【相关数据类型及接口】
RKADK_PLAYER_FRAMEINFO_S
5.3.8 RKADK_PLAYER_FRAMEINFO_S
【说明】
定义图像信息结构体。
【定义】
typedef struct {
RKADK_U32 u32FrmInfoS32x;
RKADK_U32 u32FrmInfoS32y;
RKADK_U32 u32DispWidth;
RKADK_U32 u32DispHeight;
RKADK_U32 u32ImgWidth;
RKADK_U32 u32ImgHeight;
RKADK_U32 u32VoLayerMode;
RKADK_U32 u32ChnnNum;
RKADK_U32 u32BorderColor;
RKADK_U32 u32BorderTopWidth;
RKADK_U32 u32BorderBottomWidth;
RKADK_U32 u32BorderLeftWidth;
RKADK_U32 u32BorderRightWidth;
RKADK_PLAYER_VO_CHNN_MODE_E u32EnMode;
RKADK_PLAYER_VO_FORMAT_E u32VoFormat;
RKADK_PLAYER_VO_DEV_E u32VoDev;
RKADK_PLAYER_VO_INTF_TYPE_E u32EnIntfType;
RKADK_U32 u32DispFrmRt;
VO_INTF_SYNC_E enIntfSync;
VO_SYNC_INFO_S stSyncInfo;
RKADK_PLAYER_VO_ATTR_S stVoAttr;
} RKADK_PLAYER_FRAMEINFO_S;
【成员】
| 成员名称 | 描述 |
|---|---|
| u32FrmInfoS32x | Layer显示区域x坐标 |
| u32FrmInfoS32y | Layer显示区域y坐标 |
| u32DispWidth | Layer显示区域宽度 |
| u32DispHeight | Layer显示区域高度 |
| u32ImgWidth | Layer画布宽度 |
| u32ImgHeight | Layer画布高度 |
| u32VoLayerMode | 定义图层类型 |
| u32ChnnNum | 视频输出通道号,取值范围:[0, VO MAX CHN NUM(128)] _ _ _ |
| u32BorderColor | 视频输出通道边框属性:颜色(Reserved) |
| u32BorderTopWidth | 视频输出通道边框属性:上边框宽(Reserved) |
| u32BorderBottomWidth | 视频输出通道边框属性:下边框宽(Reserved) |
| u32BorderLeftWidth | 视频输出通道边框属性:左边框宽(Reserved) |
| u32BorderRightWidth | 视频输出通道边框属性:右边框宽(Reserved) |
| u32EnMode | 画面高宽比模式(Reserved) |
| u32VoFormat | 定义图像像素格式 |
| u32VoDev | 定义输出设备 |
| u32EnIntfType | 设置显示接口类型 |
| u32DispFrmRt | 设置分辨率 |
| enIntfSync | 设置屏幕接口同步模式 |
| stSyncInfo | 屏幕属性结构体 |
| stVoAttr | 视频输出属性结构体 |
视频输出相关属性具体可参考Rockit VO文档Rockchip_Developer_Guide_MPI_VO.pdf。视频镜像、翻转、旋转、显示区域通过stVoAttr设置;不支持同时设置Mirrot/Flip 和 Rotation,设置Mirrot/Flip后,Rotation将失效。Layer显示区域建议不设置,使用默认值。
【相关数据类型及接口】
RKADK_PLAYER_VO_FORMAT_E RKADK_PLAYER_VO_DEV_E
RKADK_PLAYER_VO_INTF_TYPE_E
RKADK_PLAYER_VO_ATTR_S
RKADK_PLAYER_SetVideoSink
5.3.9 RKADK_PLAYER_STATE_E
【说明】
定义播放状态枚举类型。
【定义】
typedef enum {
RKADK_PLAYER_STATE_IDLE = 0, /* The player state before init */
RKADK_PLAYER_STATE_INIT, /* The player is in the initial state. It changes
to the initial state after being SetDataSource */
RKADK_PLAYER_STATE_PREPARED, /* The player is in the prepared state */
RKADK_PLAYER_STATE_PLAY, /* The player is in the playing state */
RKADK_PLAYER_STATE_TPLAY, /* The player is in the trick playing state, Reserved */
RKADK_PLAYER_STATE_PAUSE, /* The player is in the pause state */
RKADK_PLAYER_STATE_ERR, /* The player is in the err state */
RKADK_PLAYER_STATE_BUTT
} RKADK_PLAYER_STATE_E;
【相关数据类型及接口】
RKADK_PLAYER_GetPlayStatus
6. 直播
6.1 概述
提供标准RTSP直播流的基本服务;提供RTMP直播服务。RTSP和RTMP不支持同时启动。
6.2 API参考
6.2.1 RTSP
6.2.1.1 RKADK_RTSP_Init
初始化RTSP模块。
RKADK_S32 RKADK_RTSP_Init(RKADK_U32 u32CamId, RKADK_U32 port, const char *path, RKADK_MW_PTR *ppHandle);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| u32CamId | Camera id | 输入 |
| port | 端口号 | 输入 |
| path | RTSP地址 | 输入 |
| ppHandle | 创建的RTSP Handle | 输出 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_rtsp.h
RKADK_RTSP_Init 后调用RKADK_RTSP_Start 启动RTSP直播推流。
rkadk_rtsp_test
RKADK_RTSP_DeInit
6.2.1.2 RKADK_RTSP_DeInit
反初始化RTSP模块。
RKADK_S32 RKADK_RTSP_DeInit(RKADK_MW_PTR pHandle);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| pHandle | 创建的RTSP Handle | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_rtsp.h
rkadk_rtsp_test
RKADK_RTSP_Init 6.2.1.3 RKADK_RTSP_Start
启动RTSP直播。
RKADK_S32 RKADK_RTSP_Start(RKADK_MW_PTR pHandle);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| pHandle | 创建的RTSP Handle | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_rtsp.h
RKADK_RTSP_Init 后调用该接口。
rkadk_rtsp_test
RKADK_RTSP_Stop
6.2.1.4 RKADK_RTSP_Stop
停止RTSP直播。
RKADK_S32 RKADK_RTSP_Stop(RKADK_MW_PTR pHandle);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| pHandle | 创建的RTSP Handle | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_rtsp.h
rkadk_rtsp_test
RKADK_RTSP_Start
6.2.2 RTMP
6.2.2.1 RKADK_RTMP_Init
初始化RTMP模块。
RKADK_S32 RKADK_RTMP_Init(RKADK_U32 u32CamId, const char *path, RKADK_MW_PTR *ppHandle);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| u32CamId | Camera id | 输入 |
| path | RTMP地址 | 输入 |
| ppHandle | 创建的RTMP Handle | 输出 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_rtmp.h
rkadk_rtmp_test
RKADK_RTMP_DeInit
6.2.2.2 RKADK_RTMP_DeInit
反初始化RTMP模块。
RKADK_S32 RKADK_RTMP_DeInit(RKADK_MW_PTR pHandle);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| pHandle | 创建的RTMP Handle | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_rtmp.h rkadk_rtmp_test
RKADK_RTMP_Init
7. 存储
7.1 概述
提供基本的存储功能,目前包含如下功能:
文件检测、存储、获取、管理设备容量和状态查询自动删除文件格式化
7.2 API参考
7.2.1 RKADK_STORAGE_Init
存储模块初始化。
RKADK_S32 RKADK_STORAGE_Init(RKADK_MW_PTR *ppHandle, RKADK_STR_DEV_ATTR *pstDevAttr);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| ppHandle | 创建的存储模块句柄 | 输出 |
| pstDevAttr | 挂载设备属性指针 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_storage.h
不支持重复初始化。RKADK_STR_DEV_ATTR传入NULL使用默认属性,默认属性为:2个文件夹、命名为video_front和video_back、以文件名排序、自动删除阈值500~1000M、不使用文件个数限制、限制比例为50%。
rkadk_storage_test
RKADK_STORAGE_Deinit
7.2.2 RKADK_STORAGE_Deinit
存储模块反初始化。
RKADK_S32 RKADK_STORAGE_Deinit(RKADK_MW_PTR pHandle);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| pHandle | 存储模块句柄指针 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_storage.h
不支持重复反初始化。rkadk_storage_test
RKADK_STORAGE_Init
7.2.3 RKADK_STORAGE_GetDevAttr
获取挂载设备属性。
RKADK_STR_DEV_ATTR RKADK_STORAGE_GetDevAttr(RKADK_MW_PTR pHandle);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| pHandle | 存储模块句柄指针 | 输入 |
| 返回值 | 描述 |
|---|---|
| RKADK STR DEV ATTR _ _ _ | 挂载设备属性结构体 |
头文件:rkadk_storage.h
存储模块初始化后,才能使用RKADK_STORAGE_GetDevAttr接口。
无
无
7.2.4 RKADK_STORAGE_GetMountStatus
获取设备挂载状态。
RKADK_MOUNT_STATUS RKADK_STORAGE_GetMountStatus(RKADK_MW_PTR pHandle);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| pHandle | 存储模块句柄指针 | 输入 |
| 返回值 | 描述 |
|---|---|
| RKADK MOUNT STATUS _ _ | 挂载状态枚举类型 |
头文件:rkadk_storage.h
rkadk_storage_test
无
7.2.5 RKADK_STORAGE_GetCapacity
获取设备容量。
RKADK_S32 RKADK_STORAGE_GetCapacity(RKADK_MW_PTR *ppHandle, RKADK_S32 *totalSize, RKADK_S32 *freeSize);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| ppHandle | 创建的存储模块句柄 | 输入/输出 |
| totalSize | 设备总容量指针 | 输出 |
| freeSize | 设备剩余容量指针 | 输出 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_storage.h
rkadk_storage_test
无
7.2.6 RKADK_STORAGE_GetFileList
获取文件列表。
RKADK_S32 RKADK_STORAGE_GetFileList(RKADK_FILE_LIST *list, RKADK_MW_PTR pHandle, RKADK_SORT_TYPE sort);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| list | 文件列表结构体指针 | 输入/输出 |
| pHandle | 存储模块句柄指针 | 输入 |
| sort | 排序类型 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_storage.h
必须和RKADK_STORAGE_FreeFileList配套使用。
rkadk_storage_test
RKADK_STORAGE_FreeFileList
7.2.7 RKADK_STORAGE_FreeFileList
释放文件列表。
RKADK_S32 RKADK_STORAGE_FreeFileList(RKADK_FILE_LIST *list);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| list | 文件列表结构体指针 | 输入/输出 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_storage.h
必须和RKADK_STORAGE_GetFileList配套使用。rkadk_storage_test
RKADK_STORAGE_GetFileList
7.2.8 RKADK_STORAGE_GetFileNum
获取文件数量。
RKADK_S32 RKADK_STORAGE_GetFileNum(RKADK_CHAR *fileListPath, RKADK_MW_PTR pHandle);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| fileListPath | 文件列表路径指针 | 输入 |
| pHandle | 存储模块句柄指针 | 输入 |
| 返回值 | 描述 |
|---|---|
| 非负 | 文件数量 |
| -1 | 失败 |
头文件:rkadk_storage.h
无
无
7.2.9 RKADK_STORAGE_GetDevPath
获取挂载设备路径。
RKADK_CHAR *RKADK_STORAGE_GetDevPath(RKADK_MW_PTR pHandle);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| pHandle | 存储模块句柄指针 | 输入 |
| 返回值 | 描述 |
|---|---|
| RKADK CHAR * _ | 挂载设备路径指针 |
头文件:rkadk_storage.h
存储模块初始化后,才能使用RKADK_STORAGE_GetDevPath接口。
rkadk_storage_test
无
7.2.10 RKADK_STORAGE_Format
设备格式化。
RKADK_S32 RKADK_STORAGE_Format(RKADK_MW_PTR pHandle, RKADK_CHAR *cFormat);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| pHandle | 存储模块句柄指针 | 输入 |
| cFormat | 文件系统类型 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_storage.h
无
无
7.3 数据类型
存储模块主要提供以下数据类型:
RKADK_MOUNT_STATUS:挂载状态枚举类型
RKADK_SORT_TYPE:排序类型枚举
RKADK_SORT_CONDITION:排序条件枚举类型
RKADK_STR_FOLDER_ATTR:文件夹属性结构体
RKADK_STR_DEV_ATTR:设备属性结构体
RKADK_FILE_INFO:文件信息结构体
RKADK_FILE_LIST:文件列表结构体
RKADK_FILE_LIST_ARRAY:文件列表组结构体
7.3.1 RKADK_MOUNT_STATUS
【说明】
定义挂载状态枚举类型。
【定义】
typedef enum {
DISK_UNMOUNTED = 0,
DISK_NOT_FORMATTED,
DISK_FORMAT_ERR,
DISK_SCANNING,
DISK_MOUNTED,
DISK_MOUNT_BUTT,
} RKADK_MOUNT_STATUS;
【成员】
| 成员名称 | 描述 |
|---|---|
| DISK UNMOUNTED _ | 磁盘未挂载 |
| DISK NOT FORMATTED _ _ | 磁盘未格式化 |
| DISK FORMAT ERR _ _ | 磁盘格式化错误 |
| DISK SCANNING _ | 磁盘正在扫描中 |
| DISK MOUNTED _ | 磁盘已挂载 |
【相关数据类型及接口】
RKADK_STORAGE_GetMountStatus
7.3.2 RKADK_SORT_TYPE
【说明】
定义排序类型枚举。
【定义】
typedef enum {
LIST_ASCENDING = 0,
LIST_DESCENDING,
LIST_BUTT,
} RKADK_SORT_TYPE;
【成员】
| 成员名称 | 描述 |
|---|---|
| LIST ASCENDING _ | 列表以升序排序 |
| LIST DESCENDING _ | 列表以降序排序 |
【相关数据类型及接口】
RKADK_STORAGE_GetFileList
7.3.3 RKADK_SORT_CONDITION
【说明】
定义排序条件枚举类型。
【定义】
typedef enum {
SORT_MODIFY_TIME = 0,
SORT_FILE_NAME,
SORT_BUTT,
} RKADK_SORT_CONDITION;
【成员】
| 成员名称 | 描述 |
|---|---|
| SORT MODIFY TIME _ _ | 列表以文件修改时间排序 |
| SORT FILE NAME _ _ | 列表以文件名排序 |
【相关数据类型及接口】
RKADK_STR_FOLDER_ATTR
7.3.4 RKADK_STR_FOLDER_ATTR
【说明】
定义文件夹属性结构体。
【定义】
typedef struct {
RKADK_CHAR cFolderPath[RKADK_MAX_FILE_PATH_LEN];
RKADK_SORT_CONDITION s32SortCond;
RKADK_BOOL bNumLimit;
RKADK_S32 s32Limit;
} RKADK_STR_FOLDER_ATTR;
【成员】
| 成员名称 | 描述 |
|---|---|
| cFolderPath | 文件夹路径 |
| s32SortCond | 排序条件 |
| bNumLimit | 选项:是否以文件个数设置上限 |
| s32Limit | 文件夹容量上限(比例/个数) |
【相关数据类型及接口】
RKADK_SORT_CONDITION
RKADK_STR_DEV_ATTR
7.3.5 RKADK_STR_DEV_ATTR
【说明】
定义设备属性结构体。
【定义】
typedef struct {
RKADK_CHAR cDevPath[RKADK_MAX_FILE_PATH_LEN];
RKADK_CHAR cMountPath[RKADK_MAX_FILE_PATH_LEN];
RKADK_S32 s32FreeSizeDelMin;
RKADK_S32 s32FreeSizeDelMax;
RKADK_S32 s32AutoDel;
RKADK_S32 s32FolderNum;
RKADK_CHAR cFormatId[RKADK_MAX_FORMAT_ID_LEN];
RKADK_CHAR cVolume[RKADK_MAX_VOLUME_LEN];
RKADK_S32 s32CheckFormatId;
RKADK_STR_FOLDER_ATTR *pstFolderAttr;
} RKADK_STR_DEV_ATTR;
【成员】
| 成员名称 | 描述 |
|---|---|
| cDevPath | 设备名(设备路径) |
| cMountPath | 设备挂载路径 |
| s32FreeSizeDelMin | 自动删除阈值下限 |
| s32FreeSizeDelMax | 自动删除阈值上限 |
| s32AutoDel | 自动删除选项 |
| s32FolderNum | 文件夹个数 |
| cFormatId | 格式化ID |
| cVolume | 卷标 |
| s32CheckFormatId | 检测格式化ID是否匹配 |
| pstFolderAttr | 文件夹属性结构体指针 |
【相关数据类型及接口】
RKADK_STR_FOLDER_ATTR
RKADK_STORAGE_Init
RKADK_STORAGE_GetDevAttr
7.3.6 RKADK_FILE_INFO
【说明】
定义文件信息结构体。
【定义】
typedef struct {
RKADK_CHAR filename[RKADK_MAX_FILE_PATH_LEN];
off_t stSize;
time_t stTime;
void *thumb;
} RKADK_FILE_INFO;
【成员】
| 成员名称 | 描述 |
|---|---|
| filename | 文件名 |
| stSize | 文件大小 |
| stTime | 文件修改时间 |
| thumb | 缩略图指针 |
【相关数据类型及接口】
RKADK_FILE_LIST
7.3.7 RKADK_FILE_LIST
【说明】
定义文件列表结构体。
【定义】
typedef struct {
RKADK_CHAR path[RKADK_MAX_FILE_PATH_LEN];
RKADK_S32 s32FileNum;
RKADK_FILE_INFO *file;
} RKADK_FILE_LIST;
【成员】
| 成员名称 | 描述 |
|---|---|
| path | 文件列表(文件夹)路径 |
| s32FileNum | 文件个数 |
| file | 文件信息结构体指针 |
【相关数据类型及接口】
RKADK_FILE_INFO
RKADK_FILE_LIST_ARRAY
7.3.8 RKADK_FILE_LIST_ARRAY
【说明】定义文件列表组结构体。
【定义】
typedef struct {
RKADK_S32 s32ListNum;
RKADK_FILE_LIST *list;
} RKADK_FILE_LIST_ARRAY;
【成员】
| 成员名称 | 描述 |
|---|---|
| s32ListNum | 文件列表(文件夹)个数 |
| list | 文件列表结构体指针 |
【相关数据类型及接口】
RKADK_FILE_LIST
8. 本地预览
8.1 概述
提供本地预览功能。
8.2 API参考
8.2.1 RKADK_DISP_Init
初始化本地预览模块。
RKADK_S32 RKADK_DISP_Init(RKADK_U32 u32CamId);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| u32CamId | Camera id | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_disp.h
rkadk_disp_test
RKADK_DISP_DeInit
8.2.2 RKADK_DISP_DeInit
反初始化本地预览模块。
RKADK_S32 RKADK_DISP_DeInit(RKADK_U32 u32CamId);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| u32CamId | Camera id | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_disp.h rkadk_disp_test
RKADK_DISP_Init
9. VI ISP API
9.1 概述
VI ISP模块是对ISP模块的再次封装,记录ISP上下文环境,方便应用层使用。本章节只介绍RKADK_VI_ISP_Start和 RKADK_VI_ISP_Stop,其他API具体用法参考docs/RV1126_RV1109/Camera/Rockchip_Development_Guide_ISP2x_CN_v1.6.3.pdf。
9.2 API参考
9.2.1 RKADK_VI_ISP_Start
启动ISP。
int RKADK_VI_ISP_Start(RKADK_U32 u32CamId, rk_aiq_working_mode_t WDRMode, bool bMultiCam, const char *iq_file_dir, int fps);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| u32CamId | Camera Id | 输入 |
| WDRMode | AIQ pipeline工作模式 ,详情参考ISP文档 | 输入 |
| bMultiCam | 是否多Sensor | 输入 |
| iq file dir _ _ | AIQ文件路径 | 输入 |
| fps | 帧率 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_vi_isp.h
除Player模块外,其他任一模块启动之前,都必须先调用RKADK_VI_ISP_Start启动ISP。支持重复调用RKADK_VI_ISP_Start。必须和RKADK_VI_ISP_Stop配套使用,每调用一次RKADK_VI_ISP_Sart,必须对应调用一次RKADK_VI_ISP_Stop。
rkadk_record_test
rkadk_photo_test
rkadk_stream_test
rkadk_rtsp_test
rkadk_rtmp_test
rkadk_disp_test
RKADK_VI_ISP_Stop
9.2.2 RKADK_VI_ISP_Stop
停止ISP。
int RKADK_VI_ISP_Stop(RKADK_U32 u32CamId);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| u32CamId | Camera Id | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_vi_isp.h
支持重复调用RKADK_VI_ISP_Stop。必须和RKADK_VI_ISP_Start配套使用,每调用一次RKADK_VI_ISP_Sart,必须对应调用一次RKADK_VI_ISP_Stop。
rkadk_record_test
rkadk_photo_test
rkadk_stream_test
rkadk_rtsp_test
rkadk_rtmp_test
rkadk_disp_test
RKADK_VI_ISP_Start
10. 参数设置
10.1 概述
参数设置模块与产品形态强相关,通过组合使用通用组件数据结构,定义出适合产品形态的数据结构。
该模块支持获取指定参数,支持保存指定参数,支持参数恢复默认。
为方便编辑,参数以ini文件形式存放。
10.2 API参考
10.2.1 RKADK_PARAM_Init
初始化参数模块
RKADK_S32 RKADK_PARAM_Init(char *globalSetting, char **sesnorSettingArrary);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| globalSetting | 全局ini配置文件路径 | 输入 |
| sesnorSettingArrary | Sensor ini配置文件路径 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_param.h
启动任一模块之前,都必须先调用RKADK_PARAM_Init初始化参数模块。如果没有设置globalSetting,则使用默认路径RKADK_PARAM_PATH。如果没有设置sesnorSettingArrary,则使用默认路径RKADK_PARAM_PATH_SENSOR_PREFIX,Sensor 配置文件前缀默认rkadk_setting_sensor_n.ini,_n 为Sensor Camera Id,序号从0开始。
rkadk_record_test
无
10.2.2 RKADK_PARAM_GetCamParam
获取Camera相关的参数。
RKADK_S32 RKADK_PARAM_GetCamParam(RKADK_S32 s32CamID, RKADK_PARAM_TYPE_E enParamType, RKADK_VOID *pvParam);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| s32CamID | Camera id | 输入 |
| enParamType | 参数类型 | 输入 |
| pvParam | 获取到的参数指针 | 输出 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_param.h
调用RKADK_PARAM_Init初始化参数模块后,才能调用该接口。
rkadk_record_test
RKADK_PARAM_SetCamParam
10.2.3 RKADK_PARAM_SetCamParam
设置Camera相关的参数。
RKADK_S32 RKADK_PARAM_SetCamParam(RKADK_S32 s32CamID, RKADK_PARAM_TYPE_E enParamType, const RKADK_VOID *pvParam);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| s32CamID | Camera id | 输入 |
| enParamType | 参数类型 | 输入 |
| pvParam | 设置的参数指针 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_param.h
调用RKADK_PARAM_Init初始化参数模块后,才能调用该接口。
rkadk_record_test
RKADK_PARAM_GetCamParam
10.2.4 RKADK_PARAM_GetCommParam
获取普通参数。
RKADK_S32 RKADK_PARAM_GetCommParam(RKADK_PARAM_TYPE_E enParamType, RKADK_VOID *pvParam);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| enParamType | 参数类型 | 输入 |
| pvParam | 获取到的参数指针 | 输出 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_param.h
调用RKADK_PARAM_Init初始化参数模块后,才能调用该接口。
rkadk_record_test
RKADK_PARAM_SetCommParam
10.2.5 RKADK_PARAM_SetCommParam
设置普通参数。
RKADK_S32 RKADK_PARAM_SetCommParam(RKADK_PARAM_TYPE_E enParamType, const RKADK_VOID *pvParam);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| enParamType | 参数类型 | 输入 |
| pvParam | 设置的参数指针 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_param.h
调用RKADK_PARAM_Init初始化参数模块后,才能调用该接口。
rkadk_record_test
RKADK_PARAM_GetCommParam
10.2.6 RKADK_PARAM_SetDefault
恢复默认配置。
RKADK_S32 RKADK_PARAM_SetDefault(RKADK_VOID);
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_param.h
10.2.7 RKADK_PARAM_GetResolution
RKADK_PARAM_RES_E 转换为具体分辨率。
RKADK_S32 RKADK_PARAM_GetResolution(RKADK_PARAM_RES_E type, RKADK_U32 *width, RKADK_U32 *height);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| type | 分辨率类型 | 输入 |
| width | 转换的分辨率宽 | 输出 |
| height | 转换的分辨率高 | 输出 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败 |
头文件:rkadk_param.h
调用RKADK_PARAM_Init初始化参数模块后,才能调用该接口。
无
RKADK_PARAM_GetResType
10.2.8 RKADK_PARAM_GetResType
分辨率转换为RKADK_PARAM_RES_E。
RKADK_PARAM_RES_E RKADK_PARAM_GetResType(RKADK_U32 width, RKADK_U32 height);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| width | 分辨率宽 | 输入 |
| height | 分辨率高 | 输入 |
| 返回值 | 描述 |
|---|---|
| 对应的RKADK PARAM RES E _ _ _ | 成功 |
| RKADK RES BUTT _ _ | 失败 |
头文件:rkadk_param.h
调用RKADK_PARAM_Init初始化参数模块后,才能调用该接口。
无
RKADK_PARAM_GetResolution
10.2.9 RKADK_PARAM_GetVencChnId
获取Record、Photo、Stream 对应的VENC通道号。
RKADK_S32 RKADK_PARAM_GetVencChnId(RKADK_U32 u32CamId, RKADK_STREAM_TYPE_E enStrmType);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| u32CamId | Camera id | 输入 |
| enStrmType | 流类型 | 输入 |
| 返回值 | 描述 |
|---|---|
| 对应的VENC通道号 | 成功 |
| -1 | 失败 |
头文件:rkadk_param.h
调用RKADK_PARAM_Init初始化参数模块后,才能调用该接口。
无
无
10.3 数据类型
参数模块主要提供以下数据类型:
RKADK_DEFPARAM_PATH:默认全局ini配置文件路径
RKADK_DEFPARAM_PATH_SENSOR_PREFIX:默认Sensor ini配置文件路径
RKADK_PARAM_PATH:全局ini配置文件路径
RKADK_PARAM_PATH_SENSOR_PREFIX:Sensor ini配置文件路径
RKADK_PARAM_TYPE_E:参数类型枚举
RKADK_PARAM_RES_E:分辨率类型枚举
RKADK_STREAM_TYPE_E:流类型枚举
RKADK_PARAM_CODEC_CFG_S:编码类型配置结构体
RKADK_PARAM_BITRATE_S:比特率配置结构体
RKADK_PARAM_REC_TIME_S:录像时长配置结构体
RKADK_PARAM_GOP_S:VENC GOP配置结构体
RKADK_VQE_MODE_E:音频输入声音质量增强枚举
MUXER_TYPE_E:录像文件类型枚举
MUXER_PRE_RECORD_MODE_E:预录模式枚举
10.3.1 RKADK_DEFPARAM_PATH
【说明】
默认全局ini配置文件路径,存放各Sensor共用的配置,用于恢复默认配置。
【定义】
#define RKADK_DEFPARAM_PATH "/etc/rkadk/rkadk_defsetting.ini"
10.3.2 RKADK_DEFPARAM_PATH_SENSOR_PREFIX
【说明】
默认Sensor ini配置文件路径,存放各Sensor独有的配置,用于恢复默认配置。
【定义】
#define RKADK_DEFPARAM_PATH_SENSOR_PREFIX "/etc/rkadk/rkadk_defsetting_sensor"
Sensor配置文件前缀默认rkadk_defsetting_sensor_n.ini,_n 为Sensor Camera Id,序号从0开始。
10.3.3 RKADK_PARAM_PATH
【说明】
全局ini配置文件路径,存放各Sensor共用的配置。
【定义】
#define RKADK_PARAM_PATH "/data/rkadk/rkadk_setting.ini"
10.3.4 RKADK_PARAM_PATH_SENSOR_PREFIX
【说明】
Sensor ini配置文件路径,存放各Sensor独有的配置。用于保存切换录像分辨率、Codec类型等操作时的新配置。
【定义】
#define RKADK_PARAM_PATH_SENSOR_PREFIX "/data/rkadk/rkadk_setting_sensor"
Sensor 配置文件前缀默认rkadk_setting_sensor_n.ini,_n 为Sensor Camera Id,序号从0开始。
10.3.5 RKADK_PARAM_TYPE_E
【说明】
定义参数类型枚举类型。
【定义】
typedef enum {
/* Cam Dependent Param */
RKADK_PARAM_TYPE_FPS, /* framerate */
RKADK_PARAM_TYPE_GOP, /* gop */
RKADK_PARAM_TYPE_RES, /* specify RKADK_PARAM_RES_E(record) */
RKADK_PARAM_TYPE_PHOTO_RES, /* specify RKADK_PARAM_RES_E(photo) */
RKADK_PARAM_TYPE_CODEC_TYPE, /* specify RKADK_PARAM_CODEC_CFG_S(record) */
RKADK_PARAM_TYPE_BITRATE, /* encode bitrate,specify RKADK_PARAM_BITRATE_S */
RKADK_PARAM_TYPE_FLIP, /* bool */
RKADK_PARAM_TYPE_MIRROR, /* bool */
RKADK_PARAM_TYPE_LDC, /* ldc level [0,255] */
RKADK_PARAM_TYPE_ANTIFOG, /* antifog value, [0,10] */
RKADK_PARAM_TYPE_WDR, /* wdr level, [0,10] */
RKADK_PARAM_TYPE_HDR, /* 0: normal, 1: HDR2, 2: HDR3, [0,2] */
RKADK_PARAM_TYPE_REC, /* record enable, bool*/
RKADK_PARAM_TYPE_RECORD_TYPE, /* specify RKADK_REC_TYPE_E */
RKADK_PARAM_TYPE_RECORD_TIME, /* specify RKADK_PARAM_REC_TIME_S, record time(s) */
RKADK_PARAM_TYPE_PRE_RECORD_TIME, /* pre record time, unit in second(s) */
RKADK_PARAM_TYPE_PRE_RECORD_MODE, /* pre record mode, specify MUXER_PRE_RECORD_MODE_E
*/
RKADK_PARAM_TYPE_SPLITTIME, /* specify RKADK_PARAM_REC_TIME_S, manual splite
time(s) */
RKADK_PARAM_TYPE_FILE_CNT, /* record file count, maximum RECORD_FILE_NUM_MAX */
RKADK_PARAM_TYPE_LAPSE_INTERVAL, /* specify RKADK_PARAM_REC_TIME_S, lapse interval(s)
*/
RKADK_PARAM_TYPE_LAPSE_MULTIPLE, /* lapse multiple */
RKADK_PARAM_TYPE_PHOTO_ENABLE, /* photo enable, bool*/
RKADK_PARAM_TYPE_SNAP_NUM, /* continue snap num */
/* COMM Dependent Param */
RKADK_PARAM_TYPE_REC_UNMUTE, /* record audio mute, bool */
RKADK_PARAM_TYPE_AUDIO, /* speaker enable, bool */
RKADK_PARAM_TYPE_VOLUME, /* speaker volume, [0,100] */
RKADK_PARAM_TYPE_MIC_UNMUTE, /* mic(mute) enable, bool */
RKADK_PARAM_TYPE_MIC_VOLUME, /* mic volume, [0,100] */
RKADK_PARAM_TYPE_OSD, /* show osd or not, bool */
RKADK_PARAM_TYPE_OSD_TIME_FORMAT, /* osd format for time */
RKADK_PARAM_TYPE_BOOTSOUND, /* boot sound enable, bool */
RKADK_PARAM_TYPE_OSD_SPEED, /* speed osd enable, bool */
RKADK_PARAM_TYPE_BUTT
} RKADK_PARAM_TYPE_E;
【成员】
| 成员名称 | 描述 |
|---|---|
| RKADK PARAM TYPE FPS _ _ _ | 帧率 |
| RKADK PARAM TYPE GOP _ _ _ | I帧间隔,RKADK PARAM GOP S _ _ _ |
| RKADK PARAM TYPE RES _ _ _ | 录像分辨率,RKADK PARAM RES E _ _ _ |
| RKADK PARAM TYPE PHOTO RES _ _ _ _ | 拍照分辨率,RKADK PARAM RES E _ _ _ |
| RKADK PARAM TYPE CODEC TYPE _ _ _ _ | 录像编码类型,RKADK PARAM CODEC CFG S _ _ _ _ |
| RKADK PARAM TYPE BITRATE _ _ _ | 比特率,RKADK PARAM BITRATE S _ _ _ |
| RKADK PARAM TYPE FLIP _ _ _ | 上下翻转 |
| RKADK PARAM TYPE MIRROR _ _ _ | 左右镜像 |
| RKADK PARAM TYPE LDC _ _ _ | 畸变校正[0,255] |
| RKADK PARAM TYPE ANTIFOG _ _ _ | 去雾[0,10] |
| RKADK PARAM TYPE WDR _ _ _ | 宽动态[0,10] |
| RKADK PARAM TYPE HDR _ _ _ | 高动态范围成像[0,10] |
| RKADK PARAM TYPE REC _ _ _ | 是否开机录像 |
| RKADK PARAM TYPE RECORD TYPE _ _ _ _ | 录像类型,RKADK REC TYPE E _ _ _ |
| RKADK PARAM TYPE RECORD TIME _ _ _ _ | 录像时长,录像主码流、子码流支持设置不同时长, RKADK PARAM REC TIME S _ _ _ _ |
| RKADK PARAM TYPE PRE RECORD TIME _ _ _ _ _ | 预录时长 |
| RKADK PARAM TYPE PRE RECORD MODE _ _ _ _ _ | 预录模式,0:不预录,1:手动切分预录,2:首文件预 录,3:所有文件预录 |
| RKADK PARAM TYPE SPLITTIME _ _ _ | 手动切分录像时长,录像主码流、子码流支持设置不同时 长,RKADK PARAM REC TIME S _ _ _ _ |
| RKADK PARAM TYPE FILE CNT _ _ _ _ | 同时录制文件个数,最大2 |
| RKADK PARAM TYPE LAPSE INTERVAL _ _ _ _ | 缩时录像时长,录像主码流、子码流支持设置不同时长, RKADK PARAM REC TIME S _ _ _ _ |
| RKADK PARAM TYPE LAPSE MULTIPLE _ _ _ _ | 缩时录像文件播放时长与实际画面内容时间的倍数关系 |
| RKADK PARAM TYPE PHOTO ENABLE _ _ _ _ | 是否开机启动拍照 |
| RKADK PARAM TYPE SNAP NUM _ _ _ _ | 单次拍照张数 |
| RKADK PARAM TYPE REC UNMUTE _ _ _ _ | 是否使能录像静音 |
| RKADK PARAM TYPE AUDIO _ _ _ | 是否使能Speaker |
| RKADK PARAM TYPE VOLUME _ _ _ | Speaker音量[0,100] |
| RKADK PARAM TYPE MIC UNMUTE _ _ _ _ | 是否使能麦克风 |
| 成员名称 | 描述 |
|---|---|
| RKADK PARAM TYPE MIC VOLUME _ _ _ _ | 麦克风音量[0,100] |
| RKADK PARAM TYPE OSD _ _ _ | 是否显示水印 |
| RKADK PARAM TYPE OSD TIME FORMAT _ _ _ _ _ | 水印时间格式 |
| RKADK PARAM TYPE OSD SPEED _ _ _ _ | 是否显示速度水印 |
| RKADK PARAM TYPE BOOTSOUND _ _ _ | 是否播放开机音乐 |
Flip、Mirror、Antifog、WDR、HDR等Camere 硬件相关设置,在调用RKADK_PARAM_SetCamParam 之前需要先调用VI ISP API对应接口设置。RKADK_PARAM_TYPE_LAPSE_MULTIPLE:缩时录像文件播放时长与实际画面内容时间的倍数关系,跟帧率有关,比如普通录像帧率是30fps,缩时录影是1fps,则倍数是30。切换分辨率时,当Photo分辨率未设置为Sensor最大支持分辨率时,需和Record 主码流分辨率保持一致。RKADK_PARAM_TYPE_REC_UNMUTE:和RKADK_RECORD_GetAencChn、RK_MPI_AENC_SetMute搭配使用。RKADK_PARAM_TYPE_FPS:和RKADK_VI_ISP_SET_FrameRate、RKADK_PARAM_GetVencChnId、RK_MPI_VENC_SetFps搭配使用。RK_MPI_VENC_SetFps说明参考Rockchip_Developer_Guide_Linux_RKMedia_CN.pdf文档。RKADK_PARAM_TYPE_GOP:和RKADK_PARAM_GetVencChnId、RK_MPI_VENC_SetGop搭配使用。RK_MPI_VENC_SetGop说明参考Rockchip_Developer_Guide_Linux_RKMedia_CN.pdf文档。RKADK_PARAM_TYPE_BITRATE:和RKADK_PARAM_GetVencChnId、RK_MPI_VENC_SetBitrate搭配使用。RK_MPI_VENC_SetBitrate说明参考Rockchip_Developer_Guide_Linux_RKMedia_CN.pdf文档。
【相关数据类型及接口】
RKADK_PARAM_GetCamParam
RKADK_PARAM_SetCamParam
RKADK_PARAM_GetCommParam
RKADK_PARAM_SetCommParam
10.3.6 RKADK_PARAM_RES_E
【说明】
定义播放事件枚举类型。
【定义】
typedef enum {
RKADK_RES_720P = 0, /* 1280*720 */
RKADK_RES_1080P, /* 1920*1080 */
RKADK_RES_1296P, /* 2340*1296 */
RKADK_RES_1440P, /* 2560*1440 */
RKADK_RES_1520P, /* 2688*1520 */
RKADK_RES_1600P, /* 2560*1600 */
RKADK_RES_1620P, /* 2880*1620 */
RKADK_RES_1944P, /* 2592*1944 */
RKADK_RES_2160P, /* 3840*2160 */
RKADK_RES_BUTT,
} RKADK_PARAM_RES_E;
【相关数据类型及接口】
RKADK_PARAM_GetResolution
RKADK_PARAM_GetResType
10.3.7 RKADK_STREAM_TYPE_E
【说明】
定义流枚举类型。
【定义】
typedef enum {
RKADK_STREAM_TYPE_VIDEO_MAIN,
RKADK_STREAM_TYPE_VIDEO_SUB,
RKADK_STREAM_TYPE_SNAP,
RKADK_STREAM_TYPE_PREVIEW,
RKADK_STREAM_TYPE_LIVE,
RKADK_STREAM_TYPE_DISP,
RKADK_STREAM_TYPE_BUTT
} RKADK_STREAM_TYPE_E;
【成员】
| 成员名称 | 描述 |
|---|---|
| RKADK STREAM TYPE VIDEO MAIN _ _ _ _ | 录像主码流 |
| RKADK STREAM TYPE VIDEO SUB _ _ _ _ | 录像子码流 |
| RKADK STREAM TYPE SNAP _ _ _ | 拍照 |
| RKADK STREAM TYPE PREVIEW _ _ _ | 远程预览 |
| RKADK STREAM TYPE LIVE _ _ _ | 直播 |
| RKADK STREAM TYPE DISP _ _ _ | 本地预览 |
【相关数据类型及接口】
RKADK_PARAM_GetVencChnId
10.3.8 RKADK_PARAM_CODEC_CFG_S
【说明】
定义编码类型配置结构体。
【定义】
typedef struct {
RKADK_STREAM_TYPE_E enStreamType;
RKADK_CODEC_TYPE_E enCodecType;
} RKADK_PARAM_CODEC_CFG_S;
【成员】
| 成员名称 | 描述 |
|---|---|
| enStreamType | 流类型 |
| enCodecType | 编码类型 |
【相关数据类型及接口】
RKADK_CODEC_TYPE_E
RKADK_STREAM_TYPE_E
10.3.9 RKADK_PARAM_BITRATE_S
【说明】定义比特率配置结构体。
【定义】
typedef struct {
RKADK_STREAM_TYPE_E enStreamType;
RKADK_U32 u32Bitrate;
} RKADK_PARAM_BITRATE_S;
【成员】
| 成员名称 | 描述 |
|---|---|
| enStreamType | 流类型 |
| u32Bitrate | 比特率 |
【相关数据类型及接口】
RKADK_STREAM_TYPE_E
10.3.10 RKADK_PARAM_REC_TIME_S
【说明】
定义录像时长配置结构体。
【定义】
typedef struct {
RKADK_STREAM_TYPE_E enStreamType;
RKADK_U32 time;
} RKADK_PARAM_REC_TIME_S;
【成员】
| 成员名称 | 描述 |
|---|---|
| enStreamType | 流类型 |
| time | 录像时长 |
【相关数据类型及接口】
RKADK_STREAM_TYPE_E
10.3.11 RKADK_PARAM_GOP_S
【说明】
定义VENC I帧间隔配置结构体。
【定义】
typedef struct {
RKADK_STREAM_TYPE_E enStreamType;
RKADK_U32 u32Gop;
} RKADK_PARAM_GOP_S;
【成员】
| 成员名称 | 描述 |
|---|---|
| enStreamType | 流类型 |
| u32Gop | I帧间隔 |
【相关数据类型及接口】
RKADK_STREAM_TYPE_E
10.3.12 RKADK_VQE_MODE_E
【说明】
定义音频输入声音质量增强枚举类型
【定义】
typedef enum {
RKADK_VQE_MODE_AI_TALK = 0,
RKADK_VQE_MODE_AI_RECORD,
RKADK_VQE_MODE_AO,
RKADK_VQE_MODE_BUTT
} RKADK_VQE_MODE_E;
【成员】
| 成员名称 | 描述 |
|---|---|
| RKADK VQE MODE AI TALK _ _ _ _ | 使能AEC、ANR、AGC |
| RKADK VQE MODE AI RECORD _ _ _ _ | 使能ANR |
| RKADK VQE MODE AO _ _ _ | Reserved |
10.3.13 MUXER_TYPE_E
【说明】
定义录像文件类型枚举
【定义】
typedef enum rkMUXER_TYPE_E {
MUXER_TYPE_MP4 = 0,
MUXER_TYPE_MPEGTS,
MUXER_TYPE_FLV,
MUXER_TYPE_BUTT
} MUXER_TYPE_E;
【成员】
| 成员名称 | 描述 |
|---|---|
| MUXER TYPE MP4 _ _ | MP4 |
| MUXER TYPE MPEGTS _ _ | Reserved |
| MUXER TYPE FLV _ _ | FLV |
10.3.14 MUXER_PRE_RECORD_MODE_E
【说明】
定义预录模式枚举
【定义】
typedef enum rkMUXER_PRE_RECORD_TYPE_E {
MUXER_PRE_RECORD_NONE = 0,
MUXER_PRE_RECORD_MANUAL_SPLIT,
MUXER_PRE_RECORD_SINGLE,
MUXER_PRE_RECORD_NORMAL
} MUXER_PRE_RECORD_MODE_E;
【成员】
| 成员名称 | 描述 |
|---|---|
| MUXER PRE RECORD NONE _ _ _ | 不预录 |
| MUXER PRE RECORD MANUAL SPLIT _ _ _ _ | 手动切分文件预录 |
| MUXER PRE RECORD SINGLE _ _ _ | 第一个文件预录 |
| MUXER PRE RECORD NORMAL _ _ _ | 所有文件都预录 |
10.4 INI文件解析
10.4.1 全局INI配置文件
[version]
version = 1.3.1 /* version */
/* 普通参数 */
[common]
sensor_count = 1 /* Camera Sensor 个数 */
rec_unmute = TRUE /* 是否使能录像静音 */
enable_speaker = TRUE /* 是否使能Speaker */
speaker_volume = 80 /* Speaker音量,[0,100] */
mic_unmute = TRUE /* 是否使能麦克风 */
mic_volume = 80 /* 麦克风音量,[0,100] */
osd_time_format = 0 /* 时间水印格式 */
osd = TRUE /* 是否显示水印 */
boot_sound = TRUE /* 是否播放开机音乐 */
osd_speed = FALSE /* 是否显示速度水印 */
/* Audio 参数 */
[audio]
audio_node = default /* Audio 设备节点 */
sample_format = 1 /* 采样格式,特指SAMPLE_FORMAT_E, 详见Rkmedia 开
发文档 */
channels = 1 /* 通道数 */
samplerate = 48000 /* 采样率 */
samples_per_frame = 1024 /* 每帧采样个数 */
bitrate = 64000 /* 比特率 */
ai_layout = 0 /* AI layout mode, 详见Rkmedia开发文档 */
vqe_mode = 1 /* 配置音频输入声音质量增强, 特指RKADK_VQE_MODE_E
*/
codec_type = 8 /* Record 和 Live Audio 编码类型,默认适配MP2,特
指RKADK_CODEC_TYPE_E */
/* 缩略图参数 */
[thumb]
thumb_width = 320 /* 缩略图宽 */
thumb_height = 180 /* 缩略图高 */
venc_chn = 15 /* jpeg 编码通道 */
10.4.2 Sensor INI配置文件
[sensor]
used_isp = TRUE /* Sensor是否有经过ISP */
max_width = 2688 /* 最大分辨率宽 */
max_height = 1520 /* 最大分辨率高 */
framerate = 30 /* 帧率 */
enable_record = TRUE /* 是否使能录像 */
enable_photo = TRUE /* 是否使能拍照 */
flip = FALSE /* 上下翻转 */
mirror = FALSE /* 左右镜像 */
ldc = 0 /* 畸变校正,[0,255] */
wdr = 0 /* 宽动态,[0,10] */
hdr = 0 /* 高动态范围成像,[0,10] */
antifog = 0 /* 去雾,[0,10] */
/* VI通道配置参数 */
[vi.0]
chn_id = 0 /* 通道号 */
device_name = rkispp_m_bypass /* Video 节点路径 */
buf_cnt = 4 /* VI捕获视频缓冲区计数 */
width = 2688 /* Video宽 */
height = 1520 /* Video高 */
pix_fmt = FBC0 /* VI输出格式, 详见Rkmedia 开发文档 */
module = RECORD_MAIN|PHOTO /* 该VI的使用模块,Options:
NONE/RECORD_MAIN/RECORD_SUB/PREVIEW/PHOTO/LIVE/DISP */
[vi.1]
chn_id = 1
device_name = rkispp_scale0
buf_cnt = 4
width = 0
height = 0
pix_fmt = NV12
module = RECORD_MAIN|PHOTO
[vi.2]
chn_id = 2
device_name = rkispp_scale1
buf_cnt = 2
width = 0
height = 0
pix_fmt = NV12
module = NONE
[vi.3]
chn_id = 3
device_name = rkispp_scale2
buf_cnt = 4
width = 848
height = 480
pix_fmt = NV12
module = RECORD_SUB|PREVIEW|LIVE|DISP
/* Record 参数 */
[record]
record_type = 0 /* 录像类型,特指RKADK_REC_TYPE_E */
file_type = 0 /* 录像文件类型,特指MUXER_TYPE_E */
pre_record_time = 0 /* 预录时长 */
pre_record_mode = 0 /* 预录模式 */
lapse_multiple ``= 30 /* 缩时录像文件播放时长与实际画面内容时间的倍数关系
*/
file_num = 1 /* 同时录制文件个数,最大2 */
/* 主码流 Record 0 VENC 参数 */
[record.0]
record_time = 60 /* 录像时长 */
splite_time = 60 /* 手动切分录像时长 */
lapse_interval = 60 /* 缩时录像时长 */
width = 2688 /* Video 宽 */
height = 1520 /* Video 高 */
bitrate = 8294400 /* 比特率 */
gop = 30 /* I 帧间隔 */
profile = 100 /* 编码器profile */
codec_type = 0 /* 编码类型,特指RKADK_CODEC_TYPE_E */
venc_chn = 0 /* Venc通道号 */
rga_chn = 0 /* RGA通道号 */
rc_mode = CBR /* 编码协议类型, 支持CBR、VBR、AVBR */
max_qp = 48 /* QP最大值,取值范围[8, 51] */
min_qp = 8 /* QP最小值,取值范围[0, 48], 不能大于max_qp */
full_range = TRUE
scaling_list = TRUE
hier_qp_en = TRUE
hier_qp_delta = -3,0,0,0
hier_frame_num = 3,0,0,0
/* 子码流 Record 1 VENC 参数,当 file_num = 1 时,不需要care rec.1*/
[record.1]
record_time = 60
splite_time = 60
lapse_interval = 60
width = 848
height = 480
bitrate = 407040
gop = 30
profile = 100
codec_type = 0
venc_chn = 1
rga_chn = 0
rc_mode = VBR
max_qp = 48
min_qp = 8
full_range = TRUE
scaling_list = TRUE
hier_qp_en = TRUE
hier_qp_delta = -3,0,0,0
hier_frame_num = 3,0,0,0
/* Photo VENC 参数 */
[photo]
image_width = 3840 /* 照片宽度 */
image_height = 2160 /* 照片高度 */
snap_num = 1 /* 单次拍照张数 */
venc_chn = 2 /* Venc通道号 */
rga_chn = 0 /* RGA通道号 */
/* 远程预览VENC参数 */
[preview]
width = 848 /* Video 宽 */
height = 480 /* Video 高 */
bitrate = 407040 /* 比特率 */
gop = 30 /* I 帧间隔 */
profile = 100 /* 编码器profile */
codec_type = 0 /* 编码类型,特指RKADK_CODEC_TYPE_E */
venc_chn = 1 /* Venc通道号 */
rga_chn = 0 /* RGA通道号 */
rc_mode = VBR /* 编码协议类型, 支持CBR、VBR、AVBR */
max_qp = 48 /* QP最大值,取值范围[8, 51] */
min_qp = 8 /* QP最小值,取值范围[0, 48], 不能大于max_qp */
full_range = TRUE
scaling_list = TRUE
hier_qp_en = TRUE
hier_qp_delta = -3,0,0,0
hier_frame_num = 3,0,0,0
/* 直播 VENC 参数 */
[live]
width = 1280
height = 720
bitrate = 4194304
gop = 30
profile = 100
codec_type = 0
venc_chn = 1
rga_chn = 0
rc_mode = VBR
max_qp = 48
min_qp = 8
full_range = TRUE
scaling_list = TRUE
hier_qp_en = TRUE
hier_qp_delta = -3,0,0,0
hier_frame_num = 3,0,0,0
/* 本地预览参数 */
[display]
width = 720 /* 显示宽 */
height = 1280 /* 显示高 */
enable_buf_pool = TRUE /* 是否使能buffer pool */
buf_pool_cnt = 3 /* 是否使能buffer pool 个数 */
rotaion = 90 /* 旋转度数,Options:0/90/180/270 */
rga_chn = 0 /* RGA通道号 */
device_node = /dev/dri/card0 /* 视频输出设备节点 */
img_type = RGB888 /* 视频输出格式 */
plane_type = 1 /* 视频输出图层类型, 详见Rkmedia开发文档 */
z_pos = 1 /* 输出图层Z轴高度 */
vo_chn = 0 /* VO通道号 */
10.4.3 INI 配置注意事项
默认INI 配置文件路径,通过rkadk_param.h中的RKADK_DEFPARAM_PATH 和RKADK_DEFPARAM_PATH_SENSOR_PREFIX 宏修改。INI 配置文件路径,通过rkadk_param.h中的RKADK_PARAM_PATH和RKADK_PARAM_PATH_SENSOR_PREFIX 宏修改,也可以通过RKADK_PARAM_Init API 设置。rkadk_defsetting.ini 和 rkadk_setting.ini 中的version 必须保持一致,否则会版本检测失败,使用默认INI 配置。SDK更新时,ini 参数可能会有增减,此时需要注意。sensor_count 代表实际使用的Sensor个数,根据实际使用设置,不能大于RKADK_MAX_SENSOR_CNT,目前实际调试过3 Sensor。如果Sensor经过ISP,used_isp必须配置成TRUE,直接通过配置ISP节点分辨率实现缩放,不需要配置RGA 通道,rga_chn统一配置成0;如果Sensor不经过ISP,used_isp必须配置成FALSE,并配置对应的rga_chn,内部使用RGA进行缩放。当录像、远程预览、直播等分辨率一样时,建议复用VENC(VENC 参数配置成一样),提高带宽和内存利用率。当VENC复用或者VENC分辨率相同时,建议复用RGA通道,提高带宽利用率。gop 建议和framerate配置成一样,确保每秒都有一个I帧。
11. 示例
以下提供功能示例,使用注意事项如下:
运行示例前需保证无其他应用占用示例所用节点,如mediaserver、ispserver。示例默认参数适配我司EVB,硬件不同时,示例可能需要显式指定参数或调整代码。
11.1 rkadk_record_test
【说明】
Record 测试。
【代码路径】
external/rkadk/examples/rkadk_record_test.c
【快速使用】
./rkadk_record_test
【选项】
| 选 项 | 描述 | 默认值 |
|---|---|---|
| -a | 内置ISP功能启用,输入该选项启用内置ISP功能,无参数则使用默认值,参数为 aiq文件所在文件夹路径。 | /oem/etc/iqfiles |
| -I | Camera id | 0 |
| -t | 录像类型 | 0 |
| -p | ini配置文件目录路径 | /data/rkadk |
11.2 rkadk_photo_test
【说明】
Photo测试。
【代码路径】
external/rkadk/examples/rkadk_photo_test.c
【快速使用】
./rkadk_photo_test
【选项】
| 选 项 | 描述 | 默认值 |
|---|---|---|
| -a | 内置ISP功能启用,输入该选项启用内置ISP功能,无参数则使用默认值,参数为 aiq文件所在文件夹路径。 | /oem/etc/iqfiles |
| -I | Camera id | 0 |
| -p | ini配置文件目录路径 | /data/rkadk |
| -t | 获取的JPG图片的数据类型 | NV12 |
11.3 rkadk_stream_test
【说明】
获取音频流并编码,输出到文件;获取视频流并编码,输出到文件。【代码路径】
external/rkadk/examples/rkadk_stream_test.c
【快速使用】
./rkadk_stream_test
【选项】
| 选 项 | 描述 | 默认值 |
|---|---|---|
| -a | 内置ISP功能启用,输入该选项启用内置ISP功能,无参数则使用默认值,参数为 aiq文件所在文件夹路径。 | /oem/etc/iqfiles |
| -I | Camera id | 0 |
| m | 测试模式:audio、video | audio |
| e | 编码类型 | pcm |
| o | 输出文件路径 | /tmp/ai.pcm |
| -p | ini配置文件目录路径 | /data/rkadk |
11.4 rkadk_player_test
【说明】
本地文件播放测试。
【代码路径】
external/rkadk/examples/rkadk_player_test.c
【快速使用】
./rkadk_player_test
【选项】
| 选项 | 描述 | 默认值 |
|---|---|---|
| -i | 播放文件路径 | /etc/bsa file/8k8bpsMono.wav _ |
| -x | Video 显示起始 x 坐标 | 0 |
| -y | Video 显示起始 y 坐标 | 0 |
| -W | Video 显示宽度 | 屏幕物理宽度 |
| -H | Video 显示高度 | 屏幕物理高度 |
| -r | Video旋转角度 | 0 |
| -m | Video镜像 | disbale |
| -f | Video翻转 | disbale |
| -v | 是否使能Video播放 | disbale |
播放视频文件时,需要-v 使能Video播放。镜像/翻转不能和旋转同时设置。
11.5 rkadk_thumb_test
获取文件缩略图测试。
【代码路径】
external/rkadk/examples/rkadk_thumb_test.c
【快速使用】
获取MP4缩略图:./rkadk_thumb_test -i test_file.mp4
获取JPG缩略图:./rkadk_thumb_test -i test_file.jpg -f jpg -t MPF1
【选项】
| 选项 | 描述 | 默认值 |
|---|---|---|
| -i | 测试文件路径 | 无 |
| -f | 文件格式:mp4、jpg | mp4 |
| -t | JPG缩略图类型:DCF, MPF1, MPF2 | DCF |
| -T | 输出缩略图类型:JPG, NV12, RGB565, RGB888 | JPG |
| -w | 缩略图宽 | 从ini获取 |
| -h | 缩略图高 | 从ini获取 |
11.6 rkadk_rtsp_test
RTSP直播测试。
【代码路径】
external/rkadk/examples/rkadk_rtsp_test.c
【快速使用】
1、板端启动wifi
2、板端运行./rkadk_rtsp_test
3、PC端打开VLC ``-``> 媒体 -``> 打开网络串流 -``> 输入网络URL:rtsp://板端ip地址/live/main_stream
【选项】
| 选 项 | 描述 | 默认值 |
|---|---|---|
| -a | 内置ISP功能启用,输入该选项启用内置ISP功能,无参数则使用默认值,参数为 aiq文件所在文件夹路径。 | /oem/etc/iqfiles |
| -I | Camera id | 0 |
| -p | ini配置文件目录路径 | /data/rkadk |
11.7 rkadk_rtmp_test
RTMP直播测试。
【代码路径】external/rkadk/examples/rkadk_rtmp_test.c
【快速使用】
1、板端启动wifi
2、板端运行./rkadk_rtmp_test
3、PC端打开VLC -> 媒体 -> 打开网络串流 -> 输入网络URL:rtmp://板端ip地址::1935/live/substream
【选项】
| 选 项 | 描述 | 默认值 |
|---|---|---|
| -a | 内置ISP功能启用,输入该选项启用内置ISP功能,无参数则使用默认值,参数为 aiq文件所在文件夹路径。 | /oem/etc/iqfiles |
| -I | Camera id | 0 |
| -p | ini配置文件目录路径 | /data/rkadk |
11.8 rkadk_storage_test
【说明】
存储模块测试。
【代码路径】
external/rkadk/examples/rkadk_storage_test.c
【快速使用】
./rkadk_storage_test
【选项】
无
此test生成了全写入0的mp4文件,对自动删除、获取文件列表等功能和接口进行测试,该mp4文件没有实际数据,无法播放。
11.9 rkadk_disp_test
本地预览测试。
【代码路径】external/rkadk/examples/rkadk_disp_test.c
【快速使用】
./rkadk_disp_test
【选项】
| 选 项 | 描述 | 默认值 |
|---|---|---|
| -a | 内置ISP功能启用,输入该选项启用内置ISP功能,无参数则使用默认值,参数为 aiq文件所在文件夹路径。 | /oem/etc/iqfiles |
| -I | Camera id | 0 |
| -p | ini配置文件目录路径 | /data/rkadk |