aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbuddy.liong2013-12-18 13:18:47 -0600
committerbuddy.liong2013-12-18 13:18:47 -0600
commit056af5f3dccb4c772d29ce7df6a6ac6384c441ed (patch)
treeed19615c6478de6a48c8a701918e494cf5907902 /packages
parent50f233c4d3a969065fcbe9767a7ebde6ac5690d8 (diff)
downloadrepo-libdce-056af5f3dccb4c772d29ce7df6a6ac6384c441ed.tar.gz
repo-libdce-056af5f3dccb4c772d29ce7df6a6ac6384c441ed.tar.xz
repo-libdce-056af5f3dccb4c772d29ce7df6a6ac6384c441ed.zip
[LIBDCE] Clean up README and unsupported header files.
Updating README on the version information of headers included in the packages folder. Removal of h264svcenc, h264svcvdec, and vc1enc header files since it is not supported in the current IPUMM. Change-Id: I2bb140604a7c7d6e4ba7482a11ac43bc5076d9f6 Signed-off-by: buddy.liong <buddy.budiono@ti.com>
Diffstat (limited to 'packages')
-rw-r--r--packages/ivahd_codecs/ti/sdo/codecs/h264svcenc/ih264svcenc.h327
-rw-r--r--packages/ivahd_codecs/ti/sdo/codecs/h264svcvdec/ih264svcvdec.h475
-rw-r--r--packages/ivahd_codecs/ti/sdo/codecs/vc1enc/ivc1enc.h1028
3 files changed, 0 insertions, 1830 deletions
diff --git a/packages/ivahd_codecs/ti/sdo/codecs/h264svcenc/ih264svcenc.h b/packages/ivahd_codecs/ti/sdo/codecs/h264svcenc/ih264svcenc.h
deleted file mode 100644
index 9066683..0000000
--- a/packages/ivahd_codecs/ti/sdo/codecs/h264svcenc/ih264svcenc.h
+++ /dev/null
@@ -1,327 +0,0 @@
1/*
2 * Copyright (c) 2010, Texas Instruments Incorporated
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 *
12 * * Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
15 *
16 * * Neither the name of Texas Instruments Incorporated nor the names of
17 * its contributors may be used to endorse or promote products derived
18 * from this software without specific prior written permission.
19 *
20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 */
32
33/*
34********************************************************************************
35 * HDVICP2.0 Based SVC Baseline Encoder
36 *
37 * "HDVICP2.0 Based SVC Baseline Encoder" is software module developed on TI's
38 * HDVICP2 based SOCs. This module is capable of compressing a 4:2:0 Raw
39 * video into a SVC baseline profile bit-stream. Based on ISO/IEC
40 * 14496-10."
41 * Copyright (C) 2009 Texas Instruments Incorporated - http://www.ti.com/
42 * ALL RIGHTS RESERVED
43********************************************************************************
44*/
45/**
46 ******************************************************************************
47 * @file ih264svcenc.h
48 *
49 * @brief IH264SVCENC Interface Header
50 *
51 * @author: Venugopala Krishna (venugopala@ti.com)
52 *
53 * @version 0.0 (Apr 2010) : Initial version created
54 *****************************************************************************
55*/
56
57/**
58 * @defgroup HDVICP2SVC IH264SVCENC_TI (V7M)
59 * @ingroup m3
60 *
61 * The ISVCENC_TI interface enables encoding in SVC format
62 *
63 */
64
65#ifndef _IH264SVCENC_H_ //--{
66
67#define _IH264SVCENC_H_
68
69#include <ti/xdais/ialg.h>
70#include <ti/xdais/dm/ividenc2.h>
71
72#include "ih264enc.h"
73
74/** @ingroup HDVICP2SVC */
75/*@{*/
76
77
78#ifdef __cplusplus
79extern "C" {
80#endif
81
82
83/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
84/* Definition of all the macros define by this interafce */
85/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
86
87/**
88 * Maximum number of instances of H.264 embedded inside SVC
89*/
90#define IH264SVCENC_MAX_NUM_MULTI_INSTANCE (9)
91
92/**
93 Length of the version string. The memory to get version
94 number is owned by application
95*/
96#define IH264SVCENC_VERSION_LENGTH (64)
97
98
99/**
100 control method commands
101*/
102#define IH264SVCENC_GETSTATUS XDM_GETSTATUS
103#define IH264SVCENC_SETPARAMS XDM_SETPARAMS
104#define IH264SVCENC_RESET XDM_RESET
105#define IH264SVCENC_FLUSH XDM_FLUSH
106#define IH264SVCENC_SETDEFAULT XDM_SETDEFAULT
107#define IH264SVCENC_GETBUFINFO XDM_GETBUFINFO
108
109typedef IVIDENC2_Cmd IH264SVCENC_Cmd;
110
111
112/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
113/* Definition of all the Enumeration define by this interafce */
114/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
115
116/**
117 * @enum IH264SVCENC_ErrorBit
118 * @brief error informations of IVAHD SVC encoder implementation by TI.
119 *
120 * @remarks When an internal error occurs, the algorithm will return
121 * an error return value (e.g. EFAIL, EUNSUPPORTED)
122 *
123 * @remarks The value of each enum is the bit which is set.
124 *
125 * @remarks Bits 8-15 are defined by XDM and hence not used by codec
126 * implementation.
127 * rest all bits are used. XDM defined error bits are also active.
128 *
129 * @remarks The algorithm can set multiple bits to 1 based on conditions.
130 * e.g. it will set bits #XDM_FATALERROR (fatal) and
131 * #XDM_UNSUPPORTEDPARAM (unsupported params) in case
132 * of unsupported run time parameters.
133 *
134 */
135
136typedef enum {
137 IH264SVCENC_LEVEL_INCOMPLAINT_PARAMETER = 0
138 /**< Bit 0 - level incomplaint parameters.
139 * @remarks This error is applicable when some parameters are set
140 * which are not meeting the limit defined by H.264 standard
141 * Table A-1 Level limits. It can be categorized under
142 * following category :
143 * IH264ENC_LEVEL_INCOMPLAINT_RESOLUTION : Invalid width/height
144 * IH264ENC_LEVEL_INCOMPLAINT_HRDBUFSZIE : Invalid HrdBufferSize
145 * IH264ENC_LEVEL_INCOMPLAINT_BITRATE : Invalid Bit Rate
146 * IH264ENC_LEVEL_INCOMPLAINT_MBSPERSECOND : Invalid FrameRate/
147 * resolution
148 * IH264ENC_LEVEL_INCOMPLAINT_DPBSIZE : Invalid DPB size
149 * For above 5 situations, only a signle bit (bit-0) is set as true
150 */
151
152} IH264SVCENC_ErrorBit;
153
154/**
155 * @enum ISVCENC_Level
156 * @brief Level Identifier for H.264 Encoder
157*/
158typedef enum {
159 IH264SVC_LEVEL_10 = 10 /**< Level 1.0 */
160
161} IH264SVCENC_Level;
162
163
164
165/**<
166 * @struct IH264SVCENC_Params
167 * @brief This structure defines the Create time parameters for all
168 * H264SVCENC objects
169 * @param h264Params Create Parameters (Extended Class) of the H264 Encoder.
170 * As defined in the interface file (ih264enc.h) of H264 Encoder.
171 *
172 * @param inBufIndex Conveys how inBufs passed in the process is mapped to
173 * different layers/instances of Encoder.
174 *
175 * @param numberOfLayers Conveys number of layers to be encoded. This field is used
176 * in reading the number of entries of h264Params, inBufIndex etc.
177 *
178 * @param avcMode If numberOfLayers is set to be ONE, this flag determines whether
179 * generated Bitstream be SVC or AVC. Non-Zero means AVC or if ZERO its
180 * SVC. NOTE: This field is don't care if numberOfLayers is greater than ONE.
181 *
182*/
183
184typedef struct {
185 IH264ENC_Params h264Params[IH264SVCENC_MAX_NUM_MULTI_INSTANCE];
186 XDAS_Int8 inBufIndex[IH264SVCENC_MAX_NUM_MULTI_INSTANCE];
187 XDAS_UInt8 numberOfLayers;
188 XDAS_UInt8 avcMode;
189
190} IH264SVCENC_Params;
191
192
193/**<
194 *
195 * @struct IH264SVCENC_Status
196 * @brief This structure informs back the status of SVC encoder and tells the
197 * value of each control parameter
198 * @param h264Status Status Parameters (Extended Class) of the H264 Encoder.
199 * As defined in the interface file (ih264enc.h) of H264 Encoder.
200 *
201 * @param videnc2Status IVIDENC2 Class Status Parameter given out by SVC Encoder after collating,
202 * information from different encoding layers/instances.
203 *
204 * @param numberOfLayers Conveys the information for how many number of layers encoding the SVC
205 * Encoder is configured. This field is used in reading the number of
206 * entries of h264Status etc.
207 *
208 * @param avcMode If numberOfLayers is set to be ONE, this flag determines whether
209 * generated Bitstream be SVC or AVC. Non-Zero means AVC or if ZERO its
210 * SVC. NOTE: This field is don't care if numberOfLayers is greater than ONE.
211 *
212*/
213
214typedef struct {
215 IVIDENC2_Status videnc2Status;
216 IH264ENC_Status h264Status[IH264SVCENC_MAX_NUM_MULTI_INSTANCE];
217
218 XDAS_UInt8 numberOfLayers;
219 XDAS_UInt8 avcMode;
220
221} IH264SVCENC_Status;
222
223/**< This structure must be the first field of all SVCENC instance objects */
224typedef struct IH264SVCENC_Obj {
225 struct IH264SVCENC_Fxns *fxns;
226} IH264SVCENC_Obj;
227
228/**< This handle is used to reference all SVCENC instance objects */
229typedef struct IH264SVCENC_Obj *IH264SVCENC_Handle;
230
231/**<Default parameter values for SVCENC instance objects */
232extern const IH264SVCENC_Params H264SVCENC_TI_PARAMS;
233
234
235/**<
236 *
237 * @struct IH264SVCENC_DynamicParams
238 * @brief This structure defines the run time parameters for all SVCENC objects
239 * @param h264DynamicParams Dynamic Parameters (Extended Class) of the H264 Encoder.
240 * As defined in the interface file (ih264enc.h) of H264 Encoder.
241 * @param numberOfLayers Conveys the information for how many number of layers encoding the SVC
242 * Encoder is configured. This field is used in reading the number of
243 * entries of h264DynamicParams etc.
244 *
245 *
246
247*/
248
249typedef struct IH264SVCENC_DynamicParams {
250 IH264ENC_DynamicParams h264DynamicParams[IH264SVCENC_MAX_NUM_MULTI_INSTANCE];
251 XDAS_UInt8 numberOfLayers;
252} IH264SVCENC_DynamicParams;
253
254extern const IH264SVCENC_DynamicParams IH264SVCENC_DYNAMICPARAMS;
255
256/**<
257
258 @struct ISVCENC_InArgs
259 @brief This structure defines the input argument being passed to
260 SVC encoder
261
262 @params videnc2InArgs : It is instance of base class. It cntains all
263 the necessary info required run time parameters for all H264ENC
264 objects
265
266*/
267typedef struct IH264SVCENC_InArgs {
268
269 IVIDENC2_InArgs videnc2InArgs;
270 XDAS_Int32 processId;
271 IH264ENC_RoiInput roiInputParams;
272 XDAS_UInt32 inputKey;
273
274} IH264SVCENC_InArgs;
275
276
277
278/**<
279
280 @struct IH264SVCENC_OutArgs
281 @brief This structure defines the outpur argument being generated from SVC
282 encoder
283
284 @params h264OutArgs : Thsi captures the outArgs of the each of the layer encoded.
285 @params videnc2OutArgs : It is instance of base class which captures the outArgs
286 as a consolidated whole for all the layers.
287 @params numberOfLayers: Number of layers that the encoder has been configured to
288 encode.This field is used in reading the number of entries of h264OutArgs etc.
289
290*/
291typedef struct IH264SVCENC_OutArgs {
292
293 IVIDENC2_OutArgs videnc2OutArgs;
294 IH264ENC_OutArgs h264OutArgs[IH264SVCENC_MAX_NUM_MULTI_INSTANCE];
295 XDAS_UInt8 numberOfLayers;
296
297} IH264SVCENC_OutArgs;
298
299/**<
300
301 @struct IH264SVCENC_Fxns
302 @brief This structure defines of the operations on SVCENC objects
303
304 @params IVIDENC2_Fxns : It is instance of base class. It contains all
305 function table
306
307*/
308typedef struct IH264SVCENC_Fxns {
309 IVIDENC2_Fxns ividenc;
310
311} IH264SVCENC_Fxns;
312
313#ifdef __cplusplus
314}
315#endif
316
317/*@}*/ /* ingroup HDVICP2SVC */
318
319#endif //_IH264SVCENC_H_ //--}
320
321/* ========================================================================*/
322/* End of file : ih264svcenc.h */
323/*-------------------------------------------------------------------------*/
324/* Copyright (c) 2009 Texas Instruments, Incorporated. */
325/* All Rights Reserved. */
326/* ========================================================================*/
327
diff --git a/packages/ivahd_codecs/ti/sdo/codecs/h264svcvdec/ih264svcvdec.h b/packages/ivahd_codecs/ti/sdo/codecs/h264svcvdec/ih264svcvdec.h
deleted file mode 100644
index 1a49c77..0000000
--- a/packages/ivahd_codecs/ti/sdo/codecs/h264svcvdec/ih264svcvdec.h
+++ /dev/null
@@ -1,475 +0,0 @@
1/*
2 * Copyright (c) 2010, Texas Instruments Incorporated
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 *
12 * * Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
15 *
16 * * Neither the name of Texas Instruments Incorporated nor the names of
17 * its contributors may be used to endorse or promote products derived
18 * from this software without specific prior written permission.
19 *
20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 */
32
33/*
34*******************************************************************************
35 * HDVICP2.0 Based H.264SVC Decoder
36 *
37 * "HDVICP2.0 Based H.264SVC Decoder" is a software module developed on TI's
38 * HDVICP2 based SOCs. This module is capable of decoding a compressed
39 * baseline profile SVC bit-stream into a YUV 4:2:0 Raw video.
40 * Based on "Annex G ISO/IEC 14496-10".
41 * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
42 * ALL RIGHTS RESERVED
43*******************************************************************************
44*/
45/**
46*******************************************************************************
47 * @file <ih264svcvdec.h>
48 *
49 * @brief SVCVDEC Interface Header file.
50 *
51 * This File contains the interface structures and Macro definition
52 * required for integrating the H264VDEC.
53 *
54 * @author: Ashish Singh <ashish.singh@ti.com>
55 *
56 * @version 0.1 (Apr 2010) : Base version borrowed from h264 universal decoder
57 *
58 * @version 0.2 (Apr 2010) : Implemented the interface structure for svc dec
59 *
60 * @version 0.3 (Sep 2010) : Added review comments and added one new default
61 * dynemic parameter [Ashish Singh ]
62 *
63 * @version 0.4 (Jan 2011) : Added error concealment mode exteded parameter
64 * in create time parameter and defined the enum
65 * for concealment modes [Ashish Singh]
66 *
67 * @version 0.5 (March 2011): Added spatial error concealment mode in enum
68 * define for concealment modes[Ashish Singh]
69 *
70 * @version 0.6 (April 2011): Added some more extended parametrs and also
71 * added some reserve parametrs in status/create
72 * dynemic structures [Ashish Singh]
73 * @version 0.7 (April 2011): Added one unregistred SSEI message for TI
74 * SVC encoder encoded stream[Ashish Singh]
75 *
76 ******************************************************************************
77*/
78
79#ifndef IH264SVCVDEC_
80#define IH264SVCVDEC_
81
82#include <ti/xdais/ialg.h>
83#include <ti/xdais/dm/ividdec3.h>
84#include <ih264vdec.h>
85#include <h264vdec_ti.h>
86
87
88/**
89 * Macro defined for maximum scalable layer in access unit supported by codec
90 */
91#define IH264SVCVDEC_MAX_NUM_LAYER 0x9
92/**
93 * Macro defined for getting out the version of the encoder written
94 * Unregistred User SSEI messages
95 */
96#define VERSION_FIELD 0x4
97/**
98 ******************************************************************************
99 * @struct IH264SVCVDEC_Obj
100 *
101 * @brief Modules object definition. This structure must be the first field
102 * of all H264SVCVDEC instance objects
103 *
104 * @param fxns : Structure type defining all functions necessary to
105 * implement the IH264VDEC interface.
106 ******************************************************************************
107*/
108typedef struct IH264SVCVDEC_Obj {
109 struct IH264SVCVDEC_Fxns *fxns;
110} IH264SVCVDEC_Obj;
111
112/**
113 ******************************************************************************
114 * @struct IH264SVCVDEC_Status
115 *
116 * @brief This structure defines parameters that describe the status of the
117 * SVC Decoder and any other implementation specific parameters.
118 * The status parameters are defined in the XDM data structure,
119 * IVIDDEC3_Status
120 *
121 * @param h264SvcDecStatusParams : array to hold the status of each layer in
122 * scalable stream
123 * @param viddec3Status : XDM Base class status structure
124 *
125 * @param errConcealmentMode : Error Concealment applied by H.264SVC
126 * Decoder
127 * @param numLayersPresent : Number of scalable layers present in AU
128 *
129 * @param layerDID : Array to store the spatial layer ID's
130 * present in AU
131 * @param layerTID : Array to store the Temporal layer ID
132 * present in AU
133 * @param layerQID : Array to store the Quality layer ID's
134 * present in AU
135 * @param reserved : Reserve for future uses
136 *
137 ******************************************************************************
138*/
139typedef struct IH264SVCVDEC_Status {
140 IH264VDEC_Status h264SvcDecStatusParams;
141 IVIDDEC3_Status viddec3Status;
142 XDAS_UInt32 errConcealmentMode;
143 XDAS_UInt32 numLayersPresent;
144 XDAS_Int32 layerDID[IH264SVCVDEC_MAX_NUM_LAYER];
145 XDAS_Int32 layerTID[IH264SVCVDEC_MAX_NUM_LAYER];
146 XDAS_Int32 layerQID[IH264SVCVDEC_MAX_NUM_LAYER];
147 XDAS_UInt32 reserved[3];
148} IH264SVCVDEC_Status;
149
150
151/**
152******************************************************************************
153* @struct IH264SVCVDEC_Params
154*
155* @brief This structure defines the creation parameters for all H264SVCVDEC
156* objects inside H264SVCVDEC object. This structure includes the
157* xdm baseclass creation parameters and any other implementation
158* specific parameters for SVC Decoder instance object.
159*
160* @param svcDecLayerParams : array to hold the init time parameter of
161* each layer in scalable stream
162* @param disablePreParsing : Flag for disable or enable the pre-
163* Parsing of the svc stream
164*
165* @param reserved : Reserve for future uses
166******************************************************************************
167*/
168
169typedef struct IH264SVCVDEC_Params {
170 IH264VDEC_Params h264SvcDecLayerParams;
171 XDAS_UInt32 disablePreParsing;
172 XDAS_UInt32 reserved[3];
173} IH264SVCVDEC_Params;
174
175/**
176 ******************************************************************************
177 * @struct IH264SVCVDEC_DynamicParams
178 *
179 * @brief This structure defines the run-time parameters and any other
180 * implementation specific parameters for an SVC instance object.
181 * The base run-time parameters are defined in the XDM data structure,
182 * IVIDDEC3_DynamicParams.
183 *
184 * @param h264SvcDecDynamicParams : array to store the hold the dynemic para
185 * meter for each layer of scalable stream
186 *
187 * @param reserved : Reserve for future uses
188 *
189 ******************************************************************************
190*/
191
192typedef struct IH264SVCVDEC_DynamicParams {
193 IH264VDEC_DynamicParams h264SvcDecDynamicParams;
194 XDAS_UInt32 reserved[3];
195} IH264SVCVDEC_DynamicParams;
196
197/**
198 ******************************************************************************
199 * @struct IH264SVCVDEC_InArgs
200 *
201 * @brief This structure defines the run-time input arguments for an H264
202 * instance object (ISVCH264VDEC::process)
203 *
204 * @param viddec3InArgs : InArgs structure SVC Object
205 ******************************************************************************
206*/
207typedef struct IH264SVCVDEC_InArgs {
208 IH264VDEC_InArgs h264SvcDecLayerInArgs;
209} IH264SVCVDEC_InArgs;
210
211/**
212 ******************************************************************************
213 * @struct IH264SVCVDEC_OutArgs
214 *
215 * @brief This structure defines the run time output arguments for
216 * ISVCH264VDEC::process function
217 *
218 * @param svcDecLayerOutArgs : OutArgs structure SVC Object
219 ******************************************************************************
220*/
221
222typedef struct IH264SVCVDEC_OutArgs {
223 IH264VDEC_OutArgs h264SvcDecLayerOutArgs;
224} IH264SVCVDEC_OutArgs;
225
226/**
227 ******************************************************************************
228 * @struct IH264SVCVDEC_Fxns
229 *
230 * @brief This structure contains pointers to all the XDAIS and XDM interface
231 * functions
232 *
233 * @param ividdec3 : This structure contains pointers to all the XDAIS and
234 * XDM interface functions
235 ******************************************************************************
236*/
237typedef struct IH264SVCVDEC_Fxns {
238 IVIDDEC3_Fxns ividdec3;
239} IH264SVCVDEC_Fxns;
240
241/*
242 * IH264SVCVDEC_Handle
243 * This handle is used to reference all H264SVCVDEC instance objects
244 */
245typedef struct IH264SVCVDEC_Obj *IH264SVCVDEC_Handle;
246
247/*
248 * IH264SVCVDEC_Cmd
249 * This structure defines the control commands for the IMP4VENC module.
250 */
251typedef IVIDDEC3_Cmd IH264SVCVDEC_Cmd;
252
253/*
254 * IH264SVCVDEC_PARAMS
255 * Default parameter values for H264SVCVDEC instance objects
256 */
257extern IH264SVCVDEC_Params IH264SVCVDEC_PARAMS;
258/*
259 * IH264SVCVDEC_TI_DYNAMICPARAMS
260 * Default dynamic parameter values for H264SVCVDEC instance objects
261 */
262extern IH264SVCVDEC_DynamicParams IH264SVCVDEC_TI_DYNAMICPARAMS;
263
264/**
265 ******************************************************************************
266 * @struct IH264SVCVDEC_Scalability_TI_Info
267 *
268 * @brief This structure contains svc dec supported SEI message syntax
269 * elements
270 *
271 * @param parsed_flag :1 - Indicates that in the current process call, c
272 * contents of the structure is updated
273 * 0 - Indicates contents of the structure is not updated
274 *
275 * @param num_layers_minus1:(num_layers_minus1 + 1)specifies the number of
276 * scalable layers for which information is provided
277 * in the scalability information SEI message
278 * @param layer_id : specifies the layer identifier of the i-th
279 * scalable layer specified in the scalability information
280 * SEI message
281 * @param priority_id : indicates an upper bound for the priority_id values
282 * of the current scalable layer representation
283 * @param dependency_id : is equal to the values of dependency_id,of the VCL
284 * NAL units of the current scalable layer.
285 * @param quality_id :is equal to the values of quality_id,of the VCL
286 * NAL units of the current scalable layer.
287 * @param temporal_id :is equal to the values of temporal_id,of the VCL
288 * NAL units of the current scalable layer.
289 * @param bitrate_info_present_flag: specifies that the bit rate
290 * information for the current scalable
291 * layer representation is present/
292 * not present in the
293 * scalability information SEI message
294 * @param frm_rate_info_present_flag:specifies that the frame rate
295 * information for the current scalable
296 * layer representation is present/not
297 * present in the scalability information
298 * SEI message
299 * @param frm_size_info_present_flag: specifies that the frame size
300 * information for the current scalable
301 * layer representation is present/not
302 * present in the scalability information
303 * SEI message
304 * @param avg_bitrate: indicates the average bit rate of the representation of
305 * the current scalable layer
306 * @param max_bitrate_layer:indicates an upper bound for the bit rate of the
307 * current scalable layer in any fixed size time
308 * window
309 * @param max_bitrate_layer_representation: indicates an upper bound for the
310 * bit rate of the current scalable
311 * layer representation in any fixed
312 * size time window
313 * @param max_bitrate_calc_window: specifies the size of the time window that
314 * is used for calculating the upper bounds
315 * for the bit rate of the current scalable
316 * layer
317 * @param constant_frm_rate_idc: indicates whether the frame rate of the
318 * current scalable layer representation is
319 * constant
320 * @param avg_frm_rate:indicates the average frame rate, in units of frames
321 * per 256 seconds, of the representation of the current scalable
322 * layer
323 * @param frm_width_in_mbs_minus1: indicate the width of the decoded pictures
324 * for the current scalable layer
325 * representation
326 * @param frm_height_in_mbs_minus1:indicate the height of the decoded
327 * pictures for the current scalable
328 * layer representation
329 *
330 ******************************************************************************
331*/
332
333typedef struct IH264SVCVDEC_Scalability_TI_Info {
334 XDAS_UInt32 parsed_flag;
335 XDAS_UInt32 num_layers_minus1;
336 XDAS_UInt32 layer_id[IH264SVCVDEC_MAX_NUM_LAYER];
337 XDAS_UInt8 priority_id[IH264SVCVDEC_MAX_NUM_LAYER];
338 XDAS_UInt8 dependency_id[IH264SVCVDEC_MAX_NUM_LAYER];
339 XDAS_UInt8 quality_id[IH264SVCVDEC_MAX_NUM_LAYER];
340 XDAS_UInt8 temporal_id[IH264SVCVDEC_MAX_NUM_LAYER];
341 XDAS_UInt8 bitrate_info_present_flag[IH264SVCVDEC_MAX_NUM_LAYER];
342 XDAS_UInt8 frm_rate_info_present_flag[IH264SVCVDEC_MAX_NUM_LAYER];
343 XDAS_UInt8 frm_size_info_present_flag[IH264SVCVDEC_MAX_NUM_LAYER];
344 XDAS_UInt16 avg_bitrate[IH264SVCVDEC_MAX_NUM_LAYER];
345 XDAS_UInt16 max_bitrate_layer[IH264SVCVDEC_MAX_NUM_LAYER];
346 XDAS_UInt16 max_bitrate_layer_representation[IH264SVCVDEC_MAX_NUM_LAYER];
347 XDAS_UInt16 max_bitrate_calc_window[IH264SVCVDEC_MAX_NUM_LAYER];
348 XDAS_UInt16 constant_frm_rate_idc[IH264SVCVDEC_MAX_NUM_LAYER];
349 XDAS_UInt16 avg_frm_rate[IH264SVCVDEC_MAX_NUM_LAYER];
350 XDAS_UInt32 frm_width_in_mbs_minus1[IH264SVCVDEC_MAX_NUM_LAYER];
351 XDAS_UInt32 frm_height_in_mbs_minus1[IH264SVCVDEC_MAX_NUM_LAYER];
352}IH264SVCVDEC_Scalability_TI_Info;
353
354/**
355 ******************************************************************************
356 * @struct IH264SVCVDEC_UnRegSeiMessages_TI_Info
357 *
358 * @brief This structure contains Unregistred sei message encoded by the
359 * Texas Instruments svc netra encoder
360 *
361 * @param parsed_flag :1 - Indicates that in the current process call, c
362 * contents of the structure is updated
363 * 0 - Indicates contents of the structure is not updated
364 *
365 * @param layerOffset: array to store offset of the position of the scalable
366 * layer(SPS/SSPS/PPS/SLICE) encoded in
367 * current access unit
368 *
369 * @param layerSize: array to store the encoded each layer size
370 *
371 * @param num_layers: Number of layers encoded in the current access unit
372 *
373 * @param dependency_id: array to store the spatial layer ID
374 *
375 * @param quality_id: array to store the quality layer ID
376 *
377 * @param idr_flag : array to store the idr_flag info for each layer present
378 * in access unit
379 *
380 * @param ti_specific_unregiSeiMessage_version :
381 * version of the unregiustred sei message
382 * write by encoder for improving the decoder
383 * performance
384 *
385 * @param ti_specific_unregiMessagesFlag: Flag to tells that unregistred
386 * sei meesage is present in the stream
387 *
388 ******************************************************************************
389*/
390
391typedef struct IH264SVCVDEC_UnRegSeiMessages_TI_Info {
392 XDAS_UInt32 parsed_flag;
393 XDAS_UInt32 layerOffset[IH264SVCVDEC_MAX_NUM_LAYER];
394 XDAS_UInt32 layerSize[IH264SVCVDEC_MAX_NUM_LAYER];
395 XDAS_UInt16 num_layers;
396 XDAS_UInt8 dependency_id[IH264SVCVDEC_MAX_NUM_LAYER];
397 XDAS_UInt8 quality_id[IH264SVCVDEC_MAX_NUM_LAYER];
398 XDAS_UInt8 idr_flag[IH264SVCVDEC_MAX_NUM_LAYER];
399 XDAS_UInt8 ti_specific_unregiSeiMessage_version;
400 XDAS_UInt8 ti_specific_unregiSeiMessagesFlag;
401}IH264SVCVDEC_UnRegSeiMessages_TI_Info;
402
403/**
404 ******************************************************************************
405 * @struct IH264SVCVDEC_SSeiMessages
406 *
407 * @brief This structure contains all the supported SEI msg by svc decoder
408 *
409 * @param parsed_flag :1 - Indicates that in the current process call, c
410 * contents of the structure is updated
411 * 0 - Indicates contents of the structure is not updated
412 *
413 * @param scalability_info : structure instance for scalabality info SEI
414 * messages
415 *
416 ******************************************************************************
417*/
418
419typedef struct IH264SVCVDEC_SSeiMessages {
420 XDAS_UInt32 parsed_flag;
421 IH264SVCVDEC_Scalability_TI_Info scalability_info;
422 IH264SVCVDEC_UnRegSeiMessages_TI_Info unregistersei_info;
423}IH264SVCVDEC_SSeiMessages;
424
425
426/**
427 ******************************************************************************
428 * @enum IH264VDEC_errConcealmentMode
429 * @brief This enum indicates whether to apply error concealment or not
430 *
431 ******************************************************************************
432*/
433typedef enum {
434 IH264SVCVDEC_NO_CONCEALMENT = 0,
435 /**
436 * do not apply error concealment
437 */
438 IH264SVCVDEC_APPLY_H264_ERRCONCEALMENT,
439 /**
440 * apply error concealment of h264 decoder
441 */
442 IH264SVCVDEC_APPLY_SVC_ERRCONCEALMENT,
443 /**
444 * apply error concealment of svc decoder
445 */
446 IH264SVCVDEC_APPLY_SVC_SPATIAL_ERRCONCEALMENT
447 /**
448 * apply error concealment of svc decoder
449 */
450
451} IH264SVCVDEC_errConcealmentMode;
452
453/**
454 ******************************************************************************
455 * @enum IH264SVCVDEC_preParsingMode
456 * @brief This enum indicates whether to enable or disable preparsing
457 *
458 ******************************************************************************
459*/
460typedef enum {
461
462 IH264SVCVDEC_ENABLE_PREPARSING = 0,
463 /**
464 * Enable the preparsing, mostaly in error prone scenario
465 */
466 IH264SVCVDEC_DISABLE_PREPARSING = 1
467 /**
468 * Disalbe the preparsing, for video survilence scenarion, where
469 * drop of frame/slice don't happens
470 */
471}IH264SVCVDEC_preParsingMode;
472
473
474#endif /* IH264SVCVDEC_ */
475
diff --git a/packages/ivahd_codecs/ti/sdo/codecs/vc1enc/ivc1enc.h b/packages/ivahd_codecs/ti/sdo/codecs/vc1enc/ivc1enc.h
deleted file mode 100644
index 4210322..0000000
--- a/packages/ivahd_codecs/ti/sdo/codecs/vc1enc/ivc1enc.h
+++ /dev/null
@@ -1,1028 +0,0 @@
1/*
2 * Copyright (c) 2010, Texas Instruments Incorporated
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 *
12 * * Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
15 *
16 * * Neither the name of Texas Instruments Incorporated nor the names of
17 * its contributors may be used to endorse or promote products derived
18 * from this software without specific prior written permission.
19 *
20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 */
32
33/*
34 *******************************************************************************
35 *
36 * HDVICP2.0 Based VC1 Encoder
37 *
38 * "HDVICP2.0 Based VC1 Encoder" is software module developed on TI's
39 * HDVICP2 based SOCs. This module is capable of compressing a 4:2:0 Raw
40 * video into a simple/main/advanced profile bit-stream. Based on SMPTE 421M."
41 * Copyright (C) 2009 Texas Instruments Incorporated - http://www.ti.com/
42 * ALL RIGHTS RESERVED
43 *******************************************************************************
44*/
45
46/*!
47 *****************************************************************************
48 * @file ivc1enc.h
49 *
50 * @brief Interface header file
51 *
52 * @version 0.1 (Nov 2011) : Initial version [Prasad]
53 *
54 *****************************************************************************
55 */
56
57#ifndef _IVC1ENC_H_
58#define _IVC1ENC_H_
59
60#include <ti/xdais/ialg.h>
61#include <ti/xdais/dm/ividenc2.h>
62
63
64#ifdef __cplusplus
65extern "C" {
66#endif
67
68/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
69/* Definition of all the macros define by this interafce */
70/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
71/**
72 Maximum Number of slice start points
73*/
74#define IVC1ENC_MAX_NUM_SLICE_START_OFFSET (3)
75/**
76 Length of the version string. The memory to get version
77 number is owned by application
78*/
79#define IVC1ENC_VERSION_LENGTH (64)
80
81/**
82 control method commands
83*/
84#define IVC1ENC_GETSTATUS XDM_GETSTATUS
85#define IVC1ENC_SETPARAMS XDM_SETPARAMS
86#define IVC1ENC_RESET XDM_RESET
87#define IVC1ENC_FLUSH XDM_FLUSH
88#define IVC1ENC_SETDEFAULT XDM_SETDEFAULT
89#define IVC1ENC_GETBUFINFO XDM_GETBUFINFO
90
91/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
92/* Definition of all the Enumeration define by this interafce */
93/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
94
95/**
96 * @enum IVC1ENC_ErrorBit
97 * @brief error informations of IVAHD VC1 encoder implementation by TI.
98*/
99typedef enum {
100 IVC1ENC_LEVEL_INCOMPLIANT_PARAMETER = 0,
101 /**< Bit 0 - level incomplaint parameters.
102 * @remarks This error is applicable when some parameters are set
103 * which are not meeting the limit defined by the VC1 standard.
104 * Level limits can be categorized under
105 * following category :
106 * IVC1ENC_LEVEL_INCOMPLIANT_RESOLUTION : Invalid width/height
107 * IVC1ENC_LEVEL_INCOMPLIANT_HRDBUFSZIE : Invalid HrdBufferSize
108 * IVC1ENC_LEVEL_INCOMPLIANT_BITRATE : Invalid Bit Rate
109 * For above 3 situations, only a signle bit (bit-0) is set as true
110 */
111 IVC1ENC_PROFILE_INCOMPLIANT_CONTENTTYPE = 1,
112 /**< Bit 1 - Profile incomplaint content type.
113 * @remarks This error is applicable when
114 * IVIDENC2_Params::inputContentType is set as
115 * IVIDEO_INTERLACED but IVIDENC2_Params::profile is not set
116 * as IVC1_ADVANCED_PROFILE
117 */
118 IVC1ENC_PROFILE_INCOMPLIANT_INTERFRAMEINTERVAL = 4,
119 /**< Bit 4 - Profile incomplaint interframeInterval.
120 * @remarks This error is set when B frames are used with
121 * IVC1_SIMPLE_PROFILE
122 */
123 IVC1ENC_MAX_BIT_RATE_VIOLATION = 7,
124 /**< Bit 7 - Max bits for one Unit Voilation
125 * @remarks When max bit rate is enabled by user,
126 * than it is possible that codec might not be able
127 * honor max bit rate. This bit is set when bits consumed
128 * in one unit ( 1 sec) is more than the allocated as per the
129 * given max bit rate. If the frame rate is N , and if the
130 * max bit rate is voilated in M th frame than this bit will
131 * get set for frame M to N.
132 */
133 IVC1ENC_IMPROPER_HDVICP2_STATE = 16,
134 /**< Bit 16 - HDVICP2 is not in proper state.
135 */
136 /*IVC1ENC_IMPROPER_STREAMFORMAT = 17, */
137 /**< Bit 17 - stream format is not proper
138 * @remarks This error is set when streamFormat is set
139 * other than or
140 */
141 IVC1ENC_UNSUPPORTED_VIDENC2PARAMS = 20,
142 /**< Bit 20 - Invalid videnc2 parameters
143 * @remarks This error is set when any parameter of struct
144 * IVIDENC2_Params is not in allowed range
145 */
146 IVC1ENC_UNSUPPORTED_RATECONTROLPARAMS = 21,
147 /**< Bit 21 - Invalid rate control parameters
148 * @remarks This error is set when any parameter of struct
149 * IVC1ENC_RateControlParams is not in allowed range
150 */
151 IVC1ENC_UNSUPPORTED_INTERCODINGPARAMS = 22,
152 /**< Bit 22 - Invalid inter coding parameters
153 * @remarks This error is set when any parameter of struct
154 * IVC1ENC_InterCodingParams is not in allowed range
155 */
156 IVC1ENC_UNSUPPORTED_INTRACODINGPARAMS = 23,
157 /**< Bit 23 - Invalid Intra coding parameters
158 * @remarks This error is set when any parameter of struct
159 * IVC1ENC_IntraCodingParams is not in allowed range
160 */
161 IVC1ENC_UNSUPPORTED_SLICECODINGPARAMS = 25,
162 /**< Bit 25 - Invalid slice coding parameters
163 * @remarks This error is set when any parameter of struct
164 * IVC1ENC_SliceCodingParams is not in allowed range
165 */
166 IVC1ENC_UNSUPPORTED_LOOPFILTERPARAMS = 26,
167 /**< Bit 26 - Invalid loop filter related parameters
168 * @remarks This error is set when any parameter of struct
169 * IVC1ENC_LoopFilterParams is not in allowed range
170 */
171 IVC1ENC_UNSUPPORTED_VC1ENCPARAMS = 29,
172 /**< Bit 29 - Invalid Create time extended parameters
173 * @remarks This error is set when any parameter of struct
174 * IVC1ENC_Params is not in allowed range
175 */
176 IVC1ENC_UNSUPPORTED_VIDENC2DYNAMICPARAMS = 30,
177 /**< Bit 30 - Invalid base class dyanmic paaremeters during control
178 * @remarks This error is set when any parameter of struct
179 * IVIDENC2_DynamicParams is not in allowed range
180 */
181 IVC1ENC_UNSUPPORTED_VC1ENCDYNAMICPARAMS = 31
182 /**< Bit 31 - Invalid exteded class dynamic parameters during control
183 * @remarks This error is set when any parameter of struct
184 * IVC1ENC_DynamicParams (excluding embedded structures) is not in
185 * allowed range
186 */
187} IVC1ENC_ErrorBit;
188
189/**
190 * @enum IVC1ENC_Level
191 * @brief Level Identifier for VC1 Encoder
192*/
193typedef enum {
194 IVC1_SP_LOW = 0, /**< Simple Profile Level Low */
195 IVC1_SP_MED = 2, /**< Simple Profile Level Medium */
196 IVC1_MP_LOW = 0, /**< Main Profile Level Low */
197 IVC1_MP_MED = 2, /**< Main Profile Level Medium */
198 IVC1_MP_HIGH = 4, /**< Main Profile Level High */
199 IVC1_AP_L0 = 0, /**< Advanced Profile Level L0 */
200 IVC1_AP_L1 = 1, /**< Advanced Profile Level L1 */
201 IVC1_AP_L2 = 2, /**< Advanced Profile Level L2 */
202 IVC1_AP_L3 = 3, /**< Advanced Profile Level L3 */
203 IVC1_AP_L4 = 4 /**< Advanced Profile Level L4 */
204
205} IVC1ENC_Level;
206
207
208/**
209 * @enum IVC1ENC_Profile
210 * @brief Profile Identifier for VC1 Encoder
211*/
212typedef enum {
213 IVC1_SIMPLE_PROFILE = 0, /**< Simple Profile */
214 IVC1_MAIN_PROFILE = 1, /**< Main Profile */
215 IVC1_ADVANCED_PROFILE = 3 /**< Advanced Profile */
216
217} IVC1ENC_Profile;
218
219/**
220
221 @enum IVC1ENC_RateControlParamsPreset
222 @brief These enumerations control the RateControl Params
223
224*/
225
226typedef enum {
227 IVC1_RATECONTROLPARAMS_DEFAULT = 0,
228 /**< Default Rate Control params */
229 IVC1_RATECONTROLPARAMS_USERDEFINED = 1,
230 /**< User defined Rate Control params */
231 IVC1_RATECONTROLPARAMS_EXISTING = 2,
232 /**< Keep the Rate Control params as existing. This is
233 * useful because during control call if user doesn't want
234 * to change the Rate Control Params
235 */
236 IVC1_RATECONTROLPARAMS_MAX
237
238} IVC1ENC_RateControlParamsPreset;
239
240/**
241
242 @enum IVC1ENC_RateControlAlgo
243 @brief These enumerations control the type of rateControl algo to be picked
244 up by encoder. Only useful if IVIDENC2::rateControlPreset is set as
245 IVIDEO_USER_DEFINED
246
247*/
248typedef enum {
249 IVC1_RATECONTROL_PRC = 0, /**< Perceptual Rate Control,
250 * controls the QP @ MB level
251 */
252 IVC1_RATECONTROL_PRC_LOW_DELAY = 1, /** Low Delay Rate Control */
253 IVC1_RATECONTROL_DEFAULT = IVC1_RATECONTROL_PRC /** Default rcAlgo is PRC */
254
255} IVC1ENC_RateControlAlgo;
256
257/**
258
259 @enum IVC1ENC_InterCodingPreset
260 @brief These enumerations control the type of inter coding
261
262*/
263
264typedef enum {
265 IVC1_INTERCODING_DEFAULT = 0, /**< Default Inter coding params */
266 IVC1_INTERCODING_USERDEFINED = 1, /**< User defined inter coding params */
267 IVC1_INTERCODING_EXISTING = 2, /**< Keep the inter coding params as
268 * existing. This is useful because
269 * during control call if user don't
270 * want to change the inter coding Params
271 */
272 IVC1_INTERCODING_MAX
273
274} IVC1ENC_InterCodingPreset;
275
276/**
277
278 @enum IVC1ENC_InterBlockSize
279 @brief These enumerations are defined for minimum Inter block size
280
281*/
282
283typedef enum {
284 IVC1_BLOCKSIZE_16x16 = 0, /**< 16x16 Block size */
285 IVC1_BLOCKSIZE_DEFAULT = IVC1_BLOCKSIZE_16x16, /**< Default block size */
286 IVC1_BLOCKSIZE_8x8 = 1, /**< 8x8 Block size */
287 IVC1_BLOCKSIZE_4x4 = 2, /**< 4x4 Block size */
288 IVC1_BLOCKSIZE_MAX
289
290} IVC1ENC_InterBlockSize;
291
292/**
293
294 @enum IVC1ENC_IntraRefreshMethods
295 @brief Refresh method Type Identifier for VC1 Encoder
296
297*/
298
299typedef enum {
300 IVC1_INTRAREFRESH_NONE = 0, /**< Doesn't insert forcefully intra
301 macro blocks */
302 IVC1_INTRAREFRESH_DEFAULT = IVC1_INTRAREFRESH_NONE,
303 /**< Default intra refresh is OFF */
304 IVC1_INTRAREFRESH_CYCLIC_MBS, /**< Insters intra macro blocks in a
305 * cyclic fashion cyclic interval is
306 * equal to intraRefreshRate
307 */
308 IVC1_INTRAREFRESH_CYCLIC_SLICES, /**< Insters Intra Slices(Row based) in
309 * a cyclic fashion:
310 * cyclic interval is equal to
311 * intraRefreshRate
312 */
313 IVC1_INTRAREFRESH_RDOPT_MBS, /**< position of intra macro blocks is
314 * intelligently chosen by encoder,
315 * but the number of forcely coded
316 * intra macro blocks in a frame is
317 * guaranteed to be equal to
318 * totalMbsInFrame/intraRefreshRate
319 */
320 IVC1_INTRAREFRESH_MAX
321
322} IVC1ENC_IntraRefreshMethods;
323
324/**
325
326 @enum IVC1ENC_IntraCodingPreset
327 @brief These enumerations control the type of intra coding
328
329*/
330
331typedef enum {
332 IVC1_INTRACODING_DEFAULT = 0, /**< Default intra coding params */
333 IVC1_INTRACODING_USERDEFINED = 1, /**< User defined intra coding params */
334 IVC1_INTRACODING_MAX
335
336} IVC1ENC_IntraCodingPreset;
337
338/**
339 @enum IVC1ENC_SliceCodingPreset
340 @brief These enumerations control the type of slice coding
341 Slice coding is allowed only in Advanced profile.
342*/
343
344typedef enum {
345 IVC1_SLICECODING_DEFAULT = 0,
346 /**< Default slice coding params */
347 IVC1_SLICECODING_USERDEFINED = 1,
348 /**< User defined slicecoding params */
349 IVC1_SLICECODING_EXISTING = 2,
350 /**< Keep the slice coding params as existing */
351 /**< This is useful because during control call */
352 /**< if user don't want to change the sliceCodingParams */
353 IVC1_SLICECODING_MAX
354
355} IVC1ENC_SliceCodingPreset;
356
357/**
358 @enum IVC1ENC_SliceMode
359 @brief These enumerations control the type of slice coding
360 Slice coding is allowed only in Advanced profile.
361*/
362
363typedef enum {
364 IVC1_SLICEMODE_NONE = 0,
365 IVC1_SLICEMODE_DEFAULT = IVC1_SLICEMODE_NONE,
366 /**< Default slice coding mode is disabled */
367 IVC1_SLICEMODE_ROWS = 1,
368 /**< Slices are controlled based upon number of Rows */
369 IVC1_SLICEMODE_OFFSET = 2,
370 /**< Slices are controlled based upon user defined offset in
371 * unit of Rows
372 */
373 IVC1_SLICEMODE_MAX
374
375} IVC1ENC_SliceMode;
376
377/**
378
379 @enum IVC1ENC_StreamFormat
380 @brief These enumerations control the type of stream format
381 Only applicable for simple and main profile streams.
382*/
383typedef enum {
384 IVC1_RAW_FORMAT = 0,
385 /**< bit-stream does not contain the RCV headers */
386 IVC1_RCV1_FORMAT = 1,
387 /**< bit-stream contain the RCV headers in Version 1 format */
388 IVC1_RCV2_FORMAT = 2,
389 /**< bit-stream contain the RCV headers in Version 2 format */
390 IVC1_STREAM_FORMAT_DEFAULT = IVC1_RCV2_FORMAT,
391 /**< Default stream format is RCV2 format */
392 IVC1_STREAM_FORMAT_MAX
393} IVC1ENC_StreamFormat;
394
395/**
396 * @enum IVC1ENC_LoopFilterPreset
397 * @brief These enumerations control the loop filter params
398*/
399
400typedef enum {
401 IVC1_LOOPFILTER_DEFAULT = 0, /**< Default loop-filtering params */
402 IVC1_LOOPFILTER_USERDEFINED = 1, /**< User defined loop-filtering params */
403 IVC1_LOOPFILTER_MAX
404} IVC1ENC_LoopFilterPreset;
405
406/**
407
408 @enum IVC1ENC_LoopFilterDisableIDC
409 @brief Control Parameter to enable or disable loop filter
410
411*/
412typedef enum {
413 IVC1_DISABLE_FILTER_NONE = 0,
414 /**< Enable filtering of all the edges */
415 IVC1_DISABLE_FILTER_DEFAULT = IVC1_DISABLE_FILTER_NONE,
416 /**< Default is Loop filter enabled */
417 IVC1_DISABLE_FILTER_ALL_EDGES,
418 /**< Disable filtering of all the edges */
419 IVC1_DISABLE_FILTER_MAX
420} IVC1ENC_LoopFilterDisableIDC;
421
422/**
423
424 @enum IVC1ENC_GOPStructure
425 @brief
426 When B frames are used (InterFrameInterval > 1) then the arrangement of
427 frames can be different
428
429 GOP structure in display order as indicated below
430 If contentType = Frame
431 IVC1ENC_GOPSTRUCTURE_NONUNIFORM : IBBPBBP. .
432 IVC1ENC_GOPSTRUCTURE_UNIFORM : BBIBBPBB. .
433 If contentType = Field
434 IVC1ENC_GOPSTRUCTURE_NONUNIFORM : IPBBBBPBBBB
435 IVC1ENC_GOPSTRUCTURE_UNIFORM : BBBBIPBBBBPPBBBB
436
437*/
438
439typedef enum {
440 IVC1ENC_GOPSTRUCTURE_NONUNIFORM = 0,
441 /**< Open Gop structure : IBBPBBP */
442 IVC1ENC_GOPSTRUCTURE_DEFAULT = IVC1ENC_GOPSTRUCTURE_NONUNIFORM,
443 /**< Default is open gop structure */
444 IVC1ENC_GOPSTRUCTURE_UNIFORM = 1,
445 /**< Close Gop structure : BBIBBPBB*/
446 IVC1ENC_GOPSTRUCTURE_MAX
447
448} IVC1ENC_GOPStructure;
449
450/**
451
452 @enum IVC1ENC_BiasFactor
453 @brief Encoder uses bias b/w two possible choices for lot of decisions.
454 It is to control the mild/strongness of the biasing
455
456*/
457typedef enum {
458 IVC1_BIASFACTOR_LOW = 0,
459 /**< Low biasing */
460 IVC1_BIASFACTOR_MEDIUM = 1,
461 /**< Normal/Med biasing */
462 IVC1_BIASFACTOR_NORMAL = IVC1_BIASFACTOR_MEDIUM,
463 /**< Normal/Med biasing */
464 IVC1_BIASFACTOR_DEFAULT = IVC1_BIASFACTOR_MEDIUM,
465 /**< Default :Normal/Med biasing*/
466 IVC1_BIASFACTOR_HIGH = 2,
467 /**< High biasing */
468 IVC1_BIASFACTOR_MILD = 4, /**< Mild biasing */
469 IVC1_BIASFACTOR_ADAPTIVE = 5, /**< Adaptive biasing */
470 IVC1_BIASFACTOR_MAX
471} IVC1ENC_BiasFactor;
472
473
474/**
475 * @enum IVC1ENC_InterlaceCodingType
476 * @brief Profile Identifier for VC1 Encoder
477*/
478typedef enum {
479 IVC1_INTERLACE_PICAFF = 0,
480 /**< PicAFF type of interlace coding */
481 IVC1_INTERLACE_FIELDONLY = 2,
482 /**< Field only coding with fixed partiy scheme */
483 IVC1_INTERLACE_FIELDONLY_MRF = IVC1_INTERLACE_FIELDONLY,
484 /**< Use Most recent field for refernece */
485 IVC1_INTERLACE_FIELDONLY_ARF = 3,
486 /**< codec decides the partiy of of the field to
487 * be used based upon content (adaptive) */
488 IVC1_INTERLACE_DEFAULT = IVC1_INTERLACE_FIELDONLY_ARF,
489 /**< Default : adaptive partiy for reference */
490 IVC1_INTERLACE_FIELDONLY_SPF = 4,
491 /**< Use same parity field for refernece */
492 IVC1_INTERLACE_MAX
493
494} IVC1ENC_InterlaceCodingType;
495
496/**
497
498 @enum IVC1ENC_FrameQualityFactor
499 @brief These enumerations control the quality factor b/w two types of frames
500 For example if user want I frame Quality to be given more importance
501 than P frame, one can define it to be higher quality factor
502
503*/
504typedef enum {
505 IVC1_QUALITY_FACTOR_1 = 0, /**< Same Quality factor
506 * b/w two types of frame
507 */
508 IVC1_QUALITY_FACTOR_DEFAULT = IVC1_QUALITY_FACTOR_1,
509 /**< Default Quality factor
510 * to be used by encoder
511 */
512 IVC1_QUALITY_FACTOR_2 = 1, /**< High Quality factor to
513 * one frame type b/w two types
514 of frame
515 */
516 IVC1_QUALITY_FACTOR_3 = 2, /**< Higher Quality factor to
517 one frame type b/w two types of frame
518 */
519 IVC1_QUALITY_FACTOR_MAX
520
521} IVC1ENC_FrameQualityFactor;
522
523/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
524/* Definition of all the structures define by this interafce */
525/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
526
527/**
528
529 @struct IVC1ENC_RateControlParams
530 @brief This structure contains all the parameters which controls Rate
531 Control behavior
532
533 @param rateControlParamsPreset :
534 regarded @ IVC1ENC_DynamicParams::rateControlParams
535 This Preset controls the USER_DEFINED vs DEFAULT mode. if User is
536 not aware about following fields, it should be set as
537 IVC1_RATECONTROLPARAMS_DEFAULT
538
539 @param rcAlgo : ignored @ IVC1ENC_DynamicParams::rateControlParams
540 This defines the rate control algorithm to be used. Only useful
541 if IVIDENC2::rateControlPreset is set as IVIDEO_USER_DEFINED
542
543 @param qpI : regarded @ IVC1ENC_DynamicParams::rateControlParams
544 Initial Quantization Parameter for I frames.
545 Valid Range is [-1,31]
546 1 : Auto Initialization else other wise Initial QP.
547 when rateControlPreset = IVIDEO_NONE, this quantization parameter is
548 used by the whole video frame/field
549
550 @param qpMaxI : regarded @ IVC1ENC_DynamicParams::rateControlParams
551 Maximum Quantization Parameter for I frame(s). Range [-1,31]
552 Useful to control a minimum quality level
553
554 @param qpMinI : regarded @ IVC1ENC_DynamicParams::rateControlParams
555 Minimum Quantization Parameter for I frame(s). Range [-1,31]
556 Useful to control a maximum bit-rate level
557
558 @param qpP : regarded @ IVC1ENC_DynamicParams::rateControlParams
559 Initial Quantization Parameter for P frames. Valid Range is [-1,31]
560 1 : Auto Initialization else other wise Initial QP.
561 when rateControlPreset = IVIDEO_NONE, this quantization parameter is
562 used by the whole video frame/field
563
564 @param qpMaxP : regarded @ IVC1ENC_DynamicParams::rateControlParams
565 Maximum Quantization Parameter for inter frame(s). Range [-1,31]
566 Useful to control a minimum quality level
567
568 @param qpMinP : regarded @ IVC1ENC_DynamicParams::rateControlParams
569 Minimum Quantization Parameter for inter frame(s). Range [-1,31]
570 Useful to control a maximum bit-rate level
571
572 @param qpOffsetB : regarded @ IVC1ENC_DynamicParams::rateControlParams
573 Offset of B frames Quantization Parameter from P frames.
574 Valid Range is [-1,31]
575 1 : Auto Initialization else other wise user provided offset
576 if after adding the qpOffsetB into qp of P frame it exceeds 31 then
577 it is clipped to 31
578 when rateControlPreset = IVIDEO_NONE, this offset parameter is
579 used by the whole video frame/field
580
581 @param qpMaxB : regarded @ IVC1ENC_DynamicParams::rateControlParams
582 Maximum Quantization Parameter for B frame(s). Range [-1,31]
583 Useful to control a minimum quality level
584
585 @param qpMinB : regarded @ IVC1ENC_DynamicParams::rateControlParams
586 Minimum Quantization Parameter for B frame(s). Range [-1,31]
587 Useful to control a maximum bit-rate level
588
589 @param IPQualityFactor : ignored @ IVC1ENC_DynamicParams::rateControlParams
590 This provides configurality to control I frame Quality wrt to P frame.
591 Higher Quality factor means I frame quality is given higher
592 improtance compared to P frame.
593 Refer IVC1ENC_FrameQualityFactor for possible values
594
595 @param initialBufferLevel :
596 ignored @ IVC1ENC_DynamicParams::rateControlParams
597 Initial Buffer level for HRD compliance. It informs that Hypothtical
598 decoder can start after how much time. The value taken is the
599 obsolute value of the HRD buffer size For example if user want
600 Hypothtical decoder to start taking out data from HRD buffer after
601 half second then it should set initialBufferLevel = half of the
602 HRD buffer size that is programmed.
603
604 @param HRDBufferSize : regarded @ IVC1ENC_DynamicParams::rateControlParams
605 Hypothetical Reference Decoder Buffer Size. This size controls the
606 frame skip logic of the encoder. for low delay applications this
607 size should be small. Unit of this variable is bits
608
609 @param minPicSizeRatio : regarded @ IVC1ENC_DynamicParams::rateControlParams
610 This ratio is used to compute minimum picture size
611 in the following manner,
612 minPicSize = averagePicSize >> minPicSizeRatio
613 allowed values 1 to 4, Setting this to 0 will enable
614 encoder chosen ratio.
615 Note that this is guided value to rate control to
616 determine min picture size and encoder may not
617 strictly follow this
618 @param maxPicSizeRatio : regarded @ IVC1ENC_DynamicParams::rateControlParams
619 To determines ratio for max picture size
620 This ratio is used to compute maximum picture size
621 in the following manner,
622 maxPicSize = averagePicSize * maxPicSizeRatio
623 allowed values 2 to 30.Setting this to 0 and 1
624 will enable encoder chosen ratio.
625 Note that this is guided value to rate control
626 to determine max picture size and encoder may not
627 strictly follow this.
628
629 @param enablePRC : regarded @ IVC1ENC_DynamicParams::rateControlParams
630 This flag is used to control allowing PRC in the frame
631
632 @param enablePartialFrameSkip : regarded @
633 IVC1ENC_DynamicParams::rateControlParams
634 This flag is used to control allowing partial frame
635 skip in the frame
636 @param reserved : 16 bit word, kept to not change the foot print
637
638 @param reservedRC
639 Some part is kept reserved to add parameters later without
640 changing the foot print of interface memory
641
642 @todo More parameters to be added : delay (VBV), PRC related etc..
643
644*/
645
646typedef struct IVC1ENC_RateControlParams {
647 XDAS_Int8 rateControlParamsPreset;
648 XDAS_Int8 rcAlgo;
649 XDAS_Int8 qpI;
650 XDAS_Int8 qpMaxI;
651 XDAS_Int8 qpMinI;
652 XDAS_Int8 qpP;
653 XDAS_Int8 qpMaxP;
654 XDAS_Int8 qpMinP;
655 XDAS_Int8 qpOffsetB;
656 XDAS_Int8 qpMaxB;
657 XDAS_Int8 qpMinB;
658 XDAS_Int8 IPQualityFactor;
659 XDAS_Int32 initialBufferLevel;
660 XDAS_Int32 HRDBufferSize;
661 XDAS_Int16 minPicSizeRatio;
662 XDAS_Int16 maxPicSizeRatio;
663 XDAS_Int8 enablePRC;
664 XDAS_Int8 enablePartialFrameSkip;
665 XDAS_Int8 discardSavedBits;
666 XDAS_Int16 reserved;
667 XDAS_Int32 reservedRC[3];
668} IVC1ENC_RateControlParams;
669
670/**
671
672 @struct IVC1ENC_InterCodingParams
673 @brief This structure contains all the parameters which controls Inter MBs
674 coding behavior
675 @param interCodingPreset
676 This Preset controls the USER_DEFINED vs DEFAULT mode. if User is
677 not aware about following fields, it should be set as
678 IVC1_INTERCODING_DEFAULT
679 @param searchRangeHorP :regarded @ IVC1ENC_DynamicParams::interCodingParams
680 Horizontal Search Range for P frames
681 @param searchRangeVerP :regarded @ IVC1ENC_DynamicParams::interCodingParams
682 Vertical Search Range for P frames
683 @param searchRangeHorB :regarded @ IVC1ENC_DynamicParams::interCodingParams
684 Horizontal Search Range for B frames
685 @param searchRangeVerB :regarded @ IVC1ENC_DynamicParams::interCodingParams
686 Vertical Search Range for B frames
687 @param minBlockSize :regarded @ IVC1ENC_DynamicParams::interCodingParams
688 minimum block size for P and B frames. Refer IVC1ENC_InterBlockSize
689 enumeration to see the valid values
690 @param skipMVCodingBias:regarded @ IVC1ENC_DynamicParams::interCodingParams
691 Bias Control for having a macro block use skip MV vs regular MV
692 refer IVC1ENC_BiasFactor for possible values
693*/
694
695typedef struct IVC1ENC_InterCodingParams {
696 XDAS_Int8 interCodingPreset;
697 XDAS_Int16 searchRangeHorP;
698 XDAS_Int16 searchRangeVerP;
699 XDAS_Int16 searchRangeHorB;
700 XDAS_Int16 searchRangeVerB;
701 XDAS_Int8 minBlockSize;
702 XDAS_Int8 skipMVCodingBias;
703
704} IVC1ENC_InterCodingParams;
705
706/**
707 @struct IVC1ENC_IntraCodingParams
708 @brief This structure contains all the parameters which controls Intra
709 encoding
710
711 @param intraCodingPreset
712 This Preset controls the USER_DEFINED vs DEFAULT mode. if User is
713 not aware about following fields, it should be set as
714 INTRA_CODING_DEFAULT other wise INTRA_CODING_USER_DEFINED
715 @param intraRefreshMethod
716 Mechanism to do intra Refresh, see IVC1ENC_IntraRefreshMethods
717 for valid values
718 @param disableACPrediction
719 Flag to disable AC prediction
720 @param intraRefreshRate
721 Rate at which intra Refresh is done, This rate is specified as
722 One IntraMB per # MBs. For example if rate is 20 it means that
723 there has to be one intra MB(s) per 20 Mbs
724*/
725
726typedef struct IVC1ENC_IntraCodingParams {
727 XDAS_Int8 intraCodingPreset;
728 XDAS_Int8 intraRefreshMethod;
729 XDAS_Int8 disableACPrediction;
730 XDAS_Int16 intraRefreshRate;
731
732} IVC1ENC_IntraCodingParams;
733
734/**
735
736 @struct IVC1ENC_SliceCodingParams
737 @brief This structure contains all the parameters which controls Slice
738 encoding
739
740 @param sliceCodingPreset
741 This Preset controls the USER_DEFINED vs DEFAULT mode. if User is
742 not aware about following fields, it should be set as
743 IVC1_SLICECODING_DEFAULT
744
745 @param sliceMode : regarded @ IVC1ENC_DynamicParams::sliceCodingParams
746 This defines the control mechanism to split a picture in slices.
747 It can be either MB based or bytes based
748
749 @param sliceUnitSize : regarded @ IVC1ENC_DynamicParams::sliceCodingParams
750 parameter informs the number of offset information provided by user.
751 Actual offset are provided with sliceStartOffset
752
753 @param insertPicParamsinSlice: Whether to insert picture header at the start
754 of each slice.
755
756 @param sliceStartOffset[IVC1ENC_MAX_NUM_SLICE_START_OFFSET] : regarded @
757 IVC1ENC_DynamicParams::sliceCodingParams row numbering is assumed to
758 start from 0. Entries in this array must have numbers in ascending
759 order. First slice of the picture is always starting from 0th row
760 of the picture so 0th entry is the offset of second slice in picture
761 Ex 1 : sliceStartRowNum[0] = 25 ,
762 sliceStartRowNum[1] = 30, sliceStartRowNum[2] = 40
763 will result into 4 slices starting from row# 0, 25, 30 and 40
764 Ex 2 : sliceStartRowNum[0] = 25 , sliceStartRowNum[1] = 70,
765 sliceStartRowNum[2] = 60 is invalid
766 Ex 3 : sliceStartRowNum[0] = 25 , sliceStartRowNum[1] = 50,
767 sliceStartRowNum[2] = 100
768 will result into 3 slices starting from row# 0, 25 and 50
769 {if number of rows in picture < (100 + 1) }
770*/
771
772typedef struct IVC1ENC_SliceCodingParams {
773 XDAS_Int8 sliceCodingPreset;
774 XDAS_Int16 sliceMode;
775 XDAS_Int16 sliceUnitSize;
776 XDAS_Int8 insertPicParamsinSlice;
777 XDAS_Int8 sliceStartOffset[IVC1ENC_MAX_NUM_SLICE_START_OFFSET];
778
779} IVC1ENC_SliceCodingParams;
780
781/**
782
783 @struct IVC1ENC_LoopFilterParams
784 @brief This structure contains all the parameters which controls loop
785 filtering operations
786
787 @param loopfilterPreset
788 This Preset controls the USER_DEFINED vs DEFAULT mode. if User is
789 not aware about following fields, it should be set as
790 IVC1_LOOPFILTER_DEFAULT
791 @param loopfilterDisableIDC
792 Controls VC-1 loop filter disabling options
793
794*/
795typedef struct IVC1ENC_LoopFilterParams {
796 XDAS_Int8 loopfilterPreset;
797 XDAS_Int8 loopfilterDisableIDC;
798
799} IVC1ENC_LoopFilterParams;
800
801
802/**< This structure must be the first field of all VC1ENC instance objects */
803typedef struct IVC1ENC_Obj {
804 struct IVC1ENC_Fxns *fxns;
805} IVC1ENC_Obj;
806
807/**<
808
809 @struct IVC1ENC_Params
810 @brief This structure defines the Create time parameters for all
811 VC1ENC objects
812
813 @param videnc2Params must be followed for all video encoders.
814 Base class create params
815 @param rateControlParams Controls all Rate Control related parameters
816 @param interCodingParams Controls all Inter coding related parameters
817 @param intraCodingParams Controls all Intra coding related parameters
818 @param sliceCodingParams Controls all Slice coding related parameters
819 @param loopFilterParams Controls the in-loop filtering process
820
821 @param interlaceCodingType Controls the type of interlaced coding, refer
822 IVC1ENC_InterlaceCodingType for more details
823 @param bottomFieldIntra This field is valid only for interlaced sequences
824 0 = Bottom field of the first I frame in the GOP encoded as
825 P field.
826 non-zero = Bottom field of the first I frame in the GOP encoded as I
827 field.
828
829 @param gopStructure Defines the gop structure type:
830 uniform/non-uniform. For more information refer
831 IVC1ENC_GOPStructure
832 @param streamFormat Controls the stream format to enable/disable
833 headers.
834 @param pConstantMemory This pointer points to the the memory area where
835 constants are located. If this is set to NULL
836 then encoder assumes that all constants are
837 pointed by symbol VC1ENC_TI_ConstData
838
839 @param maxIntraFrameInterval
840 This parameter contains the maximum Intra Frame
841 interval. It is used to reduce the memory
842 requirement of refernce Buffers. Because for all
843 I frame/field configuration the reference frame
844 buffers are not required
845 @param reservedParams Some part is kept reserved to add parameters
846 later without changing the foot print of
847 interface object memory
848*/
849
850typedef struct IVC1ENC_Params {
851 IVIDENC2_Params videnc2Params;
852 IVC1ENC_RateControlParams rateControlParams;
853 IVC1ENC_InterCodingParams interCodingParams;
854 IVC1ENC_IntraCodingParams intraCodingParams;
855 IVC1ENC_SliceCodingParams sliceCodingParams;
856 IVC1ENC_LoopFilterParams loopFilterParams;
857
858 XDAS_Int8 interlaceCodingType;
859 XDAS_Int8 bottomFieldIntra;
860 XDAS_Int8 gopStructure;
861 XDAS_Int8 streamFormat;
862 XDAS_Int32 pConstantMemory;
863 XDAS_Int32 maxIntraFrameInterval;
864 XDAS_Int32 reservedParams[4];
865
866} IVC1ENC_Params;
867
868
869/**<
870
871 @struct IVC1ENC_Status
872 @brief This structure informs back the status of VC1 encoder and tells the
873 value of each control parameter
874
875 @param videnc2Status : must be followed for all video encoders.
876 : Base class status
877 @param rateControlParams : Controls all Rate Control related parameters
878 @param interCodingParams : Controls all Inter coding related parameters
879 @param intraCodingParams : Controls all Intra coding related parameters
880 @param sliceCodingParams : Controls all Slice coding related parameters
881 @param loopFilterParams : Controls the in-loop filtering process
882
883 @param interlaceCodingType : Controls the type of interlaced coding
884 @param bottomFieldIntra : This field valid only for interlaced sequences
885 0 = Bottom field of the first I frame in the
886 GOP encoded as P field.
887 non-zero = Bottom field of the first I frame in
888 the GOP encoded as I field.
889 @param gopStructure : Defines the gop structure type: Open/Close.
890 @param maxIntraFrameInterval: This parameter contains the maximum Intra Frame
891 interval. It is used to reduce the memory
892 requirement of refernce Buffers. Because for
893 all I frame/field configuration the reference
894 frame buffers are not required
895 @param searchCenter : seacrh Center for motion estimation
896 @param reservedStatus : Some part is kept reserved to add parameters
897 later without changing the foot print of
898 interface memory
899*/
900
901typedef struct IVC1ENC_Status {
902 IVIDENC2_Status videnc2Status;
903 IVC1ENC_RateControlParams rateControlParams;
904 IVC1ENC_InterCodingParams interCodingParams;
905 IVC1ENC_IntraCodingParams intraCodingParams;
906 IVC1ENC_SliceCodingParams sliceCodingParams;
907 IVC1ENC_LoopFilterParams loopFilterParams;
908
909 XDAS_Int8 interlaceCodingType;
910 XDAS_Int8 bottomFieldIntra;
911 XDAS_Int8 gopStructure;
912 XDAS_Int32 maxIntraFrameInterval;
913 XDM_Point searchCenter;
914 XDAS_Int32 reservedStatus[4];
915
916} IVC1ENC_Status;
917
918/**<
919
920 @struct IVC1ENC_DynamicParams
921 @brief This structure defines the run time parameters for all VC1ENC objects
922
923 @param videnc2DynamicParams must be followed for all video encoders
924 @param rateControlParams Controls all Rate Control related parameters.
925 only few are supported to be changed as
926 part @ Control call. Refer
927 IVC1ENC_RateControlParams to find out
928 @param interCodingParams Controls all inter MB coding related parameters.
929 only few are supported to be changed as
930 part @ Control call. Refer interCodingParams to
931 find out
932 @param sliceCodingParams Controls all Slice coding related parameters.
933 only few are supported to be changed as
934 part @ Control call.
935 Refer sliceCodingParams to find out
936 @param searchCenter seacrh Center for motion estimation.
937 XDM_Point.x == 0xFFFF means ignore searchCenter
938 @param reservedDynParams Some part is kept reserved to add parameters
939 later without changing the foot print of
940 interface memory
941*/
942
943typedef struct IVC1ENC_DynamicParams {
944
945 IVIDENC2_DynamicParams videnc2DynamicParams;
946 IVC1ENC_RateControlParams rateControlParams;
947 IVC1ENC_InterCodingParams interCodingParams;
948 IVC1ENC_SliceCodingParams sliceCodingParams;
949 XDM_Point searchCenter;
950 XDAS_Int32 reservedDynParams[4];
951
952} IVC1ENC_DynamicParams;
953
954/**<
955
956 @struct IVC1ENC_InArgs
957 @brief This structure defines the input argument being passed to
958 VC1 encoder
959
960 @param videnc2InArgs : It is instance of base class. It contains all
961 the necessary info required run time parameters for
962 all VC1ENC objects
963
964*/
965typedef struct IVC1ENC_InArgs {
966
967 IVIDENC2_InArgs videnc2InArgs;
968
969} IVC1ENC_InArgs;
970
971/**<
972
973 @struct IVC1ENC_OutArgs
974 @brief This structure defines the outpur argument being generated from VC1
975 encoder
976
977 @param videnc2OutArgs : It is instance of base class. It contains all
978 the necessary info encoder should produce
979 @param vbvBufferLevel: This variable tells the buffer level at the end of
980 every picture from decoder perspective.the value
981 populated in this variable is latest for every
982 process call
983*/
984typedef struct IVC1ENC_OutArgs {
985
986 IVIDENC2_OutArgs videnc2OutArgs;
987 XDAS_Int32 vbvBufferLevel;
988} IVC1ENC_OutArgs;
989
990/**<
991
992 IVC1ENC_Cmd:This structure defines of the control commands for VC1ENC objects
993*/
994
995typedef IVIDENC2_Cmd IVC1ENC_Cmd;
996
997/**<
998
999 @struct IVC1ENC_Fxns
1000 @brief This structure defines of the operations on VC1ENC objects
1001
1002 @param IVIDENC2_Fxns : It is instance of base class. It contains all
1003 function table
1004
1005*/
1006typedef struct IVC1ENC_Fxns {
1007 IVIDENC2_Fxns ividenc;
1008
1009} IVC1ENC_Fxns;
1010
1011
1012/**<Default parameter values for VC1ENC instance objects */
1013extern const IVC1ENC_Params VC1ENC_TI_PARAMS;
1014
1015
1016#ifdef __cplusplus
1017extern "C" {
1018#endif
1019
1020#endif /*_IVC1ENC_H_*/
1021
1022/* ========================================================================== */
1023/* End of file: ivc1enc.h */
1024/* -------------------------------------------------------------------------- */
1025/* Copyright (c) 2010 Texas Instruments, Incorporated. */
1026/* All Rights Reserved. */
1027/* ========================================================================== */
1028