|
|
/*
|
|
|
* 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; /* <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 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 */
|