PSDK 相机相关功能的头文件为psdk_payload_camera.h
,本文档描述了psdk_payload_camera.h
文件中结构体和函数原型的关键信息和使用方法。
枚举
typedef enum E_PsdkCameraMode
相机类负载设备的模式
typedef enum { PSDK_CAMERA_MODE_SHOOT_PHOTO = 0, 拍照模式 PSDK_CAMERA_MODE_RECORD_VIDEO = 1, 录像模式 PSDK_CAMERA_MODE_PLAYBACK = 2, 媒体文件回放模式 } E_PsdkCameraMode;
|
typedef enum E_PsdkCameraShootPhotoMode
相机类负载设备的拍照模式
typedef enum { PSDK_CAMERA_SHOOT_PHOTO_MODE_SINGLE = 1, 单拍模式 PSDK_CAMERA_SHOOT_PHOTO_MODE_BURST = 4, 连拍模式 PSDK_CAMERA_SHOOT_PHOTO_MODE_INTERVAL = 6, 定时拍照模式 } E_PsdkCameraShootPhotoMode;
|
typedef enum E_PsdkCameraShootingState
相机类负载设备拍照时的状态
typedef enum { PSDK_CAMERA_SHOOTING_PHOTO_IDLE = 0, 相机为空闲状态 PSDK_CAMERA_SHOOTING_SINGLE_PHOTO = 1, 相机正处于单拍状态 PSDK_CAMERA_SHOOTING_BURST_PHOTO = 2, 相机正处于连拍状态 PSDK_CAMERA_SHOOTING_INTERVAL_PHOTO = 6, 相机正处于定时拍照状态 } E_PsdkCameraShootingState;
|
typedef enum E_PsdkCameraBurstCount
相机类负载设备的单拍张数
typedef enum { PSDK_CAMERA_BURST_COUNT_2 = 2, 连拍张数:2 PSDK_CAMERA_BURST_COUNT_3 = 3, 连拍张数:3 PSDK_CAMERA_BURST_COUNT_5 = 5, 连拍张数:5 PSDK_CAMERA_BURST_COUNT_7 = 7, 连拍张数:7 PSDK_CAMERA_BURST_COUNT_10 = 10, 连拍张数:10 PSDK_CAMERA_BURST_COUNT_14 = 14, 连拍张数:14 } E_PsdkCameraBurstCount;
|
typedef enum E_PsdkCameraMeteringMode
相机类负载设备的测光模式
typedef enum { PSDK_CAMERA_METERING_MODE_CENTER = 0, 中央重点测光模式 PSDK_CAMERA_METERING_MODE_AVERAGE = 1, 平均测光模式 PSDK_CAMERA_METERING_MODE_SPOT = 2, 点测光模式 } E_PsdkCameraMeteringMode;
|
typedef enum E_PsdkCameraFocusMode
相机类负载设备的对焦模式
typedef enum { PSDK_CAMERA_FOCUS_MODE_MANUAL = 0, 手动对焦模式 PSDK_CAMERA_FOCUS_MODE_AUTO = 1, 自动对焦模式 } E_PsdkCameraFocusMode;
|
typedef enum E_PsdkCameraZoomDirection
相机类负载设备变焦的方向
typedef enum { PSDK_CAMERA_ZOOM_DIRECTION_OUT = 0, 向远处变焦(变焦倍数小,图像缩小) PSDK_CAMERA_ZOOM_DIRECTION_IN = 1, 向近处变焦(变焦倍数变大,图像放大) } E_PsdkCameraZoomDirection;
|
typedef enum E_PsdkCameraZoomSpeed
相机类负载设备的变焦速度
typedef enum { PSDK_CAMERA_ZOOM_SPEED_SLOWEST = 72, 镜头变焦速度缓慢 PSDK_CAMERA_ZOOM_SPEED_SLOW = 73, 镜头变焦速度较慢 PSDK_CAMERA_ZOOM_SPEED_MODERATELY_SLOW = 74, 镜头变焦速度慢 PSDK_CAMERA_ZOOM_SPEED_NORMAL = 75, 镜头变焦速度一般 PSDK_CAMERA_ZOOM_SPEED_MODERATELY_FAST = 76, 镜头变焦速度快 PSDK_CAMERA_ZOOM_SPEED_FAST = 77, 镜头变焦速度较快 PSDK_CAMERA_ZOOM_SPEED_FASTEST = 78, 镜头变焦速度很快 } E_PsdkCameraZoomSpeed;
|
媒体文件的类型
typedef enum { PSDK_CAMERA_FILE_TYPE_JPEG = 0, JPEG PSDK_CAMERA_FILE_TYPE_DNG = 1, DNG PSDK_CAMERA_FILE_TYPE_MOV = 2, MOV PSDK_CAMERA_FILE_TYPE_MP4 = 3, MP4 } E_PsdkCameraMediaFileType;
|
typedef enum E_PsdkCameraPlaybackMode
相机类负载设备的回放时的回放模式
typedef enum { PSDK_CAMERA_PLAYBACK_MODE_PLAY = 2, 回放中模式 PSDK_CAMERA_PLAYBACK_MODE_PAUSE = 3, 回放暂停模式 PSDK_CAMERA_PLAYBACK_MODE_STOP = 7, 停止回放模式 } E_PsdkCameraPlaybackMode;
|
typedef enum E_PsdkCameraVideoFrameRate
相机类负载设备执行视频回放时支持的视频帧率
typedef enum { PSDK_CAMERA_VIDEO_FRAME_RATE_8_DOT_8_FPS = 23, 8.8帧每秒 PSDK_CAMERA_VIDEO_FRAME_RATE_23_DOT_976_FPS = 1, 23.96帧每秒 PSDK_CAMERA_VIDEO_FRAME_RATE_24_FPS = 13, 24帧每秒 PSDK_CAMERA_VIDEO_FRAME_RATE_25_FPS = 2, 25帧每秒 PSDK_CAMERA_VIDEO_FRAME_RATE_29_DOT_970_FPS = 3, 29.97帧每秒 PSDK_CAMERA_VIDEO_FRAME_RATE_30_FPS = 14, 30帧每秒 PSDK_CAMERA_VIDEO_FRAME_RATE_47_DOT_950_FPS = 4, 47.95帧每秒 PSDK_CAMERA_VIDEO_FRAME_RATE_48_FPS = 15, 48帧每秒 PSDK_CAMERA_VIDEO_FRAME_RATE_50_FPS = 5, 50帧每秒 PSDK_CAMERA_VIDEO_FRAME_RATE_59_DOT_940_FPS = 6, 59.94帧每秒 PSDK_CAMERA_VIDEO_FRAME_RATE_60_FPS = 16, 60帧每秒 PSDK_CAMERA_VIDEO_FRAME_RATE_90_FPS = 17, 90帧每秒 PSDK_CAMERA_VIDEO_FRAME_RATE_96_FPS = 11, 96帧每秒 PSDK_CAMERA_VIDEO_FRAME_RATE_100_FPS = 10, 100帧每秒 PSDK_CAMERA_VIDEO_FRAME_RATE_120_FPS = 7, 120帧每秒 PSDK_CAMERA_VIDEO_FRAME_RATE_UNKNOWN = 0, 视频帧率未知 } E_PsdkCameraVideoFrameRate;
|
typedef enum E_PsdkCameraVideoResolution
相机类负载设备执行视频回放时支持的分辨率
typedef enum { PSDK_CAMERA_VIDEO_RESOLUTION_336x256 = 38, 336x256 PSDK_CAMERA_VIDEO_RESOLUTION_640x360 = 46, 640x360 PSDK_CAMERA_VIDEO_RESOLUTION_640x480 = 0, 640x480 PSDK_CAMERA_VIDEO_RESOLUTION_640x512 = 26, 640x512 PSDK_CAMERA_VIDEO_RESOLUTION_1280x720 = 4, 1280x720 PSDK_CAMERA_VIDEO_RESOLUTION_1920x1080 = 10, 1920x1080 PSDK_CAMERA_VIDEO_RESOLUTION_2048x1080 = 37, 2048x1080 PSDK_CAMERA_VIDEO_RESOLUTION_2688x1512 = 45, 2688x1512 PSDK_CAMERA_VIDEO_RESOLUTION_2704x1520 = 24, 2704x1520 PSDK_CAMERA_VIDEO_RESOLUTION_2720x1530 = 42, 2720x1530 PSDK_CAMERA_VIDEO_RESOLUTION_3840x1572 = 34, 3840x1572 PSDK_CAMERA_VIDEO_RESOLUTION_3840x2160 = 41, 3840x2160 PSDK_CAMERA_VIDEO_RESOLUTION_4096x2160 = 22, 4096x2160 PSDK_CAMERA_VIDEO_RESOLUTION_4608x2160 = 27, 4608x2160 PSDK_CAMERA_VIDEO_RESOLUTION_4608x2592 = 28, 4608x2592 PSDK_CAMERA_VIDEO_RESOLUTION_5280x2160 = 32, 5280x2160 PSDK_CAMERA_VIDEO_RESOLUTION_5280x2972 = 33, 5280x2972 PSDK_CAMERA_VIDEO_RESOLUTION_5760X3240 = 35, 5760X3240 PSDK_CAMERA_VIDEO_RESOLUTION_6016X3200 = 36, 6016X3200 PSDK_CAMERA_VIDEO_RESOLUTION_UNKNOWN = 255, 相机支持的视频分辨率未知 } E_PsdkCameraVideoResolution;
|
typedef enum E_PsdkCameraTapZoomState
相机类负载设备指点变焦功能的状态
typedef enum { PSDK_CAMERA_TAP_ZOOM_STATE_IDLE = 0, 未执行指点变焦功能 PSDK_CAMERA_TAP_ZOOM_STATE_ZOOM_IN = 1, 焦距变短,变焦倍数变大,图像被放大 PSDK_CAMERA_TAP_ZOOM_STATE_ZOOM_OUT = 2, 焦距变长,变焦倍数变小,图像被缩小 PSDK_CAMERA_TAP_ZOOM_STATE_ZOOM_LIMITED = 3, 已到达变焦限制 } E_PsdkCameraTapZoomState;
|
typedef enum E_PsdkCameraVideoStreamType
相机类负载设备视频流格式
typedef enum { PSDK_CAMERA_VIDEO_STREAM_TYPE_H264_CUSTOM_FORMAT = 0, 相机视频流按照自定义H264格式, 需要符合用户文档中Custom-H264视频流格式标准 使用该格式发送视频流时, 视频流的码率不能超过实时的通道带宽限制 可以通过PsdkPayloadCamera_GetVideoStreamState接口获取实时通道带宽限制 PSDK_CAMERA_VIDEO_STREAM_TYPE_H264_DJI_FORMAT = 1, 相机视频流按照DJI-H264格式, 需要符合用户文档中DJI-H264视频流格式标准 使用该格式发送视频流时, 视频流将会被飞机重编码, 不需要动态调节码率来 保证传输可靠性, 视频流码率不能超过8Mbps } E_PsdkCameraVideoStreamType;
|
结构体
typedef struct T_PsdkCameraSDCardState
相机类负载设备中SD 卡的状态
typedef struct { bool isInserted; 相机类负载设备中是否已插入SD 卡 bool isVerified; 相机类负载设备中的SD 卡是否被认证 bool isInitializing; 相机类负载设备中SD 卡是否已初始化 bool isReadOnly; 相机类负载设备中的SD 卡是否处于只读模式 bool isFormatting; 相机类负载设备中的SD 卡正在格式化 bool isFull; 相机类负载设备中的SD 卡内存已漫 bool isInvalidFormat; 相机类负载设备中的SD 卡已格式化 bool hasError; 相机类负载设备中的SD 卡出现错误 uint32_t totalSpaceInMB; 相机类负载设备中SD 卡的总容量,单位:MB uint32_t remainSpaceInMB; 相机类负载设备中SD 卡的剩余容量,单位:MB uint32_t availableCaptureCount; 当前相机类负载设备中SD 卡可存储的相片数量 uint32_t availableRecordingTimeInSeconds; 当前相机类负载设备中SD 卡可存储视频的长度,单位:s } T_PsdkCameraSDCardState;
|
typedef struct T_PsdkCameraPhotoTimeIntervalSettings
在定时拍照模式下设置相机类负载设备拍照的时间间隔
typedef struct { uint8_t captureCount; 设置相机类负载设备在定时拍照模式下拍摄照片的张数 uint16_t timeIntervalSeconds; 设置相机类负载设备在定时拍照模式下拍摄照片的时间间隔 单位:s } T_PsdkCameraPhotoTimeIntervalSettings;
|
typedef struct T_PsdkCameraSpotMeteringTarget
指定相机类负载设备在点测光模式下的对象
typedef struct { uint8_t col; 指定测光对象所在的列,取值范围为0~11 uint8_t row; 指定测光对象所在的行,取值范围为0~7 } T_PsdkCameraSpotMeteringTarget;
|
typedef struct T_PsdkCameraSystemState
相机类负载设备的状态
typedef struct { E_PsdkCameraMode cameraMode; 相机类负载设备当前的模式,详情请参见:E_PsdkCameraMode E_PsdkCameraShootingState shootingState; 相机类负载设备当前拍照的模式,详情请参见:E_PsdkCameraShootingState bool isStoring; 相机类负载设备是否正在存储媒体文件 bool isShootingIntervalStart; 相机类负载设备是否正在定时拍照 uint16_t currentPhotoShootingIntervalTimeInSeconds; 指定相机类负载设备定时拍照倒计时,当该该数值递减为0 时将触发相机拍照,单位:s uint16_t currentPhotoShootingIntervalCount; 指定相机类负载设备定时拍照时拍摄的照片 bool isRecording; 相机类负载设备是否正在录像 uint16_t currentVideoRecordingTimeInSeconds; 指定相机类负载设备录像时间的进度,单位:s bool isOverheating; 相机是否过热 bool hasError; 相机是否出现错误 } T_PsdkCameraSystemState;
|
typedef struct T_PsdkCameraPointInScreen
相机类负载设备在对焦模式下对焦对象的位置
typedef struct { psdk_f32_t focusX; 指定对焦对象的水平位置,该位置的范围为0~1 psdk_f32_t focusY; 指定对焦对象的垂直位置,该位置的范围为0~1 } T_PsdkCameraPointInScreen;
|
typedef struct T_PsdkCameraFocusAssistantSettings
设置相机类负载设备的对焦助手
typedef struct { bool isEnabledMF; 在手动对焦的模式下使用对焦助手功能 bool isEnabledAF; 在自动对焦的模式下使用对焦助手功能 } T_PsdkCameraFocusAssistantSettings;
|
typedef struct T_PsdkCameraPlaybackStatus
相机类负载设备的回放状态
typedef struct { E_PsdkCameraPlaybackMode playbackMode; 媒体文件当前的播放时间,详情请参见:E_PsdkCameraPlaybackMode uint8_t videoPlayProcess; 当前媒体文件的播放进度,范围为0~100 uint32_t videoLengthMs; 媒体文件总的播放时长,单位:ms uint32_t playPosMs; 指定当前所需播放的位置,单位:ms } T_PsdkCameraPlaybackStatus;
|
视频文件的信息
typedef struct { uint16_t attrVideoDuration; 视频文件的回放时长,单位:s uint16_t attrVideoFrameRate; 视频文件的帧率,单位:fps uint16_t attrVideoResolution; 视频文件的分辨率,单位:px } T_PsdkCameraMediaFileAttr;
|
媒体文件的信息
typedef struct { E_PsdkCameraMediaFileType type; 媒体文件的类型,详情请参见:E_PsdkCameraMediaFileType T_PsdkCameraMediaFileAttr mediaFileAttr; 媒体文件的属性 uint32_t fileSize; 媒体文件的大小,单位:byte } T_PsdkCameraMediaFileInfo;
|
typedef struct T_PsdkCameraOpticalZoomSpec
相机类负载设备的光学变焦
typedef struct { uint16_t maxFocalLength; 相机类负载设备最大光学变焦,单位:0.1mm uint16_t minFocalLength; 相机类负载设备最小光学变焦,单位:0.1mm uint16_t focalLengthStep; 相机类负载设备光学变焦的变焦值,单位:0.1mm } T_PsdkCameraOpticalZoomSpec;
|
typedef struct T_PsdkCameraTapZoomState
相机类负载设备指点变焦功能的状态
typedef struct { E_PsdkCameraTapZoomState zoomState; 相机类负载设备的变焦状态 bool isGimbalMoving; 相机类负载设备执行指点变焦时云台的转动状态 } T_PsdkCameraTapZoomState;
|
typedef struct T_PsdkCameraCommonHandler
控制相机类负载设备执行基础动作,请根据本结构体中的函数构造相机类负载设备执行基础功能的回调函数,其中包括:
- 获取相机类负载设备的当前状态
- 设置相机类负载设备的工作模式
- 获取相机类负载设备当前的工作模式
- 控制相机类负载设备开始录像
- 控制相机类负载设备停止录像
- 控制相机类负载设备开始拍摄照片
- 控制相机类负载设备停止拍摄照片
- 设置相机类负载设备的拍照模式
- 获取相机类负载设备当前的拍照模式
- 设置相机类负载设备在连拍模式下的连拍张数
- 获取相机类负载设备当前的连拍张数
- 设置相机类负载设备在定时拍照模式下的拍照间隔
- 获取相机类负载设备在定时拍照模式下的拍照间隔
- 获取相机类负载设备中当前SD 卡状态
- 控制相机类负载设备格式化SD 卡
说明
- 为防止该函数阻塞PSDK 的主线程,导致出现程序响应缓慢、相机类负载设备断连及死循环等问题,请勿以阻塞的方式在回调函数中执行该函数。
- 使用控制相机类负载设备执行基础动作的功能时,请根据如下函数原型开发相机类负载设备的基础功能。
typedef struct { @brief 获取相机类负载设备当前状态的回调函数 @param systemState: 指向用于存储相机类负载设备当前状态的内存空间 @return 执行结果 T_PsdkReturnCode (*GetSystemState)(T_PsdkCameraSystemState *systemState); @brief 设置相机类负载设备工作模式的回调函数 @note 在相机类负载设备执行某项任务时无法切换工作模式 @param mode: 相机工作的模式 @return 执行结果 T_PsdkReturnCode (*SetMode)(E_PsdkCameraMode mode); @brief 获取相机类负载设备当前工作模式的回调函数 @param mode: 指向用于存储相机类负载设备工作模式的内存空间 @return 执行结果 T_PsdkReturnCode (*GetMode)(E_PsdkCameraMode *mode); @brief 控制相机类负载设备开始录像的回调函数 @return 执行结果 T_PsdkReturnCode (*StartRecordVideo)(void); @brief 控制相机类负载设备停止录像的回调函数 @return 执行结果 T_PsdkReturnCode (*StopRecordVideo)(void);
@brief 控制相机类负载设备开始拍摄照片的回调函数 @return 执行结果 T_PsdkReturnCode (*StartShootPhoto)(void); @brief 控制相机类负载设备停止拍摄照片的回调函数 @return 执行结果 T_PsdkReturnCode (*StopShootPhoto)(void);
@brief 设置相机类负载设备拍照模式的回调函数 @param mode: 相机拍照的模式 @return 执行结果 T_PsdkReturnCode (*SetShootPhotoMode)(E_PsdkCameraShootPhotoMode mode); @brief 获取相机类负载设备当前拍照模式的回调函数 @param mode: 指向用于存储相机类负载设备拍照模式的内存空间 @return 执行结果 T_PsdkReturnCode (*GetShootPhotoMode)(E_PsdkCameraShootPhotoMode *mode); @brief 设置相机类负载设备在连拍模式下,连拍张数的回调函数 @param burstCount: 相机连拍张数 @return 执行结果 T_PsdkReturnCode (*SetPhotoBurstCount)(E_PsdkCameraBurstCount burstCount);
@brief 获取相机类负载设备当前连拍张数的回调函数 @param burstCount: 指向用于存储相机类负载设备连拍张数的内存空间 @return 执行结果 T_PsdkReturnCode (*GetPhotoBurstCount)(E_PsdkCameraBurstCount *burstCount); @brief 设置相机类负载设备在定时拍照模式下拍照间隔的回调函数 @note 在定时拍照模式下拍照的时间间隔范围为2~255,当时间间隔设为255 时,相机类负载设备将会持续拍摄照片 @param settings: 设置相机类负载设备在定时拍照模式下拍照的时间间隔 @return 执行结果 T_PsdkReturnCode (*SetPhotoTimeIntervalSettings)(T_PsdkCameraPhotoTimeIntervalSettings settings); @brief 获取相机类负载设备在定时拍照模式下拍照间隔的回调函数 @param settings: 指向用于存储相机类负载设备在定时拍照模式下拍照间隔时间的内存空间 @return 执行结果 T_PsdkReturnCode (*GetPhotoTimeIntervalSettings)(T_PsdkCameraPhotoTimeIntervalSettings *settings);
@brief 获取相机类负载设备中当前SD 卡状态的回调函数 @param sdCardState: 指向用于存储相机类负载SD 卡状态的内存空间 @return 执行结果 T_PsdkReturnCode (*GetSDCardState)(T_PsdkCameraSDCardState *sdCardState); @brief 控制相机类负载设备格式化SD 卡的回调函数 @return 执行结果 T_PsdkReturnCode (*FormatSDCard)(void);
} T_PsdkCameraCommonHandler;
|
typedef struct T_PsdkCameraExposureMeteringHandler
控制相机类负载设备执行测光功能,请根据本结构体中的函数构造控制相机类负载设备执行测光相关功能的回调函数,其中包括:
- 设置相机类负载设备的测光模式
- 获取相机类负载设备当前的测光模式
- 设置相机类负载设备在点测光模式下的测光对象
- 获取相机类负载设备在点测光模式下的测光对象
说明
- 为防止该函数阻塞PSDK 的主线程,导致出现程序响应缓慢、相机类负载设备断连及死循环等问题,请勿以阻塞的方式在回调函数中执行该函数;
- 使用控制相机类负载设备执行测光的功能时,请根据如下函数原型开发相机类负载设备的测光功能。
typedef struct { @brief 设置相机类负载设备测光模式的回调函数 @param mode: 相机测光模式 @return 执行结果 T_PsdkReturnCode (*SetMeteringMode)(E_PsdkCameraMeteringMode mode); @brief 获取相机类负载设备当前测光模式的回调函数 @param mode: 指向用于存储相机类负载设备测光模式的内存空间 @return 执行结果 T_PsdkReturnCode (*GetMeteringMode)(E_PsdkCameraMeteringMode *mode); @brief 设置相机类负载设备在点测光模式下测光对象的回调函数 @param target: 相机类负载设备在点测光模式下的测光对象 @return 执行结果 T_PsdkReturnCode (*SetSpotMeteringTarget)(T_PsdkCameraSpotMeteringTarget target); @brief 获取相机类负载设备在点测光模式下测光对象的回调函数 @param target: 指向用于存储相机类负载设备在点测光模式下测光对象的内存空间 @return 执行结果 T_PsdkReturnCode (*GetSpotMeteringTarget)(T_PsdkCameraSpotMeteringTarget *target);
} T_PsdkCameraExposureMeteringHandler;
|
typedef struct T_PsdkCameraFocusHandler
控制相机类负载设备执行对焦功能,请根据本结构体中的函数构造控制相机类负载设备执行对焦相关功能的回调函数,其中包括:
- 设置相机类负载设备的对焦模式
- 获取相机类负载设备当前的对焦模式
- 设置相机类负载设备的对焦区域
- 获取相机类负载设备的对焦区域
- 设置相机类负载设备的对焦助手
- 获取相机类负载设备对焦助手的状态
- 设置相机类负载设备对焦环的值
- 获取相机类负载设备对焦环的值
- 获取相机类负载设备对焦环上限的值
说明
- 为防止该函数阻塞PSDK 的主线程,导致出现程序响应缓慢、相机类负载设备断连及死循环等问题,请勿以阻塞的方式在回调函数中执行该函数。
- 使用控制相机类负载设备执行光学变焦的功能时,请根据如下函数原型开发相机类负载设备的光学变焦功能。
typedef struct { @brief 设置相机类负载设备对焦模式的回调函数 @param mode: 相机类负载设备的对焦模式 @return 执行结果 T_PsdkReturnCode (*SetFocusMode)(E_PsdkCameraFocusMode mode); @brief 获取相机类负载设备当前对焦模式的回调函数 @param mode: 指向用于存储相机类负载设备当前对焦模式的内存空间 @return 执行结果 T_PsdkReturnCode (*GetFocusMode)(E_PsdkCameraFocusMode *mode); @brief 设置相机类负载设备对焦区域的回调函数 @param target: 相机类负载设备的对焦区域 @return 执行结果 T_PsdkReturnCode (*SetFocusTarget)(T_PsdkCameraPointInScreen target); @brief 获取相机类负载设备对焦区域的回调函数 @param target: 指向用于存储相机类负载设备对焦区域的内存空间 @return 执行结果 T_PsdkReturnCode (*GetFocusTarget)(T_PsdkCameraPointInScreen *target); @brief 设置相机类负载设备对焦助手的回调函数 @param settings: 相机类负载设备对焦助手的状态 @return 执行结果 T_PsdkReturnCode (*SetFocusAssistantSettings)(T_PsdkCameraFocusAssistantSettings settings); @brief 获取相机类负载设备对焦助手状态的回调函数 @param settings: 指向用于存储相机类负载设备对焦助手状态的内存空间 @return 执行结果 T_PsdkReturnCode (*GetFocusAssistantSettings)(T_PsdkCameraFocusAssistantSettings *settings); @brief 设置相机类负载设备对焦环值的回调函数 @param value: 相机类负载设备对焦环的值 @return 执行结果 T_PsdkReturnCode (*SetFocusRingValue)(uint32_t value); @brief 获取相机类负载设备对焦环值的回调函数 @param value: 指向用于存储相机类负载设备对焦环值的内存空间 @return 执行结果 T_PsdkReturnCode (*GetFocusRingValue)(uint32_t *value); @brief 获取相机类负载设备对焦环上限值的回调函数 @param value: 指向用于存储相机类负载设备对焦环上限值的内存空间 @return 执行结果 T_PsdkReturnCode (*GetFocusRingValueUpperBound)(uint32_t *value);
} T_PsdkCameraFocusHandler;
|
typedef struct T_PsdkCameraDigitalZoomHandler
控制相机类负载设备执行数字变焦功能,请根据本结构体中的函数构造控制相机类负载设备执行数字对焦相关功能的回调函数,其中包括:
- 设置相机类负载设备数字变焦倍数的回调函数
- 获取相机类负载设备数字变焦倍数的回调函数
说明
- 为防止该函数阻塞PSDK 的主线程,导致出现程序响应缓慢、相机类负载设备断连及死循环等问题,请勿以阻塞的方式在回调函数中执行该函数;
- 使用控制相机类负载设备执行数字变焦的功能时,请根据如下函数原型开发相机类负载设备的数字变焦功能。
typedef struct { @brief 设置相机类负载设备数字变焦倍数的回调函数 @param factor: 相机类负载设备的数字变焦倍数 @return 执行结果 T_PsdkReturnCode (*SetDigitalZoomFactor)(psdk_f32_t factor); @brief 获取相机类负载设备数字变焦倍数的回调函数 @param factor: 指向用于存储相机类负载设备数字变焦倍数的内存空间 @return 执行结果 T_PsdkReturnCode (*GetDigitalZoomFactor)(psdk_f32_t *factor);
} T_PsdkCameraDigitalZoomHandler;
|
typedef struct T_PsdkCameraOpticalZoomHandler
控制相机类负载设备执行光学变焦功能,请根据本结构体中的函数构造控制相机类负载设备执行光学变焦相关功能的回调函数,其中包括:
- 设置相机类负载设备光学变焦的焦距
- 获取相机类负载设备光学变焦的焦距
- 获取相机类负载设备光学变焦的倍数
- 获取相机类负载设备当前光学变焦的倍数
- 控制相机类负载设备开始连续光学变焦
- 控制相机类负载设备停止连续光学变焦
说明
- 为防止该函数阻塞PSDK 的主线程,导致出现程序响应缓慢、相机类负载设备断连及死循环等问题,请勿以阻塞的方式在回调函数中执行该函数
- 使用控制相机类负载设备执行光学变焦的功能时,请根据如下函数原型开发相机类负载设备的光学变焦功能。
typedef struct { @brief 设置相机类负载设备光学变焦焦距的回调函数 @param focalLength: 相机类负载设备光学变焦焦距 @return 执行结果 T_PsdkReturnCode (*SetOpticalZoomFocalLength)(uint32_t focalLength); @brief 获取相机类负载设备光学变焦焦距的回调函数 @param focalLength: 指向用于存储相机类负载设备光学变焦焦距的内存空间 @return 执行结果 T_PsdkReturnCode (*GetOpticalZoomFocalLength)(uint32_t *focalLength); @brief 获取相机类负载设备光学变焦倍数的回调函数 @param factor: 指向用于存储相机类负载设备光学变焦倍数的内存空间 @return 执行结果 T_PsdkReturnCode (*GetOpticalZoomFactor)(psdk_f32_t *factor); @brief 获取相机类负载设备当前光学变焦倍数的回调函数 @param spec: 指向用于存储相机类负载设备当前光学变焦倍数的内存空间 @return 执行结果 T_PsdkReturnCode (*GetOpticalZoomSpec)(T_PsdkCameraOpticalZoomSpec *spec); @brief 控制相机类负载设备开始连续光学变焦的回调函数 @param direction: 相机类负载设备连续光学变焦的方向 @param speed: 相机类负载设备连续光学变焦的速度 @return 执行结果 T_PsdkReturnCode (*StartContinuousOpticalZoom)(E_PsdkCameraZoomDirection direction,E_PsdkCameraZoomSpeed speed); @brief 控制相机类负载设备停止连续光学变焦的回调函数 @return 执行结果 T_PsdkReturnCode (*StopContinuousOpticalZoom)(void);
} T_PsdkCameraOpticalZoomHandler;
|
控制相机类负载设备执行媒体文件下载回放功能,请根据本结构体中的函数构造控制相机类负载设备执行媒体文件下载回放相关功能的回调函数,其中包括:
- 获取相机类负载设备中媒体文件的路径
- 获取相机类负载设备中指定媒体文件的信息
- 获取相机类负载设备中指定的媒体文件(源文件)
- 为相机类负载设备中指定的媒体文件创建缩略图
- 获取相机类负载设备中已创建的缩略图信息
- 获取相机类负载设备中已创建的缩略图
- 销毁相机类负载设备中为指定媒体文件已创建的缩略图
- 为相机类负载设备中指定的媒体文件创建截屏图
- 获取相机类负载设备中已创建的截屏图
- 获取相机类负载设备中已创建的截屏图信息
- 销毁相机类负载设备中为指定媒体文件已创建的截屏图
- 通知用户开始下载媒体文件
- 通知用户停止下载媒体文件
- 删除相机类负载设备中用户指定的媒体文件
- 获取相机类负载设备中媒体文件回放状态
- 设置相机类负载设备中所需回放的媒体文件路径
- 控制相机类负载设备在回放模式下开始回放指定的媒体文件
- 控制相机类负载设备在回放模式下停止回放指定的媒体文件
- 控制相机类负载设备在回放模式下暂停回放指定的媒体文件
- 控制相机类负载设备在回放模式下从指定的位置开始回放指定的媒体文件
说明
- 仅Linux 平台支持PSDK 的媒体文件下载回放功能。
- 为防止该函数阻塞PSDK 的主线程,导致出现程序响应缓慢、相机类负载设备断连及死循环等问题,请勿以阻塞的方式在回调函数中执行该函数。
- 使用控制相机类负载设备执行媒体文件下载回放的功能时,请根据如下函数原型开发相机类负载设备的下载回放功能。
typedef struct { @brief 获取相机类负载设备中媒体文件路径的回调函数 @param dirPath: 指向用于存储相机类负载设备中媒体文件路径的内存空间 @warning 媒体文件路径的长度(包含'\0'在内)不可超过 256 @return 执行结果 T_PsdkReturnCode (*GetMediaFileDir)(char *dirPath); @brief 获取相机类负载设备中指定的媒体文件信息的回调函数 @param dirPath: 指向用于存储相机类负载设备中指定的媒体文件路径的内存空间 @param fileInfo: 指向用于存储相机类负载设备中指定的媒体文件信息的内存空间 @return 执行结果 T_PsdkReturnCode (*GetMediaFileOriginInfo)(const char *filePath, T_PsdkCameraMediaFileInfo *fileInfo); @brief 获取相机类负载设备中指定媒体文件(源文件)的回调函数 @param dirPath: 指向用于存储相机类负载设备中指定的媒体文件路径的内存空间 @param offset: 相机类负载设备中指定媒体文件的偏移位置 @param length: 相机类负载设备中指定媒体文件原始数据的长度 @param data: 指向媒体文件的原始数据 @return 执行结果 T_PsdkReturnCode (*GetMediaFileOriginData)(const char *filePath, uint32_t offset, uint32_t length, uint8_t *data); @brief 为相机类负载设备中指定的媒体文件创建缩略图的回调函数 @param dirPath: 指向用于存储相机类负载设备中指定的媒体文件路径的内存空间 @return 执行结果 T_PsdkReturnCode (*CreateMediaFileThumbNail)(const char *filePath); @brief 获取相机类负载设备中已创建的缩略图信息的回调函数 @param dirPath: 指向用于存储相机类负载设备中指定的媒体文件路径的内存空间 @param fileInfo: 指向用于存储相机类负载设备中已创建的缩略图信息的内存空间 @return 执行结果 T_PsdkReturnCode (*GetMediaFileThumbNailInfo)(const char *filePath, T_PsdkCameraMediaFileInfo *fileInfo);
@brief 获取相机类负载设备中已创建的缩略图的回调函数 @param dirPath: 指向用于存储相机类负载设备中指定的媒体文件路径的内存空间 @param offset: 缩略图数据的偏移位置 @param length: 缩略图数据的长度 @param data: 缩略图的数据 @return 执行结果 T_PsdkReturnCode (*GetMediaFileThumbNailData)(const char *filePath, uint32_t offset, uint32_t length, uint8_t *data);
@brief 销毁相机类负载设备中为指定媒体文件已创建的缩略图的回调函数 @param dirPath: 指向用于存储相机类负载设备中指定的媒体文件路径的内存空间 @return 执行结果 T_PsdkReturnCode (*DestroyMediaFileThumbNail)(const char *filePath); @brief 为相机类负载设备中指定的媒体文件创建截屏图的回调函数 @param dirPath: 指向用于存储相机类负载设备中指定的媒体文件路径的内存空间 @return 执行结果 T_PsdkReturnCode (*CreateMediaFileScreenNail)(const char *filePath); @brief 获取相机类负载设备中已创建的截屏图的回调函数 @param dirPath: 指向用于存储相机类负载设备中指定的媒体文件路径的内存空间 @param offset: 截屏图数据的偏移位置 @param length: 截屏图数据的长度 @param data: 截屏图的数据 @return 执行结果 T_PsdkReturnCode (*GetMediaFileScreenNailData)(const char *filePath, uint32_t offset, uint32_t length, uint8_t *data); @brief 获取相机类负载设备中已创建的截屏图信息的回调函数 @param dirPath: 指向用于存储相机类负载设备中指定的媒体文件路径的内存空间 @param fileInfo: 指向用于存储相机类负载设备中已创建的截屏图信息的内存空间 @return 执行结果 T_PsdkReturnCode (*GetMediaFileScreenNailInfo)(const char *filePath, T_PsdkCameraMediaFileInfo *fileInfo); @brief 销毁相机类负载设备中为指定媒体文件已创建的截屏图的回调函数 @param dirPath: 指向用于存储相机类负载设备中指定的媒体文件路径的内存空间 @return 执行结果 T_PsdkReturnCode (*DestroyMediaFileScreenNail)(const char *filePath); @brief 通知用户开始下载媒体文件的回调函数 @note 在该回调函数中,开发者可设置高速数据传输通道的占用比例 @return 执行结果 T_PsdkReturnCode (*StartDownloadNotification)(void); @brief 通知用户停止下载媒体文件的回调函数 @note 在该回调函数中,开发者可设置高速数据传输通道的占用比例 @return 执行结果 T_PsdkReturnCode (*StopDownloadNotification)(void); @brief 删除相机类负载设备中用户指定的媒体文件 @param filePath: 指向用于存储相机类负载设备中指定的媒体文件路径的内存空间 @return 执行结果 T_PsdkReturnCode (*DeleteMediaFile)(char *filePath); @brief 获取相机类负载设备中媒体文件回放状态的回调函数 @param status: 指向媒体文件的回放状态 @return 执行结果 T_PsdkReturnCode (*GetMediaPlaybackStatus)(T_PsdkCameraPlaybackStatus *status); @brief 设置相机类负载设备中所需回放的媒体文件路径的回调函数 @param filePath: 指向用于存储相机类负载设备中所需回放的媒体文件路径的内存空间 @return 执行结果 T_PsdkReturnCode (*SetMediaPlaybackFile)(const char *filePath); @brief 控制相机类负载设备在回放模式下开始回放指定的媒体文件的回调函数 @return 执行结果 T_PsdkReturnCode (*StartMediaPlayback)(void); @brief 控制相机类负载设备在回放模式下停止回放指定的媒体文件的回调函数 @return 执行结果 T_PsdkReturnCode (*StopMediaPlayback)(void); @brief 控制相机类负载设备在回放模式下暂停回放指定的媒体文件的回调函数 @return 执行结果 T_PsdkReturnCode (*PauseMediaPlayback)(void); @brief 控制相机类负载设备在回放模式下从指定的位置开始回放指定的媒体文件的回调函数 @param playbackPosition: 媒体文件的回放位置,单位:ms @return 执行结果 T_PsdkReturnCode (*SeekMediaPlayback)(uint32_t playbackPosition);
} T_PsdkCameraMediaDownloadPlaybackHandler;
|
typedef struct T_PsdkCameraTapZoomHandler
控制相机类负载设备执行指点变焦功能,请根据本结构体中的函数构造控制相机类负载设备执行指点变焦相关功能的回调函数,其中包括:
- 获取相机类负载设备指点变焦功能的状态
- 开启或关闭相机类负载设备指点变焦功能
- 获取相机类负载设备指点变焦功能的标志状态
- 设置相机类负载设备指点变焦的倍数
- 获取相机类负载设备指点变焦的倍数
- 触发相机类负载设备执行指点变焦功能
说明
- 仅Linux 平台支持PSDK 的指点变焦功能;
- 为防止该函数阻塞PSDK 的主线程,导致出现程序响应缓慢、相机类负载设备断连及死循环等问题,请勿以阻塞的方式在回调函数中执行该函数;
- 使用控制相机类负载设备执行指点变焦的功能时,请根据如下函数原型开发相机类负载设备的指点变焦功能。
typedef struct { @brief 获取相机类负载设备指点变焦功能状态的回调函数 @param state: 指向用于存储相机类负载设备指点变焦功能状态的内存空间 @return 执行结果 T_PsdkReturnCode (*GetTapZoomState)(T_PsdkCameraTapZoomState *state); @brief 开启或关闭相机类负载设备指点变焦功能的回调函数 @note 仅在开启相机类负载设备指点变焦的功能后,才能使用指点变焦功能 @param enabledFlag: 开启相机类负载设备指点变焦功能的标志 @return 执行结果 T_PsdkReturnCode (*SetTapZoomEnabled)(bool enabledFlag); @brief 获取相机类负载设备指点变焦功能标志状态(判断是否已开启指点变焦功能)的回调函数 @param enabledFlag: 指向用于存储相机类负载设备指点变焦功能标志的内存空间 @return 执行结果 T_PsdkReturnCode (*GetTapZoomEnabled)(bool *enabledFlag); @brief 设置相机类负载设备指点变焦倍数的回调函数 @param multiplier: 相机类负载设备指点变焦倍数 @return 执行结果 T_PsdkReturnCode (*SetTapZoomMultiplier)(uint8_t multiplier); @brief 获取相机类负载设备指点变焦倍数的回调函数 @param multiplier: 指向用于存储相机类负载设备指点变焦倍数的内存空间 @return 执行结果 T_PsdkReturnCode (*GetTapZoomMultiplier)(uint8_t *multiplier);
@brief 触发相机类负载设备执行指点变焦功能的回调函数 @note 用户在DJI Pilot 或基于MSDK 开发的App 上指定所需放大的对象后将调用该回调函数 @note 基于PSDK 开发的负载设备控制程序能够控制云台转向指定的位置,再以指定的变焦倍数放大用户指定的对象 @param target: 用户在DJI Pilot 或基于MSDK 开发的App 上指定的对象位置信息 @return 执行结果 T_PsdkReturnCode (*TapZoomAtTarget)(T_PsdkCameraPointInScreen target);
} T_PsdkCameraTapZoomHandler;
|
函数原型
function PsdkPayloadCamera_Init
功能:PSDK 相机模块初始化 |
product:all |
负载设备相机模块初始化。
说明
- 使用相机类功能前,请先调用本接口初始化相机模块;
- 开发者可根据用户实际的使用需求,按照相机模块中的函数原型构造并注册回调函数,在使用相机类功能前,请先调用本接口初始化相机模块。
T_PsdkReturnCode PsdkPayloadCamera_Init(void);
|
返回值
根据程序执行的情况输出对应的返回值,详情请参见:PsdkErrorCode
function PsdkPayloadCamera_RegCommonHandler
功能:注册相机类负载设备的基础功能 |
product:all |
注册相机类负载设备基础功能接口的句柄。
说明
- 在使用相机类负载设备的基础功能前,请开发者按照相机类基础功能的函数原型,构造控制。
- 相机类负载设备执行基础功能的回调函数,并将该回调函数注册到如下接口中。
T_PsdkReturnCode PsdkPayloadCamera_RegCommonHandler(const T_PsdkCameraCommonHandler *cameraCommonHandler);
|
参数
cameraCommonHandler:指向开发者实现的相机类负载设备基础功能的函数
返回值
根据程序执行的情况输出对应的返回值,详情请参见:PsdkErrorCode
function PsdkPayloadCamera_RegExposureMeteringHandler
功能:注册相机类负载设备曝光和测光的功能 |
product:all |
注册相机类负载设备执行曝光和测光功能接口的句柄。
说明
- 在使用相机类负载设备的曝光和测光功能前,请开发者按照相机曝光和测光功能的函数原型,构造控制相机类负载设备实现测光和曝光功能的回调函数,并将该回调函数注册到如下接口中;
- 在使用相机曝光和测光功能时,请注意相应接口中参数的取值范围。
T_PsdkReturnCode PsdkPayloadCamera_RegExposureMeteringHandler(const T_PsdkCameraExposureMeteringHandler *cameraExposureMeteringHandler);
|
function PsdkPayloadCamera_RegFocusHandler
功能:注册相机类负载设备的对焦功能 |
product:all |
注册相机类负载设备执行对焦功能接口的句柄。
说明
- 在使用相机类负载设备的对焦功能前,请开发者按照相机对焦功能的函数原型,构造控制相机类负载设备实现对焦功能的回调函数,并将该回调函数注册到如下接口中;
- 在使用相机对焦功能时,请注意相应接口中参数的取值范围。
T_PsdkReturnCode PsdkPayloadCamera_RegFocusHandler(const T_PsdkCameraFocusHandler *cameraFocusHandler);
|
参数
cameraFocusHandler:指向开发者实现的相机类负载设备的对焦功能
返回值
根据程序执行的情况输出对应的返回值,详情请参见:PsdkErrorCode
function PsdkPayloadCamera_RegDigitalZoomHandler
功能:注册相机类负载设备的数字变焦功能 |
product:all |
注册相机类负载设备执行数字变焦功能接口的句柄。
说明: 在使用相机类负载设备数字变焦功能前,请开发者按照相机数字变焦功能的函数原型,构造控制相机类负载设备实现数字变焦功能的回调函数,并将该回调函数注册到如下接口中。
T_PsdkReturnCode PsdkPayloadCamera_RegDigitalZoomHandler(const T_PsdkCameraDigitalZoomHandler *cameraDigitalZoomHandler);
|
参数
cameraDigitalZoomHandler:指向开发者实现的相机类负载设备的数字变焦功能
返回值
根据程序执行的情况输出对应的返回值,详情请参见:PsdkErrorCode
function PsdkPayloadCamera_RegOpticalZoomHandler
功能:注册相机类负载设备的光学变焦功能 |
product:all |
注册相机类负载设备执行光学变焦功能接口的句柄。
说明: 在使用相机类负载设备光学变焦功能前,请开发者按照相机光学变焦功能的函数原型,构造控制相机类负载设备实现光学变焦功能的回调函数,并将该回调函数注册到如下接口中。
T_PsdkReturnCode PsdkPayloadCamera_RegOpticalZoomHandler(const T_PsdkCameraOpticalZoomHandler *cameraOpticalZoomHandler);
|
参数
cameraOpticalZoomHandler:指向开发者实现的相机类负载设备的数字变焦功能
返回值
根据程序执行的情况输出对应的返回值,详情请参见:PsdkErrorCode
function PsdkPayloadCamera_RegTapZoomHandler
功能:注册相机类负载设备的指点变焦功能 |
product:all |
注册相机类负载设备执行指点变焦功能接口的句柄。
说明: 在使用相机类负载设备光学变焦功能前,请开发者按照相机光学变焦功能的函数原型,构造控制相机类负载设备实现光学变焦功能的回调函数,并将该回调函数注册到如下接口中。
T_PsdkReturnCode PsdkPayloadCamera_RegTapZoomHandler(const T_PsdkCameraTapZoomHandler *cameraTapZoomHandler);
|
参数
cameraTapZoomHandler:指向开发者实现的相机类负载设备的指点变焦功能
返回值
根据程序执行的情况输出对应的返回值,详情请参见:PsdkErrorCode
功能:注册相机类负载设备的下载回放功能 |
product:all |
注册相机类负载设备下载回放接口的句柄。
具有下载回放功能的相机类负载设备能够方便用户通过使用DJI Pilot 或基于MSDK 开发的移动端App 操作相机类负载设备中的媒体文件(目前仅支持MP4 和JPG 格式)。
说明
- 在使用相机类负载设备下载回放功能前,请开发者按照相机下载回放功能的函数原型,构造控制。
- 相机类负载设备实现下载回放功能的回调函数,并将该回调函数注册到如下接口中。
T_PsdkReturnCode PsdkPayloadCamera_RegMediaDownloadPlaybackHandler(const T_PsdkCameraMediaDownloadPlaybackHandler *cameraMediaHandler);
|
参数
cameraMediaHandler:指向相机类负载设备的回放下载接口的句柄
返回值
根据程序执行的情况输出对应的返回值,详情请参见:PsdkErrorCode
function PsdkPayloadCamera_SendVideoStream
说明
- 在使用该功能前,请确保高速数据传输通道的实际带宽小于实时带宽限制;
- 使用
PsdkPayloadCamera_GetVideoStreamState()
接口,即可获取高速数据传输通道中传输视频流数据的状态。
T_PsdkReturnCode PsdkPayloadCamera_SendVideoStream(const uint8_t *data, uint16_t len);
|
参数
data:指向用户所需发送的数据
len:所需发送的数据长度(≤ 65000,单位:byte)
返回值
根据程序执行的情况输出对应的返回值,详情请参见:PsdkErrorCode
function PsdkPayloadCamera_GetVideoStreamState
功能:获取视频流传输的状态 |
product:all |
获取高速数据传输通道中传视频流数据的状态。
T_PsdkReturnCode PsdkPayloadCamera_GetVideoStreamState(T_PsdkDataChannelState *state);
|
参数
state:指向高速数据传输通道中传视频流数据的状态
返回值
根据程序执行的情况输出对应的返回值,详情请参见:PsdkErrorCode
function PsdkPayloadCamera_SetVideoStreamType
在初始化相机功能时,可以调用该接口设置相机视频流格式
说明
- 设置相机视频流格式需要在调用PsdkCore_ApplicationStart接口之前,该接口的最长执行时间为10S;
- 若不调用该接口,相机视频流格式默认为 PSDK_CAMERA_VIDEO_STREAM_TYPE_H264_CUSTOM_FORMAT。
T_PsdkReturnCode PsdkPayloadCamera_SetVideoStreamType(E_PsdkCameraVideoStreamType videoStreamType);
|
参数
videoStreamType:相机视频流格式
返回值
根据程序执行的情况输出对应的返回值,详情请参见:PsdkErrorCode
function PsdkPayloadCamera_GetVideoStreamRemoteAddress
功能:获取发送视频流的目标地址 |
product:all |
用户可以获取视频流传输的目标地址,在异构系统中通过其他子系统独立发送视频流数据。
说明
- 该接口需要在调用PsdkCore_Init之后使用。
T_PsdkReturnCode PsdkPayloadCamera_GetVideoStreamRemoteAddress(char *ipAddr, uint16_t *port);
|
参数
ipAddr:指向视频流传输的目标地址
port:指向视频流传输的目标端口
返回值
根据程序执行的情况输出对应的返回值,详情请参见:PsdkErrorCode
在拍照或录制视频文件后,用户必须立刻使用本接口向无人机推送创建媒体文件的信息
T_PsdkReturnCode PsdkPayloadCamera_PushAddedMediaFileInfo(const char *filePath, T_PsdkCameraMediaFileInfo mediaFileInfo);
|
参数
filePath:指向已添加的媒体文件的地址,且必须以'\0' 结尾,媒体文件地址的长度不可超过PSDK_FILE_PATH_SIZE_MAX bytes
mediaFileInfo:已添加的媒体文件的信息
返回值
根据程序执行的情况输出对应的返回值,详情请参见:PsdkErrorCode