xref: /utopia/UTPA2-700.0.x/modules/vdec_v1/api/vdec/vdec_private.h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1*53ee8cc1Swenshuai.xi //<MStar Software>
2*53ee8cc1Swenshuai.xi //******************************************************************************
3*53ee8cc1Swenshuai.xi // MStar Software
4*53ee8cc1Swenshuai.xi // Copyright (c) 2010 - 2012 MStar Semiconductor, Inc. All rights reserved.
5*53ee8cc1Swenshuai.xi // All software, firmware and related documentation herein ("MStar Software") are
6*53ee8cc1Swenshuai.xi // intellectual property of MStar Semiconductor, Inc. ("MStar") and protected by
7*53ee8cc1Swenshuai.xi // law, including, but not limited to, copyright law and international treaties.
8*53ee8cc1Swenshuai.xi // Any use, modification, reproduction, retransmission, or republication of all
9*53ee8cc1Swenshuai.xi // or part of MStar Software is expressly prohibited, unless prior written
10*53ee8cc1Swenshuai.xi // permission has been granted by MStar.
11*53ee8cc1Swenshuai.xi //
12*53ee8cc1Swenshuai.xi // By accessing, browsing and/or using MStar Software, you acknowledge that you
13*53ee8cc1Swenshuai.xi // have read, understood, and agree, to be bound by below terms ("Terms") and to
14*53ee8cc1Swenshuai.xi // comply with all applicable laws and regulations
15*53ee8cc1Swenshuai.xi //
16*53ee8cc1Swenshuai.xi // 1. MStar shall retain any and all right, ownership and interest to MStar
17*53ee8cc1Swenshuai.xi //    Software and any modification/derivatives thereof.
18*53ee8cc1Swenshuai.xi //    No right, ownership, or interest to MStar Software and any
19*53ee8cc1Swenshuai.xi //    modification/derivatives thereof is transferred to you under Terms.
20*53ee8cc1Swenshuai.xi //
21*53ee8cc1Swenshuai.xi // 2. You understand that MStar Software might include, incorporate or be
22*53ee8cc1Swenshuai.xi //    supplied together with third party`s software and the use of MStar
23*53ee8cc1Swenshuai.xi //    Software may require additional licenses from third parties.
24*53ee8cc1Swenshuai.xi //    Therefore, you hereby agree it is your sole responsibility to separately
25*53ee8cc1Swenshuai.xi //    obtain any and all third party right and license necessary for your use of
26*53ee8cc1Swenshuai.xi //    such third party`s software.
27*53ee8cc1Swenshuai.xi //
28*53ee8cc1Swenshuai.xi // 3. MStar Software and any modification/derivatives thereof shall be deemed as
29*53ee8cc1Swenshuai.xi //    MStar`s confidential information and you agree to keep MStar`s
30*53ee8cc1Swenshuai.xi //    confidential information in strictest confidence and not disclose to any
31*53ee8cc1Swenshuai.xi //    third party.
32*53ee8cc1Swenshuai.xi //
33*53ee8cc1Swenshuai.xi // 4. MStar Software is provided on an "AS IS" basis without warranties of any
34*53ee8cc1Swenshuai.xi //    kind. Any warranties are hereby expressly disclaimed by MStar, including
35*53ee8cc1Swenshuai.xi //    without limitation, any warranties of merchantability, non-infringement of
36*53ee8cc1Swenshuai.xi //    intellectual property rights, fitness for a particular purpose, error free
37*53ee8cc1Swenshuai.xi //    and in conformity with any international standard.  You agree to waive any
38*53ee8cc1Swenshuai.xi //    claim against MStar for any loss, damage, cost or expense that you may
39*53ee8cc1Swenshuai.xi //    incur related to your use of MStar Software.
40*53ee8cc1Swenshuai.xi //    In no event shall MStar be liable for any direct, indirect, incidental or
41*53ee8cc1Swenshuai.xi //    consequential damages, including without limitation, lost of profit or
42*53ee8cc1Swenshuai.xi //    revenues, lost or damage of data, and unauthorized system use.
43*53ee8cc1Swenshuai.xi //    You agree that this Section 4 shall still apply without being affected
44*53ee8cc1Swenshuai.xi //    even if MStar Software has been modified by MStar in accordance with your
45*53ee8cc1Swenshuai.xi //    request or instruction for your use, except otherwise agreed by both
46*53ee8cc1Swenshuai.xi //    parties in writing.
47*53ee8cc1Swenshuai.xi //
48*53ee8cc1Swenshuai.xi // 5. If requested, MStar may from time to time provide technical supports or
49*53ee8cc1Swenshuai.xi //    services in relation with MStar Software to you for your use of
50*53ee8cc1Swenshuai.xi //    MStar Software in conjunction with your or your customer`s product
51*53ee8cc1Swenshuai.xi //    ("Services").
52*53ee8cc1Swenshuai.xi //    You understand and agree that, except otherwise agreed by both parties in
53*53ee8cc1Swenshuai.xi //    writing, Services are provided on an "AS IS" basis and the warranty
54*53ee8cc1Swenshuai.xi //    disclaimer set forth in Section 4 above shall apply.
55*53ee8cc1Swenshuai.xi //
56*53ee8cc1Swenshuai.xi // 6. Nothing contained herein shall be construed as by implication, estoppels
57*53ee8cc1Swenshuai.xi //    or otherwise
58*53ee8cc1Swenshuai.xi //    (a) conferring any license or right to use MStar name, trademark, service
59*53ee8cc1Swenshuai.xi //        mark, symbol or any other identification;
60*53ee8cc1Swenshuai.xi //    (b) obligating MStar or any of its affiliates to furnish any person,
61*53ee8cc1Swenshuai.xi //        including without limitation, you and your customers, any assistance
62*53ee8cc1Swenshuai.xi //        of any kind whatsoever, or any information; or
63*53ee8cc1Swenshuai.xi //    (c) conferring any license or right under any intellectual property right.
64*53ee8cc1Swenshuai.xi //
65*53ee8cc1Swenshuai.xi // 7. These terms shall be governed by and construed in accordance with the laws
66*53ee8cc1Swenshuai.xi //    of Taiwan, R.O.C., excluding its conflict of law rules.
67*53ee8cc1Swenshuai.xi //    Any and all dispute arising out hereof or related hereto shall be finally
68*53ee8cc1Swenshuai.xi //    settled by arbitration referred to the Chinese Arbitration Association,
69*53ee8cc1Swenshuai.xi //    Taipei in accordance with the ROC Arbitration Law and the Arbitration
70*53ee8cc1Swenshuai.xi //    Rules of the Association by three (3) arbitrators appointed in accordance
71*53ee8cc1Swenshuai.xi //    with the said Rules.
72*53ee8cc1Swenshuai.xi //    The place of arbitration shall be in Taipei, Taiwan and the language shall
73*53ee8cc1Swenshuai.xi //    be English.
74*53ee8cc1Swenshuai.xi //    The arbitration award shall be final and binding to both parties.
75*53ee8cc1Swenshuai.xi //
76*53ee8cc1Swenshuai.xi //******************************************************************************
77*53ee8cc1Swenshuai.xi 
78*53ee8cc1Swenshuai.xi #ifndef _API_VDEC_V2_PRIV_H_
79*53ee8cc1Swenshuai.xi #define _API_VDEC_V2_PRIV_H_
80*53ee8cc1Swenshuai.xi 
81*53ee8cc1Swenshuai.xi #include "apiVDEC.h"
82*53ee8cc1Swenshuai.xi 
83*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
84*53ee8cc1Swenshuai.xi // Header Files
85*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
86*53ee8cc1Swenshuai.xi #ifdef __cplusplus
87*53ee8cc1Swenshuai.xi extern "C"
88*53ee8cc1Swenshuai.xi {
89*53ee8cc1Swenshuai.xi #endif
90*53ee8cc1Swenshuai.xi 
91*53ee8cc1Swenshuai.xi 
92*53ee8cc1Swenshuai.xi 
93*53ee8cc1Swenshuai.xi 
94*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
95*53ee8cc1Swenshuai.xi // Enum for VDEC layer
96*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
97*53ee8cc1Swenshuai.xi /*
98*53ee8cc1Swenshuai.xi enum
99*53ee8cc1Swenshuai.xi {
100*53ee8cc1Swenshuai.xi     E_VDEC_POOL_ID_INTERNAL = 0,
101*53ee8cc1Swenshuai.xi     E_VDEC_POOL_ID_MAX,
102*53ee8cc1Swenshuai.xi } E_VDEC_POOL_ID;
103*53ee8cc1Swenshuai.xi */
104*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
105*53ee8cc1Swenshuai.xi // Structure for VDEC layer
106*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
107*53ee8cc1Swenshuai.xi 
108*53ee8cc1Swenshuai.xi typedef struct
109*53ee8cc1Swenshuai.xi {
110*53ee8cc1Swenshuai.xi     MS_U8 u8DecoderInUse;
111*53ee8cc1Swenshuai.xi }VDEC_RESOURCE_PRIVATE;
112*53ee8cc1Swenshuai.xi 
113*53ee8cc1Swenshuai.xi 
114*53ee8cc1Swenshuai.xi 
115*53ee8cc1Swenshuai.xi 
116*53ee8cc1Swenshuai.xi 
117*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
118*53ee8cc1Swenshuai.xi // Function pointer for VDEC layer
119*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
120*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_GetLibVer)                    (const MSIF_Version **);
121*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_GetInfo)                      (const VDEC_Info **);
122*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_GetStatus)                    (VDEC_Status *);
123*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_CheckCaps)                    (VDEC_CodecType);
124*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_EnableTurboMode)              (MS_BOOL);
125*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_Init)                         (VDEC_InitParam*);
126*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_Init_EX)                      (void *, MS_U32);
127*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_Rst)                          (void);
128*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_Exit)                         (MS_BOOL);
129*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_CheckDispInfoRdy)             (void);
130*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_SetFrcMode)                   (VDEC_FrcMode);
131*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_SetDynScalingParams)          (MS_PHYADDR, MS_U32);
132*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_Play)                         (void);
133*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_Pause)                        (void);
134*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_Resume)                       (void);
135*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_StepDisp)                     (void);
136*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_IsStepDispDone)               (void);
137*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_SeekToPTS)                    (MS_U32);
138*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_SkipToPTS)                    (MS_U32);
139*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_StepDecode)                   (void);
140*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_IsStepDecodeDone)             (void);
141*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_SetTrickMode)                 (VDEC_TrickDec);
142*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_PushDecQ)                     (VDEC_DecCmd*);
143*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_FireDecCmd)                   (void);
144*53ee8cc1Swenshuai.xi typedef MS_U32           (*IOCTL_VDEC_GetDecQVacancy)               (void);
145*53ee8cc1Swenshuai.xi typedef MS_BOOL          (*IOCTL_VDEC_IsCCAvailable)                (void);
146*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_GetCCInfo)                    (void *, MS_U32);
147*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_Flush)                        (VDEC_FreezePicSelect);
148*53ee8cc1Swenshuai.xi typedef MS_U32           (*IOCTL_VDEC_GetESWritePtr)                (void);
149*53ee8cc1Swenshuai.xi typedef MS_U32           (*IOCTL_VDEC_GetESReadPtr)                 (void);
150*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_EnableLastFrameShow)          (MS_BOOL);
151*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_IsDispFinish)                 (void);
152*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_SetSpeed)                     (VDEC_SpeedType, VDEC_DispSpeed);
153*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_IsFrameRdy)                   (void);
154*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_SetFreezeDisp)                (MS_BOOL);
155*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_SetBlueScreen)                (MS_BOOL);
156*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_ResetPTS)                     (MS_U32);
157*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_AVSyncOn)                     (MS_BOOL, MS_U32, MS_U16);
158*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_SetAVSyncFreerunThreshold)    (MS_U32);
159*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_IsAVSyncOn)                   (void);
160*53ee8cc1Swenshuai.xi typedef MS_U32           (*IOCTL_VDEC_GetPTS)                       (void);
161*53ee8cc1Swenshuai.xi typedef MS_U32           (*IOCTL_VDEC_GetNextPTS)                   (void);
162*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_IsStartSync)                  (void);
163*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_IsReachSync)                  (void);
164*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_IsFreerun)                    (void);
165*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_MhegDecodeIFrame)             (MS_PHYADDR,MS_PHYADDR,MS_PHYADDR);
166*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_MhegIsIFrameDecoding)         (void);
167*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_MhegRstIFrameDec)             (void);
168*53ee8cc1Swenshuai.xi typedef MS_U32           (*IOCTL_VDEC_GetErrCode)                   (void);
169*53ee8cc1Swenshuai.xi typedef MS_U32           (*IOCTL_VDEC_GetErrCnt)                    (void);
170*53ee8cc1Swenshuai.xi typedef VDEC_CodecType   (*IOCTL_VDEC_GetActiveCodecType)           (void);
171*53ee8cc1Swenshuai.xi typedef MS_U32           (*IOCTL_VDEC_GetBitsRate)                  (void);
172*53ee8cc1Swenshuai.xi typedef MS_BOOL          (*IOCTL_VDEC_Is32PullDown)                 (void);
173*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_IsAlive)                      (void);
174*53ee8cc1Swenshuai.xi typedef MS_S64           (*IOCTL_VDEC_GetVideoPtsStcDelta)          (void);
175*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_IsWithValidStream)            (void);
176*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_IsIFrameFound)                (void);
177*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_IsWithLowDelay)               (void);
178*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_IsAllBufferEmpty)             (void);
179*53ee8cc1Swenshuai.xi typedef MS_U8            (*IOCTL_VDEC_GetGOPCnt)                    (void);
180*53ee8cc1Swenshuai.xi typedef MS_U32           (*IOCTL_VDEC_GetFrameCnt)                  (void);
181*53ee8cc1Swenshuai.xi typedef MS_U32           (*IOCTL_VDEC_GetSkipCnt)                   (void);
182*53ee8cc1Swenshuai.xi typedef MS_U32           (*IOCTL_VDEC_GetDropCnt)                   (void);
183*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_GetDispInfo)                  (VDEC_DispInfo *);
184*53ee8cc1Swenshuai.xi typedef VDEC_TrickDec    (*IOCTL_VDEC_GetTrickMode)                 (void);
185*53ee8cc1Swenshuai.xi typedef MS_U8            (*IOCTL_VDEC_GetActiveFormat)              (void);
186*53ee8cc1Swenshuai.xi typedef MS_U8            (*IOCTL_VDEC_GetColourPrimaries)           (void);
187*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_GetHWKey)                     (MS_U8 *);
188*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_IsSeqChg)                     (void);
189*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_SetDbgLevel)                  (VDEC_DbgLevel);
190*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_GetDecFrameInfo)              (VDEC_FrameInfo *);
191*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_GetDispFrameInfo)             (VDEC_FrameInfo *);
192*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_GetExtDispInfo)               (VDEC_ExtDispInfo *);
193*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_GetDecTimeCode)               (VDEC_TimeCode *);
194*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_GetDispTimeCode)              (VDEC_TimeCode *);
195*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_CC_StartParsing)              (VDEC_CCCfg* );
196*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_CC_StopParsing)               (VDEC_CCCfg* );
197*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_CC_GetWritePtr)               (MS_U32* );
198*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_CC_GetReadPtr)                (MS_U32* );
199*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_CC_UpdateReadPtr)             (MS_U32);
200*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_CC_GetIsOverflow)             (MS_BOOL*);
201*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_SetEvent)                     (MS_U32, VDEC_EventCb, void *);
202*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_UnsetEvent)                   (MS_U32);
203*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_SetEvent_EX)                  (VDEC_CB_TYPE, MS_U32, VDEC_EventCb, void*);
204*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_UnsetEvent_EX)                (VDEC_CB_TYPE, MS_U32);
205*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_GetEventInfo)                 (MS_U32*);
206*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_GenPattern)                   (VDEC_PatternType,  MS_PHYADDR, MS_U32 *);
207*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_GetPatternLeastLength)        (VDEC_PatternType);
208*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_DisableDeblocking)            (MS_BOOL);
209*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_DisableQuarterPixel)          (MS_BOOL);
210*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_SetAutoRmLstZeroByte)         (MS_BOOL);
211*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_SetBalanceBW)                 (MS_U8, MS_U8, MS_U8, MS_U8);
212*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_DbgDumpStatus)                (void);
213*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_SetControl)                   (VDEC_User_Cmd, MS_U32);
214*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_GetControl)                   (VDEC_User_Cmd, MS_U32);
215*53ee8cc1Swenshuai.xi typedef MS_U32           (*IOCTL_VDEC_GetDispCnt)                   (void);
216*53ee8cc1Swenshuai.xi typedef MS_U32           (*IOCTL_VDEC_GetFwVersion)                 (VDEC_FwType);
217*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_SetBlockDisplay)              (MS_BOOL);
218*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_EnableESBuffMalloc)           (MS_BOOL);
219*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_GetESBuffVacancy)             (void*);
220*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_GetESBuff)                    (MS_U32, MS_U32*, MS_PHYADDR* );
221*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_GetNextDispFrame)             (VDEC_DispFrame** );
222*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_DisplayFrame)                 (VDEC_DispFrame* );
223*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_ReleaseFrame)                 (VDEC_DispFrame* );
224*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_FlushPTSBuf)                  (void);
225*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_CaptureFrame)                 (MS_U32, MS_BOOL);
226*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_CC_Init)                      (MS_U32*);
227*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_CC_SetCfg)                    (VDEC_CCFormat, VDEC_CCType, MS_U32*);
228*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_CC_SetBuffStartAdd)           (VDEC_CCFormat, MS_U32*);
229*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_CC_UpdateWriteAdd)            (VDEC_CCFormat, MS_U32*);
230*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_CC_UpdateReadAdd)             (VDEC_CCFormat, MS_U32*);
231*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_CC_DisableParsing)            (VDEC_CCFormat);
232*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_CC_GetInfo)                   (VDEC_CCFormat, VDEC_CCInfoCmd, MS_U32 *);
233*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_CC_GetIsRstDone)              (VDEC_CCFormat);
234*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_CC_GetIsBuffOverflow)         (VDEC_CCFormat);
235*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_CC_GetWriteAdd)               (VDEC_CCFormat);
236*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_CC_GetReadAdd)                (VDEC_CCFormat);
237*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_CC_SystemPreSetControl)       (VDEC_User_Cmd, void *);
238*53ee8cc1Swenshuai.xi typedef VDEC_Result      (*IOCTL_VDEC_CC_PreSetControl)             (VDEC_User_Cmd, MS_U32 **);
239*53ee8cc1Swenshuai.xi 
240*53ee8cc1Swenshuai.xi typedef struct
241*53ee8cc1Swenshuai.xi {
242*53ee8cc1Swenshuai.xi     // instance variable
243*53ee8cc1Swenshuai.xi     //MS_U8                                Index_of_decoder;
244*53ee8cc1Swenshuai.xi     // Function pointer
245*53ee8cc1Swenshuai.xi     //IOCTL_VDEC_GetFreeStream          fpVDEC_EX_GetFreeStream;
246*53ee8cc1Swenshuai.xi 
247*53ee8cc1Swenshuai.xi     IOCTL_VDEC_GetLibVer                    fpVDEC_GetLibVer;
248*53ee8cc1Swenshuai.xi     IOCTL_VDEC_GetInfo                      fpVDEC_GetInfo;
249*53ee8cc1Swenshuai.xi     IOCTL_VDEC_GetStatus                    fpVDEC_GetStatus;
250*53ee8cc1Swenshuai.xi     IOCTL_VDEC_CheckCaps                    fpVDEC_CheckCaps;
251*53ee8cc1Swenshuai.xi     IOCTL_VDEC_EnableTurboMode              fpVDEC_EnableTurboMode;
252*53ee8cc1Swenshuai.xi     IOCTL_VDEC_Init                         fpVDEC_Init;
253*53ee8cc1Swenshuai.xi     IOCTL_VDEC_Init_EX                      fpVDEC_Init_EX;
254*53ee8cc1Swenshuai.xi     IOCTL_VDEC_Rst                          fpVDEC_Rst;
255*53ee8cc1Swenshuai.xi     IOCTL_VDEC_Exit                         fpVDEC_Exit;
256*53ee8cc1Swenshuai.xi     IOCTL_VDEC_CheckDispInfoRdy             fpVDEC_CheckDispInfoRdy;
257*53ee8cc1Swenshuai.xi     IOCTL_VDEC_SetFrcMode                   fpVDEC_SetFrcMode;
258*53ee8cc1Swenshuai.xi     IOCTL_VDEC_SetDynScalingParams          fpVDEC_SetDynScalingParams;
259*53ee8cc1Swenshuai.xi     IOCTL_VDEC_Play                         fpVDEC_Play;
260*53ee8cc1Swenshuai.xi     IOCTL_VDEC_Pause                        fpVDEC_Pause;
261*53ee8cc1Swenshuai.xi     IOCTL_VDEC_Resume                       fpVDEC_Resume;
262*53ee8cc1Swenshuai.xi     IOCTL_VDEC_StepDisp                     fpVDEC_StepDisp;
263*53ee8cc1Swenshuai.xi     IOCTL_VDEC_IsStepDispDone               fpVDEC_IsStepDispDone;
264*53ee8cc1Swenshuai.xi     IOCTL_VDEC_SeekToPTS                    fpVDEC_SeekToPTS;
265*53ee8cc1Swenshuai.xi     IOCTL_VDEC_SkipToPTS                    fpVDEC_SkipToPTS;
266*53ee8cc1Swenshuai.xi     IOCTL_VDEC_StepDecode                   fpVDEC_StepDecode;
267*53ee8cc1Swenshuai.xi     IOCTL_VDEC_IsStepDecodeDone             fpVDEC_IsStepDecodeDone;
268*53ee8cc1Swenshuai.xi     IOCTL_VDEC_SetTrickMode                 fpVDEC_SetTrickMode;
269*53ee8cc1Swenshuai.xi     IOCTL_VDEC_PushDecQ                     fpVDEC_PushDecQ;
270*53ee8cc1Swenshuai.xi     IOCTL_VDEC_FireDecCmd                   fpVDEC_FireDecCmd;
271*53ee8cc1Swenshuai.xi     IOCTL_VDEC_GetDecQVacancy               fpVDEC_GetDecQVacancy;
272*53ee8cc1Swenshuai.xi     IOCTL_VDEC_IsCCAvailable                fpVDEC_IsCCAvailable;
273*53ee8cc1Swenshuai.xi     IOCTL_VDEC_GetCCInfo                    fpVDEC_GetCCInfo;
274*53ee8cc1Swenshuai.xi     IOCTL_VDEC_Flush                        fpVDEC_Flush;
275*53ee8cc1Swenshuai.xi     IOCTL_VDEC_GetESWritePtr                fpVDEC_GetESWritePtr;
276*53ee8cc1Swenshuai.xi     IOCTL_VDEC_GetESReadPtr                 fpVDEC_GetESReadPtr;
277*53ee8cc1Swenshuai.xi     IOCTL_VDEC_EnableLastFrameShow          fpVDEC_EnableLastFrameShow;
278*53ee8cc1Swenshuai.xi     IOCTL_VDEC_IsDispFinish                 fpVDEC_IsDispFinish;
279*53ee8cc1Swenshuai.xi     IOCTL_VDEC_SetSpeed                     fpVDEC_SetSpeed;
280*53ee8cc1Swenshuai.xi     IOCTL_VDEC_IsFrameRdy                   fpVDEC_IsFrameRdy;
281*53ee8cc1Swenshuai.xi     IOCTL_VDEC_SetFreezeDisp                fpVDEC_SetFreezeDisp;
282*53ee8cc1Swenshuai.xi     IOCTL_VDEC_SetBlueScreen                fpVDEC_SetBlueScreen;
283*53ee8cc1Swenshuai.xi     IOCTL_VDEC_ResetPTS                     fpVDEC_ResetPTS;
284*53ee8cc1Swenshuai.xi     IOCTL_VDEC_AVSyncOn                     fpVDEC_AVSyncOn;
285*53ee8cc1Swenshuai.xi     IOCTL_VDEC_SetAVSyncFreerunThreshold    fpVDEC_SetAVSyncFreerunThreshold;
286*53ee8cc1Swenshuai.xi     IOCTL_VDEC_IsAVSyncOn                   fpVDEC_IsAVSyncOn;
287*53ee8cc1Swenshuai.xi     IOCTL_VDEC_GetPTS                       fpVDEC_GetPTS;
288*53ee8cc1Swenshuai.xi     IOCTL_VDEC_GetNextPTS                   fpVDEC_GetNextPTS;
289*53ee8cc1Swenshuai.xi     IOCTL_VDEC_IsStartSync                  fpVDEC_IsStartSync;
290*53ee8cc1Swenshuai.xi     IOCTL_VDEC_IsReachSync                  fpVDEC_IsReachSync;
291*53ee8cc1Swenshuai.xi     IOCTL_VDEC_IsFreerun                    fpVDEC_IsFreerun;
292*53ee8cc1Swenshuai.xi     IOCTL_VDEC_MhegDecodeIFrame             fpVDEC_MhegDecodeIFrame;
293*53ee8cc1Swenshuai.xi     IOCTL_VDEC_MhegIsIFrameDecoding         fpVDEC_MhegIsIFrameDecoding;
294*53ee8cc1Swenshuai.xi     IOCTL_VDEC_MhegRstIFrameDec             fpVDEC_MhegRstIFrameDec;
295*53ee8cc1Swenshuai.xi     IOCTL_VDEC_GetErrCode                   fpVDEC_GetErrCode;
296*53ee8cc1Swenshuai.xi     IOCTL_VDEC_GetErrCnt                    fpVDEC_GetErrCnt;
297*53ee8cc1Swenshuai.xi     IOCTL_VDEC_GetActiveCodecType           fpVDEC_GetActiveCodecType;
298*53ee8cc1Swenshuai.xi     IOCTL_VDEC_GetBitsRate                  fpVDEC_GetBitsRate;
299*53ee8cc1Swenshuai.xi     IOCTL_VDEC_Is32PullDown                 fpVDEC_Is32PullDown;
300*53ee8cc1Swenshuai.xi     IOCTL_VDEC_IsAlive                      fpVDEC_IsAlive;
301*53ee8cc1Swenshuai.xi     IOCTL_VDEC_GetVideoPtsStcDelta          fpVDEC_GetVideoPtsStcDelta;
302*53ee8cc1Swenshuai.xi     IOCTL_VDEC_IsWithValidStream            fpVDEC_IsWithValidStream;
303*53ee8cc1Swenshuai.xi     IOCTL_VDEC_IsIFrameFound                fpVDEC_IsIFrameFound;
304*53ee8cc1Swenshuai.xi     IOCTL_VDEC_IsWithLowDelay               fpVDEC_IsWithLowDelay;
305*53ee8cc1Swenshuai.xi     IOCTL_VDEC_IsAllBufferEmpty             fpVDEC_IsAllBufferEmpty;
306*53ee8cc1Swenshuai.xi     IOCTL_VDEC_GetGOPCnt                    fpVDEC_GetGOPCnt;
307*53ee8cc1Swenshuai.xi     IOCTL_VDEC_GetFrameCnt                  fpVDEC_GetFrameCnt;
308*53ee8cc1Swenshuai.xi     IOCTL_VDEC_GetSkipCnt                   fpVDEC_GetSkipCnt;
309*53ee8cc1Swenshuai.xi     IOCTL_VDEC_GetDropCnt                   fpVDEC_GetDropCnt;
310*53ee8cc1Swenshuai.xi     IOCTL_VDEC_GetDispInfo                  fpVDEC_GetDispInfo;
311*53ee8cc1Swenshuai.xi     IOCTL_VDEC_GetTrickMode                 fpVDEC_GetTrickMode;
312*53ee8cc1Swenshuai.xi     IOCTL_VDEC_GetActiveFormat              fpVDEC_GetActiveFormat;
313*53ee8cc1Swenshuai.xi     IOCTL_VDEC_GetColourPrimaries           fpVDEC_GetColourPrimaries;
314*53ee8cc1Swenshuai.xi     IOCTL_VDEC_GetHWKey                     fpVDEC_GetHWKey;
315*53ee8cc1Swenshuai.xi     IOCTL_VDEC_IsSeqChg                     fpVDEC_IsSeqChg;
316*53ee8cc1Swenshuai.xi     IOCTL_VDEC_SetDbgLevel                  fpVDEC_SetDbgLevel;
317*53ee8cc1Swenshuai.xi     IOCTL_VDEC_GetDecFrameInfo              fpVDEC_GetDecFrameInfo;
318*53ee8cc1Swenshuai.xi     IOCTL_VDEC_GetDispFrameInfo             fpVDEC_GetDispFrameInfo;
319*53ee8cc1Swenshuai.xi     IOCTL_VDEC_GetExtDispInfo               fpVDEC_GetExtDispInfo;
320*53ee8cc1Swenshuai.xi     IOCTL_VDEC_GetDecTimeCode               fpVDEC_GetDecTimeCode;
321*53ee8cc1Swenshuai.xi     IOCTL_VDEC_GetDispTimeCode              fpVDEC_GetDispTimeCode;
322*53ee8cc1Swenshuai.xi     IOCTL_VDEC_CC_StartParsing              fpVDEC_CC_StartParsing;
323*53ee8cc1Swenshuai.xi     IOCTL_VDEC_CC_StopParsing               fpVDEC_CC_StopParsing;
324*53ee8cc1Swenshuai.xi     IOCTL_VDEC_CC_GetWritePtr               fpVDEC_CC_GetWritePtr;
325*53ee8cc1Swenshuai.xi     IOCTL_VDEC_CC_GetReadPtr                fpVDEC_CC_GetReadPtr;
326*53ee8cc1Swenshuai.xi     IOCTL_VDEC_CC_UpdateReadPtr             fpVDEC_CC_UpdateReadPtr;
327*53ee8cc1Swenshuai.xi     IOCTL_VDEC_CC_GetIsOverflow             fpVDEC_CC_GetIsOverflow;
328*53ee8cc1Swenshuai.xi     IOCTL_VDEC_SetEvent                     fpVDEC_SetEvent;
329*53ee8cc1Swenshuai.xi     IOCTL_VDEC_UnsetEvent                   fpVDEC_UnsetEvent;
330*53ee8cc1Swenshuai.xi     IOCTL_VDEC_SetEvent_EX                  fpVDEC_SetEvent_EX;
331*53ee8cc1Swenshuai.xi     IOCTL_VDEC_UnsetEvent_EX                fpVDEC_UnsetEvent_EX;
332*53ee8cc1Swenshuai.xi     IOCTL_VDEC_GetEventInfo                 fpVDEC_GetEventInfo;
333*53ee8cc1Swenshuai.xi     IOCTL_VDEC_GenPattern                   fpVDEC_GenPattern;
334*53ee8cc1Swenshuai.xi     IOCTL_VDEC_GetPatternLeastLength        fpVDEC_GetPatternLeastLength;
335*53ee8cc1Swenshuai.xi     IOCTL_VDEC_DisableDeblocking            fpVDEC_DisableDeblocking;
336*53ee8cc1Swenshuai.xi     IOCTL_VDEC_DisableQuarterPixel          fpVDEC_DisableQuarterPixel;
337*53ee8cc1Swenshuai.xi     IOCTL_VDEC_SetAutoRmLstZeroByte         fpVDEC_SetAutoRmLstZeroByte;
338*53ee8cc1Swenshuai.xi     IOCTL_VDEC_SetBalanceBW                 fpVDEC_SetBalanceBW;
339*53ee8cc1Swenshuai.xi     IOCTL_VDEC_DbgDumpStatus                fpVDEC_DbgDumpStatus;
340*53ee8cc1Swenshuai.xi     IOCTL_VDEC_SetControl                   fpVDEC_SetControl;
341*53ee8cc1Swenshuai.xi     IOCTL_VDEC_GetControl                   fpVDEC_GetControl;
342*53ee8cc1Swenshuai.xi     IOCTL_VDEC_GetDispCnt                   fpVDEC_GetDispCnt;
343*53ee8cc1Swenshuai.xi     IOCTL_VDEC_GetFwVersion                 fpVDEC_GetFwVersion;
344*53ee8cc1Swenshuai.xi     IOCTL_VDEC_SetBlockDisplay              fpVDEC_SetBlockDisplay;
345*53ee8cc1Swenshuai.xi     IOCTL_VDEC_EnableESBuffMalloc           fpVDEC_EnableESBuffMalloc;
346*53ee8cc1Swenshuai.xi     IOCTL_VDEC_GetESBuffVacancy             fpVDEC_GetESBuffVacancy;
347*53ee8cc1Swenshuai.xi     IOCTL_VDEC_GetESBuff                    fpVDEC_GetESBuff;
348*53ee8cc1Swenshuai.xi     IOCTL_VDEC_GetNextDispFrame             fpVDEC_GetNextDispFrame;
349*53ee8cc1Swenshuai.xi     IOCTL_VDEC_DisplayFrame                 fpVDEC_DisplayFrame;
350*53ee8cc1Swenshuai.xi     IOCTL_VDEC_ReleaseFrame                 fpVDEC_ReleaseFrame;
351*53ee8cc1Swenshuai.xi     IOCTL_VDEC_FlushPTSBuf                  fpVDEC_FlushPTSBuf;
352*53ee8cc1Swenshuai.xi     IOCTL_VDEC_CaptureFrame                 fpVDEC_CaptureFrame;
353*53ee8cc1Swenshuai.xi     IOCTL_VDEC_CC_Init                      fpVDEC_CC_Init;
354*53ee8cc1Swenshuai.xi     IOCTL_VDEC_CC_SetCfg                    fpVDEC_CC_SetCfg;
355*53ee8cc1Swenshuai.xi     IOCTL_VDEC_CC_SetBuffStartAdd           fpVDEC_CC_SetBuffStartAdd;
356*53ee8cc1Swenshuai.xi     IOCTL_VDEC_CC_UpdateWriteAdd            fpVDEC_CC_UpdateWriteAdd;
357*53ee8cc1Swenshuai.xi     IOCTL_VDEC_CC_UpdateReadAdd             fpVDEC_CC_UpdateReadAdd;
358*53ee8cc1Swenshuai.xi     IOCTL_VDEC_CC_DisableParsing            fpVDEC_CC_DisableParsing;
359*53ee8cc1Swenshuai.xi     IOCTL_VDEC_CC_GetInfo                   fpVDEC_CC_GetInfo;
360*53ee8cc1Swenshuai.xi     IOCTL_VDEC_CC_GetIsRstDone              fpVDEC_CC_GetIsRstDone;
361*53ee8cc1Swenshuai.xi     IOCTL_VDEC_CC_GetIsBuffOverflow         fpVDEC_CC_GetIsBuffOverflow;
362*53ee8cc1Swenshuai.xi     IOCTL_VDEC_CC_GetWriteAdd               fpVDEC_CC_GetWriteAdd;
363*53ee8cc1Swenshuai.xi     IOCTL_VDEC_CC_GetReadAdd                fpVDEC_CC_GetReadAdd;
364*53ee8cc1Swenshuai.xi     IOCTL_VDEC_CC_SystemPreSetControl       fpVDEC_SystemPreSetControl;
365*53ee8cc1Swenshuai.xi     IOCTL_VDEC_CC_PreSetControl             fpVDEC_PreSetControl;
366*53ee8cc1Swenshuai.xi }VDEC_INSTANCE_PRIVATE;
367*53ee8cc1Swenshuai.xi 
368*53ee8cc1Swenshuai.xi #ifdef __cplusplus
369*53ee8cc1Swenshuai.xi }
370*53ee8cc1Swenshuai.xi #endif
371*53ee8cc1Swenshuai.xi 
372*53ee8cc1Swenshuai.xi #undef _API_VDEC_V2_PRIV_H_
373*53ee8cc1Swenshuai.xi #endif // _API_VDEC_V2_PRIV_H_
374