summaryrefslogtreecommitdiffstats
path: root/encoder/iv2.h
diff options
context:
space:
mode:
Diffstat (limited to 'encoder/iv2.h')
-rwxr-xr-xencoder/iv2.h386
1 files changed, 386 insertions, 0 deletions
diff --git a/encoder/iv2.h b/encoder/iv2.h
new file mode 100755
index 0000000..538bb1e
--- /dev/null
+++ b/encoder/iv2.h
@@ -0,0 +1,386 @@
+/******************************************************************************
+ *
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ *****************************************************************************
+ * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
+*/
+/**
+*******************************************************************************
+* @file
+* iv2.h
+*
+* @brief
+* This file contains all the necessary structure and enumeration
+* definitions needed for the Application Program Interface(API) of the
+* Ittiam Video codecs This is version 2 of Ittiam Video API
+*
+* @author
+* Ittiam
+*
+* @par List of Functions:
+*
+* @remarks
+* None
+*
+*******************************************************************************
+*/
+
+#ifndef _IV2_H_
+#define _IV2_H_
+
+/*****************************************************************************/
+/* Constant Macros */
+/*****************************************************************************/
+#define IV_MAX_RAW_COMPONENTS 4
+
+/*****************************************************************************/
+/* Typedefs */
+/*****************************************************************************/
+
+/*****************************************************************************/
+/* Enums */
+/*****************************************************************************/
+
+
+/** Function status */
+typedef enum{
+ IV_STATUS_NA = 0x7FFFFFFF,
+ IV_SUCCESS = 0x0,
+ IV_FAIL = 0x1,
+}IV_STATUS_T;
+
+
+/** Defines the types of memory */
+typedef enum {
+ IV_NA_MEM_TYPE = 0x7FFFFFFF,
+ IV_EXTERNAL_CACHEABLE_PERSISTENT_MEM = 0x0,
+ IV_EXTERNAL_CACHEABLE_SCRATCH_MEM = 0x1,
+ IV_EXTERNAL_NONCACHEABLE_PERSISTENT_MEM = 0x2,
+ IV_EXTERNAL_NONCACHEABLE_SCRATCH_MEM = 0x3,
+ IV_INTERNAL_CACHEABLE_PERSISTENT_MEM = 0x10,
+ IV_INTERNAL_CACHEABLE_SCRATCH_MEM = 0x11,
+ IV_INTERNAL_NONCACHEABLE_PERSISTENT_MEM = 0x12,
+ IV_INTERNAL_NONCACHEABLE_SCRATCH_MEM = 0x13,
+}IV_MEM_TYPE_T;
+
+/* The color formats used in video/image codecs */
+
+typedef enum {
+ IV_CHROMA_NA = 0x7FFFFFFF,
+ IV_YUV_420P = 0x0,
+ IV_YUV_420SP_UV = 0x1,
+ IV_YUV_420SP_VU = 0x2,
+
+ IV_YUV_422P = 0x10,
+ IV_YUV_422IBE = 0x11,
+ IV_YUV_422ILE = 0x12,
+
+ IV_YUV_444P = 0x20,
+ IV_YUV_411P = 0x21,
+
+ IV_GRAY = 0x30,
+
+ IV_RGB_565 = 0x31,
+ IV_RGB_24 = 0x32,
+ IV_RGBA_8888 = 0x33
+}IV_COLOR_FORMAT_T;
+
+/** Frame/Field coding types */
+typedef enum {
+ IV_NA_FRAME = 0x7FFFFFFF,
+ IV_I_FRAME = 0x0,
+ IV_P_FRAME = 0x1,
+ IV_B_FRAME = 0x2,
+ IV_IDR_FRAME = 0x3,
+ IV_II_FRAME = 0x4,
+ IV_IP_FRAME = 0x5,
+ IV_IB_FRAME = 0x6,
+ IV_PI_FRAME = 0x7,
+ IV_PP_FRAME = 0x8,
+ IV_PB_FRAME = 0x9,
+ IV_BI_FRAME = 0xa,
+ IV_BP_FRAME = 0xb,
+ IV_BB_FRAME = 0xc,
+ IV_MBAFF_I_FRAME = 0xd,
+ IV_MBAFF_P_FRAME = 0xe,
+ IV_MBAFF_B_FRAME = 0xf,
+ IV_MBAFF_IDR_FRAME = 0x10,
+ IV_NOT_CODED_FRAME = 0x11,
+ IV_FRAMETYPE_DEFAULT = IV_I_FRAME
+}IV_PICTURE_CODING_TYPE_T;
+
+/** Field type */
+typedef enum {
+ IV_NA_FLD = 0x7FFFFFFF,
+ IV_TOP_FLD = 0x0,
+ IV_BOT_FLD = 0x1,
+ IV_FLD_TYPE_DEFAULT = IV_TOP_FLD
+}IV_FLD_TYPE_T;
+
+/** Video content type progressive/interlaced etc */
+typedef enum {
+ IV_CONTENTTYPE_NA = 0x7FFFFFFF,
+ IV_PROGRESSIVE = 0x0,
+ IV_INTERLACED = 0x1,
+ IV_PROGRESSIVE_FRAME = 0x2,
+ IV_INTERLACED_FRAME = 0x3,
+ IV_INTERLACED_TOPFIELD = 0x4,
+ IV_INTERLACED_BOTTOMFIELD = 0x5,
+ IV_CONTENTTYPE_DEFAULT = IV_PROGRESSIVE,
+}IV_CONTENT_TYPE_T;
+
+/** Profile */
+typedef enum
+{
+ IV_PROFILE_NA = 0x7FFFFFFF,
+ IV_PROFILE_BASE = 0x0,
+ IV_PROFILE_MAIN = 0x1,
+ IV_PROFILE_HIGH = 0x2,
+
+
+ IV_PROFILE_SIMPLE = 0x100,
+ IV_PROFILE_ADVSIMPLE = 0x101,
+ IV_PROFILE_DEFAULT = IV_PROFILE_BASE,
+}IV_PROFILE_T;
+
+
+/** Architecture Enumeration */
+typedef enum
+{
+ ARCH_NA = 0x7FFFFFFF,
+ ARCH_ARM_NONEON = 0x0,
+ ARCH_ARM_A9Q,
+ ARCH_ARM_A9A,
+ ARCH_ARM_A9,
+ ARCH_ARM_A7,
+ ARCH_ARM_A5,
+ ARCH_ARM_A15,
+ ARCH_ARM_NEONINTR,
+ ARCH_X86_GENERIC,
+ ARCH_X86_SSSE3,
+ ARCH_X86_SSE42,
+ ARCH_ARM_A53,
+ ARCH_ARM_A57,
+ ARCH_ARM_V8_NEON
+}IV_ARCH_T;
+
+/** SOC Enumeration */
+typedef enum
+{
+ SOC_NA = 0x7FFFFFFF,
+ SOC_GENERIC = 0x0,
+ SOC_HISI_37X
+}IV_SOC_T;
+
+
+/** API command type */
+typedef enum {
+ IV_CMD_NA = 0x7FFFFFFF,
+ IV_CMD_GET_NUM_MEM_REC = 0x0,
+ IV_CMD_FILL_NUM_MEM_REC = 0x1,
+ IV_CMD_RETRIEVE_MEMREC = 0x2,
+ IV_CMD_INIT = 0x3,
+ /* Do not add anything after the following entry */
+ IV_CMD_EXTENSIONS = 0x100
+}IV_API_COMMAND_TYPE_T;
+
+/*****************************************************************************/
+/* Structure Definitions */
+/*****************************************************************************/
+
+/** This structure defines the handle for the codec instance */
+
+typedef struct{
+ /** size of the structure */
+ UWORD32 u4_size;
+ /** Pointer to the API function pointer table of the codec */
+ void *pv_fxns;
+ /** Pointer to the handle of the codec */
+ void *pv_codec_handle;
+}iv_obj_t;
+
+/** This structure defines the memory record holder which will *
+ * be used by the codec to communicate its memory requirements to the *
+ * application through appropriate API functions */
+
+typedef struct {
+ /** size of the structure */
+ UWORD32 u4_size;
+ /** Pointer to the memory allocated by the application */
+ void *pv_base;
+ /** u4_size of the memory to be allocated */
+ UWORD32 u4_mem_size;
+ /** Alignment of the memory pointer */
+ UWORD32 u4_mem_alignment;
+ /** Type of the memory to be allocated */
+ IV_MEM_TYPE_T e_mem_type;
+}iv_mem_rec_t;
+
+/** This structure defines attributes for the raw buffer */
+typedef struct {
+ /** size of the structure */
+ UWORD32 u4_size;
+
+ /** Color format */
+ IV_COLOR_FORMAT_T e_color_fmt;
+
+ /** Pointer to each component */
+ void *apv_bufs[IV_MAX_RAW_COMPONENTS];
+
+ /** Width of each component */
+ UWORD32 au4_wd[IV_MAX_RAW_COMPONENTS];
+
+ /** Height of each component */
+ UWORD32 au4_ht[IV_MAX_RAW_COMPONENTS];
+
+ /** Stride of each component */
+ UWORD32 au4_strd[IV_MAX_RAW_COMPONENTS];
+
+}iv_raw_buf_t;
+
+/** This structure defines attributes for the bitstream buffer */
+typedef struct
+{
+ /** size of the structure */
+ UWORD32 u4_size;
+
+ /** Pointer to buffer */
+ void *pv_buf;
+
+ /** Number of valid bytes in the buffer */
+ UWORD32 u4_bytes;
+
+ /** Allocated size of the buffer */
+ UWORD32 u4_bufsize;
+
+}iv_bits_buf_t;
+/*****************************************************************************/
+/* Get Number of Memory Records */
+/*****************************************************************************/
+
+/** Input structure : Get number of memory records */
+typedef struct {
+ /** size of the structure */
+ UWORD32 u4_size;
+
+ /** Command type */
+ IV_API_COMMAND_TYPE_T e_cmd;
+}iv_num_mem_rec_ip_t;
+
+/** Output structure : Get number of memory records */
+typedef struct{
+ /** size of the structure */
+ UWORD32 u4_size;
+
+ /** Return error code */
+ UWORD32 u4_error_code;
+
+ /** Number of memory records that will be used by the codec */
+ UWORD32 u4_num_mem_rec;
+}iv_num_mem_rec_op_t;
+
+
+/*****************************************************************************/
+/* Fill Memory Records */
+/*****************************************************************************/
+
+/** Input structure : Fill memory records */
+
+typedef struct {
+ /** size of the structure */
+ UWORD32 u4_size;
+
+ /** Command type */
+ IV_API_COMMAND_TYPE_T e_cmd;
+
+ /** Number of memory records */
+ UWORD32 u4_num_mem_rec;
+
+ /** pointer to array of memrecords structures should be filled by codec
+ with details of memory resource requirements */
+ iv_mem_rec_t *ps_mem_rec;
+
+ /** maximum width for which codec should request memory requirements */
+ UWORD32 u4_max_wd;
+
+ /** maximum height for which codec should request memory requirements*/
+ UWORD32 u4_max_ht;
+
+ /** Maximum number of reference frames */
+ UWORD32 u4_max_ref_cnt;
+
+ /** Maximum number of reorder frames */
+ UWORD32 u4_max_reorder_cnt;
+
+ /** Maximum level supported */
+ UWORD32 u4_max_level;
+
+ /** Color format that codec supports for input/output */
+ IV_COLOR_FORMAT_T e_color_format;
+
+ /** Maximum search range to be used in X direction */
+ UWORD32 u4_max_srch_rng_x;
+
+ /** Maximum search range to be used in Y direction */
+ UWORD32 u4_max_srch_rng_y;
+
+}iv_fill_mem_rec_ip_t;
+
+
+/** Output structure : Fill memory records */
+typedef struct{
+ /** size of the structure */
+ UWORD32 u4_size;
+
+ /** Return error code */
+ UWORD32 u4_error_code;
+
+ /** no of memory record structures which are filled by codec */
+ UWORD32 u4_num_mem_rec;
+}iv_fill_mem_rec_op_t;
+
+
+/*****************************************************************************/
+/* Retrieve Memory Records */
+/*****************************************************************************/
+
+/** Input structure : Retrieve memory records */
+
+typedef struct {
+ /** size of the structure */
+ UWORD32 u4_size;
+
+ /** Command type */
+ IV_API_COMMAND_TYPE_T e_cmd;
+
+ /** array of structures where codec should fill with all memory requested earlier */
+ iv_mem_rec_t *ps_mem_rec;
+}iv_retrieve_mem_rec_ip_t;
+
+
+typedef struct{
+ /** size of the structure */
+ UWORD32 u4_size;
+
+ /** Return error code */
+ UWORD32 u4_error_code;
+
+ /** no of memory record structures which are filled by codec */
+ UWORD32 u4_num_mem_rec_filled;
+}iv_retrieve_mem_rec_op_t;
+
+#endif /* _IV2_H_ */
+