18611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#ifndef _MSM_VIDC_ENC_H_
28611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define _MSM_VIDC_ENC_H_
38611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
48611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#include <linux/types.h>
58611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#include <linux/ioctl.h>
68611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
78611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/** STATUS CODES*/
88611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/* Base value for status codes */
98611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_S_BASE	0x00000000
108611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_S_SUCCESS	(VEN_S_BASE)/* Success */
118611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_S_EFAIL	(VEN_S_BASE+1)/* General failure */
128611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_S_EFATAL	(VEN_S_BASE+2)/* Fatal irrecoverable failure*/
138611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_S_EBADPARAM	(VEN_S_BASE+3)/* Error passed parameters*/
148611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*Command called in invalid state*/
158611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_S_EINVALSTATE	(VEN_S_BASE+4)
168611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_S_ENOSWRES	(VEN_S_BASE+5)/* Insufficient OS resources*/
178611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_S_ENOHWRES	(VEN_S_BASE+6)/*Insufficient HW resources */
188611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_S_EBUFFREQ	(VEN_S_BASE+7)/* Buffer requirements were not met*/
198611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_S_EINVALCMD	(VEN_S_BASE+8)/* Invalid command called */
208611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_S_ETIMEOUT	(VEN_S_BASE+9)/* Command timeout. */
218611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*Re-attempt was made when multiple invocation not supported for API.*/
228611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_S_ENOREATMPT	(VEN_S_BASE+10)
238611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_S_ENOPREREQ	(VEN_S_BASE+11)/*Pre-requirement is not met for API*/
248611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_S_ECMDQFULL	(VEN_S_BASE+12)/*Command queue is full*/
258611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_S_ENOTSUPP	(VEN_S_BASE+13)/*Command not supported*/
268611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_S_ENOTIMPL	(VEN_S_BASE+14)/*Command not implemented.*/
278611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_S_ENOTPMEM	(VEN_S_BASE+15)/*Buffer is not from PMEM*/
288611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_S_EFLUSHED	(VEN_S_BASE+16)/*returned buffer was flushed*/
298611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_S_EINSUFBUF	(VEN_S_BASE+17)/*provided buffer size insufficient*/
308611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_S_ESAMESTATE	(VEN_S_BASE+18)
318611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_S_EINVALTRANS	(VEN_S_BASE+19)
328611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
338611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_INTF_VER			 1
348611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
358611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*Asynchronous messages from driver*/
368611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_MSG_INDICATION	0
378611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_MSG_INPUT_BUFFER_DONE	1
388611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_MSG_OUTPUT_BUFFER_DONE	2
398611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_MSG_NEED_OUTPUT_BUFFER	3
408611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_MSG_FLUSH_INPUT_DONE	4
418611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_MSG_FLUSH_OUPUT_DONE	5
428611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_MSG_START	6
438611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_MSG_STOP	7
448611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_MSG_PAUSE	8
458611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_MSG_RESUME	9
468611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_MSG_STOP_READING_MSG	10
478611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
488611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*Buffer flags bits masks*/
498611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_BUFFLAG_EOS	0x00000001
508611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_BUFFLAG_ENDOFFRAME	0x00000010
518611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_BUFFLAG_SYNCFRAME	0x00000020
528611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_BUFFLAG_EXTRADATA	0x00000040
538611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_BUFFLAG_CODECCONFIG	0x00000080
548611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
558611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*Post processing flags bit masks*/
568611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_EXTRADATA_NONE          0x001
578611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_EXTRADATA_QCOMFILLER    0x002
588611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_EXTRADATA_SLICEINFO     0x100
598611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
608611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*ENCODER CONFIGURATION CONSTANTS*/
618611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
628611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*Encoded video frame types*/
638611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_FRAME_TYPE_I	1/* I frame type */
648611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_FRAME_TYPE_P	2/* P frame type */
658611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_FRAME_TYPE_B	3/* B frame type */
668611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
678611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*Video codec types*/
688611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_CODEC_MPEG4	1/* MPEG4 Codec */
698611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_CODEC_H264	2/* H.264 Codec */
708611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_CODEC_H263	3/* H.263 Codec */
718611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
728611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*Video codec profile types.*/
738611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_PROFILE_MPEG4_SP      1/* 1 - MPEG4 SP profile      */
748611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_PROFILE_MPEG4_ASP     2/* 2 - MPEG4 ASP profile     */
758611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_PROFILE_H264_BASELINE 3/* 3 - H264 Baseline profile	*/
768611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_PROFILE_H264_MAIN     4/* 4 - H264 Main profile     */
778611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_PROFILE_H264_HIGH     5/* 5 - H264 High profile     */
788611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_PROFILE_H263_BASELINE 6/* 6 - H263 Baseline profile */
798611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
808611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*Video codec profile level types.*/
818611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_LEVEL_MPEG4_0	 0x1/* MPEG4 Level 0  */
828611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_LEVEL_MPEG4_1	 0x2/* MPEG4 Level 1  */
838611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_LEVEL_MPEG4_2	 0x3/* MPEG4 Level 2  */
848611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_LEVEL_MPEG4_3	 0x4/* MPEG4 Level 3  */
858611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_LEVEL_MPEG4_4	 0x5/* MPEG4 Level 4  */
868611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_LEVEL_MPEG4_5	 0x6/* MPEG4 Level 5  */
878611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_LEVEL_MPEG4_3b	 0x7/* MPEG4 Level 3b */
888611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_LEVEL_MPEG4_6	 0x8/* MPEG4 Level 6  */
898611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
908611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_LEVEL_H264_1	 0x9/* H.264 Level 1   */
918611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_LEVEL_H264_1b        0xA/* H.264 Level 1b  */
928611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_LEVEL_H264_1p1	 0xB/* H.264 Level 1.1 */
938611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_LEVEL_H264_1p2	 0xC/* H.264 Level 1.2 */
948611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_LEVEL_H264_1p3	 0xD/* H.264 Level 1.3 */
958611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_LEVEL_H264_2	 0xE/* H.264 Level 2   */
968611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_LEVEL_H264_2p1	 0xF/* H.264 Level 2.1 */
978611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_LEVEL_H264_2p2	0x10/* H.264 Level 2.2 */
988611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_LEVEL_H264_3	0x11/* H.264 Level 3   */
998611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_LEVEL_H264_3p1	0x12/* H.264 Level 3.1 */
1008611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_LEVEL_H264_3p2	0x13/* H.264 Level 3.2 */
1018611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_LEVEL_H264_4	0x14/* H.264 Level 4   */
1028611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
1038611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_LEVEL_H263_10	0x15/* H.263 Level 10  */
1048611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_LEVEL_H263_20	0x16/* H.263 Level 20  */
1058611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_LEVEL_H263_30	0x17/* H.263 Level 30  */
1068611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_LEVEL_H263_40	0x18/* H.263 Level 40  */
1078611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_LEVEL_H263_45	0x19/* H.263 Level 45  */
1088611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_LEVEL_H263_50	0x1A/* H.263 Level 50  */
1098611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_LEVEL_H263_60	0x1B/* H.263 Level 60  */
1108611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_LEVEL_H263_70	0x1C/* H.263 Level 70  */
1118611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
1128611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*Entropy coding model selection for H.264 encoder.*/
1138611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_ENTROPY_MODEL_CAVLC	1
1148611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_ENTROPY_MODEL_CABAC	2
1158611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*Cabac model number (0,1,2) for encoder.*/
1168611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_CABAC_MODEL_0	1/* CABAC Model 0. */
1178611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_CABAC_MODEL_1	2/* CABAC Model 1. */
1188611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_CABAC_MODEL_2	3/* CABAC Model 2. */
1198611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
1208611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*Deblocking filter control type for encoder.*/
1218611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_DB_DISABLE	1/* 1 - Disable deblocking filter*/
1228611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_DB_ALL_BLKG_BNDRY	2/* 2 - All blocking boundary filtering*/
1238611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_DB_SKIP_SLICE_BNDRY	3/* 3 - Filtering except sliceboundary*/
1248611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
1258611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*Different methods of Multi slice selection.*/
1268611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_MSLICE_OFF	1
1278611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_MSLICE_CNT_MB	2 /*number of MBscount per slice*/
1288611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_MSLICE_CNT_BYTE	3 /*number of bytes count per slice.*/
1298611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_MSLICE_GOB	4 /*Multi slice by GOB for H.263 only.*/
1308611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
1318611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*Different modes for Rate Control.*/
1328611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_RC_OFF	1
1338611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_RC_VBR_VFR	2
1348611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_RC_VBR_CFR	3
1358611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_RC_CBR_VFR	4
1368611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_RC_CBR_CFR	5
1378611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
1388611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*Different modes for flushing buffers*/
1398611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_FLUSH_INPUT	1
1408611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_FLUSH_OUTPUT	2
1418611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_FLUSH_ALL	3
1428611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
1438611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*Different input formats for YUV data.*/
1448611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_INPUTFMT_NV12	1/* NV12 Linear */
1458611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_INPUTFMT_NV21	2/* NV21 Linear */
1468611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_INPUTFMT_NV12_16M2KA	3/* NV12 Linear */
147f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev#define VEN_INPUTFMT_NV21_16M2KA	4
148f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev
1498611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
1508611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*Different allowed rotation modes.*/
1518611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_ROTATION_0	1/* 0 degrees */
1528611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_ROTATION_90	2/* 90 degrees */
1538611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_ROTATION_180	3/* 180 degrees */
1548611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_ROTATION_270	4/* 270 degrees */
1558611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
1568611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*IOCTL timeout values*/
1578611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_TIMEOUT_INFINITE	0xffffffff
1588611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
1598611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*Different allowed intra refresh modes.*/
1608611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IR_OFF	1
1618611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IR_CYCLIC	2
1628611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IR_RANDOM	3
1638611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
1648611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*IOCTL BASE CODES Not to be used directly by the client.*/
1658611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/* Base value for ioctls that are not related to encoder configuration.*/
1668611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTLBASE_NENC	0x800
1678611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/* Base value for encoder configuration ioctls*/
1688611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTLBASE_ENC	0x850
1698611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
1708611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct venc_ioctl_msg{
1718611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	void __user *in;
1728611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	void __user *out;
1738611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
1748611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
1758611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*NON ENCODER CONFIGURATION IOCTLs*/
1768611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
1778611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*IOCTL params:SET: InputData - unsigned long, OutputData - NULL*/
1788611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_SET_INTF_VERSION \
1798611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOW(VEN_IOCTLBASE_NENC, 0, struct venc_ioctl_msg)
1808611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
1818611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*IOCTL params:CMD: InputData - venc_timeout, OutputData - venc_msg*/
1828611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_CMD_READ_NEXT_MSG \
1838611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOWR(VEN_IOCTLBASE_NENC, 1, struct venc_ioctl_msg)
1848611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
1858611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*IOCTL params:CMD: InputData - NULL, OutputData - NULL*/
1868611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_CMD_STOP_READ_MSG	_IO(VEN_IOCTLBASE_NENC, 2)
1878611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
1888611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*IOCTL params:SET: InputData - venc_allocatorproperty, OutputData - NULL
1898611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu GET: InputData - NULL, OutputData - venc_allocatorproperty*/
1908611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_SET_INPUT_BUFFER_REQ \
1918611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOW(VEN_IOCTLBASE_NENC, 3, struct venc_ioctl_msg)
1928611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_GET_INPUT_BUFFER_REQ \
1938611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOR(VEN_IOCTLBASE_NENC, 4, struct venc_ioctl_msg)
1948611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
1958611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*IOCTL params:CMD: InputData - venc_bufferpayload, OutputData - NULL*/
1968611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_CMD_ALLOC_INPUT_BUFFER \
1978611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOW(VEN_IOCTLBASE_NENC, 5, struct venc_ioctl_msg)
1988611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
1998611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*IOCTL params:CMD: InputData - venc_bufferpayload, OutputData - NULL*/
2008611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_SET_INPUT_BUFFER \
2018611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOW(VEN_IOCTLBASE_NENC, 6, struct venc_ioctl_msg)
2028611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
2038611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*IOCTL params: CMD: InputData - venc_bufferpayload, OutputData - NULL*/
2048611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_CMD_FREE_INPUT_BUFFER \
2058611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOW(VEN_IOCTLBASE_NENC, 7, struct venc_ioctl_msg)
2068611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
2078611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*IOCTL params:SET: InputData - venc_allocatorproperty, OutputData - NULL
2088611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu GET: InputData - NULL, OutputData - venc_allocatorproperty*/
2098611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_SET_OUTPUT_BUFFER_REQ \
2108611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOW(VEN_IOCTLBASE_NENC, 8, struct venc_ioctl_msg)
2118611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_GET_OUTPUT_BUFFER_REQ \
2128611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOR(VEN_IOCTLBASE_NENC, 9, struct venc_ioctl_msg)
2138611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
2148611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*IOCTL params:CMD: InputData - venc_bufferpayload, OutputData - NULL*/
2158611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_CMD_ALLOC_OUTPUT_BUFFER \
2168611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOW(VEN_IOCTLBASE_NENC, 10, struct venc_ioctl_msg)
2178611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
2188611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
2198611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*IOCTL params:CMD: InputData - venc_bufferpayload, OutputData - NULL*/
2208611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_SET_OUTPUT_BUFFER \
2218611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOW(VEN_IOCTLBASE_NENC, 11, struct venc_ioctl_msg)
2228611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
2238611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*IOCTL params:CMD: InputData - venc_bufferpayload, OutputData - NULL.*/
2248611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_CMD_FREE_OUTPUT_BUFFER \
2258611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOW(VEN_IOCTLBASE_NENC, 12, struct venc_ioctl_msg)
2268611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
2278611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
2288611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/* Asynchronous respone message code:* VEN_MSG_START*/
2298611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_CMD_START	_IO(VEN_IOCTLBASE_NENC, 13)
2308611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
2318611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
2328611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*IOCTL params:CMD: InputData - venc_buffer, OutputData - NULL
2338611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu Asynchronous respone message code:VEN_MSG_INPUT_BUFFER_DONE*/
2348611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_CMD_ENCODE_FRAME \
2358611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOW(VEN_IOCTLBASE_NENC, 14, struct venc_ioctl_msg)
2368611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
2378611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
2388611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*IOCTL params:CMD: InputData - venc_buffer, OutputData - NULL
2398611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu Asynchronous response message code:VEN_MSG_OUTPUT_BUFFER_DONE*/
2408611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_CMD_FILL_OUTPUT_BUFFER \
2418611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOW(VEN_IOCTLBASE_NENC, 15, struct venc_ioctl_msg)
2428611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
2438611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*IOCTL params:CMD: InputData - venc_bufferflush, OutputData - NULL
2448611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu * Asynchronous response message code:VEN_MSG_INPUT_BUFFER_DONE*/
2458611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_CMD_FLUSH \
2468611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOW(VEN_IOCTLBASE_NENC, 16, struct venc_ioctl_msg)
2478611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
2488611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
2498611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*Asynchronous respone message code:VEN_MSG_PAUSE*/
2508611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_CMD_PAUSE	_IO(VEN_IOCTLBASE_NENC, 17)
2518611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
2528611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*Asynchronous respone message code:VEN_MSG_RESUME*/
2538611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_CMD_RESUME _IO(VEN_IOCTLBASE_NENC, 18)
2548611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
2558611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/* Asynchronous respone message code:VEN_MSG_STOP*/
2568611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_CMD_STOP _IO(VEN_IOCTLBASE_NENC, 19)
2578611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
2588611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_SET_RECON_BUFFER \
2598611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOW(VEN_IOCTLBASE_NENC, 20, struct venc_ioctl_msg)
2608611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
2618611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_FREE_RECON_BUFFER \
2628611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOW(VEN_IOCTLBASE_NENC, 21, struct venc_ioctl_msg)
2638611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
2648611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_GET_RECON_BUFFER_SIZE \
2658611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOW(VEN_IOCTLBASE_NENC, 22, struct venc_ioctl_msg)
2668611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
2678611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
2688611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
2698611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*ENCODER PROPERTY CONFIGURATION & CAPABILITY IOCTLs*/
2708611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
2718611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*IOCTL params:SET: InputData - venc_basecfg, OutputData - NULL
2728611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu GET: InputData - NULL, OutputData - venc_basecfg*/
2738611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_SET_BASE_CFG \
2748611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOW(VEN_IOCTLBASE_ENC, 1, struct venc_ioctl_msg)
2758611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_GET_BASE_CFG \
2768611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOR(VEN_IOCTLBASE_ENC, 2, struct venc_ioctl_msg)
2778611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
2788611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*IOCTL params:SET: InputData - venc_switch, OutputData - NULL
2798611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu  GET: InputData - NULL, OutputData - venc_switch*/
2808611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_SET_LIVE_MODE \
2818611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOW(VEN_IOCTLBASE_ENC, 3, struct venc_ioctl_msg)
2828611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_GET_LIVE_MODE \
2838611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOR(VEN_IOCTLBASE_ENC, 4, struct venc_ioctl_msg)
2848611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
2858611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
2868611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*IOCTL params:SET: InputData - venc_profile, OutputData - NULL
2878611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu  GET: InputData - NULL, OutputData - venc_profile*/
2888611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_SET_CODEC_PROFILE \
2898611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOW(VEN_IOCTLBASE_ENC, 5, struct venc_ioctl_msg)
2908611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_GET_CODEC_PROFILE \
2918611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOR(VEN_IOCTLBASE_ENC, 6, struct venc_ioctl_msg)
2928611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
2938611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
2948611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*IOCTL params:SET: InputData - ven_profilelevel, OutputData - NULL
2958611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu  GET: InputData - NULL, OutputData - ven_profilelevel*/
2968611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_SET_PROFILE_LEVEL \
2978611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOW(VEN_IOCTLBASE_ENC, 7, struct venc_ioctl_msg)
2988611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
2998611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_GET_PROFILE_LEVEL \
3008611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOR(VEN_IOCTLBASE_ENC, 8, struct venc_ioctl_msg)
3018611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
3028611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*IOCTL params:SET: InputData - venc_switch, OutputData - NULL
3038611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu GET: InputData - NULL, OutputData - venc_switch*/
3048611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_SET_SHORT_HDR \
3058611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOW(VEN_IOCTLBASE_ENC, 9, struct venc_ioctl_msg)
3068611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_GET_SHORT_HDR \
3078611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOR(VEN_IOCTLBASE_ENC, 10, struct venc_ioctl_msg)
3088611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
3098611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
3108611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*IOCTL params: SET: InputData - venc_sessionqp, OutputData - NULL
3118611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu  GET: InputData - NULL, OutputData - venc_sessionqp*/
3128611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_SET_SESSION_QP \
3138611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOW(VEN_IOCTLBASE_ENC, 11, struct venc_ioctl_msg)
3148611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_GET_SESSION_QP \
3158611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOR(VEN_IOCTLBASE_ENC, 12, struct venc_ioctl_msg)
3168611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
3178611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
3188611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*IOCTL params:SET: InputData - venc_intraperiod, OutputData - NULL
3198611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu  GET: InputData - NULL, OutputData - venc_intraperiod*/
3208611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_SET_INTRA_PERIOD \
3218611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOW(VEN_IOCTLBASE_ENC, 13, struct venc_ioctl_msg)
3228611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_GET_INTRA_PERIOD \
3238611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOR(VEN_IOCTLBASE_ENC, 14, struct venc_ioctl_msg)
3248611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
3258611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
3268611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/* Request an Iframe*/
3278611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_CMD_REQUEST_IFRAME _IO(VEN_IOCTLBASE_ENC, 15)
3288611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
3298611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*IOCTL params:GET: InputData - NULL, OutputData - venc_capability*/
3308611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_GET_CAPABILITY \
3318611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOR(VEN_IOCTLBASE_ENC, 16, struct venc_ioctl_msg)
3328611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
3338611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
3348611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*IOCTL params:GET: InputData - NULL, OutputData - venc_seqheader*/
3358611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_GET_SEQUENCE_HDR \
3368611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOR(VEN_IOCTLBASE_ENC, 17, struct venc_ioctl_msg)
3378611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
3388611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*IOCTL params:SET: InputData - venc_entropycfg, OutputData - NULL
3398611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu GET: InputData - NULL, OutputData - venc_entropycfg*/
3408611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_SET_ENTROPY_CFG \
3418611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOW(VEN_IOCTLBASE_ENC, 18, struct venc_ioctl_msg)
3428611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_GET_ENTROPY_CFG \
3438611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOR(VEN_IOCTLBASE_ENC, 19, struct venc_ioctl_msg)
3448611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
3458611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*IOCTL params:SET: InputData - venc_dbcfg, OutputData - NULL
3468611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu GET: InputData - NULL, OutputData - venc_dbcfg*/
3478611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_SET_DEBLOCKING_CFG \
3488611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOW(VEN_IOCTLBASE_ENC, 20, struct venc_ioctl_msg)
3498611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_GET_DEBLOCKING_CFG \
3508611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOR(VEN_IOCTLBASE_ENC, 21, struct venc_ioctl_msg)
3518611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
3528611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
3538611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*IOCTL params:SET: InputData - venc_intrarefresh, OutputData - NULL
3548611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu  GET: InputData - NULL, OutputData - venc_intrarefresh*/
3558611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_SET_INTRA_REFRESH \
3568611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOW(VEN_IOCTLBASE_ENC, 22, struct venc_ioctl_msg)
3578611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_GET_INTRA_REFRESH \
3588611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOR(VEN_IOCTLBASE_ENC, 23, struct venc_ioctl_msg)
3598611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
3608611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
3618611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*IOCTL params:SET: InputData - venc_multiclicecfg, OutputData - NULL
3628611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu  GET: InputData - NULL, OutputData - venc_multiclicecfg*/
3638611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_SET_MULTI_SLICE_CFG \
3648611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOW(VEN_IOCTLBASE_ENC, 24, struct venc_ioctl_msg)
3658611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_GET_MULTI_SLICE_CFG \
3668611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOR(VEN_IOCTLBASE_ENC, 25, struct venc_ioctl_msg)
3678611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
3688611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*IOCTL params:SET: InputData - venc_ratectrlcfg, OutputData - NULL
3698611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu GET: InputData - NULL, OutputData - venc_ratectrlcfg*/
3708611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_SET_RATE_CTRL_CFG \
3718611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOW(VEN_IOCTLBASE_ENC, 26, struct venc_ioctl_msg)
3728611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_GET_RATE_CTRL_CFG \
3738611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOR(VEN_IOCTLBASE_ENC, 27, struct venc_ioctl_msg)
3748611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
3758611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
3768611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*IOCTL params:SET: InputData - venc_voptimingcfg, OutputData - NULL
3778611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu  GET: InputData - NULL, OutputData - venc_voptimingcfg*/
3788611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_SET_VOP_TIMING_CFG \
3798611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOW(VEN_IOCTLBASE_ENC, 28, struct venc_ioctl_msg)
3808611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_GET_VOP_TIMING_CFG \
3818611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOR(VEN_IOCTLBASE_ENC, 29, struct venc_ioctl_msg)
3828611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
3838611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
3848611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*IOCTL params:SET: InputData - venc_framerate, OutputData - NULL
3858611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu GET: InputData - NULL, OutputData - venc_framerate*/
3868611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_SET_FRAME_RATE \
3878611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOW(VEN_IOCTLBASE_ENC, 30, struct venc_ioctl_msg)
3888611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_GET_FRAME_RATE \
3898611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOR(VEN_IOCTLBASE_ENC, 31, struct venc_ioctl_msg)
3908611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
3918611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
3928611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*IOCTL params:SET: InputData - venc_targetbitrate, OutputData - NULL
3938611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu GET: InputData - NULL, OutputData - venc_targetbitrate*/
3948611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_SET_TARGET_BITRATE \
3958611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOW(VEN_IOCTLBASE_ENC, 32, struct venc_ioctl_msg)
3968611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_GET_TARGET_BITRATE \
3978611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOR(VEN_IOCTLBASE_ENC, 33, struct venc_ioctl_msg)
3988611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
3998611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
4008611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*IOCTL params:SET: InputData - venc_rotation, OutputData - NULL
4018611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu  GET: InputData - NULL, OutputData - venc_rotation*/
4028611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_SET_ROTATION \
4038611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOW(VEN_IOCTLBASE_ENC, 34, struct venc_ioctl_msg)
4048611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_GET_ROTATION \
4058611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOR(VEN_IOCTLBASE_ENC, 35, struct venc_ioctl_msg)
4068611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
4078611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
4088611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*IOCTL params:SET: InputData - venc_headerextension, OutputData - NULL
4098611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu GET: InputData - NULL, OutputData - venc_headerextension*/
4108611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_SET_HEC \
4118611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOW(VEN_IOCTLBASE_ENC, 36, struct venc_ioctl_msg)
4128611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_GET_HEC \
4138611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOR(VEN_IOCTLBASE_ENC, 37, struct venc_ioctl_msg)
4148611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
4158611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*IOCTL params:SET: InputData - venc_switch, OutputData - NULL
4168611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu GET: InputData - NULL, OutputData - venc_switch*/
4178611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_SET_DATA_PARTITION \
4188611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOW(VEN_IOCTLBASE_ENC, 38, struct venc_ioctl_msg)
4198611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_GET_DATA_PARTITION \
4208611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOR(VEN_IOCTLBASE_ENC, 39, struct venc_ioctl_msg)
4218611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
4228611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*IOCTL params:SET: InputData - venc_switch, OutputData - NULL
4238611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu GET: InputData - NULL, OutputData - venc_switch*/
4248611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_SET_RVLC \
4258611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOW(VEN_IOCTLBASE_ENC, 40, struct venc_ioctl_msg)
4268611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_GET_RVLC \
4278611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOR(VEN_IOCTLBASE_ENC, 41, struct venc_ioctl_msg)
4288611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
4298611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
4308611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*IOCTL params:SET: InputData - venc_switch, OutputData - NULL
4318611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu GET: InputData - NULL, OutputData - venc_switch*/
4328611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_SET_AC_PREDICTION \
4338611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOW(VEN_IOCTLBASE_ENC, 42, struct venc_ioctl_msg)
4348611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_GET_AC_PREDICTION \
4358611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOR(VEN_IOCTLBASE_ENC, 43, struct venc_ioctl_msg)
4368611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
4378611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
4388611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*IOCTL params:SET: InputData - venc_qprange, OutputData - NULL
4398611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu GET: InputData - NULL, OutputData - venc_qprange*/
4408611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_SET_QP_RANGE \
4418611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOW(VEN_IOCTLBASE_ENC, 44, struct venc_ioctl_msg)
4428611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_GET_QP_RANGE \
4438611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOR(VEN_IOCTLBASE_ENC, 45, struct venc_ioctl_msg)
4448611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
4458611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_GET_NUMBER_INSTANCES \
4468611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOR(VEN_IOCTLBASE_ENC, 46, struct venc_ioctl_msg)
4478611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
4488611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_SET_METABUFFER_MODE \
4498611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOW(VEN_IOCTLBASE_ENC, 47, struct venc_ioctl_msg)
4508611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
4518611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
4528611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*IOCTL params:SET: InputData - unsigned int, OutputData - NULL.*/
4538611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_SET_EXTRADATA \
4548611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOW(VEN_IOCTLBASE_ENC, 48, struct venc_ioctl_msg)
4558611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*IOCTL params:GET: InputData - NULL, OutputData - unsigned int.*/
4568611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_GET_EXTRADATA \
4578611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOR(VEN_IOCTLBASE_ENC, 49, struct venc_ioctl_msg)
4588611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
4598611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*IOCTL params:SET: InputData - NULL, OutputData - NULL.*/
4608611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_SET_SLICE_DELIVERY_MODE \
4618611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IO(VEN_IOCTLBASE_ENC, 50)
4628611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
4638611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*IOCTL params:SET: InputData - unsigned int, OutputData - NULL*/
4648611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_SET_SPS_PPS_FOR_IDR \
4658611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IOW(VEN_IOCTLBASE_ENC, 51, struct venc_ioctl_msg)
4668611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
4678611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/*IOCTL params:SET: InputData - NULL, OutputData - NULL.*/
4688611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VEN_IOCTL_SET_VUI_BITSTREAM_RESTRICT_FLAG \
4698611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	_IO(VEN_IOCTLBASE_ENC, 52)
4708611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
4718611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct venc_switch{
4728611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned char	status;
4738611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
4748611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
4758611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct venc_allocatorproperty{
4768611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned long	 mincount;
4778611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned long	 maxcount;
4788611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned long	 actualcount;
4798611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned long	 datasize;
4808611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned long	 suffixsize;
4818611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned long	 alignment;
4828611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned long	 bufpoolid;
4838611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
4848611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
4858611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct venc_bufferpayload{
4868611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned char *pbuffer;
4878611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	size_t	sz;
4888611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	int	fd;
4898611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned int	offset;
4908611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned int	maped_size;
4918611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned long	filled_len;
4928611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
4938611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
4948611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct venc_buffer{
4958611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu unsigned char *ptrbuffer;
4968611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu unsigned long	sz;
4978611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu unsigned long	len;
4988611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu unsigned long	offset;
4998611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu long long	timestamp;
5008611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu unsigned long	flags;
5018611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu void	*clientdata;
5028611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
5038611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
5048611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct venc_basecfg{
5058611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned long	input_width;
5068611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned long	input_height;
5078611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned long	dvs_width;
5088611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned long	dvs_height;
5098611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned long	codectype;
5108611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned long	fps_num;
5118611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned long	fps_den;
5128611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned long	targetbitrate;
5138611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned long	inputformat;
5148611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
5158611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
5168611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct venc_profile{
5178611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned long	profile;
5188611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
5198611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct ven_profilelevel{
5208611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned long	level;
5218611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
5228611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
5238611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct venc_sessionqp{
5248611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned long	iframeqp;
5258611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned long	pframqp;
5268611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
5278611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
5288611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct venc_qprange{
5298611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned long	maxqp;
5308611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned long	minqp;
5318611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
5328611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct venc_intraperiod{
5338611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned long	num_pframes;
5348611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned long	num_bframes;
5358611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
5368611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct venc_seqheader{
5378611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned char *hdrbufptr;
5388611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned long	bufsize;
5398611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned long	hdrlen;
5408611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
5418611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
5428611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct venc_capability{
5438611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned long	codec_types;
5448611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned long	maxframe_width;
5458611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned long	maxframe_height;
5468611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned long	maxtarget_bitrate;
5478611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned long	maxframe_rate;
5488611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned long	input_formats;
5498611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned char	dvs;
5508611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
5518611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
5528611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct venc_entropycfg{
5538611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned longentropysel;
5548611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned long	cabacmodel;
5558611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
5568611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
5578611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct venc_dbcfg{
5588611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned long	db_mode;
5598611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned long	slicealpha_offset;
5608611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned long	slicebeta_offset;
5618611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
5628611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
5638611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct venc_intrarefresh{
5648611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned long	irmode;
5658611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned long	mbcount;
5668611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
5678611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
5688611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct venc_multiclicecfg{
5698611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned long	mslice_mode;
5708611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned long	mslice_size;
5718611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
5728611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
5738611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct venc_bufferflush{
5748611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned long	flush_mode;
5758611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
5768611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
5778611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct venc_ratectrlcfg{
5788611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned long	rcmode;
5798611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
5808611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
5818611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct	venc_voptimingcfg{
5828611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned long	voptime_resolution;
5838611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
5848611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct venc_framerate{
5858611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned long	fps_denominator;
5868611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned long	fps_numerator;
5878611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
5888611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
5898611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct venc_targetbitrate{
5908611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned long	target_bitrate;
5918611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
5928611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
5938611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
5948611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct venc_rotation{
5958611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned long	rotation;
5968611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
5978611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
5988611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct venc_timeout{
5998611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	 unsigned long	millisec;
6008611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
6018611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
6028611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct venc_headerextension{
6038611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	 unsigned long	header_extension;
6048611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
6058611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
6068611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct venc_msg{
6078611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned long	statuscode;
6088611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned long	msgcode;
6098611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	struct venc_buffer	buf;
6108611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned long	msgdata_size;
6118611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
6128611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
6138611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct venc_recon_addr{
6148611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned char *pbuffer;
6158611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned long buffer_size;
6168611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned long pmem_fd;
6178611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	unsigned long offset;
6188611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
6198611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
6208611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct venc_recon_buff_size{
6218611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	int width;
6228611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	int height;
6238611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	int size;
6248611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	int alignment;
6258611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
6268611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
6278611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#endif /* _MSM_VIDC_ENC_H_ */
628