/* * 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协议下,从GOP(Group 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:0,V在低位 */ UAPI_FORMAT_YUV_TILE_420_UV, /* Tile format 4:2:0, U first */ /* CNcomment: Tile格式4:2:0,U在低位 */ 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; /* 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 frame:8bit(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 */