1d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#ifndef _MSM_VIDC_ENC_H_ 2d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define _MSM_VIDC_ENC_H_ 3d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 4d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#include <linux/types.h> 5d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#include <linux/ioctl.h> 6d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 7d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/** STATUS CODES*/ 8d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/* Base value for status codes */ 9d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_S_BASE 0x00000000 10d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_S_SUCCESS (VEN_S_BASE)/* Success */ 11d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_S_EFAIL (VEN_S_BASE+1)/* General failure */ 12d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_S_EFATAL (VEN_S_BASE+2)/* Fatal irrecoverable failure*/ 13d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_S_EBADPARAM (VEN_S_BASE+3)/* Error passed parameters*/ 14d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*Command called in invalid state*/ 15d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_S_EINVALSTATE (VEN_S_BASE+4) 16d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_S_ENOSWRES (VEN_S_BASE+5)/* Insufficient OS resources*/ 17d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_S_ENOHWRES (VEN_S_BASE+6)/*Insufficient HW resources */ 18d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_S_EBUFFREQ (VEN_S_BASE+7)/* Buffer requirements were not met*/ 19d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_S_EINVALCMD (VEN_S_BASE+8)/* Invalid command called */ 20d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_S_ETIMEOUT (VEN_S_BASE+9)/* Command timeout. */ 21d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*Re-attempt was made when multiple invocation not supported for API.*/ 22d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_S_ENOREATMPT (VEN_S_BASE+10) 23d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_S_ENOPREREQ (VEN_S_BASE+11)/*Pre-requirement is not met for API*/ 24d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_S_ECMDQFULL (VEN_S_BASE+12)/*Command queue is full*/ 25d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_S_ENOTSUPP (VEN_S_BASE+13)/*Command not supported*/ 26d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_S_ENOTIMPL (VEN_S_BASE+14)/*Command not implemented.*/ 27d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_S_ENOTPMEM (VEN_S_BASE+15)/*Buffer is not from PMEM*/ 28d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_S_EFLUSHED (VEN_S_BASE+16)/*returned buffer was flushed*/ 29d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_S_EINSUFBUF (VEN_S_BASE+17)/*provided buffer size insufficient*/ 30d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_S_ESAMESTATE (VEN_S_BASE+18) 31d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_S_EINVALTRANS (VEN_S_BASE+19) 32d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 33d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_INTF_VER 1 34d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 35d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*Asynchronous messages from driver*/ 36d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_MSG_INDICATION 0 37d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_MSG_INPUT_BUFFER_DONE 1 38d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_MSG_OUTPUT_BUFFER_DONE 2 39d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_MSG_NEED_OUTPUT_BUFFER 3 40d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_MSG_FLUSH_INPUT_DONE 4 41d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_MSG_FLUSH_OUPUT_DONE 5 42d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_MSG_START 6 43d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_MSG_STOP 7 44d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_MSG_PAUSE 8 45d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_MSG_RESUME 9 46d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_MSG_STOP_READING_MSG 10 47df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand#define VEN_MSG_LTRUSE_FAILED 11 48df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand 49d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 50d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*Buffer flags bits masks*/ 51d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_BUFFLAG_EOS 0x00000001 52d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_BUFFLAG_ENDOFFRAME 0x00000010 53d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_BUFFLAG_SYNCFRAME 0x00000020 54d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_BUFFLAG_EXTRADATA 0x00000040 55d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_BUFFLAG_CODECCONFIG 0x00000080 56d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 57d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*Post processing flags bit masks*/ 58d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_EXTRADATA_NONE 0x001 59d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_EXTRADATA_QCOMFILLER 0x002 60d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_EXTRADATA_SLICEINFO 0x100 61df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand#define VEN_EXTRADATA_LTRINFO 0x200 62ddec801d6d47bca63210dcdd3adace275ffdabe8Praveen Chavan#define VEN_EXTRADATA_MBINFO 0x400 63d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 64d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*ENCODER CONFIGURATION CONSTANTS*/ 65d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 66d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*Encoded video frame types*/ 67d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_FRAME_TYPE_I 1/* I frame type */ 68d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_FRAME_TYPE_P 2/* P frame type */ 69d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_FRAME_TYPE_B 3/* B frame type */ 70d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 71d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*Video codec types*/ 72d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_CODEC_MPEG4 1/* MPEG4 Codec */ 73d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_CODEC_H264 2/* H.264 Codec */ 74d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_CODEC_H263 3/* H.263 Codec */ 75d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 76d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*Video codec profile types.*/ 77d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_PROFILE_MPEG4_SP 1/* 1 - MPEG4 SP profile */ 78d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_PROFILE_MPEG4_ASP 2/* 2 - MPEG4 ASP profile */ 79d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_PROFILE_H264_BASELINE 3/* 3 - H264 Baseline profile */ 80d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_PROFILE_H264_MAIN 4/* 4 - H264 Main profile */ 81d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_PROFILE_H264_HIGH 5/* 5 - H264 High profile */ 82d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_PROFILE_H263_BASELINE 6/* 6 - H263 Baseline profile */ 83d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 84d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*Video codec profile level types.*/ 85d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_LEVEL_MPEG4_0 0x1/* MPEG4 Level 0 */ 86d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_LEVEL_MPEG4_1 0x2/* MPEG4 Level 1 */ 87d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_LEVEL_MPEG4_2 0x3/* MPEG4 Level 2 */ 88d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_LEVEL_MPEG4_3 0x4/* MPEG4 Level 3 */ 89d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_LEVEL_MPEG4_4 0x5/* MPEG4 Level 4 */ 90d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_LEVEL_MPEG4_5 0x6/* MPEG4 Level 5 */ 91d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_LEVEL_MPEG4_3b 0x7/* MPEG4 Level 3b */ 92d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_LEVEL_MPEG4_6 0x8/* MPEG4 Level 6 */ 93d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 94d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_LEVEL_H264_1 0x9/* H.264 Level 1 */ 95d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_LEVEL_H264_1b 0xA/* H.264 Level 1b */ 96d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_LEVEL_H264_1p1 0xB/* H.264 Level 1.1 */ 97d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_LEVEL_H264_1p2 0xC/* H.264 Level 1.2 */ 98d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_LEVEL_H264_1p3 0xD/* H.264 Level 1.3 */ 99d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_LEVEL_H264_2 0xE/* H.264 Level 2 */ 100d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_LEVEL_H264_2p1 0xF/* H.264 Level 2.1 */ 101d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_LEVEL_H264_2p2 0x10/* H.264 Level 2.2 */ 102d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_LEVEL_H264_3 0x11/* H.264 Level 3 */ 103d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_LEVEL_H264_3p1 0x12/* H.264 Level 3.1 */ 104d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_LEVEL_H264_3p2 0x13/* H.264 Level 3.2 */ 105d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_LEVEL_H264_4 0x14/* H.264 Level 4 */ 106d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 107d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_LEVEL_H263_10 0x15/* H.263 Level 10 */ 108d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_LEVEL_H263_20 0x16/* H.263 Level 20 */ 109d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_LEVEL_H263_30 0x17/* H.263 Level 30 */ 110d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_LEVEL_H263_40 0x18/* H.263 Level 40 */ 111d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_LEVEL_H263_45 0x19/* H.263 Level 45 */ 112d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_LEVEL_H263_50 0x1A/* H.263 Level 50 */ 113d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_LEVEL_H263_60 0x1B/* H.263 Level 60 */ 114d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_LEVEL_H263_70 0x1C/* H.263 Level 70 */ 115d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 116d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*Entropy coding model selection for H.264 encoder.*/ 117d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_ENTROPY_MODEL_CAVLC 1 118d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_ENTROPY_MODEL_CABAC 2 119d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*Cabac model number (0,1,2) for encoder.*/ 120d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_CABAC_MODEL_0 1/* CABAC Model 0. */ 121d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_CABAC_MODEL_1 2/* CABAC Model 1. */ 122d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_CABAC_MODEL_2 3/* CABAC Model 2. */ 123d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 124d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*Deblocking filter control type for encoder.*/ 125d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_DB_DISABLE 1/* 1 - Disable deblocking filter*/ 126d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_DB_ALL_BLKG_BNDRY 2/* 2 - All blocking boundary filtering*/ 127d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_DB_SKIP_SLICE_BNDRY 3/* 3 - Filtering except sliceboundary*/ 128d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 129d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*Different methods of Multi slice selection.*/ 130d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_MSLICE_OFF 1 131d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_MSLICE_CNT_MB 2 /*number of MBscount per slice*/ 132d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_MSLICE_CNT_BYTE 3 /*number of bytes count per slice.*/ 133d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_MSLICE_GOB 4 /*Multi slice by GOB for H.263 only.*/ 134d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 135d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*Different modes for Rate Control.*/ 136d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_RC_OFF 1 137d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_RC_VBR_VFR 2 138d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_RC_VBR_CFR 3 139d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_RC_CBR_VFR 4 140d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_RC_CBR_CFR 5 141d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 142d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*Different modes for flushing buffers*/ 143d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_FLUSH_INPUT 1 144d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_FLUSH_OUTPUT 2 145d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_FLUSH_ALL 3 146d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 147d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*Different input formats for YUV data.*/ 148d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_INPUTFMT_NV12 1/* NV12 Linear */ 149d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_INPUTFMT_NV21 2/* NV21 Linear */ 150d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_INPUTFMT_NV12_16M2KA 3/* NV12 Linear */ 151d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 152d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*Different allowed rotation modes.*/ 153d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_ROTATION_0 1/* 0 degrees */ 154d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_ROTATION_90 2/* 90 degrees */ 155d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_ROTATION_180 3/* 180 degrees */ 156d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_ROTATION_270 4/* 270 degrees */ 157d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 158d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*IOCTL timeout values*/ 159d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_TIMEOUT_INFINITE 0xffffffff 160d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 161d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*Different allowed intra refresh modes.*/ 162d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IR_OFF 1 163d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IR_CYCLIC 2 164d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IR_RANDOM 3 165d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 166d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*IOCTL BASE CODES Not to be used directly by the client.*/ 167d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/* Base value for ioctls that are not related to encoder configuration.*/ 168d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTLBASE_NENC 0x800 169d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/* Base value for encoder configuration ioctls*/ 170d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTLBASE_ENC 0x850 171d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 172d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct venc_ioctl_msg{ 173d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi void __user *in; 174d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi void __user *out; 175d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 176d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 177d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*NON ENCODER CONFIGURATION IOCTLs*/ 178d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 179d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*IOCTL params:SET: InputData - unsigned long, OutputData - NULL*/ 180d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_SET_INTF_VERSION \ 181d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(VEN_IOCTLBASE_NENC, 0, struct venc_ioctl_msg) 182d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 183d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*IOCTL params:CMD: InputData - venc_timeout, OutputData - venc_msg*/ 184d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_CMD_READ_NEXT_MSG \ 185d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOWR(VEN_IOCTLBASE_NENC, 1, struct venc_ioctl_msg) 186d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 187d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*IOCTL params:CMD: InputData - NULL, OutputData - NULL*/ 188d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_CMD_STOP_READ_MSG _IO(VEN_IOCTLBASE_NENC, 2) 189d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 190d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*IOCTL params:SET: InputData - venc_allocatorproperty, OutputData - NULL 191d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi GET: InputData - NULL, OutputData - venc_allocatorproperty*/ 192d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_SET_INPUT_BUFFER_REQ \ 193d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(VEN_IOCTLBASE_NENC, 3, struct venc_ioctl_msg) 194d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_GET_INPUT_BUFFER_REQ \ 195d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOR(VEN_IOCTLBASE_NENC, 4, struct venc_ioctl_msg) 196d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 197d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*IOCTL params:CMD: InputData - venc_bufferpayload, OutputData - NULL*/ 198d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_CMD_ALLOC_INPUT_BUFFER \ 199d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(VEN_IOCTLBASE_NENC, 5, struct venc_ioctl_msg) 200d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 201d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*IOCTL params:CMD: InputData - venc_bufferpayload, OutputData - NULL*/ 202d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_SET_INPUT_BUFFER \ 203d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(VEN_IOCTLBASE_NENC, 6, struct venc_ioctl_msg) 204d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 205d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*IOCTL params: CMD: InputData - venc_bufferpayload, OutputData - NULL*/ 206d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_CMD_FREE_INPUT_BUFFER \ 207d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(VEN_IOCTLBASE_NENC, 7, struct venc_ioctl_msg) 208d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 209d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*IOCTL params:SET: InputData - venc_allocatorproperty, OutputData - NULL 210d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi GET: InputData - NULL, OutputData - venc_allocatorproperty*/ 211d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_SET_OUTPUT_BUFFER_REQ \ 212d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(VEN_IOCTLBASE_NENC, 8, struct venc_ioctl_msg) 213d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_GET_OUTPUT_BUFFER_REQ \ 214d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOR(VEN_IOCTLBASE_NENC, 9, struct venc_ioctl_msg) 215d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 216d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*IOCTL params:CMD: InputData - venc_bufferpayload, OutputData - NULL*/ 217d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_CMD_ALLOC_OUTPUT_BUFFER \ 218d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(VEN_IOCTLBASE_NENC, 10, struct venc_ioctl_msg) 219d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 220d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 221d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*IOCTL params:CMD: InputData - venc_bufferpayload, OutputData - NULL*/ 222d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_SET_OUTPUT_BUFFER \ 223d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(VEN_IOCTLBASE_NENC, 11, struct venc_ioctl_msg) 224d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 225d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*IOCTL params:CMD: InputData - venc_bufferpayload, OutputData - NULL.*/ 226d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_CMD_FREE_OUTPUT_BUFFER \ 227d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(VEN_IOCTLBASE_NENC, 12, struct venc_ioctl_msg) 228d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 229d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 230d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/* Asynchronous respone message code:* VEN_MSG_START*/ 231d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_CMD_START _IO(VEN_IOCTLBASE_NENC, 13) 232d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 233d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 234d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*IOCTL params:CMD: InputData - venc_buffer, OutputData - NULL 235d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi Asynchronous respone message code:VEN_MSG_INPUT_BUFFER_DONE*/ 236d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_CMD_ENCODE_FRAME \ 237d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(VEN_IOCTLBASE_NENC, 14, struct venc_ioctl_msg) 238d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 239d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 240d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*IOCTL params:CMD: InputData - venc_buffer, OutputData - NULL 241d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi Asynchronous response message code:VEN_MSG_OUTPUT_BUFFER_DONE*/ 242d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_CMD_FILL_OUTPUT_BUFFER \ 243d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(VEN_IOCTLBASE_NENC, 15, struct venc_ioctl_msg) 244d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 245d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*IOCTL params:CMD: InputData - venc_bufferflush, OutputData - NULL 246d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * Asynchronous response message code:VEN_MSG_INPUT_BUFFER_DONE*/ 247d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_CMD_FLUSH \ 248d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(VEN_IOCTLBASE_NENC, 16, struct venc_ioctl_msg) 249d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 250d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 251d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*Asynchronous respone message code:VEN_MSG_PAUSE*/ 252d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_CMD_PAUSE _IO(VEN_IOCTLBASE_NENC, 17) 253d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 254d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*Asynchronous respone message code:VEN_MSG_RESUME*/ 255d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_CMD_RESUME _IO(VEN_IOCTLBASE_NENC, 18) 256d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 257d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/* Asynchronous respone message code:VEN_MSG_STOP*/ 258d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_CMD_STOP _IO(VEN_IOCTLBASE_NENC, 19) 259d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 260d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_SET_RECON_BUFFER \ 261d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(VEN_IOCTLBASE_NENC, 20, struct venc_ioctl_msg) 262d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 263d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_FREE_RECON_BUFFER \ 264d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(VEN_IOCTLBASE_NENC, 21, struct venc_ioctl_msg) 265d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 266d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_GET_RECON_BUFFER_SIZE \ 267d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(VEN_IOCTLBASE_NENC, 22, struct venc_ioctl_msg) 268d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 269d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 270d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 271d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*ENCODER PROPERTY CONFIGURATION & CAPABILITY IOCTLs*/ 272d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 273d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*IOCTL params:SET: InputData - venc_basecfg, OutputData - NULL 274d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi GET: InputData - NULL, OutputData - venc_basecfg*/ 275d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_SET_BASE_CFG \ 276d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(VEN_IOCTLBASE_ENC, 1, struct venc_ioctl_msg) 277d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_GET_BASE_CFG \ 278d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOR(VEN_IOCTLBASE_ENC, 2, struct venc_ioctl_msg) 279d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 280d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*IOCTL params:SET: InputData - venc_switch, OutputData - NULL 281d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi GET: InputData - NULL, OutputData - venc_switch*/ 282d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_SET_LIVE_MODE \ 283d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(VEN_IOCTLBASE_ENC, 3, struct venc_ioctl_msg) 284d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_GET_LIVE_MODE \ 285d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOR(VEN_IOCTLBASE_ENC, 4, struct venc_ioctl_msg) 286d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 287d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 288d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*IOCTL params:SET: InputData - venc_profile, OutputData - NULL 289d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi GET: InputData - NULL, OutputData - venc_profile*/ 290d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_SET_CODEC_PROFILE \ 291d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(VEN_IOCTLBASE_ENC, 5, struct venc_ioctl_msg) 292d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_GET_CODEC_PROFILE \ 293d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOR(VEN_IOCTLBASE_ENC, 6, struct venc_ioctl_msg) 294d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 295d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 296d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*IOCTL params:SET: InputData - ven_profilelevel, OutputData - NULL 297d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi GET: InputData - NULL, OutputData - ven_profilelevel*/ 298d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_SET_PROFILE_LEVEL \ 299d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(VEN_IOCTLBASE_ENC, 7, struct venc_ioctl_msg) 300d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 301d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_GET_PROFILE_LEVEL \ 302d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOR(VEN_IOCTLBASE_ENC, 8, struct venc_ioctl_msg) 303d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 304d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*IOCTL params:SET: InputData - venc_switch, OutputData - NULL 305d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi GET: InputData - NULL, OutputData - venc_switch*/ 306d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_SET_SHORT_HDR \ 307d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(VEN_IOCTLBASE_ENC, 9, struct venc_ioctl_msg) 308d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_GET_SHORT_HDR \ 309d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOR(VEN_IOCTLBASE_ENC, 10, struct venc_ioctl_msg) 310d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 311d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 312d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*IOCTL params: SET: InputData - venc_sessionqp, OutputData - NULL 313d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi GET: InputData - NULL, OutputData - venc_sessionqp*/ 314d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_SET_SESSION_QP \ 315d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(VEN_IOCTLBASE_ENC, 11, struct venc_ioctl_msg) 316d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_GET_SESSION_QP \ 317d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOR(VEN_IOCTLBASE_ENC, 12, struct venc_ioctl_msg) 318d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 319d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 320d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*IOCTL params:SET: InputData - venc_intraperiod, OutputData - NULL 321d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi GET: InputData - NULL, OutputData - venc_intraperiod*/ 322d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_SET_INTRA_PERIOD \ 323d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(VEN_IOCTLBASE_ENC, 13, struct venc_ioctl_msg) 324d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_GET_INTRA_PERIOD \ 325d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOR(VEN_IOCTLBASE_ENC, 14, struct venc_ioctl_msg) 326d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 327d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 328d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/* Request an Iframe*/ 329d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_CMD_REQUEST_IFRAME _IO(VEN_IOCTLBASE_ENC, 15) 330d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 331d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*IOCTL params:GET: InputData - NULL, OutputData - venc_capability*/ 332d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_GET_CAPABILITY \ 333d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOR(VEN_IOCTLBASE_ENC, 16, struct venc_ioctl_msg) 334d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 335d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 336d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*IOCTL params:GET: InputData - NULL, OutputData - venc_seqheader*/ 337d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_GET_SEQUENCE_HDR \ 338d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOR(VEN_IOCTLBASE_ENC, 17, struct venc_ioctl_msg) 339d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 340d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*IOCTL params:SET: InputData - venc_entropycfg, OutputData - NULL 341d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi GET: InputData - NULL, OutputData - venc_entropycfg*/ 342d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_SET_ENTROPY_CFG \ 343d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(VEN_IOCTLBASE_ENC, 18, struct venc_ioctl_msg) 344d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_GET_ENTROPY_CFG \ 345d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOR(VEN_IOCTLBASE_ENC, 19, struct venc_ioctl_msg) 346d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 347d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*IOCTL params:SET: InputData - venc_dbcfg, OutputData - NULL 348d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi GET: InputData - NULL, OutputData - venc_dbcfg*/ 349d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_SET_DEBLOCKING_CFG \ 350d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(VEN_IOCTLBASE_ENC, 20, struct venc_ioctl_msg) 351d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_GET_DEBLOCKING_CFG \ 352d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOR(VEN_IOCTLBASE_ENC, 21, struct venc_ioctl_msg) 353d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 354d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 355d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*IOCTL params:SET: InputData - venc_intrarefresh, OutputData - NULL 356d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi GET: InputData - NULL, OutputData - venc_intrarefresh*/ 357d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_SET_INTRA_REFRESH \ 358d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(VEN_IOCTLBASE_ENC, 22, struct venc_ioctl_msg) 359d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_GET_INTRA_REFRESH \ 360d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOR(VEN_IOCTLBASE_ENC, 23, struct venc_ioctl_msg) 361d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 362d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 363d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*IOCTL params:SET: InputData - venc_multiclicecfg, OutputData - NULL 364d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi GET: InputData - NULL, OutputData - venc_multiclicecfg*/ 365d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_SET_MULTI_SLICE_CFG \ 366d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(VEN_IOCTLBASE_ENC, 24, struct venc_ioctl_msg) 367d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_GET_MULTI_SLICE_CFG \ 368d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOR(VEN_IOCTLBASE_ENC, 25, struct venc_ioctl_msg) 369d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 370d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*IOCTL params:SET: InputData - venc_ratectrlcfg, OutputData - NULL 371d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi GET: InputData - NULL, OutputData - venc_ratectrlcfg*/ 372d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_SET_RATE_CTRL_CFG \ 373d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(VEN_IOCTLBASE_ENC, 26, struct venc_ioctl_msg) 374d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_GET_RATE_CTRL_CFG \ 375d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOR(VEN_IOCTLBASE_ENC, 27, struct venc_ioctl_msg) 376d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 377d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 378d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*IOCTL params:SET: InputData - venc_voptimingcfg, OutputData - NULL 379d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi GET: InputData - NULL, OutputData - venc_voptimingcfg*/ 380d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_SET_VOP_TIMING_CFG \ 381d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(VEN_IOCTLBASE_ENC, 28, struct venc_ioctl_msg) 382d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_GET_VOP_TIMING_CFG \ 383d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOR(VEN_IOCTLBASE_ENC, 29, struct venc_ioctl_msg) 384d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 385d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 386d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*IOCTL params:SET: InputData - venc_framerate, OutputData - NULL 387d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi GET: InputData - NULL, OutputData - venc_framerate*/ 388d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_SET_FRAME_RATE \ 389d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(VEN_IOCTLBASE_ENC, 30, struct venc_ioctl_msg) 390d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_GET_FRAME_RATE \ 391d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOR(VEN_IOCTLBASE_ENC, 31, struct venc_ioctl_msg) 392d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 393d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 394d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*IOCTL params:SET: InputData - venc_targetbitrate, OutputData - NULL 395d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi GET: InputData - NULL, OutputData - venc_targetbitrate*/ 396d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_SET_TARGET_BITRATE \ 397d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(VEN_IOCTLBASE_ENC, 32, struct venc_ioctl_msg) 398d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_GET_TARGET_BITRATE \ 399d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOR(VEN_IOCTLBASE_ENC, 33, struct venc_ioctl_msg) 400d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 401d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 402d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*IOCTL params:SET: InputData - venc_rotation, OutputData - NULL 403d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi GET: InputData - NULL, OutputData - venc_rotation*/ 404d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_SET_ROTATION \ 405d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(VEN_IOCTLBASE_ENC, 34, struct venc_ioctl_msg) 406d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_GET_ROTATION \ 407d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOR(VEN_IOCTLBASE_ENC, 35, struct venc_ioctl_msg) 408d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 409d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 410d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*IOCTL params:SET: InputData - venc_headerextension, OutputData - NULL 411d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi GET: InputData - NULL, OutputData - venc_headerextension*/ 412d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_SET_HEC \ 413d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(VEN_IOCTLBASE_ENC, 36, struct venc_ioctl_msg) 414d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_GET_HEC \ 415d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOR(VEN_IOCTLBASE_ENC, 37, struct venc_ioctl_msg) 416d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 417d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*IOCTL params:SET: InputData - venc_switch, OutputData - NULL 418d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi GET: InputData - NULL, OutputData - venc_switch*/ 419d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_SET_DATA_PARTITION \ 420d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(VEN_IOCTLBASE_ENC, 38, struct venc_ioctl_msg) 421d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_GET_DATA_PARTITION \ 422d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOR(VEN_IOCTLBASE_ENC, 39, struct venc_ioctl_msg) 423d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 424d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*IOCTL params:SET: InputData - venc_switch, OutputData - NULL 425d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi GET: InputData - NULL, OutputData - venc_switch*/ 426d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_SET_RVLC \ 427d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(VEN_IOCTLBASE_ENC, 40, struct venc_ioctl_msg) 428d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_GET_RVLC \ 429d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOR(VEN_IOCTLBASE_ENC, 41, struct venc_ioctl_msg) 430d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 431d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 432d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*IOCTL params:SET: InputData - venc_switch, OutputData - NULL 433d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi GET: InputData - NULL, OutputData - venc_switch*/ 434d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_SET_AC_PREDICTION \ 435d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(VEN_IOCTLBASE_ENC, 42, struct venc_ioctl_msg) 436d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_GET_AC_PREDICTION \ 437d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOR(VEN_IOCTLBASE_ENC, 43, struct venc_ioctl_msg) 438d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 439d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 440d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*IOCTL params:SET: InputData - venc_qprange, OutputData - NULL 441d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi GET: InputData - NULL, OutputData - venc_qprange*/ 442d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_SET_QP_RANGE \ 443d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(VEN_IOCTLBASE_ENC, 44, struct venc_ioctl_msg) 444d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_GET_QP_RANGE \ 445d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOR(VEN_IOCTLBASE_ENC, 45, struct venc_ioctl_msg) 446d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 447d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_GET_NUMBER_INSTANCES \ 448d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOR(VEN_IOCTLBASE_ENC, 46, struct venc_ioctl_msg) 449d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 450d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_SET_METABUFFER_MODE \ 451d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(VEN_IOCTLBASE_ENC, 47, struct venc_ioctl_msg) 452d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 453d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 454d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*IOCTL params:SET: InputData - unsigned int, OutputData - NULL.*/ 455d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_SET_EXTRADATA \ 456d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOW(VEN_IOCTLBASE_ENC, 48, struct venc_ioctl_msg) 457d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*IOCTL params:GET: InputData - NULL, OutputData - unsigned int.*/ 458d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_GET_EXTRADATA \ 459d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IOR(VEN_IOCTLBASE_ENC, 49, struct venc_ioctl_msg) 460d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 461d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*IOCTL params:SET: InputData - NULL, OutputData - NULL.*/ 462d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_SET_SLICE_DELIVERY_MODE \ 463d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi _IO(VEN_IOCTLBASE_ENC, 50) 464d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 465df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand#define VEN_IOCTL_SET_H263_PLUSPTYPE \ 466df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand _IOW(VEN_IOCTLBASE_ENC, 51, struct venc_ioctl_msg) 467df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand 468df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand/*IOCTL params:SET: InputData - venc_range, OutputData - NULL.*/ 469df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand#define VEN_IOCTL_SET_CAPABILITY_LTRCOUNT \ 470df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand _IOW(VEN_IOCTLBASE_ENC, 52, struct venc_ioctl_msg) 471df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand/*IOCTL params:GET: InputData - NULL, OutputData - venc_range.*/ 472df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand#define VEN_IOCTL_GET_CAPABILITY_LTRCOUNT \ 473df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand _IOR(VEN_IOCTLBASE_ENC, 53, struct venc_ioctl_msg) 474df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand 475df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand/*IOCTL params:SET: InputData - venc_ltrmode, OutputData - NULL.*/ 476df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand#define VEN_IOCTL_SET_LTRMODE \ 477df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand _IOW(VEN_IOCTLBASE_ENC, 54, struct venc_ioctl_msg) 478df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand/*IOCTL params:GET: InputData - NULL, OutputData - venc_ltrmode.*/ 479df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand#define VEN_IOCTL_GET_LTRMODE \ 480df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand _IOR(VEN_IOCTLBASE_ENC, 55, struct venc_ioctl_msg) 481df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand 482df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand/*IOCTL params:SET: InputData - venc_ltrcount, OutputData - NULL.*/ 483df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand#define VEN_IOCTL_SET_LTRCOUNT \ 484df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand _IOW(VEN_IOCTLBASE_ENC, 56, struct venc_ioctl_msg) 485df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand/*IOCTL params:GET: InputData - NULL, OutputData - venc_ltrcount.*/ 486df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand#define VEN_IOCTL_GET_LTRCOUNT \ 487df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand _IOR(VEN_IOCTLBASE_ENC, 57, struct venc_ioctl_msg) 488df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand 489df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand/*IOCTL params:SET: InputData - venc_ltrperiod, OutputData - NULL.*/ 490df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand#define VEN_IOCTL_SET_LTRPERIOD \ 491df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand _IOW(VEN_IOCTLBASE_ENC, 58, struct venc_ioctl_msg) 492df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand/*IOCTL params:GET: InputData - NULL, OutputData - venc_ltrperiod.*/ 493df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand#define VEN_IOCTL_GET_LTRPERIOD \ 494df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand _IOR(VEN_IOCTLBASE_ENC, 59, struct venc_ioctl_msg) 495df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand 496df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand/*IOCTL params:SET: InputData - venc_ltruse, OutputData - NULL.*/ 497df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand#define VEN_IOCTL_SET_LTRUSE \ 498df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand _IOW(VEN_IOCTLBASE_ENC, 60, struct venc_ioctl_msg) 499df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand/*IOCTL params:GET: InputData - NULL, OutputData - venc_ltruse.*/ 500df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand#define VEN_IOCTL_GET_LTRUSE \ 501df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand _IOR(VEN_IOCTLBASE_ENC, 61, struct venc_ioctl_msg) 502df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand 503df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand/*IOCTL params:SET: InputData - venc_ltrmark, OutputData - NULL.*/ 504df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand#define VEN_IOCTL_SET_LTRMARK \ 505df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand _IOW(VEN_IOCTLBASE_ENC, 62, struct venc_ioctl_msg) 506df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand/*IOCTL params:GET: InputData - NULL, OutputData - venc_ltrmark.*/ 507df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand#define VEN_IOCTL_GET_LTRMARK \ 508df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand _IOR(VEN_IOCTLBASE_ENC, 63, struct venc_ioctl_msg) 509df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand 510d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*IOCTL params:SET: InputData - unsigned int, OutputData - NULL*/ 511d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VEN_IOCTL_SET_SPS_PPS_FOR_IDR \ 512df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand _IOW(VEN_IOCTLBASE_ENC, 64, struct venc_ioctl_msg) 513d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 514df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchandstruct venc_range { 515df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand unsigned long max; 516df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand unsigned long min; 517df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand unsigned long step_size; 518df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand}; 519d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 520d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct venc_switch{ 521d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned char status; 522d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 523d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 524d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct venc_allocatorproperty{ 525d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long mincount; 526d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long maxcount; 527d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long actualcount; 528d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long datasize; 529d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long suffixsize; 530d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long alignment; 531d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long bufpoolid; 532d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 533d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 534d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct venc_bufferpayload{ 535d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned char *pbuffer; 536d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi size_t sz; 537d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int fd; 538d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned int offset; 539d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned int maped_size; 540d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long filled_len; 541d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 542d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 543d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct venc_buffer{ 544d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned char *ptrbuffer; 545d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long sz; 546d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long len; 547d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long offset; 548d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi long long timestamp; 549d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long flags; 550d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi void *clientdata; 551d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 552d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 553d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct venc_basecfg{ 554d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long input_width; 555d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long input_height; 556d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long dvs_width; 557d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long dvs_height; 558d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long codectype; 559d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long fps_num; 560d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long fps_den; 561d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long targetbitrate; 562d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long inputformat; 563d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 564d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 565d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct venc_profile{ 566d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long profile; 567d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 568d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct ven_profilelevel{ 569d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long level; 570d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 571d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 572d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct venc_sessionqp{ 573d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long iframeqp; 574d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long pframqp; 575d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 576d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 577d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct venc_qprange{ 578d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long maxqp; 579d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long minqp; 580d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 581df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand 582df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchandstruct venc_plusptype { 583df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand unsigned long plusptype_enable; 584df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand}; 585df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand 586d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct venc_intraperiod{ 587d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long num_pframes; 588d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long num_bframes; 589d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 590d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct venc_seqheader{ 591d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned char *hdrbufptr; 592d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long bufsize; 593d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long hdrlen; 594d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 595d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 596d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct venc_capability{ 597d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long codec_types; 598d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long maxframe_width; 599d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long maxframe_height; 600d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long maxtarget_bitrate; 601d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long maxframe_rate; 602d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long input_formats; 603d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned char dvs; 604d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 605d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 606d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct venc_entropycfg{ 607d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned longentropysel; 608d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long cabacmodel; 609d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 610d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 611d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct venc_dbcfg{ 612d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long db_mode; 613d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long slicealpha_offset; 614d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long slicebeta_offset; 615d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 616d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 617d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct venc_intrarefresh{ 618d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long irmode; 619d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long mbcount; 620d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 621d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 622d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct venc_multiclicecfg{ 623d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long mslice_mode; 624d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long mslice_size; 625d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 626d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 627d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct venc_bufferflush{ 628d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long flush_mode; 629d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 630d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 631d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct venc_ratectrlcfg{ 632d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long rcmode; 633d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 634d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 635d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct venc_voptimingcfg{ 636d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long voptime_resolution; 637d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 638d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct venc_framerate{ 639d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long fps_denominator; 640d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long fps_numerator; 641d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 642d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 643d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct venc_targetbitrate{ 644d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long target_bitrate; 645d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 646d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 647d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 648d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct venc_rotation{ 649d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long rotation; 650d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 651d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 652d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct venc_timeout{ 653d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long millisec; 654d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 655d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 656d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct venc_headerextension{ 657d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long header_extension; 658d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 659d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 660d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct venc_msg{ 661d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long statuscode; 662d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long msgcode; 663d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi struct venc_buffer buf; 664d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long msgdata_size; 665d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 666d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 667d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct venc_recon_addr{ 668d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned char *pbuffer; 669d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long buffer_size; 670d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long pmem_fd; 671d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi unsigned long offset; 672d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 673d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 674d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct venc_recon_buff_size{ 675d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int width; 676d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int height; 677d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int size; 678d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi int alignment; 679d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi}; 680d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi 681df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchandstruct venc_ltrmode { 682df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand unsigned long ltr_mode; 683df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand}; 684df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand 685df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchandstruct venc_ltrcount { 686df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand unsigned long ltr_count; 687df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand}; 688df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand 689df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchandstruct venc_ltrperiod { 690df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand unsigned long ltr_period; 691df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand}; 692df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand 693df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchandstruct venc_ltruse { 694df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand unsigned long ltr_id; 695df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand unsigned long ltr_frames; 696df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand}; 697df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand 698d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#endif /* _MSM_VIDC_ENC_H_ */ 699