summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorQuIC Gerrit Code Review <gerrit@quicinc.com>2010-01-06 16:17:38 -0800
committerQuIC Gerrit Code Review <gerrit@quicinc.com>2010-01-06 16:17:38 -0800
commit849f8a5c1f9c423755f60a7841113e4d5ca1cc74 (patch)
tree1e055ef9a5dd0edfed6efa35a9250d32f3a82a3c
parent19990a21362c26d56e4ea376bf8efe91cfe8f199 (diff)
parent99f65f36ec3768efb45b8e8bf973fe770c5d194a (diff)
downloadbionic-M76XXTSNCJNLYA5110.zip
bionic-M76XXTSNCJNLYA5110.tar.gz
bionic-M76XXTSNCJNLYA5110.tar.bz2
Merge change Iccde8413 into eclairM76XXTSNCJNLYA5110
* changes: 8x50: vdec: Implement new Scorpion/QDSP6 interface
-rw-r--r--libc/kernel/common/linux/msm_q6vdec.h100
1 files changed, 100 insertions, 0 deletions
diff --git a/libc/kernel/common/linux/msm_q6vdec.h b/libc/kernel/common/linux/msm_q6vdec.h
index b2f9f10..1a3626a 100644
--- a/libc/kernel/common/linux/msm_q6vdec.h
+++ b/libc/kernel/common/linux/msm_q6vdec.h
@@ -26,6 +26,13 @@
#define VDEC_IOCTL_CLOSE _IO(VDEC_IOCTL_MAGIC, 8)
#define VDEC_IOCTL_FREEBUFFERS _IOW(VDEC_IOCTL_MAGIC, 9, struct vdec_buf_info)
#define VDEC_IOCTL_GETDECATTRIBUTES _IOR(VDEC_IOCTL_MAGIC, 10, struct vdec_dec_attributes)
+#define VDEC_IOCTL_INITIALIZE_V3 _IOWR(VDEC_IOCTL_MAGIC, 11, struct vdec_init_v3)
+#define VDEC_IOCTL_SETBUFFERS_V3 _IOW(VDEC_IOCTL_MAGIC, 12, struct vdec_buffer_v3)
+#define VDEC_IOCTL_FREEBUFFERS_V3 _IOW(VDEC_IOCTL_MAGIC, 13, struct vdec_buffer_v3)
+#define VDEC_IOCTL_GETDECATTRIBUTES_V3 _IOR(VDEC_IOCTL_MAGIC, 14, struct vdec_dec_attributes)
+#define VDEC_IOCTL_GETINTERNALBUFREQ _IOWR(VDEC_IOCTL_MAGIC, 15, struct vdec_intbuf_req)
+#define VDEC_IOCTL_GETPROPERTY _IOR(VDEC_IOCTL_MAGIC, 16, union vdec_property)
+#define VDEC_IOCTL_SETPROPERTY _IOW(VDEC_IOCTL_MAGIC, 17, union vdec_property)
enum {
VDEC_FRAME_DECODE_OK,
@@ -50,6 +57,7 @@ enum {
VDEC_BUFFER_TYPE_OUTPUT,
VDEC_BUFFER_TYPE_INTERNAL1,
VDEC_BUFFER_TYPE_INTERNAL2,
+ VDEC_BUFFER_TYPE_INTERNAL
};
enum {
@@ -58,6 +66,16 @@ enum {
VDEC_QUEUE_BADSTATE,
};
+enum {
+ VDEC_PROPERTY_FOURCC,
+ VDEC_PROPERTY_PROFILE,
+ VDEC_PROPERTY_LEVEL,
+ VDEC_PROPERTY_DIMENSION,
+ VDEC_PROPERTY_CWIN,
+ VDEC_PROPERTY_INPUT_BUF_REQ,
+ VDEC_PROPERTY_OUTPUT_BUF_REQ
+};
+
struct vdec_input_buf_info {
u32 offset;
u32 data;
@@ -82,6 +100,13 @@ struct vdec_buf_req {
struct vdec_buf_desc dec_req2;
};
+struct vdec_buf_req_v3 {
+ u32 max_input_queue_size;
+ struct vdec_buf_desc input;
+ struct vdec_buf_desc output;
+ u32 num_internal_buffers;
+};
+
struct vdec_region_info {
u32 src_id;
u32 offset;
@@ -102,6 +127,23 @@ struct vdec_config {
u32 reserved;
};
+struct vdec_config_v3 {
+ u32 fourcc;
+ u32 width;
+ u32 height;
+ u32 order;
+ u32 notify_enable;
+ u32 vc1_rowbase;
+ u32 h264_startcode_detect;
+ u32 h264_nal_len_size;
+ u32 postproc_flag;
+ u32 fruc_enable;
+ struct vdec_region_info seq_hdr;
+ u32 seq_hdr_len;
+ u32 color_format;
+ u32 reserved;
+};
+
struct vdec_vc1_panscan_regions {
int num;
int width[4];
@@ -117,6 +159,11 @@ struct vdec_cropping_window {
u32 y2;
};
+struct vdec_rectangle {
+ u32 width;
+ u32 height;
+};
+
struct vdec_frame_info {
u32 status;
u32 offset;
@@ -152,11 +199,24 @@ struct vdec_buf_info {
u32 islast;
};
+struct vdec_buf_info_v3 {
+ u32 buf_type;
+ u32 index;
+ struct vdec_region_info region;
+ u32 num_buf;
+ u32 islast;
+};
+
struct vdec_buffer {
u32 pmem_id;
struct vdec_buf_info buf;
};
+struct vdec_buffer_v3 {
+ u32 pmem_id;
+ struct vdec_buf_info_v3 buf;
+};
+
struct vdec_sequence {
u8 *header;
u32 len;
@@ -166,6 +226,10 @@ struct vdec_config_sps {
struct vdec_config cfg;
struct vdec_sequence seq;
};
+struct vdec_config_sps_v3 {
+ struct vdec_config_v3 cfg;
+ int seq_fd;
+};
#define VDEC_MSG_REUSEINPUTBUFFER 1
#define VDEC_MSG_FRAMEDONE 2
@@ -186,6 +250,11 @@ struct vdec_init {
struct vdec_buf_req *buf_req;
};
+struct vdec_init_v3 {
+ struct vdec_config_sps_v3 sps_cfg;
+ struct vdec_buf_req_v3 *buf_req;
+};
+
struct vdec_input_buf {
u32 pmem_id;
struct vdec_input_buf_info buffer;
@@ -207,5 +276,36 @@ struct vdec_dec_attributes {
struct vdec_buf_desc dec_req1;
struct vdec_buf_desc dec_req2;
};
+struct vdec_dec_attributes_v3 {
+ u32 fourcc;
+ u32 profile;
+ u32 level;
+ u32 dec_pic_width;
+ u32 dec_pic_height;
+ struct vdec_cropping_window cwin;
+ struct vdec_buf_desc input;
+ struct vdec_buf_desc output;
+};
+
+union vdec_property {
+ u32 fourcc;
+ u32 profile;
+ u32 level;
+ struct vdec_rectangle dim;
+ struct vdec_cropping_window cwin;
+ struct vdec_buf_desc input;
+ struct vdec_buf_desc output;
+ u32 def_type;
+};
+
+struct vdec_intbuf_desc {
+ u32 num_actual_internal_buf;
+ u32 internal_buf_req_length;
+};
+struct vdec_intbuf_req {
+ u32 num_internal_buf;
+ struct vdec_intbuf_desc *buf_desc;
+ struct vdec_buf_desc *internal_buf_req;
+};
#endif