| /* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */ |
| /* |
| * Copyright (c) 2019 Amlogic, Inc. All rights reserved. |
| */ |
| |
| #ifndef AMSTREAM_H |
| #define AMSTREAM_H |
| |
| /* #include <linux/interrupt.h> */ |
| #include <linux/amlogic/media/utils/vformat.h> |
| #include <linux/amlogic/media/utils/aformat.h> |
| |
| //#ifdef CONFIG_AMLOGIC_DEBUG_ATRACE |
| #include <trace/events/meson_atrace.h> |
| //#endif |
| |
| #ifdef __KERNEL__ |
| #define PORT_FLAG_IN_USE 0x0001 |
| #define PORT_FLAG_VFORMAT 0x0002 |
| #define PORT_FLAG_AFORMAT 0x0004 |
| #define PORT_FLAG_FORMAT (PORT_FLAG_VFORMAT | PORT_FLAG_AFORMAT) |
| #define PORT_FLAG_VID 0x0008 |
| #define PORT_FLAG_AID 0x0010 |
| #define PORT_FLAG_SID 0x0020 |
| #define PORT_FLAG_UD 0x0040 |
| #define PORT_FLAG_DRM 0x0080 |
| #define PORT_FLAG_ID (PORT_FLAG_VID | \ |
| PORT_FLAG_AID | PORT_FLAG_SID | PORT_FLAG_UD) |
| #define PORT_FLAG_INITED 0x100 |
| |
| #define PORT_TYPE_VIDEO 0x01 |
| #define PORT_TYPE_AUDIO 0x02 |
| #define PORT_TYPE_MPTS 0x04 |
| #define PORT_TYPE_MPPS 0x08 |
| #define PORT_TYPE_ES 0x10 |
| #define PORT_TYPE_RM 0x20 |
| #define PORT_TYPE_SUB 0x40 |
| #define PORT_TYPE_SUB_RD 0x80 |
| #define PORT_TYPE_HEVC 0x100 |
| #define PORT_TYPE_USERDATA 0x200 |
| #define PORT_TYPE_FRAME 0x400 |
| #define PORT_TYPE_DECODER_SCHED 0x800 |
| #define PORT_TYPE_DUALDEC 0x1000 |
| #endif |
| |
| #define _A_M 'S' |
| #define AMSTREAM_IOC_VB_START _IOW((_A_M), 0x00, int) |
| #define AMSTREAM_IOC_VB_SIZE _IOW((_A_M), 0x01, int) |
| #define AMSTREAM_IOC_AB_START _IOW((_A_M), 0x02, int) |
| #define AMSTREAM_IOC_AB_SIZE _IOW((_A_M), 0x03, int) |
| #define AMSTREAM_IOC_VFORMAT _IOW((_A_M), 0x04, int) |
| #define AMSTREAM_IOC_AFORMAT _IOW((_A_M), 0x05, int) |
| #define AMSTREAM_IOC_VID _IOW((_A_M), 0x06, int) |
| #define AMSTREAM_IOC_AID _IOW((_A_M), 0x07, int) |
| #define AMSTREAM_IOC_VB_STATUS _IOR((_A_M), 0x08, int) |
| #define AMSTREAM_IOC_AB_STATUS _IOR((_A_M), 0x09, int) |
| #define AMSTREAM_IOC_SYSINFO _IOW((_A_M), 0x0a, int) |
| #define AMSTREAM_IOC_ACHANNEL _IOW((_A_M), 0x0b, int) |
| #define AMSTREAM_IOC_SAMPLERATE _IOW((_A_M), 0x0c, int) |
| #define AMSTREAM_IOC_DATAWIDTH _IOW((_A_M), 0x0d, int) |
| #define AMSTREAM_IOC_TSTAMP _IOW((_A_M), 0x0e, int) |
| #define AMSTREAM_IOC_VDECSTAT _IOR((_A_M), 0x0f, int) |
| #define AMSTREAM_IOC_ADECSTAT _IOR((_A_M), 0x10, int) |
| |
| #define AMSTREAM_IOC_PORT_INIT _IO((_A_M), 0x11) |
| #define AMSTREAM_IOC_TRICKMODE _IOW((_A_M), 0x12, int) |
| |
| #define AMSTREAM_IOC_AUDIO_INFO _IOW((_A_M), 0x13, int) |
| #define AMSTREAM_IOC_TRICK_STAT _IOR((_A_M), 0x14, int) |
| #define AMSTREAM_IOC_AUDIO_RESET _IO((_A_M), 0x15) |
| #define AMSTREAM_IOC_SID _IOW((_A_M), 0x16, int) |
| #define AMSTREAM_IOC_VPAUSE _IOW((_A_M), 0x17, int) |
| #define AMSTREAM_IOC_AVTHRESH _IOW((_A_M), 0x18, int) |
| #define AMSTREAM_IOC_SYNCTHRESH _IOW((_A_M), 0x19, int) |
| #define AMSTREAM_IOC_SUB_RESET _IOW((_A_M), 0x1a, int) |
| #define AMSTREAM_IOC_SUB_LENGTH _IOR((_A_M), 0x1b, int) |
| #define AMSTREAM_IOC_SET_DEC_RESET _IOW((_A_M), 0x1c, int) |
| #define AMSTREAM_IOC_TS_SKIPBYTE _IOW((_A_M), 0x1d, int) |
| #define AMSTREAM_IOC_SUB_TYPE _IOW((_A_M), 0x1e, int) |
| #define AMSTREAM_IOC_CLEAR_VIDEO _IOW((_A_M), 0x1f, int) |
| #define AMSTREAM_IOC_VDECINFO _IOR((_A_M), 0x20, int) |
| #define AMSTREAM_IOC_GLOBAL_GET_VIDEO_OUTPUT _IOR((_A_M), 0x21, int) |
| #define AMSTREAM_IOC_GLOBAL_SET_VIDEO_OUTPUT _IOW((_A_M), 0x22, int) |
| #define AMSTREAM_IOC_GET_VIDEO_LAYER1_ON _IOR((_A_M), 0x23, int) |
| /*video pip IOCTL command list*/ |
| #define AMSTREAM_IOC_CLEAR_VIDEOPIP _IOW((_A_M), 0x24, int) |
| #define AMSTREAM_IOC_CLEAR_PIP_VBUF _IO((_A_M), 0x25) |
| |
| #define AMSTREAM_IOC_GET_DISPLAYPATH _IOW((_A_M), 0x26, int) |
| #define AMSTREAM_IOC_SET_DISPLAYPATH _IOW((_A_M), 0x27, int) |
| |
| #define AMSTREAM_IOC_GET_PIP_DISPLAYPATH _IOW((_A_M), 0x28, int) |
| #define AMSTREAM_IOC_SET_PIP_DISPLAYPATH _IOW((_A_M), 0x29, int) |
| #define AMSTREAM_IOC_GLOBAL_GET_VIDEOPIP_OUTPUT _IOR((_A_M), 0x2b, int) |
| #define AMSTREAM_IOC_GLOBAL_SET_VIDEOPIP_OUTPUT _IOW((_A_M), 0x2c, int) |
| #define AMSTREAM_IOC_GET_VIDEOPIP_DISABLE _IOR((_A_M), 0x2d, int) |
| #define AMSTREAM_IOC_SET_VIDEOPIP_DISABLE _IOW((_A_M), 0x2e, int) |
| #define AMSTREAM_IOC_GET_VIDEOPIP_AXIS _IOR((_A_M), 0x2f, int) |
| #define AMSTREAM_IOC_SET_VIDEOPIP_AXIS _IOW((_A_M), 0x30, int) |
| #define AMSTREAM_IOC_GET_VIDEOPIP_CROP _IOR((_A_M), 0x31, int) |
| #define AMSTREAM_IOC_SET_VIDEOPIP_CROP _IOW((_A_M), 0x32, int) |
| #define AMSTREAM_IOC_GET_PIP_SCREEN_MODE _IOR((_A_M), 0x33, int) |
| #define AMSTREAM_IOC_SET_PIP_SCREEN_MODE _IOW((_A_M), 0x34, int) |
| #define AMSTREAM_IOC_GET_PIP_ZORDER _IOW((_A_M), 0x35, u32) |
| #define AMSTREAM_IOC_SET_PIP_ZORDER _IOW((_A_M), 0x36, u32) |
| |
| #define AMSTREAM_IOC_GET_ZORDER _IOW((_A_M), 0x37, u32) |
| #define AMSTREAM_IOC_SET_ZORDER _IOW((_A_M), 0x38, u32) |
| |
| #define AMSTREAM_IOC_QUERY_LAYER _IOW((_A_M), 0x39, u32) |
| #define AMSTREAM_IOC_ALLOC_LAYER _IOW((_A_M), 0x3a, u32) |
| #define AMSTREAM_IOC_FREE_LAYER _IOW((_A_M), 0x3b, u32) |
| |
| /* VPP.3D IOCTL command list */ |
| #define AMSTREAM_IOC_SET_3D_TYPE _IOW((_A_M), 0x3c, u32) |
| #define AMSTREAM_IOC_GET_3D_TYPE _IOW((_A_M), 0x3d, u32) |
| #define AMSTREAM_IOC_GET_SOURCE_VIDEO_3D_TYPE _IOW((_A_M), 0x3e, u32) |
| |
| #define AMSTREAM_IOC_APTS _IOR((_A_M), 0x40, int) |
| #define AMSTREAM_IOC_VPTS _IOR((_A_M), 0x41, int) |
| #define AMSTREAM_IOC_PCRSCR _IOR((_A_M), 0x42, int) |
| #define AMSTREAM_IOC_SYNCENABLE _IOW((_A_M), 0x43, int) |
| #define AMSTREAM_IOC_GET_SYNC_ADISCON _IOR((_A_M), 0x44, int) |
| #define AMSTREAM_IOC_SET_SYNC_ADISCON _IOW((_A_M), 0x45, int) |
| #define AMSTREAM_IOC_GET_SYNC_VDISCON _IOR((_A_M), 0x46, int) |
| #define AMSTREAM_IOC_SET_SYNC_VDISCON _IOW((_A_M), 0x47, int) |
| #define AMSTREAM_IOC_GET_VIDEO_DISABLE _IOR((_A_M), 0x48, int) |
| #define AMSTREAM_IOC_SET_VIDEO_DISABLE _IOW((_A_M), 0x49, int) |
| #define AMSTREAM_IOC_SET_PCRSCR _IOW((_A_M), 0x4a, int) |
| #define AMSTREAM_IOC_GET_VIDEO_AXIS _IOR((_A_M), 0x4b, int) |
| #define AMSTREAM_IOC_SET_VIDEO_AXIS _IOW((_A_M), 0x4c, int) |
| #define AMSTREAM_IOC_GET_VIDEO_CROP _IOR((_A_M), 0x4d, int) |
| #define AMSTREAM_IOC_SET_VIDEO_CROP _IOW((_A_M), 0x4e, int) |
| #define AMSTREAM_IOC_PCRID _IOW((_A_M), 0x4f, int) |
| |
| /* VPP.3D IOCTL command list */ |
| #define AMSTREAM_IOC_SET_3D_TYPE _IOW((_A_M), 0x3c, u32) |
| #define AMSTREAM_IOC_GET_3D_TYPE _IOW((_A_M), 0x3d, u32) |
| #define AMSTREAM_IOC_GET_SOURCE_VIDEO_3D_TYPE _IOW((_A_M), 0x3e, u32) |
| |
| #define AMSTREAM_IOC_SUB_NUM _IOR((_A_M), 0x50, int) |
| #define AMSTREAM_IOC_SUB_INFO _IOR((_A_M), 0x51, int) |
| #define AMSTREAM_IOC_GET_BLACKOUT_POLICY _IOR((_A_M), 0x52, int) |
| #define AMSTREAM_IOC_SET_BLACKOUT_POLICY _IOW((_A_M), 0x53, int) |
| #define AMSTREAM_IOC_UD_LENGTH _IOR((_A_M), 0x54, int) |
| #define AMSTREAM_IOC_UD_POC _IOR((_A_M), 0x55, int) |
| #define AMSTREAM_IOC_UD_FLUSH_USERDATA _IOR((_A_M), 0x56, int) |
| |
| #define AMSTREAM_IOC_UD_BUF_READ _IOR((_A_M), 0x57, int) |
| |
| #define AMSTREAM_IOC_GET_SCREEN_MODE _IOR((_A_M), 0x58, int) |
| #define AMSTREAM_IOC_SET_SCREEN_MODE _IOW((_A_M), 0x59, int) |
| #define AMSTREAM_IOC_GET_VIDEO_DISCONTINUE_REPORT _IOR((_A_M), 0x5a, int) |
| #define AMSTREAM_IOC_SET_VIDEO_DISCONTINUE_REPORT _IOW((_A_M), 0x5b, int) |
| |
| #define AMSTREAM_IOC_UD_AVAILABLE_VDEC _IOR((_A_M), 0x5c, u32) |
| #define AMSTREAM_IOC_GET_VDEC_ID _IOR((_A_M), 0x5d, int) |
| |
| /* |
| * #define AMSTREAM_IOC_UD_BUF_STATUS _IOR((_A_M), |
| * 0x5c, struct userdata_buf_state_t) |
| */ |
| |
| #define AMSTREAM_IOC_VF_STATUS _IOR((_A_M), 0x60, int) |
| #define AMSTREAM_IOC_GET_BLACKOUT_PIP_POLICY _IOR((_A_M), 0x62, int) |
| #define AMSTREAM_IOC_SET_BLACKOUT_PIP_POLICY _IOW((_A_M), 0x63, int) |
| #define AMSTREAM_IOC_GET_BLACKOUT_PIP2_POLICY _IOR((_A_M), 0x64, int) |
| #define AMSTREAM_IOC_SET_BLACKOUT_PIP2_POLICY _IOW((_A_M), 0x65, int) |
| |
| #define AMSTREAM_IOC_GET_PIP2_DISPLAYPATH _IOW((_A_M), 0x66, int) |
| #define AMSTREAM_IOC_SET_PIP2_DISPLAYPATH _IOW((_A_M), 0x67, int) |
| #define AMSTREAM_IOC_GLOBAL_GET_VIDEOPIP2_OUTPUT _IOR((_A_M), 0x68, int) |
| #define AMSTREAM_IOC_GLOBAL_SET_VIDEOPIP2_OUTPUT _IOW((_A_M), 0x69, int) |
| #define AMSTREAM_IOC_GET_VIDEOPIP2_DISABLE _IOR((_A_M), 0x70, int) |
| #define AMSTREAM_IOC_SET_VIDEOPIP2_DISABLE _IOW((_A_M), 0x71, int) |
| #define AMSTREAM_IOC_GET_VIDEOPIP2_AXIS _IOR((_A_M), 0x72, int) |
| #define AMSTREAM_IOC_SET_VIDEOPIP2_AXIS _IOW((_A_M), 0x73, int) |
| #define AMSTREAM_IOC_GET_VIDEOPIP2_CROP _IOR((_A_M), 0x74, int) |
| #define AMSTREAM_IOC_SET_VIDEOPIP2_CROP _IOW((_A_M), 0x75, int) |
| #define AMSTREAM_IOC_GET_PIP2_SCREEN_MODE _IOR((_A_M), 0x76, int) |
| #define AMSTREAM_IOC_SET_PIP2_SCREEN_MODE _IOW((_A_M), 0x77, int) |
| #define AMSTREAM_IOC_GET_PIP2_ZORDER _IOW((_A_M), 0x78, u32) |
| #define AMSTREAM_IOC_SET_PIP2_ZORDER _IOW((_A_M), 0x79, u32) |
| #define AMSTREAM_IOC_CLEAR_VIDEOPIP2 _IOW((_A_M), 0x7a, int) |
| #define AMSTREAM_IOC_CLEAR_PIP2_VBUF _IO((_A_M), 0x7b) |
| |
| #define AMSTREAM_IOC_CLEAR_VBUF _IO((_A_M), 0x80) |
| |
| #define AMSTREAM_IOC_APTS_LOOKUP _IOR((_A_M), 0x81, int) |
| #define GET_FIRST_APTS_FLAG _IOR((_A_M), 0x82, int) |
| #define AMSTREAM_IOC_GET_SYNC_ADISCON_DIFF _IOR((_A_M), 0x83, int) |
| #define AMSTREAM_IOC_GET_SYNC_VDISCON_DIFF _IOR((_A_M), 0x84, int) |
| #define AMSTREAM_IOC_SET_SYNC_ADISCON_DIFF _IOW((_A_M), 0x85, int) |
| #define AMSTREAM_IOC_SET_SYNC_VDISCON_DIFF _IOW((_A_M), 0x86, int) |
| #define AMSTREAM_IOC_GET_FREERUN_MODE _IOR((_A_M), 0x87, int) |
| #define AMSTREAM_IOC_SET_FREERUN_MODE _IOW((_A_M), 0x88, int) |
| #define AMSTREAM_IOC_SET_VSYNC_UPINT _IOW((_A_M), 0x89, int) |
| #define AMSTREAM_IOC_GET_VSYNC_SLOW_FACTOR _IOW((_A_M), 0x8a, int) |
| #define AMSTREAM_IOC_SET_VSYNC_SLOW_FACTOR _IOW((_A_M), 0x8b, int) |
| #define AMSTREAM_IOC_GET_FIRST_FRAME_LATENCY _IOR((_A_M), 0x8c, int) |
| #define AMSTREAM_IOC_CLEAR_FIRST_FRAME_LATENCY _IOR((_A_M), 0x8d, int) |
| #define AMSTREAM_IOC_SET_DEMUX _IOW((_A_M), 0x90, int) |
| #define AMSTREAM_IOC_SET_DRMMODE _IOW((_A_M), 0x91, int) |
| #define AMSTREAM_IOC_TSTAMP_uS64 _IOW((_A_M), 0x95, int) |
| |
| #define AMSTREAM_IOC_SET_VIDEO_DELAY_LIMIT_MS _IOW((_A_M), 0xa0, int) |
| #define AMSTREAM_IOC_GET_VIDEO_DELAY_LIMIT_MS _IOR((_A_M), 0xa1, int) |
| #define AMSTREAM_IOC_SET_AUDIO_DELAY_LIMIT_MS _IOW((_A_M), 0xa2, int) |
| #define AMSTREAM_IOC_GET_AUDIO_DELAY_LIMIT_MS _IOR((_A_M), 0xa3, int) |
| #define AMSTREAM_IOC_GET_AUDIO_CUR_DELAY_MS _IOR((_A_M), 0xa4, int) |
| #define AMSTREAM_IOC_GET_VIDEO_CUR_DELAY_MS _IOR((_A_M), 0xa5, int) |
| #define AMSTREAM_IOC_GET_AUDIO_AVG_BITRATE_BPS _IOR((_A_M), 0xa6, int) |
| #define AMSTREAM_IOC_GET_VIDEO_AVG_BITRATE_BPS _IOR((_A_M), 0xa7, int) |
| #define AMSTREAM_IOC_SET_APTS _IOW((_A_M), 0xa8, int) |
| #define AMSTREAM_IOC_GET_LAST_CHECKIN_APTS _IOR((_A_M), 0xa9, int) |
| #define AMSTREAM_IOC_GET_LAST_CHECKIN_VPTS _IOR((_A_M), 0xaa, int) |
| #define AMSTREAM_IOC_GET_LAST_CHECKOUT_APTS _IOR((_A_M), 0xab, int) |
| #define AMSTREAM_IOC_GET_LAST_CHECKOUT_VPTS _IOR((_A_M), 0xac, int) |
| |
| /* subtitle.c get/set subtitle info */ |
| #define AMSTREAM_IOC_GET_SUBTITLE_INFO _IOR((_A_M), 0xad, int) |
| #define AMSTREAM_IOC_SET_SUBTITLE_INFO _IOW((_A_M), 0xae, int) |
| #define AMSTREAM_IOC_SET_OMX_VPTS _IOW((_A_M), 0xaf, int) |
| #define AMSTREAM_IOC_GET_OMX_VPTS _IOW((_A_M), 0xb0, int) |
| #define AMSTREAM_IOC_GET_OMX_VERSION _IOW((_A_M), 0xb1, int) |
| #define AMSTREAM_IOC_GET_OMX_INFO _IOR((_A_M), 0xb2, u32) |
| #define AMSTREAM_IOC_SET_HDR_INFO _IOW((_A_M), 0xb3, int) |
| #define AMSTREAM_IOC_GET_VIDEO_LATENCY _IOW((_A_M), 0xb4, int) |
| #define AMSTREAM_IOC_SET_TUNNEL_MODE _IOR(_A_M, 0xbd, unsigned int) |
| #define AMSTREAM_IOC_GET_FIRST_FRAME_TOGGLED _IOR(_A_M, 0xbe, u32) |
| /* av sycn event */ |
| #define AMSTREAM_IOC_SET_VIDEOPEEK _IOW(_A_M, 0xbf, u32) |
| |
| #define AMSTREAM_IOC_GET_TRICK_VPTS _IOR((_A_M), 0xf0, int) |
| #define AMSTREAM_IOC_DISABLE_SLOW_SYNC _IOW((_A_M), 0xf1, int) |
| |
| #define AMSTREAM_IOC_GET_AUDIO_CHECKIN_BITRATE_BPS _IOR((_A_M), 0xf2, int) |
| #define AMSTREAM_IOC_GET_VIDEO_CHECKIN_BITRATE_BPS _IOR((_A_M), 0xf3, int) |
| |
| #define AMSTREAM_IOC_VDEC_RESET _IO((_A_M), 0xf4) |
| #define AMSTREAM_IOC_GET_VERSION _IOR((_A_M), 0xc0, int) |
| #define AMSTREAM_IOC_GET _IOWR((_A_M), 0xc1, struct am_ioctl_parm) |
| #define AMSTREAM_IOC_SET _IOW((_A_M), 0xc2, struct am_ioctl_parm) |
| #define AMSTREAM_IOC_GET_EX _IOWR((_A_M), 0xc3, struct am_ioctl_parm_ex) |
| #define AMSTREAM_IOC_SET_EX _IOW((_A_M), 0xc4, struct am_ioctl_parm_ex) |
| #define AMSTREAM_IOC_GET_PTR _IOWR((_A_M), 0xc5, struct am_ioctl_parm_ptr) |
| #define AMSTREAM_IOC_SET_PTR _IOW((_A_M), 0xc6, struct am_ioctl_parm_ptr) |
| #define AMSTREAM_IOC_GET_AVINFO _IOR((_A_M), 0xc7, struct av_param_info_t) |
| #define AMSTREAM_IOC_GET_QOSINFO _IOR((_A_M), 0xc8, struct av_param_qosinfo_t) |
| #define AMSTREAM_IOC_SET_CRC _IOW((_A_M), 0xc9, struct usr_crc_info_t) |
| #define AMSTREAM_IOC_GET_CRC_CMP_RESULT _IOWR((_A_M), 0xca, int) |
| #define AMSTREAM_IOC_GET_MVDECINFO _IOR((_A_M), 0xcb, int) |
| /* amstream support external stbuf */ |
| #define AMSTREAM_IOC_INIT_EX_STBUF _IOW((_A_M), 0xcc, struct stream_buffer_metainfo) |
| #define AMSTREAM_IOC_WR_STBUF_META _IOW((_A_M), 0xcd, struct stream_buffer_metainfo) |
| #define AMSTREAM_IOC_GET_STBUF_STATUS _IOR((_A_M), 0xce, struct stream_buffer_status) |
| |
| #define TRICKMODE_NONE 0x00 |
| #define TRICKMODE_I 0x01 |
| #define TRICKMODE_FFFB 0x02 |
| #define TRICKMODE_I_HEVC 0x07 |
| |
| #define TRICK_STAT_DONE 0x01 |
| #define TRICK_STAT_WAIT 0x00 |
| |
| #define AUDIO_EXTRA_DATA_SIZE (4096) |
| #define MAX_SUB_NUM 32 |
| |
| enum VIDEO_DEC_TYPE { |
| VIDEO_DEC_FORMAT_UNKNOWN, |
| VIDEO_DEC_FORMAT_MPEG4_3, |
| |
| VIDEO_DEC_FORMAT_MPEG4_4, |
| VIDEO_DEC_FORMAT_MPEG4_5, |
| |
| VIDEO_DEC_FORMAT_H264, |
| |
| VIDEO_DEC_FORMAT_MJPEG, |
| VIDEO_DEC_FORMAT_MP4, |
| VIDEO_DEC_FORMAT_H263, |
| |
| VIDEO_DEC_FORMAT_REAL_8, |
| VIDEO_DEC_FORMAT_REAL_9, |
| |
| VIDEO_DEC_FORMAT_WMV3, |
| |
| VIDEO_DEC_FORMAT_WVC1, |
| VIDEO_DEC_FORMAT_SW, |
| VIDEO_DEC_FORMAT_MAX |
| }; |
| |
| enum FRAME_BASE_VIDEO_PATH { |
| FRAME_BASE_PATH_IONVIDEO = 0, |
| FRAME_BASE_PATH_AMLVIDEO_AMVIDEO, |
| FRAME_BASE_PATH_AMLVIDEO1_AMVIDEO2, |
| FRAME_BASE_PATH_DI_AMVIDEO, |
| FRAME_BASE_PATH_AMVIDEO, |
| FRAME_BASE_PATH_AMVIDEO2, |
| FRAME_BASE_PATH_V4L_VIDEO, |
| FRAME_BASE_PATH_TUNNEL_MODE, |
| FRAME_BASE_PATH_V4L_OSD, |
| FRAME_BASE_PATH_DI_V4LVIDEO, |
| FRAME_BASE_PATH_PIP_TUNNEL_MODE, |
| FRAME_BASE_PATH_V4LVIDEO, |
| FRAME_BASE_PATH_DTV_TUNNEL_MODE, |
| FRAME_BASE_PATH_AMLVIDEO_FENCE, |
| FRAME_BASE_PATH_TUNNEL_DI_MODE, |
| FRAME_BASE_PATH_V4LVIDEO_FENCE, |
| FRAME_BASE_PATH_MAX |
| }; |
| |
| struct buf_status { |
| int size; |
| int data_len; |
| int free_len; |
| unsigned int read_pointer; |
| unsigned int write_pointer; |
| }; |
| |
| /*struct vdec_status.status*/ |
| #define STAT_TIMER_INIT 0x01 |
| #define STAT_MC_LOAD 0x02 |
| #define STAT_ISR_REG 0x04 |
| #define STAT_VF_HOOK 0x08 |
| #define STAT_TIMER_ARM 0x10 |
| #define STAT_VDEC_RUN 0x20 |
| |
| /*struct vdec_status.status on error*/ |
| |
| #define PARSER_FATAL_ERROR (0x10 << 16) |
| #define DECODER_ERROR_VLC_DECODE_TBL (0x20 << 16) |
| #define PARSER_ERROR_WRONG_HEAD_VER (0x40 << 16) |
| #define PARSER_ERROR_WRONG_PACKAGE_SIZE (0x80 << 16) |
| #define DECODER_FATAL_ERROR_SIZE_OVERFLOW (0x100 << 16) |
| #define DECODER_FATAL_ERROR_UNKNOWN (0x200 << 16) |
| #define DECODER_FATAL_ERROR_NO_MEM (0x400 << 16) |
| |
| #define DECODER_ERROR_MASK (0xffff << 16) |
| /* The total slot number for fifo_buf */ |
| #define NUM_FRAME_VDEC 128 //This must be 2^n |
| #define QOS_FRAME_NUM 8 |
| |
| enum E_ASPECT_RATIO { |
| ASPECT_RATIO_4_3, |
| ASPECT_RATIO_16_9, |
| ASPECT_UNDEFINED = 255 |
| }; |
| |
| struct vdec_status { |
| unsigned int width; |
| unsigned int height; |
| unsigned int fps; |
| unsigned int error_count; |
| unsigned int status; |
| enum E_ASPECT_RATIO euAspectRatio; |
| }; |
| |
| struct vdec_info { |
| char vdec_name[16]; |
| u32 ver; |
| u32 frame_width; |
| u32 frame_height; |
| u32 frame_rate; |
| union { |
| u32 bit_rate; |
| /* Effective in h265,vp9,avs2 multi-instance */ |
| u32 bit_depth_luma; |
| }; |
| u32 frame_dur; |
| union { |
| u32 frame_data; |
| /* Effective in h265,vp9,avs2 multi-instance */ |
| u32 bit_depth_chroma; |
| }; |
| u32 error_count; |
| u32 status; |
| u32 frame_count; |
| u32 error_frame_count; |
| u32 drop_frame_count; |
| u64 total_data; |
| union { |
| u32 samp_cnt; |
| /* Effective in h265,vp9,avs2 multi-instance */ |
| u32 double_write_mode; |
| }; |
| u32 offset; |
| u32 ratio_control; |
| char reserved[0]; |
| unsigned int i_decoded_frames;/*i frames decoded*/ |
| unsigned int i_lost_frames;/*i frames can not be decoded*/ |
| unsigned int i_concealed_frames;/*i frames decoded but have some error*/ |
| unsigned int p_decoded_frames; |
| unsigned int p_lost_frames; |
| unsigned int p_concealed_frames; |
| unsigned int b_decoded_frames; |
| unsigned int b_lost_frames; |
| unsigned int b_concealed_frames; |
| char endipb_line[0]; |
| }; |
| |
| struct adec_status { |
| unsigned int channels; |
| unsigned int sample_rate; |
| unsigned int resolution; |
| unsigned int error_count; |
| unsigned int status; |
| }; |
| |
| struct am_io_param { |
| union { |
| int data; |
| int id; /* get bufstatus? or others */ |
| }; |
| int len; /* buffer size; */ |
| union { |
| char buf[1]; |
| struct buf_status status; |
| struct vdec_status vstatus; |
| struct adec_status astatus; |
| }; |
| }; |
| |
| struct am_io_info { |
| union { |
| int data; |
| int id; |
| }; |
| int len; |
| union { |
| char buf[1]; |
| struct vdec_info vinfo; |
| }; |
| }; |
| |
| struct audio_info { |
| int valid; |
| int sample_rate; |
| int channels; |
| int bitrate; |
| int codec_id; |
| int block_align; |
| int extradata_size; |
| char extradata[AUDIO_EXTRA_DATA_SIZE]; |
| }; |
| |
| struct dec_sysinfo { |
| unsigned int format; |
| unsigned int width; |
| unsigned int height; |
| unsigned int rate; |
| unsigned int extra; |
| unsigned int status; |
| unsigned int ratio; |
| void *param; |
| unsigned long long ratio64; |
| }; |
| |
| struct subtitle_info { |
| unsigned char id; |
| unsigned char width; |
| unsigned char height; |
| unsigned char type; |
| }; |
| |
| struct codec_profile_t { |
| char *name; /* video codec short name */ |
| char *profile; /* Attributes,separated by commas */ |
| }; |
| |
| struct userdata_poc_info_t { |
| unsigned int poc_info; |
| unsigned int poc_number; |
| /* |
| * bit 0: |
| * 1, group start |
| * 0, not group start |
| * bit 1-2: |
| * 0, extension_and_user_data( 0 ) |
| * 1, extension_and_user_data( 1 ) |
| * 2, extension_and_user_data( 2 ) |
| */ |
| unsigned int flags; |
| unsigned int vpts; |
| unsigned int vpts_valid; |
| unsigned int duration; |
| }; |
| |
| struct userdata_meta_info_t { |
| u32 poc_number; |
| /************ flags bit defination ***********/ |
| /* |
| * bit 0: //used for mpeg2 |
| * 1, group start |
| * 0, not group start |
| * bit 1-2: //used for mpeg2 |
| * 0, extension_and_user_data( 0 ) |
| * 1, extension_and_user_data( 1 ) |
| * 2, extension_and_user_data( 2 ) |
| * bit 3-6: //video format |
| * 0, VFORMAT_MPEG12 |
| * 1, VFORMAT_MPEG4 |
| * 2, VFORMAT_H264 |
| * 3, VFORMAT_MJPEG |
| * 4, VFORMAT_REAL |
| * 5, VFORMAT_JPEG |
| * 6, VFORMAT_VC1 |
| * 7, VFORMAT_AVS |
| * 8, VFORMAT_SW |
| * 9, VFORMAT_H264MVC |
| * 10, VFORMAT_H264_4K2K |
| * 11, VFORMAT_HEVC |
| * 12, VFORMAT_H264_ENC |
| * 13, VFORMAT_JPEG_ENC |
| * 14, VFORMAT_VP9 |
| * bit 7-9: //frame type |
| * 0, Unknown Frame Type |
| * 1, I Frame |
| * 2, B Frame |
| * 3, P Frame |
| * 4, D_Type_MPEG2 |
| * bit 10: //top_field_first_flag valid |
| * 0: top_field_first_flag is not valid |
| * 1: top_field_first_flag is valid |
| * bit 11: //top_field_first bit val |
| */ |
| u32 flags; |
| u32 vpts; /*video frame pts*/ |
| /* |
| * 0: pts is invalid, please use duration to calcuate |
| * 1: pts is valid |
| */ |
| u32 vpts_valid; |
| /*duration for frame*/ |
| u32 duration; |
| /* how many records left in queue waiting to be read*/ |
| u32 records_in_que; |
| unsigned long long priv_data; |
| u32 padding_data[4]; |
| }; |
| |
| struct userdata_param_t { |
| u32 version; |
| u32 instance_id; /*input, 0~9*/ |
| u32 buf_len; /*input*/ |
| u32 data_size; /*output*/ |
| void *pbuf_addr; /*input*/ |
| struct userdata_meta_info_t meta_info; /*output*/ |
| }; |
| |
| struct usr_crc_info_t { |
| u32 id; |
| u32 pic_num; |
| u32 y_crc; |
| u32 uv_crc; |
| }; |
| |
| /******************************************************************* |
| * 0x100~~0x1FF : set cmd |
| * 0x200~~0x2FF : set ex cmd |
| * 0x300~~0x3FF : set ptr cmd |
| * 0x400~~0x7FF : set reserved cmd |
| * 0x800~~0x8FF : get cmd |
| * 0x900~~0x9FF : get ex cmd |
| * 0xA00~~0xAFF : get ptr cmd |
| * 0xBFF~~0xFFF : get reserved cmd |
| * 0xX00~~0xX5F : amstream cmd(X: cmd type) |
| * 0xX60~~0xXAF : video cmd(X: cmd type) |
| * 0xXAF~~0xXFF : reserved cmd(X: cmd type) |
| ****************************************************************** |
| */ |
| |
| /* amstream set cmd */ |
| #define AMSTREAM_SET_VB_START 0x101 |
| #define AMSTREAM_SET_VB_SIZE 0x102 |
| #define AMSTREAM_SET_AB_START 0x103 |
| #define AMSTREAM_SET_AB_SIZE 0x104 |
| #define AMSTREAM_SET_VFORMAT 0x105 |
| #define AMSTREAM_SET_AFORMAT 0x106 |
| #define AMSTREAM_SET_VID 0x107 |
| #define AMSTREAM_SET_AID 0x108 |
| #define AMSTREAM_SET_SID 0x109 |
| #define AMSTREAM_SET_PCRID 0x10A |
| #define AMSTREAM_SET_ACHANNEL 0x10B |
| #define AMSTREAM_SET_SAMPLERATE 0x10C |
| #define AMSTREAM_SET_DATAWIDTH 0x10D |
| #define AMSTREAM_SET_TSTAMP 0x10E |
| #define AMSTREAM_SET_TSTAMP_US64 0x10F |
| #define AMSTREAM_SET_APTS 0x110 |
| #define AMSTREAM_PORT_INIT 0x111 |
| #define AMSTREAM_SET_TRICKMODE 0x112 |
| /* amstream,video */ |
| #define AMSTREAM_AUDIO_RESET 0x013 |
| #define AMSTREAM_SUB_RESET 0x114 |
| #define AMSTREAM_DEC_RESET 0x115 |
| #define AMSTREAM_SET_TS_SKIPBYTE 0x116 |
| #define AMSTREAM_SET_SUB_TYPE 0x117 |
| #define AMSTREAM_SET_PCRSCR 0x118 |
| #define AMSTREAM_SET_DEMUX 0x119 |
| #define AMSTREAM_SET_VIDEO_DELAY_LIMIT_MS 0x11A |
| #define AMSTREAM_SET_AUDIO_DELAY_LIMIT_MS 0x11B |
| #define AMSTREAM_SET_DRMMODE 0x11C |
| #define AMSTREAM_SET_VIDEO_ID 0x11E |
| |
| /* video set cmd */ |
| #define AMSTREAM_SET_OMX_VPTS 0x160 |
| #define AMSTREAM_SET_VPAUSE 0x161 |
| #define AMSTREAM_SET_AVTHRESH 0x162 |
| #define AMSTREAM_SET_SYNCTHRESH 0x163 |
| #define AMSTREAM_SET_SYNCENABLE 0x164 |
| #define AMSTREAM_SET_SYNC_ADISCON 0x165 |
| #define AMSTREAM_SET_SYNC_VDISCON 0x166 |
| #define AMSTREAM_SET_SYNC_ADISCON_DIFF 0x167 |
| #define AMSTREAM_SET_SYNC_VDISCON_DIFF 0x168 |
| #define AMSTREAM_SET_VIDEO_DISABLE 0x169 |
| #define AMSTREAM_SET_VIDEO_DISCONTINUE_REPORT 0x16A |
| #define AMSTREAM_SET_SCREEN_MODE 0x16B |
| #define AMSTREAM_SET_BLACKOUT_POLICY 0x16C |
| #define AMSTREAM_CLEAR_VBUF 0x16D |
| #define AMSTREAM_SET_CLEAR_VIDEO 0x16E |
| #define AMSTREAM_SET_FREERUN_MODE 0x16F |
| #define AMSTREAM_SET_DISABLE_SLOW_SYNC 0x170 |
| #define AMSTREAM_SET_3D_TYPE 0x171 |
| #define AMSTREAM_SET_VSYNC_UPINT 0x172 |
| #define AMSTREAM_SET_VSYNC_SLOW_FACTOR 0x173 |
| #define AMSTREAM_SET_FRAME_BASE_PATH 0x174 |
| #define AMSTREAM_SET_EOS 0x175 |
| #define AMSTREAM_SET_RECEIVE_ID 0x176 |
| #define AMSTREAM_SET_IS_RESET 0x177 |
| #define AMSTREAM_SET_NO_POWERDOWN 0x178 |
| #define AMSTREAM_SET_DV_META_WITH_EL 0x179 |
| |
| /* video set ex cmd */ |
| #define AMSTREAM_SET_EX_VIDEO_AXIS 0x260 |
| #define AMSTREAM_SET_EX_VIDEO_CROP 0x261 |
| |
| /* amstream set ptr cmd */ |
| #define AMSTREAM_SET_PTR_AUDIO_INFO 0x300 |
| #define AMSTREAM_SET_PTR_CONFIGS 0x301 |
| #define AMSTREAM_SET_PTR_HDR10P_DATA 0x302 |
| |
| /* amstream get cmd */ |
| #define AMSTREAM_GET_SUB_LENGTH 0x800 |
| #define AMSTREAM_GET_UD_LENGTH 0x801 |
| #define AMSTREAM_GET_APTS_LOOKUP 0x802 |
| #define AMSTREAM_GET_FIRST_APTS_FLAG 0x803 |
| #define AMSTREAM_GET_APTS 0x804 |
| #define AMSTREAM_GET_VPTS 0x805 |
| #define AMSTREAM_GET_PCRSCR 0x806 |
| #define AMSTREAM_GET_LAST_CHECKIN_APTS 0x807 |
| #define AMSTREAM_GET_LAST_CHECKIN_VPTS 0x808 |
| #define AMSTREAM_GET_LAST_CHECKOUT_APTS 0x809 |
| #define AMSTREAM_GET_LAST_CHECKOUT_VPTS 0x80A |
| #define AMSTREAM_GET_SUB_NUM 0x80B |
| #define AMSTREAM_GET_VIDEO_DELAY_LIMIT_MS 0x80C |
| #define AMSTREAM_GET_AUDIO_DELAY_LIMIT_MS 0x80D |
| #define AMSTREAM_GET_AUDIO_CUR_DELAY_MS 0x80E |
| #define AMSTREAM_GET_VIDEO_CUR_DELAY_MS 0x80F |
| #define AMSTREAM_GET_AUDIO_AVG_BITRATE_BPS 0x810 |
| #define AMSTREAM_GET_VIDEO_AVG_BITRATE_BPS 0x811 |
| #define AMSTREAM_GET_ION_ID 0x812 |
| #define AMSTREAM_GET_NEED_MORE_DATA 0x813 |
| #define AMSTREAM_GET_FREED_HANDLE 0x814 |
| #define AMSTREAM_GET_VPTS_U64 0x815 |
| #define AMSTREAM_GET_APTS_U64 0x816 |
| /* video get cmd */ |
| #define AMSTREAM_GET_OMX_VPTS 0x860 |
| #define AMSTREAM_GET_TRICK_STAT 0x861 |
| #define AMSTREAM_GET_TRICK_VPTS 0x862 |
| #define AMSTREAM_GET_SYNC_ADISCON 0x863 |
| #define AMSTREAM_GET_SYNC_VDISCON 0x864 |
| #define AMSTREAM_GET_SYNC_ADISCON_DIFF 0x865 |
| #define AMSTREAM_GET_SYNC_VDISCON_DIFF 0x866 |
| #define AMSTREAM_GET_VIDEO_DISABLE 0x867 |
| #define AMSTREAM_GET_VIDEO_DISCONTINUE_REPORT 0x868 |
| #define AMSTREAM_GET_SCREEN_MODE 0x869 |
| #define AMSTREAM_GET_BLACKOUT_POLICY 0x86A |
| #define AMSTREAM_GET_FREERUN_MODE 0x86B |
| #define AMSTREAM_GET_3D_TYPE 0x86C |
| #define AMSTREAM_GET_VSYNC_SLOW_FACTOR 0x86D |
| |
| /* amstream get ex cmd */ |
| #define AMSTREAM_GET_EX_VB_STATUS 0x900 |
| #define AMSTREAM_GET_EX_AB_STATUS 0x901 |
| #define AMSTREAM_GET_EX_VDECSTAT 0x902 |
| #define AMSTREAM_GET_EX_ADECSTAT 0x903 |
| #define AMSTREAM_GET_EX_UD_POC 0x904 |
| #define AMSTREAM_GET_EX_WR_COUNT 0x905 |
| |
| /* video get ex cmd */ |
| #define AMSTREAM_GET_EX_VF_STATUS 0x960 |
| #define AMSTREAM_GET_EX_VIDEO_AXIS 0x961 |
| #define AMSTREAM_GET_EX_VIDEO_CROP 0x962 |
| |
| /* amstream get ptr cmd */ |
| #define AMSTREAM_GET_PTR_SUB_INFO 0xA00 |
| |
| #define AMSTREAM_IOC_VERSION_FIRST 2 |
| #define AMSTREAM_IOC_VERSION_SECOND 0 |
| |
| struct am_ioctl_parm { |
| union { |
| u32 data_32; |
| u64 data_64; |
| enum vformat_e data_vformat; |
| enum aformat_e data_aformat; |
| enum FRAME_BASE_VIDEO_PATH frame_base_video_path; |
| char data[8]; |
| }; |
| u32 cmd; |
| char reserved[4]; |
| }; |
| |
| struct am_ioctl_parm_ex { |
| union { |
| struct buf_status status; |
| struct vdec_status vstatus; |
| struct adec_status astatus; |
| |
| struct userdata_poc_info_t data_userdata_info; |
| u32 wr_count; |
| char data[20]; |
| |
| }; |
| u32 cmd; |
| char reserved[4]; |
| }; |
| |
| struct am_ioctl_parm_ptr { |
| union { |
| struct audio_info *pdata_audio_info; |
| struct subtitle_info *pdata_sub_info; |
| void *pointer; |
| char data[8]; |
| }; |
| u32 cmd; |
| u32 len; /*char reserved[4]; */ |
| }; |
| |
| struct vframe_qos_s { |
| u32 num; |
| u32 type; |
| u32 size; |
| u32 pts; |
| int max_qp; |
| int avg_qp; |
| int min_qp; |
| int max_skip; |
| int avg_skip; |
| int min_skip; |
| int max_mv; |
| int min_mv; |
| int avg_mv; |
| int decode_buffer;//For padding currently |
| } /*vframe_qos */; |
| |
| struct vframe_comm_s { |
| int vdec_id; |
| char vdec_name[16]; |
| u32 vdec_type; |
| }; |
| |
| struct vframe_counter_s { |
| struct vframe_qos_s qos; |
| u32 decode_time_cost;/*us*/ |
| u32 frame_width; |
| u32 frame_height; |
| u32 frame_rate; |
| union { |
| u32 bit_rate; |
| /* Effective in h265,vp9,avs2 multi-instance */ |
| u32 bit_depth_luma; |
| }; |
| u32 frame_dur; |
| union { |
| u32 frame_data; |
| /* Effective in h265,vp9,avs2 multi-instance */ |
| u32 bit_depth_chroma; |
| }; |
| u32 error_count; |
| u32 status; |
| u32 frame_count; |
| u32 error_frame_count; |
| u32 drop_frame_count; |
| u64 total_data;//this member must be 8 bytes alignment |
| union { |
| u32 samp_cnt; |
| /* Effective in h265,vp9,avs2 multi-instance */ |
| u32 double_write_mode; |
| }; |
| u32 offset; |
| u32 ratio_control; |
| u32 vf_type; |
| u32 signal_type; |
| u32 pts; |
| u64 pts_us64; |
| /*mediacodec report*/ |
| unsigned int i_decoded_frames; //i frames decoded |
| unsigned int i_lost_frames;//i frames can not be decoded |
| unsigned int i_concealed_frames;//i frames decoded but have some error |
| unsigned int p_decoded_frames; |
| unsigned int p_lost_frames; |
| unsigned int p_concealed_frames; |
| unsigned int b_decoded_frames; |
| unsigned int b_lost_frames; |
| unsigned int b_concealed_frames; |
| unsigned int av_resynch_counter; |
| }; |
| |
| struct vframe_counter_s_old { |
| struct vframe_qos_s qos; |
| u32 decode_time_cost;/*us*/ |
| u32 frame_width; |
| u32 frame_height; |
| u32 frame_rate; |
| union { |
| u32 bit_rate; |
| /* Effective in h265,vp9,avs2 multi-instance */ |
| u32 bit_depth_luma; |
| }; |
| u32 frame_dur; |
| union { |
| u32 frame_data; |
| /* Effective in h265,vp9,avs2 multi-instance */ |
| u32 bit_depth_chroma; |
| }; |
| u32 error_count; |
| u32 status; |
| u32 frame_count; |
| u32 error_frame_count; |
| u32 drop_frame_count; |
| u64 total_data;//this member must be 8 bytes alignment |
| union { |
| u32 samp_cnt; |
| /* Effective in h265,vp9,avs2 multi-instance */ |
| u32 double_write_mode; |
| }; |
| u32 offset; |
| u32 ratio_control; |
| u32 vf_type; |
| u32 signal_type; |
| u32 pts; |
| u64 pts_us64; |
| }; |
| |
| struct vdec_frames_s { |
| u64 hw_decode_start; |
| u64 hw_decode_time; |
| u32 frame_size; |
| u32 rd; |
| u32 wr; |
| struct vframe_comm_s comm; |
| struct vframe_counter_s fifo_buf[NUM_FRAME_VDEC]; |
| }; |
| enum FRAME_FORMAT { |
| FRAME_FORMAT_UNKNOWN, |
| FRAME_FORMAT_PROGRESS, |
| FRAME_FORMAT_INTERLACE, |
| }; |
| |
| struct av_info_t { |
| /*auido info*/ |
| int sample_rate; |
| int channels; |
| int aformat_type; |
| unsigned int apts; |
| unsigned int apts_err; |
| /*video info*/ |
| unsigned int width; |
| unsigned int height; |
| unsigned int dec_error_count; |
| unsigned int first_pic_coming; |
| unsigned int fps; |
| unsigned int current_fps; |
| unsigned int vpts; |
| unsigned int vpts_err; |
| unsigned int ts_error; |
| unsigned int first_vpts; |
| int vformat_type; |
| enum FRAME_FORMAT frame_format; |
| unsigned int toggle_frame_count;/*toggle frame count*/ |
| unsigned int dec_err_frame_count;/*vdec error frame count*/ |
| unsigned int dec_frame_count;/*vdec frame count*/ |
| unsigned int dec_drop_frame_count;/*drop frame num*/ |
| int tsync_mode; |
| unsigned int dec_video_bps;/*video bitrate*/ |
| }; |
| |
| struct av_param_info_t { |
| struct av_info_t av_info; |
| }; |
| |
| struct av_param_qosinfo_t { |
| struct vframe_qos_s vframe_qos[QOS_FRAME_NUM]; |
| }; |
| |
| /*This is a versioning structure, the key member is the struct_size. |
| *In the 1st version it is not used,but will have its role in fureture. |
| *https://bytes.com/topic/c/answers/811125-struct-versioning |
| */ |
| struct av_param_mvdec_t { |
| int vdec_id; |
| |
| /*This member is used for versioning this structure. |
| *When passed from userspace, its value must be |
| *sizeof(struct av_param_mvdec_t) |
| */ |
| int struct_size; |
| |
| int slots; |
| |
| struct vframe_comm_s comm; |
| struct vframe_counter_s minfo[QOS_FRAME_NUM]; |
| }; |
| |
| /*old report struct*/ |
| struct av_param_mvdec_t_old { |
| int vdec_id; |
| |
| int struct_size; |
| |
| int slots; |
| |
| struct vframe_comm_s comm; |
| struct vframe_counter_s_old minfo[QOS_FRAME_NUM]; |
| }; |
| |
| #define SUPPORT_VDEC_NUM (64) |
| int vcodec_profile_register(const struct codec_profile_t *vdec_profile); |
| ssize_t vcodec_profile_read(char *buf); |
| bool is_support_profile(char *name); |
| #ifdef __KERNEL__ |
| #include <linux/interrupt.h> |
| |
| /*TS demux operation interface*/ |
| struct tsdemux_ops { |
| int (*reset)(void); |
| |
| int (*set_reset_flag)(void); |
| |
| int (*request_irq)(irq_handler_t handler, void *data); |
| |
| int (*free_irq)(void); |
| |
| int (*set_vid)(int vpid); |
| |
| int (*set_aid)(int apid); |
| |
| int (*set_sid)(int spid); |
| |
| int (*set_pcrid)(int pcrpid); |
| |
| int (*set_skipbyte)(int skipbyte); |
| |
| int (*set_demux)(int dev); |
| |
| unsigned long (*hw_dmx_lock)(unsigned long flags); |
| |
| int (*hw_dmx_unlock)(unsigned long flags); |
| }; |
| |
| void tsdemux_set_ops(struct tsdemux_ops *ops); |
| int tsdemux_set_reset_flag(void); |
| int amports_switch_gate(const char *name, int enable); |
| |
| void set_adec_func(int (*adec_func)(struct adec_status *)); |
| void wakeup_sub_poll(void); |
| void init_userdata_fifo(void); |
| void reset_userdata_fifo(int binit); |
| int wakeup_userdata_poll(struct userdata_poc_info_t poc, |
| int wp, unsigned long start_phyaddr, |
| int buf_size, int data_length); |
| int get_sub_type(void); |
| |
| #endif /**/ |
| |
| struct tcon_gamma_table_s { |
| u16 data[256]; |
| } /*tcon_gamma_table_t */; |
| |
| struct tcon_rgb_ogo_s { |
| unsigned int en; |
| |
| int r_pre_offset; /* s11.0, range -1024~+1023, default is 0 */ |
| int g_pre_offset; /* s11.0, range -1024~+1023, default is 0 */ |
| int b_pre_offset; /* s11.0, range -1024~+1023, default is 0 */ |
| unsigned int r_gain; /* u1.10, range 0~2047, default is 1024 (1.0x) */ |
| unsigned int g_gain; /* u1.10, range 0~2047, default is 1024 (1.0x) */ |
| unsigned int b_gain; /* u1.10, range 0~2047, default is 1024 (1.0x) */ |
| int r_post_offset; /* s11.0, range -1024~+1023, default is 0 */ |
| int g_post_offset; /* s11.0, range -1024~+1023, default is 0 */ |
| int b_post_offset; /* s11.0, range -1024~+1023, default is 0 */ |
| } /*tcon_rgb_ogo_t */; |
| |
| //#ifndef CONFIG_AMLOGIC_DEBUG_ATRACE |
| //static inline void ATRACE_COUNTER(const char *name, int val) { return; } |
| //#endif |
| |
| #ifdef CONFIG_AMLOGIC_MEDIA_VIDEO |
| void set_vsync_pts_inc_mode(int inc); |
| int query_video_status(int type, int *value); |
| void set_trickmode_I_frame(u32 trickmode); |
| u32 get_post_canvas(void); |
| #else |
| static inline void set_vsync_pts_inc_mode(int inc) { return; } |
| static inline void set_trickmode_I_frame(u32 trickmode) { return; } |
| #endif |
| |
| #endif /* AMSTREAM_H */ |