You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

756 lines
35 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/*
* Copyright (c) Hisilicon Technologies Co., Ltd. 2019-2020. All rights reserved.
* Description: IAPI header file for Huanglong video
* Author: Hisilicon
* Create: 2019-11-18
* Notes: NA
* History: NA
*/
#ifndef __UAPI_VIDEO_H__
#define __UAPI_VIDEO_H__
#include "td_type.h"
#include "uapi_color.h"
#ifdef __cplusplus
#if __cplusplus
extern "C" {
#endif
#endif
/* Highest priority of the video decoder */
/* CNcomment:视频解码器的最大优先级 */
#define UAPI_VCODEC_MAX_PRIORITY 16
/* Max private data size in frame info */
/* CNcomment:帧描述信息里支持的最大私有信息长度 */
#define UAPI_VIDEO_FRAME_PRIV_DATA_SIZE 188
typedef enum {
UAPI_OVERSAMPLE_1X = 0,
UAPI_OVERSAMPLE_2X,
UAPI_OVERSAMPLE_4X,
UAPI_OVERSAMPLE_MAX
} uapi_oversample;
typedef enum {
UAPI_PIXEL_BIT_DEPTH_DEFAULT = 0,
UAPI_PIXEL_BIT_DEPTH_8BIT,
UAPI_PIXEL_BIT_DEPTH_10BIT,
UAPI_PIXEL_BIT_DEPTH_12BIT,
UAPI_PIXEL_BIT_DEPTH_16BIT,
UAPI_PIXEL_BIT_DEPTH_MAX
} uapi_pixel_bit_depth;
typedef enum {
UAPI_VIDEO_ASPECT_RATIO_AUTO = 0,
UAPI_VIDEO_ASPECT_RATIO_4TO3,
UAPI_VIDEO_ASPECT_RATIO_16TO9,
UAPI_VIDEO_ASPECT_RATIO_64TO27,
UAPI_VIDEO_ASPECT_RATIO_256TO135,
UAPI_VIDEO_ASPECT_RATIO_USER,
UAPI_VIDEO_ASPECT_RATIO_MAX
} uapi_video_aspect_ratio;
typedef struct {
uapi_video_aspect_ratio ratio;
td_u32 width;
td_u32 height;
} uapi_video_aspect_info;
typedef enum {
UAPI_VIDEO_FMT_NTSC = 0,
UAPI_VIDEO_FMT_NTSC_J,
UAPI_VIDEO_FMT_NTSC_PAL_M,
UAPI_VIDEO_FMT_SECAM_SIN,
UAPI_VIDEO_FMT_SECAM_COS,
UAPI_VIDEO_FMT_PAL = 0x10,
UAPI_VIDEO_FMT_PAL_N,
UAPI_VIDEO_FMT_PAL_NC,
UAPI_VIDEO_FMT_480P_60 = 0x20,
UAPI_VIDEO_FMT_576P_50,
UAPI_VIDEO_FMT_720P_50,
UAPI_VIDEO_FMT_720P_59_94,
UAPI_VIDEO_FMT_720P_60,
UAPI_VIDEO_FMT_1080I_50,
UAPI_VIDEO_FMT_1080I_59_94,
UAPI_VIDEO_FMT_1080I_60,
UAPI_VIDEO_FMT_1080P_23_976 = 0x30,
UAPI_VIDEO_FMT_1080P_24,
UAPI_VIDEO_FMT_1080P_25,
UAPI_VIDEO_FMT_1080P_29_97,
UAPI_VIDEO_FMT_1080P_30,
UAPI_VIDEO_FMT_1080P_50,
UAPI_VIDEO_FMT_1080P_59_94,
UAPI_VIDEO_FMT_1080P_60,
UAPI_VIDEO_FMT_1080P_100,
UAPI_VIDEO_FMT_1080P_119_88,
UAPI_VIDEO_FMT_1080P_120,
UAPI_VIDEO_FMT_3840X2160_23_976 = 0x40,
UAPI_VIDEO_FMT_3840X2160_24,
UAPI_VIDEO_FMT_3840X2160_25,
UAPI_VIDEO_FMT_3840X2160_29_97,
UAPI_VIDEO_FMT_3840X2160_30,
UAPI_VIDEO_FMT_3840X2160_50,
UAPI_VIDEO_FMT_3840X2160_59_94,
UAPI_VIDEO_FMT_3840X2160_60,
UAPI_VIDEO_FMT_3840X2160_100,
UAPI_VIDEO_FMT_3840X2160_119_88,
UAPI_VIDEO_FMT_3840X2160_120,
UAPI_VIDEO_FMT_4096X2160_23_976 = 0x50,
UAPI_VIDEO_FMT_4096X2160_24,
UAPI_VIDEO_FMT_4096X2160_25,
UAPI_VIDEO_FMT_4096X2160_29_97,
UAPI_VIDEO_FMT_4096X2160_30,
UAPI_VIDEO_FMT_4096X2160_50,
UAPI_VIDEO_FMT_4096X2160_59_94,
UAPI_VIDEO_FMT_4096X2160_60,
UAPI_VIDEO_FMT_4096X2160_100,
UAPI_VIDEO_FMT_4096X2160_119_88,
UAPI_VIDEO_FMT_4096X2160_120,
UAPI_VIDEO_FMT_7680X4320_23_976 = 0x60,
UAPI_VIDEO_FMT_7680X4320_24,
UAPI_VIDEO_FMT_7680X4320_25,
UAPI_VIDEO_FMT_7680X4320_29_97,
UAPI_VIDEO_FMT_7680X4320_30,
UAPI_VIDEO_FMT_7680X4320_50,
UAPI_VIDEO_FMT_7680X4320_59_94,
UAPI_VIDEO_FMT_7680X4320_60,
UAPI_VIDEO_FMT_7680X4320_100,
UAPI_VIDEO_FMT_7680X4320_119_88,
UAPI_VIDEO_FMT_7680X4320_120,
UAPI_VIDEO_FMT_1080P_24_FRAME_PACKING = 0x90,
UAPI_VIDEO_FMT_720P_60_FRAME_PACKING,
UAPI_VIDEO_FMT_720P_50_FRAME_PACKING,
UAPI_VIDEO_FMT_861D_640X480_60 = 0x98,
UAPI_VIDEO_FMT_VESA_800X600_60,
UAPI_VIDEO_FMT_VESA_1024X768_60,
UAPI_VIDEO_FMT_VESA_1280X720_60,
UAPI_VIDEO_FMT_VESA_1280X800_60,
UAPI_VIDEO_FMT_VESA_1280X1024_60,
UAPI_VIDEO_FMT_VESA_1360X768_60,
UAPI_VIDEO_FMT_VESA_1366X768_60,
UAPI_VIDEO_FMT_VESA_1400X1050_60,
UAPI_VIDEO_FMT_VESA_1440X900_60,
UAPI_VIDEO_FMT_VESA_1440X900_60_RB,
UAPI_VIDEO_FMT_VESA_1600X900_60_RB,
UAPI_VIDEO_FMT_VESA_1600X1200_60,
UAPI_VIDEO_FMT_VESA_1680X1050_60,
UAPI_VIDEO_FMT_VESA_1680X1050_60_RB,
UAPI_VIDEO_FMT_VESA_1920X1080_60,
UAPI_VIDEO_FMT_VESA_1920X1200_60,
UAPI_VIDEO_FMT_VESA_1920X1440_60,
UAPI_VIDEO_FMT_VESA_2048X1152_60,
UAPI_VIDEO_FMT_VESA_2560X1440_60_RB,
UAPI_VIDEO_FMT_VESA_2560X1600_60_RB,
UAPI_VIDEO_FMT_CUSTOM = 0xC0,
UAPI_VIDEO_FMT_MAX
} uapi_video_format;
typedef enum {
UAPI_VCODEC_TYPE_START_RESERVE = 0,
UAPI_VCODEC_TYPE_MPEG1 = 0x100,
UAPI_VCODEC_TYPE_MPEG2,
UAPI_VCODEC_TYPE_MPEG4,
UAPI_VCODEC_TYPE_H261,
UAPI_VCODEC_TYPE_H262,
UAPI_VCODEC_TYPE_H263,
UAPI_VCODEC_TYPE_H264,
UAPI_VCODEC_TYPE_H264_MVC,
UAPI_VCODEC_TYPE_H265,
UAPI_VCODEC_TYPE_VP3 = 0x200,
UAPI_VCODEC_TYPE_VP5,
UAPI_VCODEC_TYPE_VP6,
UAPI_VCODEC_TYPE_VP6F,
UAPI_VCODEC_TYPE_VP6A,
UAPI_VCODEC_TYPE_VP8,
UAPI_VCODEC_TYPE_VP9,
UAPI_VCODEC_TYPE_AVS = 0x300,
UAPI_VCODEC_TYPE_AVS2,
UAPI_VCODEC_TYPE_AVS3,
UAPI_VCODEC_TYPE_DIVX3 = 0x400,
UAPI_VCODEC_TYPE_DIVX4,
UAPI_VCODEC_TYPE_DIVX5,
UAPI_VCODEC_TYPE_SORENSON,
UAPI_VCODEC_TYPE_VC1,
UAPI_VCODEC_TYPE_AV1 = 0x500,
UAPI_VCODEC_TYPE_MJPEG = 0x600,
UAPI_VCODEC_TYPE_MJPEGB,
UAPI_VCODEC_TYPE_REAL8 = 0x700,
UAPI_VCODEC_TYPE_REAL9,
UAPI_VCODEC_TYPE_RV10,
UAPI_VCODEC_TYPE_RV20,
UAPI_VCODEC_TYPE_WMV1 = 0x800,
UAPI_VCODEC_TYPE_WMV2,
UAPI_VCODEC_TYPE_WMV3,
UAPI_VCODEC_TYPE_MSMPEG4V1,
UAPI_VCODEC_TYPE_MSMPEG4V2,
UAPI_VCODEC_TYPE_MSVIDEO1,
UAPI_VCODEC_TYPE_INDEO2 = 0x100000,
UAPI_VCODEC_TYPE_INDEO3,
UAPI_VCODEC_TYPE_INDEO4,
UAPI_VCODEC_TYPE_INDEO5,
UAPI_VCODEC_TYPE_CINEPAK,
UAPI_VCODEC_TYPE_SVQ1,
UAPI_VCODEC_TYPE_SVQ3,
UAPI_VCODEC_TYPE_DV,
UAPI_VCODEC_TYPE_HUFFYUV,
UAPI_VCODEC_TYPE_RAW,
UAPI_VCODEC_TYPE_MAX
} uapi_vcodec_type;
typedef enum {
UAPI_VCODEC_SUB_TYPE_UNKNOWN, /* Unknown */
/* CNcomment: 未知协议分支 */
UAPI_VCODEC_SUB_TYPE_MPEG2_MPEG1, /* The MPEG2 protocol family is compatible with MPEG1 */
/* CNcomment: MPEG2协议族可以兼容MPEG1 */
UAPI_VCODEC_SUB_TYPE_MPEG4_SHV, /* The MPEG4 protocol family is compatible with SHV */
/* CNcomment: MPEG4协议族可以兼容SHV */
UAPI_VCODEC_SUB_TYPE_MPEG4_XVID, /* The MPEG4 protocol family includes the sub protocol XVID */
/* CNcomment: MPEG4协议包含XVID分支 */
UAPI_VCODEC_SUB_TYPE_MPEG4_DIVX, /* The MPEG4 protocol family includes the sub protocol DIVX */
/* CNcomment: MPEG4协议包含DIVX分支 */
UAPI_VCODEC_SUB_TYPE_MAX
} uapi_vcodec_sub_type;
typedef enum {
UAPI_H264_PROFILE_BASELINE = 0, /* Encode H264 stream by baseline profile */
/* CNcomment: 采用基线档次编码H264码流 */
UAPI_H264_PROFILE_MAIN, /* Encode H264 stream by main profile */
/* CNcomment:采用主要档次编码H264码流 */
UAPI_H264_PROFILE_EXTENDED, /* Encode H264 stream by extended profile */
/* CNcomment:采用扩展档次编码H264码流 */
UAPI_H264_PROFILE_HIGH, /* Encode H264 stream by high profile */
/* CNcomment: 采用高级档次编码H264码流 */
UAPI_H264_PROFILE_MAX
} uapi_h264_profile;
typedef enum {
UAPI_H265_PROFILE_MAIN = 0, /* Encode H265 stream by main profile */
/* CNcomment:采用主要档次编码H265码流 */
UAPI_H265_PROFILE_MAIN10, /* Encode H265 stream by main10 profile */
/* CNcomment:采用主要档次编码H265码流支持10bit */
UAPI_H265_PROFILE_MAX
} uapi_h265_profile;
typedef enum {
UAPI_VIDEO_USERDATA_TYPE_UNKNOWN = 0, /* Unknown type */ /* CNcomment: 未知类型 */
UAPI_VIDEO_USERDATA_TYPE_DVB1_CC, /* Closed Caption Data */ /* CNcomment: 字幕数据 */
UAPI_VIDEO_USERDATA_DVB1_BAR, /* Bar Data */ /* CNcomment: Bar数据 */
UAPI_VIDEO_USERDATA_TYPE_AFD, /* Active Format Description */ /* CNcomment: 模式描述数据 */
UAPI_VIDEO_USERDATA_TYPE_MAX
} uapi_video_userdata_type;
typedef enum {
UAPI_VIDEO_USERDATA_BROADCAST_DVB, /* Digital video broadcasting (DVB) */
/* CNcomment: 数字视频广播DVB */
UAPI_VIDEO_USERDATA_BROADCAST_DIRECTV, /* American live broadcast operator DirecTV */
/* CNcomment: 美国直播运营商DirecTV */
UAPI_VIDEO_USERDATA_BROADCAST_ATSC, /* Advanced Television Systems Committee (ATSC) */
/* CNcomment: 先进电视制式委员会ATSC */
UAPI_VIDEO_USERDATA_BROADCAST_DVD, /* Digital video disc (DVD) */
/* CNcomment: 数字视频光盘 */
UAPI_VIDEO_USERDATA_BROADCAST_ARIB, /* Association of Radio Industries and Businesses (ARIB) */
/* CNcomment: 无线电工业及商业协会规格 */
UAPI_VIDEO_USERDATA_BROADCAST_MAX
} uapi_video_userdata_broadcast;
typedef enum {
UAPI_VIDEO_USERDATA_POS_UNKNOWN, /* Unknown */
/* CNcomment: 未知位置 */
UAPI_VIDEO_USERDATA_POS_MPEG2_SEQ, /* Data from sequences under the MPEG2 protocol */
/* CNcomment: MPEG2协议下从序列中解出 */
UAPI_VIDEO_USERDATA_POS_MPEG2_GOP, /* Data from the GOP under the MPEG2 protocol */
/* CNcomment: MPEG2协议下从GOPGroup Of Pictures中解出 */
UAPI_VIDEO_USERDATA_POS_MPEG2_FRAME, /* Data from picture frames under the MPEG2 protocol */
/* CNcomment: MPEG2协议下从图像帧中解出 */
UAPI_VIDEO_USERDATA_POS_MPEG4_VSOS, /* Data from the sequences of visible objects under the MPEG4 protocol */
/* CNcomment: MPEG4协议下从可视对像序列中解出 */
UAPI_VIDEO_USERDATA_POS_MPEG4_VSO, /* Data from visible objects under the MPEG4 protocol */
/* CNcomment: MPEG4协议下从可视对像中解出 */
UAPI_VIDEO_USERDATA_POS_MPEG4_VOL, /* Data from the video object layer under the MPEG4 protocol */
/* CNcomment: MPEG4协议下从视频对像层中解出 */
UAPI_VIDEO_USERDATA_POS_MPEG4_GOP, /* Data from the GOP under the MPEG4 protocol */
/* CNcomment: MPEG4协议下从GOP中解出 */
UAPI_VIDEO_USERDATA_POS_H264_REG, /* Data from user_data_regestered_itu_t_t35() under the H.264 protocol */
/* CNcomment: 从H.264协议的user_data_regestered_itu_t_t35()语法中解出 */
UAPI_VIDEO_USERDATA_POS_H264_UNREG, /* Data from the user_data_unregestered() syntax under the H.264 protocol */
/* CNcomment: 从H.264协议的user_data_unregestered()语法中解出 */
UAPI_VIDEO_USERDATA_POS_MAX
} uapi_video_userdata_position;
typedef enum {
UAPI_FORMAT_DEFAULT = 0,
/* Semi-Planner */
UAPI_FORMAT_YUV_SEMIPLANAR_400 = 0x100,
UAPI_FORMAT_YUV_SEMIPLANAR_411_VU,
UAPI_FORMAT_YUV_SEMIPLANAR_411_UV,
UAPI_FORMAT_YUV_SEMIPLANAR_420_VU,
UAPI_FORMAT_YUV_SEMIPLANAR_420_UV,
UAPI_FORMAT_YUV_SEMIPLANAR_422_VU,
UAPI_FORMAT_YUV_SEMIPLANAR_422_UV,
UAPI_FORMAT_YUV_SEMIPLANAR_444_VU,
UAPI_FORMAT_YUV_SEMIPLANAR_444_UV,
/* Package */
UAPI_FORMAT_YUV_PACKAGE_UYVY = 0x200,
UAPI_FORMAT_YUV_PACKAGE_YUYV,
UAPI_FORMAT_YUV_PACKAGE_YVYU,
UAPI_FORMAT_YUV_PACKAGE_YUV,
/* Planner */
UAPI_FORMAT_YUV_PLANAR_400 = 0x300,
UAPI_FORMAT_YUV_PLANAR_410_VU,
UAPI_FORMAT_YUV_PLANAR_410_UV,
UAPI_FORMAT_YUV_PLANAR_411_VU,
UAPI_FORMAT_YUV_PLANAR_411_UV,
UAPI_FORMAT_YUV_PLANAR_420_VU,
UAPI_FORMAT_YUV_PLANAR_420_UV,
UAPI_FORMAT_YUV_PLANAR_422_VU,
UAPI_FORMAT_YUV_PLANAR_422_UV,
UAPI_FORMAT_YUV_PLANAR_444_VU,
UAPI_FORMAT_YUV_PLANAR_444_UV,
/* RGB */
UAPI_FORMAT_RGB_SEMIPLANAR_444 = 0x400,
UAPI_FORMAT_RGB888,
UAPI_FORMAT_ARGB8888,
/* Others */
UAPI_FORMAT_YUV_TILE_420_VU = 0x500, /* Tile format 4:2:0, V first */ /* CNcomment: Tile格式4:2:0V在低位 */
UAPI_FORMAT_YUV_TILE_420_UV, /* Tile format 4:2:0, U first */ /* CNcomment: Tile格式4:2:0U在低位 */
UAPI_FORMAT_MAX
} uapi_video_pixel_format;
typedef enum {
UAPI_FRAME_TYPE_UNKNOWN, /* Unknown */ /* CNcomment: 未知的帧类型 */
UAPI_FRAME_TYPE_I, /* I frame */ /* CNcomment: I帧 */
UAPI_FRAME_TYPE_P, /* P frame */ /* CNcomment: P帧 */
UAPI_FRAME_TYPE_B, /* B frame */ /* CNcomment: B帧 */
UAPI_FRAME_TYPE_IDR, /* IDR frame */ /* CNcomment: IDR帧 */
UAPI_FRAME_TYPE_BLA, /* BLA frame */ /* CNcomment: BLA帧 */
UAPI_FRAME_TYPE_CRA, /* CRA frame */ /* CNcomment: CRA帧 */
UAPI_FRAME_TYPE_MAX
} uapi_video_frame_type;
typedef enum {
UAPI_VIDEO_FIELD_ALL, /* Frame mode */ /* CNcomment: 帧模式 */
UAPI_VIDEO_FIELD_TOP, /* Top field mode */ /* CNcomment: 顶场模式 */
UAPI_VIDEO_FIELD_BOTTOM, /* Bottom field mode */ /* CNcomment: 底场模式 */
UAPI_VIDEO_FIELD_MAX
} uapi_video_field_mode;
typedef enum {
UAPI_FRAME_PACKING_TYPE_2D, /* Normal frame, not a 3D frame */
UAPI_FRAME_PACKING_TYPE_SIDE_BY_SIDE, /* Side by side */
UAPI_FRAME_PACKING_TYPE_TOP_AND_BOTTOM, /* Top and bottom */
UAPI_FRAME_PACKING_TYPE_TIME_INTERLACED, /* Time interlaced */
UAPI_FRAME_PACKING_TYPE_FRAME_PACKING, /* frame packing */
UAPI_FRAME_PACKING_TYPE_MAX
} uapi_video_frame_packing_type;
typedef enum {
UAPI_MULTI_VIEW_0 = 0, /* For 3D video means left eye view */
UAPI_MULTI_VIEW_1, /* For 3D video means right eye view */
UAPI_MULTI_VIEW_MAX
} uapi_multi_view_type;
typedef enum {
UAPI_VIDEO_SCAN_TYPE_UNKNOWN = 0, /* Unknown */ /* CNcomment: 未知采样方式 */
UAPI_VIDEO_SCAN_TYPE_PROGRESSIVE, /* Progressive */ /* CNcomment: 采样方式为逐行 */
UAPI_VIDEO_SCAN_TYPE_INTERLACE, /* Interlaced */ /* CNcomment: 采样方式为隔行 */
UAPI_VIDEO_SCAN_TYPE_MAX
} uapi_video_scan_type;
typedef enum {
UAPI_AFD_TYPE_UNKNOWN = 0,
UAPI_AFD_TYPE_BOX_16_9_TOP = 2,
UAPI_AFD_TYPE_BOX_14_9_TOP,
UAPI_AFD_TYPE_BOX_16_9_CENTER,
UAPI_AFD_TYPE_SAME_AS_SRC = 8,
UAPI_AFD_TYPE_4_3,
UAPI_AFD_TYPE_16_9,
UAPI_AFD_TYPE_14_9,
UAPI_AFD_TYPE_4_3_SHOOT_PRO_14_9 = 13,
UAPI_AFD_TYPE_16_9_SHOOT_PRO_14_9,
UAPI_AFD_TYPE_16_9_SHOOT_PRO_4_3,
UAPI_AFD_TYPE_MAX
} uapi_video_afd_type;
typedef enum {
UAPI_VIDEO_COMPRESS_DEFAULT = 0, /* Self-adapted video compress */
UAPI_VIDEO_COMPRESS_OFF, /* Disable video compress */
UAPI_VIDEO_COMPRESS_HFBC_LOSSLESS, /* Enable video private lossless compress */
UAPI_VIDEO_COMPRESS_HFBC_LOSS, /* Enable video private loss compress */
UAPI_VIDEO_COMPRESS_AFBC, /* Enable video AFBC compress */
UAPI_VIDEO_COMPRESS_MAX
} uapi_video_compress;
/* Defines extended config of video decoder */ /* CNcomment: 定义解码器的扩展配置命令字bit(0~31)含义 */
typedef enum {
UAPI_VDEC_CFG_START_RESERVE = 0,
UAPI_VDEC_CFG_REPAIR_ENABLE = 1 << 0, /* CNcomment: 启动修补仅用于miracast场景 */
} uapi_vdec_ext_config;
typedef enum {
UAPI_VDEC_WORK_MODE_NORMAL = 0, /* Decode all frames */
UAPI_VDEC_WORK_MODE_IP, /* Decode IP frames only */
UAPI_VDEC_WORK_MODE_I, /* Decode I frames only */
UAPI_VDEC_WORK_MODE_FIRST_I, /* Decode the first I frame only */
UAPI_VDEC_WORK_MODE_DROP_INVALID_B, /* Decode all frames but drop B frames behind I frames */
UAPI_VDEC_WORK_MODE_KEEP_INVALID_B, /* Decode all frames and keep B frames behind I frames */
UAPI_VDEC_WORK_MODE_MAX
} uapi_vdec_work_mode;
typedef enum {
UAPI_VDEC_LOWDELAY_OFF = 0, /* Disable lowdelay */
/* CNcomment: 不使能低延迟 */
UAPI_VDEC_LOWDELAY_NORMAL, /* Enable normal lowdelay */
/* CNcomment: 使能普通低延迟,码流无限制 */
UAPI_VDEC_LOWDELAY_ADVANCED, /* Enable advanced lowdelay, not support B frames and long reference */
/* CNcomment: 使能进阶低延迟不支持带B帧和长期参考帧的码流 */
UAPI_VDEC_LOWDELAY_MAX
} uapi_vdec_lowdelay;
typedef enum {
UAPI_VDEC_OUTPUT_ORDER_DISPLAY = 0,
UAPI_VDEC_OUTPUT_ORDER_DECODE,
UAPI_VDEC_OUTPUT_ORDER_MAX
} uapi_vdec_output_order;
typedef enum {
UAPI_VDEC_OUTPUT_LAYER_DEFAULT = 0, /* Default layer0 output */
UAPI_VDEC_OUTPUT_LAYER_0 = 1 << 0, /* Enable layer0 output */
UAPI_VDEC_OUTPUT_LAYER_1 = 1 << 1, /* Enable layer1 output */
UAPI_VDEC_OUTPUT_LAYER_MAX
} uapi_vdec_output_layer;
/*
* Current SOURCE mode enum
* CNcomment:输入源类型枚举
*/
typedef enum {
UAPI_VIDEO_SOURCE_DTV = 0, /* the video source type is DTV. */ /* CNcomment: DTV */
UAPI_VIDEO_SOURCE_MEDIA, /* the media source from usb or sdcard */ /* CNcomment: 本地媒体 */
UAPI_VIDEO_SOURCE_ATV, /* the video source type is ATV. */ /* CNcomment: ATV */
UAPI_VIDEO_SOURCE_SCART, /* the video source type is SCART. */ /* CNcomment: SCART */
UAPI_VIDEO_SOURCE_SVIDEO, /* the video source type is SVIDEO. */ /* CNcomment: SVIDEO */
UAPI_VIDEO_SOURCE_CVBS, /* the video source type is CVBS. */ /* CNcomment: CVBS */
UAPI_VIDEO_SOURCE_VGA, /* the video source type is VGA. */ /* CNcomment: VGA */
UAPI_VIDEO_SOURCE_YPBPR, /* the video source type is YPBPR. */ /* CNcomment: YPBPR */
UAPI_VIDEO_SOURCE_HDMI, /* the video source type is HDMI. */ /* CNcomment: HDMI */
UAPI_VIDEO_SOURCE_GRAPHIC, /* the video source type is GRAPHIC. */ /* CNcomment: GRAPHIC */
UAPI_VIDEO_SOURCE_NETWORK, /* the media source from network */ /* CNcomment: 网络媒体 */
UAPI_VIDEO_SOURCE_CAST, /* the video source type is CAST. */ /* CNcomment: 投屏场景 */
UAPI_VIDEO_SOURCE_MAX
} uapi_video_source;
/* CNcomment: 定义输入源的信号状态 */
typedef enum {
UAPI_SIG_STATUS_SUPPORT = 0, /* Stable signal */ /* CNcomment:识别稳定信号 */
UAPI_SIG_STATUS_NO_SIGNAL, /* No signal */ /* CNcomment:无信号 */
UAPI_SIG_STATUS_NOT_SUPPORT, /* Not support the signal */ /* CNcomment:信号不支持 */
UAPI_SIG_STATUS_UNSTABLE, /* Unstable signal */ /* CNcomment:信号不稳定 */
UAPI_SIG_STATUS_MAX /* Invalid value */ /* CNcomment:非法边界值 */
} uapi_sig_status;
/* * Defines TV format enum */
/* * CNcomment: 定义电视制式枚举 */
typedef enum {
UAPI_COLOR_SYS_AUTO = 0,
UAPI_COLOR_SYS_PAL,
UAPI_COLOR_SYS_NTSC,
UAPI_COLOR_SYS_SECAM,
UAPI_COLOR_SYS_PAL_M,
UAPI_COLOR_SYS_PAL_N,
UAPI_COLOR_SYS_PAL_60,
UAPI_COLOR_SYS_NTSC443,
UAPI_COLOR_SYS_NTSC_50,
UAPI_COLOR_SYS_MAX
} uapi_color_sys;
/*
* Define the ROTATION type.
* CNcomment: 定义旋转角度
*/
typedef enum {
UAPI_VIDEO_ROTATION_0, /* 0 degree rotation */ /* CNcomment: 0度旋转 */
UAPI_VIDEO_ROTATION_90, /* 90 degree rotation */ /* CNcomment: 90度旋转 */
UAPI_VIDEO_ROTATION_180, /* 180 degree rotation */ /* CNcomment: 180度旋转 */
UAPI_VIDEO_ROTATION_270, /* 270 degree rotation */ /* CNcomment: 270度旋转 */
UAPI_VIDEO_ROTATION_MAX
} uapi_video_rotation;
typedef struct {
td_bool advanced_profile; /* Whether the profile is an advanced profile */ /* CNcomment: 是否Advanced Profile */
td_u32 codec_version; /* Version number */ /* CNcomment: 版本号 */
} uapi_vc1_attr;
typedef struct {
td_bool reverse; /* Set picture reverse */ /* CNcomment: 图像需要倒转时置1否则置0 */
td_u32 disp_width; /* Display Width */ /* CNcomment: 图像的显示宽度 */
td_u32 disp_height; /* Display Height */ /* CNcomment: 图像的显示高度 */
} uapi_vp6_attr;
typedef struct {
td_u32 disp_width; /* Display Width */ /* CNcomment: 图像的显示宽度 */
td_u32 disp_height; /* Display Height */ /* CNcomment: 图像的显示高度 */
td_u64 reserved; /* reserved */ /* CNcomment: 预留字段 */
} uapi_mpeg4_attr;
typedef union {
uapi_vc1_attr vc1;
uapi_vp6_attr vp6;
uapi_mpeg4_attr mpeg4;
} uapi_vdec_ext_attr;
typedef enum {
UAPI_VIDEO_FRAME_LAYOUT_DEFAULT = 0,
UAPI_VIDEO_FRAME_LAYOUT_LINEAR,
UAPI_VIDEO_FRAME_LAYOUT_TILE,
UAPI_VIDEO_FRAME_LAYOUT_MAX
} uapi_video_frame_layout;
typedef struct {
uapi_pixel_bit_depth bit_depth;
uapi_video_compress compress_mode;
uapi_video_pixel_format output_format;
uapi_vdec_output_order output_order;
uapi_vdec_output_layer output_layer;
uapi_video_frame_layout frame_layout_mode; /* YUV frame data layout mode */ /* YUV 帧的排列模式 */
} uapi_vdec_output_format;
typedef enum {
UAPI_VIDEO_OUTER_FRM_NO_WAIT, /* default mode */
UAPI_VIDEO_OUTER_FRM_WAIT,
UAPI_VIDEO_OUTER_FRM_MAX
} uapi_vdec_outer_frm_wait_mode;
typedef struct {
uapi_vcodec_type type; /* Video standard type */ /* CNcomment: 视频协议类型 */
td_u32 priority; /* Priority of a video decoder. Value range: [1, UAPI_VCODEC_MAX_PRIORITY].
Value 0 is reserved, equivalent to 1, The smaller the value, the lower the priority */
/* CNcomment: 视频解码器优先级, 取值范围: [1, UAPI_VCODEC_MAX_PRIORITY].
0是保留值等价于取值为1数值越小优先级越低 */
td_u32 error_cover; /* Error concealment threshold of the output frames of a video decoder.
Value 0 : no frame output if error occurs;
Value 100: all frames output no matter ignoring errors */
/* CNcomment: 视频解码器的输出帧错误隐藏门限,
0 : 出现错误即不输出;
100: 不管错误比例全部输出 */
uapi_vdec_work_mode work_mode; /* Mode of a video decoder */ /* CNcomment: 视频解码器工作模式 */
uapi_vdec_lowdelay lowdelay; /* Output lowdelay configuration */ /* CNcomment: 输出低延迟配置 */
uapi_vdec_output_format output_format; /* <Output format configuration */ /* CNcomment: 输出格式配置 */
uapi_vdec_ext_attr ext_attr; /* Extra attributes related to the video standard type */
/* CNcomment: 视频协议类型相关的额外属性 */
uapi_vdec_ext_config config; /* Extention configuration:
The value is uapi_vcodec_ext_config, or the 'or' value of several enum type */
/* CNcomment: 扩展配置取值为uapi_vcodec_ext_config或者几个枚举的'或' */
uapi_vdec_outer_frm_wait_mode outer_frm_wait_mode; /* Mode of a video frm wait mode */
/* CNcomment: 视频解码帧等待模式 */
td_void *priv_context; /* Private codec context */
/* CNcomment: 用户设置私有上下文信息vdec内部仅作保存和透传 */
} uapi_vdec_attr;
typedef struct {
uapi_vcodec_type type; /* Stream standard type */ /* CNcomment: 协议类型 */
uapi_vcodec_sub_type sub_type; /* Stream sub protocol */ /* CNcomment: 协议分支 */
uapi_video_scan_type scan_type; /* Sample type */ /* CNcomment: 采样方式(逐行/隔行) */
uapi_video_format display_norm; /* Display norm (PAL or NTSC) */ /* CNcomment: 显示标准(P/N) */
uapi_pixel_bit_depth bit_depth; /* Bit depth decoded from stream */ /* CNcomment: 视频像素位宽 */
uapi_color_description color_description; /* <Source video color space */ /* CNcomment: 视频原始色域 */
td_u32 sub_version; /* Stream sub version of protocol */ /* CNcomment: 子协议版本号 */
td_u32 profile; /* Stream profile */ /* CNcomment: 码流的profile */
td_u32 level; /* Stream level */ /* CNcomment: 码流的level */
td_u32 bit_rate; /* Bit rate, in kbit/s */ /* CNcomment: 码流的码率, Kbps */
td_u32 frame_rate; /* Frame rate times 1000 */
/* CNcomment: 码流的帧率1000的倍数 */
td_u32 aspect_width; /* Output aspect ratio: width */ /* CNcomment: 输出宽高比之宽值 */
td_u32 aspect_height; /* Output aspect ratio: height */ /* CNcomment: 输出宽高比之高值 */
td_u32 decode_width; /* Decode width */ /* CNcomment: 解码图像宽 */
td_u32 decode_height; /* Decode height */ /* CNcomment: 解码图像高 */
td_u32 display_width; /* Display width */ /* CNcomment: 显示图像宽 */
td_u32 display_height; /* Display height */ /* CNcomment: 显示图像高 */
td_u32 display_center_x; /* Horizontal coordinate of the center of the output picture */
/* CNcomment: 显示图像中心横坐标,以输出图像的左上角为坐标原点 */
td_u32 display_center_y; /* Vertical coordinate of the center of the output picture */
/* CNcomment: 显示图像中心纵坐标,以输出图像的左上角为坐标原点 */
} uapi_video_stream_info;
typedef struct {
td_u8 *addr; /* Address of userdata, output parameter */ /* CNcomment: 用户数据内存地址,输出参数 */
td_u32 seq_count; /* Sequence ID of the userdata */ /* CNcomment: 用户数据的前一序列数 */
td_u32 seq_frame_count; /* Frame number of the userdata */ /* CNcomment: 用户数据的前一帧数 */
td_u32 length; /* Userdata size(byte) */ /* CNcomment: 用户数据的大小以byte为单位 */
td_s64 pts; /* PTS corresponding to the userdata */ /* CNcomment: 用户数据对应的时间戳 */
td_bool top_field_first; /* Top field first flag */ /* CNcomment: 顶场优先标志 */
td_bool overflow; /* Indicate that size exceeds the maximum defined by MAX_USER_DATA_LEN */
/* CNcomment: 标志用户数据的长度是否超过了MAX_USER_DATA_LEN定义的最大值 */
uapi_video_userdata_broadcast broadcast_profile; /* Broadcasting profile of the userdata */
/* CNcomment: 用户数据的广播profile */
uapi_video_userdata_position position; /* Position of the userdata in video streams */
/* CNcomment: 用户数据在视频流中的位置 */
} uapi_video_userdata;
typedef struct {
td_u32 image_width; /* Width of image */ /* CNcomment: 图像宽度 */
td_u32 image_height; /* Height of image */ /* CNcomment: 图像高度 */
td_u32 image_stride; /* Stride of image */ /* CNcomment: 图像跨度 */
td_u32 image_size; /* Size of image */ /* CNcomment: 图像大小 */
td_u32 image_num; /* Num of image */ /* CNcomment: 需要个数 */
td_u32 frame_rate; /* Frame rate */ /* CNcomment: 帧率 */
uapi_video_scan_type scan_type; /* Sample type */ /* CNcomment: 采样方式(逐行/隔行) */
uapi_video_format new_format; /* New format */ /* CNcomment: 新的制式 */
uapi_pixel_bit_depth bit_depth; /* BitDepth of image */ /* CNcomment: 图像的比特深度 */
} uapi_video_norm_change;
typedef struct {
uapi_video_compress compress_mode;
td_u32 compress_rate_y; /* luma ratio, valid in loss compress */
td_u32 compress_rate_c; /* chroma ratio, valid in loss compress */
} uapi_video_compress_info;
typedef struct {
td_u32 left_offset;
td_u32 right_offset;
td_u32 top_offset;
td_u32 bottom_offset;
} uapi_video_crop_rect;
typedef struct {
td_s32 x;
td_s32 y;
td_u32 width;
td_u32 height;
} uapi_video_rect;
typedef struct {
td_mem_handle_t start_addr; /* frame buffer start address handle */
td_u32 y_head_offset;
td_u32 y_offset;
td_u32 c_head_offset;
td_u32 c_offset;
td_u32 cr_head_offset;
td_u32 cr_offset;
td_u32 stride_y;
td_u32 stride_c;
td_u32 stride_cr;
td_u32 head_stride;
td_u32 head_size;
} uapi_video_frame_addr;
typedef struct {
td_u32 priv_data[UAPI_VIDEO_FRAME_PRIV_DATA_SIZE]; /* Frame private data */ /* CNcomment: 帧私有信息 */
} uapi_video_private_info;
typedef struct {
td_u32 frame_index; /* Frame index ID */ /* CNcomment: 帧索引号 */
uapi_video_source source_type; /* Frame source type */ /* CNcomment: 帧数据来源 */
uapi_vcodec_type codec_type; /* Frame source codec type */ /* CNcomment: 帧来源编码协议 */
uapi_pixel_bit_depth bit_depth; /* Bit depth of the video frame */ /* CNcomment: 视频帧的位宽 */
uapi_hdr_type hdr_type; /* Video hdr type */ /* CNcomment: 视频高动态范围类型 */
uapi_color_description color_description; /* Video color space */ /* CNcomment: 视频色域空间 */
uapi_video_pixel_format video_format; /* Video YUV format */ /* CNcomment: 视频YUV格式 */
uapi_video_scan_type scan_type; /* Sample type */ /* CNcomment: 采样方式(逐行/隔行) */
uapi_video_field_mode field_mode; /* Frame or field encoding mode */ /* CNcomment: 帧或场编码模式 */
uapi_video_frame_packing_type frame_packing_type; /* <frame packing type */ /* CNcomment: 帧打包类型 */
uapi_video_frame_addr frame_addr[UAPI_MULTI_VIEW_MAX]; /* Frame addr info */ /* CNcomment: 帧地址信息 */
uapi_video_frame_addr frame_addr_ext[UAPI_MULTI_VIEW_MAX]; /* Frame addr of extra bits, if bitdepth > 8 */
td_s64 src_pts; /* Original PTS of a video frame */ /* CNcomment: 视频帧的原始时间戳 */
td_s64 pts; /* PTS of a video frame */ /* CNcomment: 视频帧的时间戳 */
td_bool secure_frame; /* Secure frame flag */ /* CNcomment: 是否安全帧标志 */
td_bool circumrotate; /* Need circumrotate */ /* CNcomment: 是否需要旋转 */
td_bool vertical_mirror; /* Need mirror vertically */ /* CNcomment: 是否需要垂直镜像变换 */
td_bool horizontal_mirror; /* Need mirror horizontally */ /* CNcomment: 是否需要水平镜像变换 */
td_bool top_field_first; /* Top field first flag */ /* CNcomment: 是否顶场优先标志 */
td_u32 repeat_first_field_cnt; /* Repeat count of first field */ /* CNcomment: 首场重复次数 */
td_u32 error_level; /* Error percentage of the picture, ranging from 0% to 100% */
/* CNcomment: 一幅解码图像中的错误比例取值为0%~100% */
td_u32 frame_rate; /* frame rate times 1000 */
/* CNcomment: 视频帧率倍乘1000后的数值 */
td_u32 decode_width; /* Decode width */ /* CNcomment: 解码图像宽 */
td_u32 decode_height; /* Decode height */ /* CNcomment: 解码图像高 */
td_u32 display_width; /* Display width */ /* CNcomment: 显示图像宽 */
td_u32 display_height; /* Display height */ /* CNcomment: 显示图像高 */
td_u32 display_center_x; /* Horizontal coordinate of the center of the displayed picture */
td_u32 display_center_y; /* Vertical coordinate of the center of the displayed picture */
td_u32 aspect_width; /* Output aspect ratio: width */ /* CNcomment: 输出宽高比之宽值 */
td_u32 aspect_height; /* Output aspect ratio: height */ /* CNcomment: 输出宽高比之高值 */
uapi_video_afd_type src_afd; /* Frame active format description */ /* CNcomment: 帧显示格式信息 */
uapi_hdr_metadata hdr_metadata; /* HDR info of the frame */ /* CNcomment: 帧携带的HDR信息 */
uapi_video_compress_info compress_info; /* Frame compress info */ /* CNcomment: 帧压缩信息 */
uapi_video_private_info priv_info; /* Private infomation for every frame */
/* CNcomment: 帧私有信息 */
} uapi_video_frame_info;
typedef struct {
uapi_video_frame_type frm_type; /* Type of video frame */ /* CNcomment: 视频帧类型 */
td_u32 frm_stream_size; /* Size of video frame */ /* CNcomment: 视频帧大小 */
td_u32 frm_qp; /* QP of video frame */ /* CNcomment: 视频帧QP */
td_s64 frm_pts; /* PTS of video frame */ /* CNcomment: 视频帧pts */
td_u32 max_mv; /* MAX MV */ /* CNcomment: 视频帧最大MV */
td_u32 min_mv; /* MIN MV */ /* CNcomment: 视频帧最小MV */
td_u32 avg_mv; /* AVG MV */ /* CNcomment: 视频帧MV平均值 */
td_u32 skip_ratio; /* MB ratio */ /* CNcomment: 视频帧MB比例0~100 */
td_u32 buffer_state; /* BUFFER STATE */ /* CNcomment: 0-OK, 2-UnderFlow, 3-DecodeErr */
} uapi_video_frame_qos;
typedef struct {
td_s64 pts; /* PTS of video frame */ /* CNcomment: 视频帧PTS */
td_s64 display_time; /* Estimated time of display */ /* CNcomment: 视频帧预计显示时间 */
} uapi_video_frame_display_time;
/* * Defines NonStandard image infomation num */
/* * CNcomment: 定义非标信号信息枚举 */
typedef struct {
td_bool is_non_std; /* NonStd or not */ /* CNcomment: 是否非标 */
td_u32 height; /* height of NonStd */ /* CNcomment: 非标图像高度 */
td_u32 v_freq; /* field frequency, use number of fields per 1000 secend as unit, (e.g., 61050 is 60.5Hz) */
/* CNcomment: 非标输入场频单位为每千秒场数目例如61050表示61.50Hz */
} uapi_video_nonstd_info;
/*
* Defines max decode capability of video decoder
* CNcomment: 定义视频解码器最大解码能力信息
*/
typedef struct {
uapi_vcodec_type type; /* Video standard type */ /* CNcomment: 视频协议类型 */
td_u32 max_width; /* Maximum decoding width */ /* CNcomment: 最大解码图像宽 */
td_u32 max_height; /* Maximum decoding height */ /* CNcomment: 最大解码图像高 */
td_u32 max_frm_rate; /* Maximum frame rate with fhd */ /* CNcomment: fhd分辨率下最大视频帧率 */
td_u32 bit_depth_caps_num; /* Number of vdec forcible output bit depth */ /* CNcommenst: 解码器支持强制输出视频帧的位宽的个数 */
/* Capabilitys bit depth of the vdec ouput frame8bit(10bit loss 2bit), 16bit */
/* CNcomment: 解码器支持强制输出视频帧的位宽的能力集: 8bit(10bit 丢弃 2bit), 16bit */
uapi_pixel_bit_depth bit_depth_caps[UAPI_PIXEL_BIT_DEPTH_MAX];
td_u32 frame_layout_caps_num; /* Number of frame layout capabilitys */ /* CNcomment: 支持视频帧的排列模式的个数 */
/* YUV frame data layout mode */ /* CNcomment: YUV 帧的排列模式集 */
uapi_video_frame_layout frame_layout_caps[UAPI_VIDEO_FRAME_LAYOUT_MAX];
} uapi_vdec_output_capability;
#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif
#endif /* <__UAPI_VIDEO_ H */