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 ///////////////////////////////////////////////////////////////////////////////////////////////////
79*53ee8cc1Swenshuai.xi ///
80*53ee8cc1Swenshuai.xi /// file apiVDEC_v2.c
81*53ee8cc1Swenshuai.xi /// @brief VDEC API
82*53ee8cc1Swenshuai.xi /// @author MStar Semiconductor Inc.
83*53ee8cc1Swenshuai.xi ///////////////////////////////////////////////////////////////////////////////////////////////////
84*53ee8cc1Swenshuai.xi
85*53ee8cc1Swenshuai.xi
86*53ee8cc1Swenshuai.xi
87*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
88*53ee8cc1Swenshuai.xi // Include Files
89*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
90*53ee8cc1Swenshuai.xi #include "MsTypes.h"
91*53ee8cc1Swenshuai.xi #ifndef MSOS_TYPE_LINUX_KERNEL
92*53ee8cc1Swenshuai.xi #include <stdio.h>
93*53ee8cc1Swenshuai.xi #include <string.h>
94*53ee8cc1Swenshuai.xi #endif
95*53ee8cc1Swenshuai.xi
96*53ee8cc1Swenshuai.xi #include "utopia.h"
97*53ee8cc1Swenshuai.xi #include "utopia_dapi.h"
98*53ee8cc1Swenshuai.xi #include "vdec_private.h"
99*53ee8cc1Swenshuai.xi #include "apiVDEC_v2.h"
100*53ee8cc1Swenshuai.xi #include "apiVDEC.h"
101*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
102*53ee8cc1Swenshuai.xi // Global Variable
103*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
104*53ee8cc1Swenshuai.xi void* pModuleVDEC_V2 = NULL;
105*53ee8cc1Swenshuai.xi char ResourceGroup[1][20] = {{"VDEC_R0"},};
106*53ee8cc1Swenshuai.xi
107*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
108*53ee8cc1Swenshuai.xi // API Function
109*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
VDEC_V2_RegisterToUtopia(void)110*53ee8cc1Swenshuai.xi void VDEC_V2_RegisterToUtopia(void)
111*53ee8cc1Swenshuai.xi {
112*53ee8cc1Swenshuai.xi MS_U32 j = 0;
113*53ee8cc1Swenshuai.xi void* psResource = NULL;
114*53ee8cc1Swenshuai.xi
115*53ee8cc1Swenshuai.xi // 1. deal with module
116*53ee8cc1Swenshuai.xi UtopiaModuleCreate(MODULE_VDEC, 0, &pModuleVDEC_V2);
117*53ee8cc1Swenshuai.xi UtopiaModuleRegister(pModuleVDEC_V2);
118*53ee8cc1Swenshuai.xi UtopiaModuleSetupFunctionPtr(pModuleVDEC_V2,
119*53ee8cc1Swenshuai.xi (FUtopiaOpen)VDEC_V2_Open,
120*53ee8cc1Swenshuai.xi (FUtopiaClose)VDEC_V2_Close,
121*53ee8cc1Swenshuai.xi (FUtopiaIOctl)VDEC_V2_Ioctl);
122*53ee8cc1Swenshuai.xi
123*53ee8cc1Swenshuai.xi // 2. deal with resource
124*53ee8cc1Swenshuai.xi //for(i=E_VDEC_EX_POOL_ID_INTERNAL;i<E_VDEC_EX_POOL_ID_MAX;i++) // for each resource group in different memory pool
125*53ee8cc1Swenshuai.xi {
126*53ee8cc1Swenshuai.xi UtopiaModuleAddResourceStart(pModuleVDEC_V2,0);
127*53ee8cc1Swenshuai.xi for(j=0;j<1;j++) // for each resource group in same memory pool
128*53ee8cc1Swenshuai.xi {
129*53ee8cc1Swenshuai.xi UtopiaResourceCreate(ResourceGroup[0],sizeof(VDEC_RESOURCE_PRIVATE),&psResource);
130*53ee8cc1Swenshuai.xi UtopiaResourceRegister(pModuleVDEC_V2,psResource,0);
131*53ee8cc1Swenshuai.xi }
132*53ee8cc1Swenshuai.xi UtopiaModuleAddResourceEnd(pModuleVDEC_V2,0);
133*53ee8cc1Swenshuai.xi }
134*53ee8cc1Swenshuai.xi }
135*53ee8cc1Swenshuai.xi
VDEC_V2_Open(void ** ppInstance,MS_U32 u32ModuleVersion,void * pAttribute)136*53ee8cc1Swenshuai.xi MS_U32 VDEC_V2_Open(void** ppInstance, MS_U32 u32ModuleVersion, void* pAttribute)
137*53ee8cc1Swenshuai.xi {
138*53ee8cc1Swenshuai.xi void* pResource = NULL;
139*53ee8cc1Swenshuai.xi VDEC_RESOURCE_PRIVATE* pVDEC_ResourcePrivate = NULL;
140*53ee8cc1Swenshuai.xi VDEC_INSTANCE_PRIVATE* psVDEC_InstPri = NULL;
141*53ee8cc1Swenshuai.xi //MS_U8 i = 0;
142*53ee8cc1Swenshuai.xi
143*53ee8cc1Swenshuai.xi // Check there is available decoder to be use
144*53ee8cc1Swenshuai.xi if(UtopiaResourceObtain(pModuleVDEC_V2, /*E_VDEC_EX_POOL_ID_INTERNAL*/ 0, &pResource) != UTOPIA_STATUS_SUCCESS)
145*53ee8cc1Swenshuai.xi {
146*53ee8cc1Swenshuai.xi printf("UtopiaResourceObtain fail,%s,%d\n",__FUNCTION__,__LINE__);
147*53ee8cc1Swenshuai.xi return UTOPIA_STATUS_ERR_RESOURCE;
148*53ee8cc1Swenshuai.xi }
149*53ee8cc1Swenshuai.xi
150*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(pResource,(void*)(&pVDEC_ResourcePrivate));
151*53ee8cc1Swenshuai.xi
152*53ee8cc1Swenshuai.xi
153*53ee8cc1Swenshuai.xi if(pVDEC_ResourcePrivate->u8DecoderInUse == 0)
154*53ee8cc1Swenshuai.xi {
155*53ee8cc1Swenshuai.xi pVDEC_ResourcePrivate->u8DecoderInUse = 1;
156*53ee8cc1Swenshuai.xi
157*53ee8cc1Swenshuai.xi }
158*53ee8cc1Swenshuai.xi else
159*53ee8cc1Swenshuai.xi {
160*53ee8cc1Swenshuai.xi printf("No decoder can be used,%s,%d\n",__FUNCTION__,__LINE__);
161*53ee8cc1Swenshuai.xi return UTOPIA_STATUS_ERR_RESOURCE;
162*53ee8cc1Swenshuai.xi }
163*53ee8cc1Swenshuai.xi
164*53ee8cc1Swenshuai.xi UtopiaResourceRelease(pResource);
165*53ee8cc1Swenshuai.xi
166*53ee8cc1Swenshuai.xi //Create instance
167*53ee8cc1Swenshuai.xi UtopiaInstanceCreate(sizeof(VDEC_INSTANCE_PRIVATE), ppInstance);
168*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(*ppInstance, (void**)&psVDEC_InstPri);
169*53ee8cc1Swenshuai.xi
170*53ee8cc1Swenshuai.xi //Recode de coder index
171*53ee8cc1Swenshuai.xi //psVDEC_InstPri->Index_of_decoder = 0;
172*53ee8cc1Swenshuai.xi
173*53ee8cc1Swenshuai.xi //Link Function pointer
174*53ee8cc1Swenshuai.xi //psVDEC_InstPri->fpVDEC_EX_GetFreeStream = MApi_VDEC_EX_V2_GetFreeStream;
175*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_Init = MApi_VDEC_V2_Init;
176*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_Init_EX = MApi_VDEC_V2_Init_EX;
177*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_Rst = MApi_VDEC_V2_Rst;
178*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_Exit = MApi_VDEC_V2_Exit;
179*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_CheckDispInfoRdy = MApi_VDEC_V2_CheckDispInfoRdy;
180*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_SetFrcMode = MApi_VDEC_V2_SetFrcMode;
181*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_SetDynScalingParams = MApi_VDEC_V2_SetDynScalingParams;
182*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_Play = MApi_VDEC_V2_Play;
183*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_Pause = MApi_VDEC_V2_Pause;
184*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_Resume = MApi_VDEC_V2_Resume;
185*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_StepDisp = MApi_VDEC_V2_StepDisp;
186*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_IsStepDispDone = MApi_VDEC_V2_IsStepDispDone;
187*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_SeekToPTS = MApi_VDEC_V2_SeekToPTS;
188*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_SkipToPTS = MApi_VDEC_V2_SkipToPTS;
189*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_StepDecode = MApi_VDEC_V2_StepDecode;
190*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_IsStepDecodeDone = MApi_VDEC_V2_IsStepDecodeDone;
191*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_SetTrickMode = MApi_VDEC_V2_SetTrickMode;
192*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_PushDecQ = MApi_VDEC_V2_PushDecQ;
193*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_FireDecCmd = MApi_VDEC_V2_FireDecCmd;
194*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_GetDecQVacancy = MApi_VDEC_V2_GetDecQVacancy;
195*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_IsCCAvailable = MApi_VDEC_V2_IsCCAvailable;
196*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_GetCCInfo = MApi_VDEC_V2_GetCCInfo;
197*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_Flush = MApi_VDEC_V2_Flush;
198*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_GetESWritePtr = MApi_VDEC_V2_GetESWritePtr;
199*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_GetESReadPtr = MApi_VDEC_V2_GetESReadPtr;
200*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_EnableLastFrameShow = MApi_VDEC_V2_EnableLastFrameShow;
201*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_IsDispFinish = MApi_VDEC_V2_IsDispFinish;
202*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_SetSpeed = MApi_VDEC_V2_SetSpeed;
203*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_IsFrameRdy = MApi_VDEC_V2_IsFrameRdy;
204*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_SetFreezeDisp = MApi_VDEC_V2_SetFreezeDisp;
205*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_SetBlueScreen = MApi_VDEC_V2_SetBlueScreen;
206*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_ResetPTS = MApi_VDEC_V2_ResetPTS;
207*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_AVSyncOn = MApi_VDEC_V2_AVSyncOn;
208*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_SetAVSyncFreerunThreshold = MApi_VDEC_V2_SetAVSyncFreerunThreshold;
209*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_IsAVSyncOn = MApi_VDEC_V2_IsAVSyncOn;
210*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_GetPTS = MApi_VDEC_V2_GetPTS;
211*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_GetNextPTS = MApi_VDEC_V2_GetNextPTS;
212*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_IsStartSync = MApi_VDEC_V2_IsStartSync;
213*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_IsReachSync = MApi_VDEC_V2_IsReachSync;
214*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_IsFreerun = MApi_VDEC_V2_IsFreerun;
215*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_MhegDecodeIFrame = MApi_VDEC_V2_MHEG_DecodeIFrame;
216*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_MhegIsIFrameDecoding = MApi_VDEC_V2_MHEG_IsIFrameDecoding;
217*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_MhegRstIFrameDec = MApi_VDEC_V2_MHEG_RstIFrameDec;
218*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_GetErrCode = MApi_VDEC_V2_GetErrCode;
219*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_GetErrCnt = MApi_VDEC_V2_GetErrCnt;
220*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_GetActiveCodecType = MApi_VDEC_V2_GetActiveCodecType;
221*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_GetBitsRate = MApi_VDEC_V2_GetBitsRate;
222*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_Is32PullDown = MApi_VDEC_V2_Is32PullDown;
223*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_IsAlive = MApi_VDEC_V2_IsAlive;
224*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_GetVideoPtsStcDelta = MApi_VDEC_V2_GetVideoPtsStcDelta;
225*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_IsWithValidStream = MApi_VDEC_V2_IsWithValidStream;
226*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_IsIFrameFound = MApi_VDEC_V2_IsIFrameFound;
227*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_IsWithLowDelay = MApi_VDEC_V2_IsWithLowDelay;
228*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_IsAllBufferEmpty = MApi_VDEC_V2_IsAllBufferEmpty;
229*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_GetGOPCnt = MApi_VDEC_V2_GetGOPCnt;
230*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_GetFrameCnt = MApi_VDEC_V2_GetFrameCnt;
231*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_GetSkipCnt = MApi_VDEC_V2_GetSkipCnt;
232*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_GetDropCnt = MApi_VDEC_V2_GetDropCnt;
233*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_GetDispInfo = MApi_VDEC_V2_GetDispInfo;
234*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_GetTrickMode = MApi_VDEC_V2_GetTrickMode;
235*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_GetActiveFormat = MApi_VDEC_V2_GetActiveFormat;
236*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_GetColourPrimaries = MApi_VDEC_V2_GetColourPrimaries;
237*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_GetHWKey = MApi_VDEC_V2_GetHWKey;
238*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_IsSeqChg = MApi_VDEC_V2_IsSeqChg;
239*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_SetDbgLevel = MApi_VDEC_V2_SetDbgLevel;
240*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_GetDecFrameInfo = MApi_VDEC_V2_GetDecFrameInfo;
241*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_GetDispFrameInfo = MApi_VDEC_V2_GetDispFrameInfo;
242*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_GetExtDispInfo = MApi_VDEC_V2_GetExtDispInfo;
243*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_GetDecTimeCode = MApi_VDEC_V2_GetDecTimeCode;
244*53ee8cc1Swenshuai.xi psVDEC_InstPri->fpVDEC_GetDispTimeCode = MApi_VDEC_V2_GetDispTimeCode;
245*53ee8cc1Swenshuai.xi
246*53ee8cc1Swenshuai.xi
247*53ee8cc1Swenshuai.xi return UTOPIA_STATUS_SUCCESS;
248*53ee8cc1Swenshuai.xi }
249*53ee8cc1Swenshuai.xi
250*53ee8cc1Swenshuai.xi
VDEC_V2_Ioctl(void * pInstance,MS_U32 u32Cmd,void * pArgs)251*53ee8cc1Swenshuai.xi MS_U32 VDEC_V2_Ioctl(void* pInstance, MS_U32 u32Cmd, void* pArgs)
252*53ee8cc1Swenshuai.xi {
253*53ee8cc1Swenshuai.xi VDEC_INSTANCE_PRIVATE* psVDEC_InstPri = NULL;
254*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void*)&psVDEC_InstPri);
255*53ee8cc1Swenshuai.xi E_VDEC_V2_IOCTL_CMD IOcmd = (E_VDEC_V2_IOCTL_CMD)u32Cmd;
256*53ee8cc1Swenshuai.xi MS_U32 ret = UTOPIA_STATUS_FAIL;
257*53ee8cc1Swenshuai.xi VDEC_Result *pRet = (((VDEC_V2_IO_Param *)pArgs)->pRet);
258*53ee8cc1Swenshuai.xi *pRet = E_VDEC_FAIL;
259*53ee8cc1Swenshuai.xi
260*53ee8cc1Swenshuai.xi switch(IOcmd)
261*53ee8cc1Swenshuai.xi {
262*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_GETLIBVER:
263*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_GetLibVer((const MSIF_Version **)(((VDEC_V2_IO_Param *)pArgs)->param[0]));
264*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
265*53ee8cc1Swenshuai.xi break;
266*53ee8cc1Swenshuai.xi
267*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_GETINFO:
268*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_GetInfo((const VDEC_Info **)(((VDEC_V2_IO_Param *)pArgs)->param[0]));
269*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
270*53ee8cc1Swenshuai.xi break;
271*53ee8cc1Swenshuai.xi
272*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_GETSTATUS:
273*53ee8cc1Swenshuai.xi *((MS_BOOL *)pRet) = psVDEC_InstPri->fpVDEC_GetStatus((VDEC_Status*)(((VDEC_V2_IO_Param *)pArgs)->param[0]));
274*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
275*53ee8cc1Swenshuai.xi break;
276*53ee8cc1Swenshuai.xi
277*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_CHECKCAPS:
278*53ee8cc1Swenshuai.xi *((MS_BOOL *)pRet) = psVDEC_InstPri->fpVDEC_CheckCaps(*((VDEC_CodecType*)(((VDEC_V2_IO_Param *)pArgs)->param[0])));
279*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
280*53ee8cc1Swenshuai.xi break;
281*53ee8cc1Swenshuai.xi
282*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_ENABLETUEBOMODE:
283*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_EnableTurboMode(*((MS_BOOL*)(((VDEC_V2_IO_Param *)pArgs)->param[0])));
284*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
285*53ee8cc1Swenshuai.xi break;
286*53ee8cc1Swenshuai.xi
287*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_INIT:
288*53ee8cc1Swenshuai.xi
289*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_Init((VDEC_InitParam*)(((VDEC_V2_IO_Param *)pArgs)->param[0]));
290*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
291*53ee8cc1Swenshuai.xi break;
292*53ee8cc1Swenshuai.xi
293*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_INIT_EX:
294*53ee8cc1Swenshuai.xi
295*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_Init_EX((void*)(((VDEC_V2_IO_Param *)pArgs)->param[0]),
296*53ee8cc1Swenshuai.xi *((MS_U32*)(((VDEC_V2_IO_Param *)pArgs)->param[1])));
297*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
298*53ee8cc1Swenshuai.xi break;
299*53ee8cc1Swenshuai.xi
300*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_RST:
301*53ee8cc1Swenshuai.xi
302*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_Rst();
303*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
304*53ee8cc1Swenshuai.xi break;
305*53ee8cc1Swenshuai.xi
306*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_EXIT:
307*53ee8cc1Swenshuai.xi
308*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_Exit(*((MS_BOOL*)(((VDEC_V2_IO_Param *)pArgs)->param[0])));
309*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
310*53ee8cc1Swenshuai.xi break;
311*53ee8cc1Swenshuai.xi
312*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_CHECK_DISP_INFO_RDY:
313*53ee8cc1Swenshuai.xi
314*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_CheckDispInfoRdy();
315*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
316*53ee8cc1Swenshuai.xi break;
317*53ee8cc1Swenshuai.xi
318*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_SET_FRC_MODE:
319*53ee8cc1Swenshuai.xi
320*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_SetFrcMode(*((VDEC_FrcMode*)(((VDEC_V2_IO_Param *)pArgs)->param[0])));
321*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
322*53ee8cc1Swenshuai.xi break;
323*53ee8cc1Swenshuai.xi
324*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_SET_DYNSCALING_PARAMS:
325*53ee8cc1Swenshuai.xi
326*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_SetDynScalingParams(*((MS_PHYADDR*)(((VDEC_V2_IO_Param *)pArgs)->param[0])),
327*53ee8cc1Swenshuai.xi *((MS_U32*)(((VDEC_V2_IO_Param *)pArgs)->param[1])));
328*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
329*53ee8cc1Swenshuai.xi break;
330*53ee8cc1Swenshuai.xi
331*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_PLAY:
332*53ee8cc1Swenshuai.xi
333*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_Play();
334*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
335*53ee8cc1Swenshuai.xi break;
336*53ee8cc1Swenshuai.xi
337*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_PAUSE:
338*53ee8cc1Swenshuai.xi
339*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_Pause();
340*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
341*53ee8cc1Swenshuai.xi break;
342*53ee8cc1Swenshuai.xi
343*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_RESUME:
344*53ee8cc1Swenshuai.xi
345*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_Resume();
346*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
347*53ee8cc1Swenshuai.xi break;
348*53ee8cc1Swenshuai.xi
349*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_STEP_DISP:
350*53ee8cc1Swenshuai.xi
351*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_StepDisp();
352*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
353*53ee8cc1Swenshuai.xi break;
354*53ee8cc1Swenshuai.xi
355*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_IS_STEP_DISP_DONE:
356*53ee8cc1Swenshuai.xi
357*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_IsStepDispDone();
358*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
359*53ee8cc1Swenshuai.xi break;
360*53ee8cc1Swenshuai.xi
361*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_SEEK_TO_PTS:
362*53ee8cc1Swenshuai.xi
363*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_SeekToPTS(*((MS_U32*)(((VDEC_V2_IO_Param *)pArgs)->param[0])));
364*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
365*53ee8cc1Swenshuai.xi break;
366*53ee8cc1Swenshuai.xi
367*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_SKIP_TO_PTS:
368*53ee8cc1Swenshuai.xi
369*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_SkipToPTS(*((MS_U32*)(((VDEC_V2_IO_Param *)pArgs)->param[0])));
370*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
371*53ee8cc1Swenshuai.xi break;
372*53ee8cc1Swenshuai.xi
373*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_STEP_DECODE:
374*53ee8cc1Swenshuai.xi
375*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_StepDecode();
376*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
377*53ee8cc1Swenshuai.xi break;
378*53ee8cc1Swenshuai.xi
379*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_IS_STEP_DECODE_DONE:
380*53ee8cc1Swenshuai.xi
381*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_IsStepDecodeDone();
382*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
383*53ee8cc1Swenshuai.xi break;
384*53ee8cc1Swenshuai.xi
385*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_SET_TRICK_MODE:
386*53ee8cc1Swenshuai.xi
387*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_SetTrickMode(*((VDEC_TrickDec*)(((VDEC_V2_IO_Param *)pArgs)->param[0])));
388*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
389*53ee8cc1Swenshuai.xi break;
390*53ee8cc1Swenshuai.xi
391*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_PUSH_DECQ:
392*53ee8cc1Swenshuai.xi
393*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_PushDecQ(((VDEC_DecCmd*)(((VDEC_V2_IO_Param *)pArgs)->param[0])));
394*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
395*53ee8cc1Swenshuai.xi break;
396*53ee8cc1Swenshuai.xi
397*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_FIRE_DEC_CMD:
398*53ee8cc1Swenshuai.xi
399*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_FireDecCmd();
400*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
401*53ee8cc1Swenshuai.xi break;
402*53ee8cc1Swenshuai.xi
403*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_GET_DECQ_VACANCY:
404*53ee8cc1Swenshuai.xi
405*53ee8cc1Swenshuai.xi *((MS_U32 *)pRet) = psVDEC_InstPri->fpVDEC_GetDecQVacancy();
406*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
407*53ee8cc1Swenshuai.xi break;
408*53ee8cc1Swenshuai.xi
409*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_IS_CC_AVAILABLE:
410*53ee8cc1Swenshuai.xi
411*53ee8cc1Swenshuai.xi *((MS_BOOL *)pRet) = psVDEC_InstPri->fpVDEC_IsCCAvailable();
412*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
413*53ee8cc1Swenshuai.xi break;
414*53ee8cc1Swenshuai.xi
415*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_GET_CC_INFO:
416*53ee8cc1Swenshuai.xi
417*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_GetCCInfo(((void *)(((VDEC_V2_IO_Param *)pArgs)->param[0])),
418*53ee8cc1Swenshuai.xi (*((MS_U32 *)(((VDEC_V2_IO_Param *)pArgs)->param[1]))));
419*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
420*53ee8cc1Swenshuai.xi break;
421*53ee8cc1Swenshuai.xi
422*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_FLUSH:
423*53ee8cc1Swenshuai.xi
424*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_Flush(*((VDEC_FreezePicSelect *)(((VDEC_V2_IO_Param *)pArgs)->param[0])));
425*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
426*53ee8cc1Swenshuai.xi break;
427*53ee8cc1Swenshuai.xi
428*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_GET_ES_WRITE_PTR:
429*53ee8cc1Swenshuai.xi
430*53ee8cc1Swenshuai.xi *((MS_U32 *)pRet) = psVDEC_InstPri->fpVDEC_GetESWritePtr();
431*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
432*53ee8cc1Swenshuai.xi break;
433*53ee8cc1Swenshuai.xi
434*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_GET_ES_READ_PTR:
435*53ee8cc1Swenshuai.xi
436*53ee8cc1Swenshuai.xi *((MS_U32 *)pRet) = psVDEC_InstPri->fpVDEC_GetESReadPtr();
437*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
438*53ee8cc1Swenshuai.xi break;
439*53ee8cc1Swenshuai.xi
440*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_ENABLE_LAST_FRAME_SHOW:
441*53ee8cc1Swenshuai.xi
442*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_EnableLastFrameShow(*((MS_BOOL *)(((VDEC_V2_IO_Param *)pArgs)->param[0])));
443*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
444*53ee8cc1Swenshuai.xi break;
445*53ee8cc1Swenshuai.xi
446*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_IS_DISP_FINISH:
447*53ee8cc1Swenshuai.xi
448*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_IsDispFinish();
449*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
450*53ee8cc1Swenshuai.xi break;
451*53ee8cc1Swenshuai.xi
452*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_SET_SPEED:
453*53ee8cc1Swenshuai.xi
454*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_SetSpeed(*((VDEC_SpeedType *)(((VDEC_V2_IO_Param *)pArgs)->param[0])),
455*53ee8cc1Swenshuai.xi *((VDEC_DispSpeed *)(((VDEC_V2_IO_Param *)pArgs)->param[1])));
456*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
457*53ee8cc1Swenshuai.xi break;
458*53ee8cc1Swenshuai.xi
459*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_IS_FRAME_RDY:
460*53ee8cc1Swenshuai.xi
461*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_IsFrameRdy();
462*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
463*53ee8cc1Swenshuai.xi break;
464*53ee8cc1Swenshuai.xi
465*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_SET_FREEZE_DISP:
466*53ee8cc1Swenshuai.xi
467*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_SetFreezeDisp(*((MS_BOOL *)(((VDEC_V2_IO_Param *)pArgs)->param[0])));
468*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
469*53ee8cc1Swenshuai.xi break;
470*53ee8cc1Swenshuai.xi
471*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_SET_BLUE_SCREEN:
472*53ee8cc1Swenshuai.xi
473*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_SetBlueScreen(*((MS_BOOL *)(((VDEC_V2_IO_Param *)pArgs)->param[0])));
474*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
475*53ee8cc1Swenshuai.xi break;
476*53ee8cc1Swenshuai.xi
477*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_RESET_PTS:
478*53ee8cc1Swenshuai.xi
479*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_ResetPTS(*((MS_U32*)(((VDEC_V2_IO_Param *)pArgs)->param[0])));
480*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
481*53ee8cc1Swenshuai.xi break;
482*53ee8cc1Swenshuai.xi
483*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_AVSYNC_ON:
484*53ee8cc1Swenshuai.xi
485*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_AVSyncOn(*((MS_BOOL*)(((VDEC_V2_IO_Param *)pArgs)->param[0])),
486*53ee8cc1Swenshuai.xi *((MS_U32*)(((VDEC_V2_IO_Param *)pArgs)->param[1])),
487*53ee8cc1Swenshuai.xi *((MS_U16*)(((VDEC_V2_IO_Param *)pArgs)->param[2])));
488*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
489*53ee8cc1Swenshuai.xi break;
490*53ee8cc1Swenshuai.xi
491*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_SET_AVSYNC_FREERUN_THRESHOLD:
492*53ee8cc1Swenshuai.xi
493*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_SetAVSyncFreerunThreshold(*((MS_U32*)(((VDEC_V2_IO_Param *)pArgs)->param[0])));
494*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
495*53ee8cc1Swenshuai.xi break;
496*53ee8cc1Swenshuai.xi
497*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_IS_AVSYNC_ON:
498*53ee8cc1Swenshuai.xi
499*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_IsAVSyncOn();
500*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
501*53ee8cc1Swenshuai.xi break;
502*53ee8cc1Swenshuai.xi
503*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_GET_PTS:
504*53ee8cc1Swenshuai.xi
505*53ee8cc1Swenshuai.xi *((MS_U32 *)pRet) = psVDEC_InstPri->fpVDEC_GetPTS();
506*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
507*53ee8cc1Swenshuai.xi break;
508*53ee8cc1Swenshuai.xi
509*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_GET_NEXT_PTS:
510*53ee8cc1Swenshuai.xi
511*53ee8cc1Swenshuai.xi *((MS_U32 *)pRet) = psVDEC_InstPri->fpVDEC_GetNextPTS();
512*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
513*53ee8cc1Swenshuai.xi break;
514*53ee8cc1Swenshuai.xi
515*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_IS_START_SYNC:
516*53ee8cc1Swenshuai.xi
517*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_IsStartSync();
518*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
519*53ee8cc1Swenshuai.xi break;
520*53ee8cc1Swenshuai.xi
521*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_IS_REACH_SYNC:
522*53ee8cc1Swenshuai.xi
523*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_IsReachSync();
524*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
525*53ee8cc1Swenshuai.xi break;
526*53ee8cc1Swenshuai.xi
527*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_IS_FREERUN:
528*53ee8cc1Swenshuai.xi
529*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_IsFreerun();
530*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
531*53ee8cc1Swenshuai.xi break;
532*53ee8cc1Swenshuai.xi
533*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_MHEG_DECODE_I_FRAME:
534*53ee8cc1Swenshuai.xi
535*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_MhegDecodeIFrame(*((MS_PHYADDR*)(((VDEC_V2_IO_Param *)pArgs)->param[0])),
536*53ee8cc1Swenshuai.xi *((MS_PHYADDR*)(((VDEC_V2_IO_Param *)pArgs)->param[1])),
537*53ee8cc1Swenshuai.xi *((MS_PHYADDR*)(((VDEC_V2_IO_Param *)pArgs)->param[2])));
538*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
539*53ee8cc1Swenshuai.xi break;
540*53ee8cc1Swenshuai.xi
541*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_MHEG_IS_I_FRAME_DECODING:
542*53ee8cc1Swenshuai.xi
543*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_MhegIsIFrameDecoding();
544*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
545*53ee8cc1Swenshuai.xi break;
546*53ee8cc1Swenshuai.xi
547*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_MHEG_RST_I_FRAME_DEC:
548*53ee8cc1Swenshuai.xi
549*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_MhegRstIFrameDec();
550*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
551*53ee8cc1Swenshuai.xi break;
552*53ee8cc1Swenshuai.xi
553*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_GET_ERR_CODE:
554*53ee8cc1Swenshuai.xi
555*53ee8cc1Swenshuai.xi *((MS_U32 *)pRet) = psVDEC_InstPri->fpVDEC_GetErrCode();
556*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
557*53ee8cc1Swenshuai.xi break;
558*53ee8cc1Swenshuai.xi
559*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_GET_ERR_CNT:
560*53ee8cc1Swenshuai.xi
561*53ee8cc1Swenshuai.xi *((MS_U32 *)pRet) = psVDEC_InstPri->fpVDEC_GetErrCnt();
562*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
563*53ee8cc1Swenshuai.xi break;
564*53ee8cc1Swenshuai.xi
565*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_GET_ACTIVE_CODEC_TYPE:
566*53ee8cc1Swenshuai.xi
567*53ee8cc1Swenshuai.xi *((VDEC_CodecType *)pRet) = psVDEC_InstPri->fpVDEC_GetActiveCodecType();
568*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
569*53ee8cc1Swenshuai.xi break;
570*53ee8cc1Swenshuai.xi
571*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_GET_BITS_RATE:
572*53ee8cc1Swenshuai.xi
573*53ee8cc1Swenshuai.xi *((MS_U32 *)pRet) = psVDEC_InstPri->fpVDEC_GetBitsRate();
574*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
575*53ee8cc1Swenshuai.xi break;
576*53ee8cc1Swenshuai.xi
577*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_IS_32PULLDOWN:
578*53ee8cc1Swenshuai.xi
579*53ee8cc1Swenshuai.xi *((MS_BOOL *)pRet) = psVDEC_InstPri->fpVDEC_Is32PullDown();
580*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
581*53ee8cc1Swenshuai.xi break;
582*53ee8cc1Swenshuai.xi
583*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_IS_ALIVE:
584*53ee8cc1Swenshuai.xi
585*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_IsAlive();
586*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
587*53ee8cc1Swenshuai.xi break;
588*53ee8cc1Swenshuai.xi
589*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_GET_VIDEO_PTS_STC_DELTA:
590*53ee8cc1Swenshuai.xi
591*53ee8cc1Swenshuai.xi *((MS_S64 *)pRet) = psVDEC_InstPri->fpVDEC_GetVideoPtsStcDelta();
592*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
593*53ee8cc1Swenshuai.xi break;
594*53ee8cc1Swenshuai.xi
595*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_IS_WITH_VALID_STREAM:
596*53ee8cc1Swenshuai.xi
597*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_IsWithValidStream();
598*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
599*53ee8cc1Swenshuai.xi break;
600*53ee8cc1Swenshuai.xi
601*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_IS_I_FRAME_FOUND:
602*53ee8cc1Swenshuai.xi
603*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_IsIFrameFound();
604*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
605*53ee8cc1Swenshuai.xi break;
606*53ee8cc1Swenshuai.xi
607*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_IS_WITH_LOW_DELAY:
608*53ee8cc1Swenshuai.xi
609*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_IsWithLowDelay();
610*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
611*53ee8cc1Swenshuai.xi break;
612*53ee8cc1Swenshuai.xi
613*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_IS_ALL_BUFFER_EMPTY:
614*53ee8cc1Swenshuai.xi
615*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_IsAllBufferEmpty();
616*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
617*53ee8cc1Swenshuai.xi break;
618*53ee8cc1Swenshuai.xi
619*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_GET_GOP_CNT:
620*53ee8cc1Swenshuai.xi
621*53ee8cc1Swenshuai.xi *((MS_U8 *)pRet) = psVDEC_InstPri->fpVDEC_GetGOPCnt();
622*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
623*53ee8cc1Swenshuai.xi break;
624*53ee8cc1Swenshuai.xi
625*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_GET_FRAME_CNT:
626*53ee8cc1Swenshuai.xi
627*53ee8cc1Swenshuai.xi *((MS_U32 *)pRet) = psVDEC_InstPri->fpVDEC_GetFrameCnt();
628*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
629*53ee8cc1Swenshuai.xi break;
630*53ee8cc1Swenshuai.xi
631*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_GET_SKIP_CNT:
632*53ee8cc1Swenshuai.xi
633*53ee8cc1Swenshuai.xi *((MS_U32 *)pRet) = psVDEC_InstPri->fpVDEC_GetSkipCnt();
634*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
635*53ee8cc1Swenshuai.xi break;
636*53ee8cc1Swenshuai.xi
637*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_GET_DROP_CNT:
638*53ee8cc1Swenshuai.xi
639*53ee8cc1Swenshuai.xi *((MS_U32 *)pRet) = psVDEC_InstPri->fpVDEC_GetDropCnt();
640*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
641*53ee8cc1Swenshuai.xi break;
642*53ee8cc1Swenshuai.xi
643*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_GET_DISP_INFO:
644*53ee8cc1Swenshuai.xi
645*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_GetDispInfo((VDEC_DispInfo *)(((VDEC_V2_IO_Param *)pArgs)->param[0]));
646*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
647*53ee8cc1Swenshuai.xi break;
648*53ee8cc1Swenshuai.xi
649*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_GET_TRICK_MODE:
650*53ee8cc1Swenshuai.xi
651*53ee8cc1Swenshuai.xi *((VDEC_TrickDec *)pRet) = psVDEC_InstPri->fpVDEC_GetTrickMode();
652*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
653*53ee8cc1Swenshuai.xi break;
654*53ee8cc1Swenshuai.xi
655*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_GET_ACTIVE_FORMAT:
656*53ee8cc1Swenshuai.xi
657*53ee8cc1Swenshuai.xi *((MS_U8 *)pRet) = psVDEC_InstPri->fpVDEC_GetActiveFormat();
658*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
659*53ee8cc1Swenshuai.xi break;
660*53ee8cc1Swenshuai.xi
661*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_GET_COLOUR_PRIMARIES:
662*53ee8cc1Swenshuai.xi
663*53ee8cc1Swenshuai.xi *((MS_U8 *)pRet) = psVDEC_InstPri->fpVDEC_GetColourPrimaries();
664*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
665*53ee8cc1Swenshuai.xi break;
666*53ee8cc1Swenshuai.xi
667*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_GET_HW_KEY:
668*53ee8cc1Swenshuai.xi
669*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_GetHWKey(((MS_U8*)(((VDEC_V2_IO_Param *)pArgs)->param[0])));
670*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
671*53ee8cc1Swenshuai.xi break;
672*53ee8cc1Swenshuai.xi
673*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_IS_SEQ_CHG:
674*53ee8cc1Swenshuai.xi
675*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_IsSeqChg();
676*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
677*53ee8cc1Swenshuai.xi break;
678*53ee8cc1Swenshuai.xi
679*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_SET_DBG_LEVEL:
680*53ee8cc1Swenshuai.xi
681*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_SetDbgLevel(*((VDEC_DbgLevel *)(((VDEC_V2_IO_Param *)pArgs)->param[0])));
682*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
683*53ee8cc1Swenshuai.xi break;
684*53ee8cc1Swenshuai.xi
685*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_GET_DEC_FRAME_INFO:
686*53ee8cc1Swenshuai.xi
687*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_GetDecFrameInfo(((VDEC_FrameInfo *)(((VDEC_V2_IO_Param *)pArgs)->param[0])));
688*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
689*53ee8cc1Swenshuai.xi break;
690*53ee8cc1Swenshuai.xi
691*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_GET_DISP_FRAME_INFO:
692*53ee8cc1Swenshuai.xi
693*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_GetDispFrameInfo(((VDEC_FrameInfo *)(((VDEC_V2_IO_Param *)pArgs)->param[0])));
694*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
695*53ee8cc1Swenshuai.xi break;
696*53ee8cc1Swenshuai.xi
697*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_GET_EXT_DISP_INFO:
698*53ee8cc1Swenshuai.xi
699*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_GetExtDispInfo(((VDEC_ExtDispInfo *)(((VDEC_V2_IO_Param *)pArgs)->param[0])));
700*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
701*53ee8cc1Swenshuai.xi break;
702*53ee8cc1Swenshuai.xi
703*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_GET_DEC_TIME_CODE:
704*53ee8cc1Swenshuai.xi
705*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_GetDecTimeCode(((VDEC_TimeCode *)(((VDEC_V2_IO_Param *)pArgs)->param[0])));
706*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
707*53ee8cc1Swenshuai.xi break;
708*53ee8cc1Swenshuai.xi
709*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_GET_DISP_TIME_CODE:
710*53ee8cc1Swenshuai.xi
711*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_GetDispTimeCode(((VDEC_TimeCode *)(((VDEC_V2_IO_Param *)pArgs)->param[0])));
712*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
713*53ee8cc1Swenshuai.xi break;
714*53ee8cc1Swenshuai.xi
715*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_CC_STARTPARSING:
716*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_CC_StartParsing((VDEC_CCCfg*)(((VDEC_V2_IO_Param *)pArgs)->param[0]));
717*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
718*53ee8cc1Swenshuai.xi break;
719*53ee8cc1Swenshuai.xi
720*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_CC_STOPPARSING:
721*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_CC_StopParsing((VDEC_CCCfg*)(((VDEC_V2_IO_Param *)pArgs)->param[0]));
722*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
723*53ee8cc1Swenshuai.xi break;
724*53ee8cc1Swenshuai.xi
725*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_CC_GETWRITEPTR:
726*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_CC_GetWritePtr((MS_U32*)(((VDEC_V2_IO_Param *)pArgs)->param[0]));
727*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
728*53ee8cc1Swenshuai.xi break;
729*53ee8cc1Swenshuai.xi
730*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_CC_GETREADPTR:
731*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_CC_GetReadPtr((MS_U32*)(((VDEC_V2_IO_Param *)pArgs)->param[0]));
732*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
733*53ee8cc1Swenshuai.xi break;
734*53ee8cc1Swenshuai.xi
735*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_CC_UPDATEREADPTR:
736*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_CC_UpdateReadPtr(*((MS_U32*)(((VDEC_V2_IO_Param *)pArgs)->param[0])));
737*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
738*53ee8cc1Swenshuai.xi break;
739*53ee8cc1Swenshuai.xi
740*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_CC_GETISOVERFLOW:
741*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_CC_GetIsOverflow((MS_BOOL*)(((VDEC_V2_IO_Param *)pArgs)->param[0]));
742*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
743*53ee8cc1Swenshuai.xi break;
744*53ee8cc1Swenshuai.xi
745*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_SETEVENT:
746*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_SetEvent(*((MS_U32*)(((VDEC_V2_IO_Param *)pArgs)->param[0])),
747*53ee8cc1Swenshuai.xi *((VDEC_EventCb*)(((VDEC_V2_IO_Param *)pArgs)->param[1])),
748*53ee8cc1Swenshuai.xi (void*)(((VDEC_V2_IO_Param *)pArgs)->param[2]));
749*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
750*53ee8cc1Swenshuai.xi break;
751*53ee8cc1Swenshuai.xi
752*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_UNSETEVENT:
753*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_UnsetEvent(*((MS_U32*)(((VDEC_V2_IO_Param *)pArgs)->param[0])));
754*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
755*53ee8cc1Swenshuai.xi break;
756*53ee8cc1Swenshuai.xi
757*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_SETENVENT_EX:
758*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_SetEvent_EX(*((VDEC_CB_TYPE*)(((VDEC_V2_IO_Param *)pArgs)->param[0])),
759*53ee8cc1Swenshuai.xi *((MS_U32*)(((VDEC_V2_IO_Param *)pArgs)->param[1])),
760*53ee8cc1Swenshuai.xi *((VDEC_EventCb*)(((VDEC_V2_IO_Param *)pArgs)->param[2])),
761*53ee8cc1Swenshuai.xi (void*)(((VDEC_V2_IO_Param *)pArgs)->param[3]));
762*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
763*53ee8cc1Swenshuai.xi break;
764*53ee8cc1Swenshuai.xi
765*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_UNSETEVENT_EX:
766*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_UnsetEvent_EX(*((VDEC_CB_TYPE*)(((VDEC_V2_IO_Param *)pArgs)->param[0])),
767*53ee8cc1Swenshuai.xi *((MS_U32*)(((VDEC_V2_IO_Param *)pArgs)->param[1])));
768*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
769*53ee8cc1Swenshuai.xi break;
770*53ee8cc1Swenshuai.xi
771*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_GETEVENTINFO:
772*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_GetEventInfo((MS_U32*)(((VDEC_V2_IO_Param *)pArgs)->param[0]));
773*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
774*53ee8cc1Swenshuai.xi break;
775*53ee8cc1Swenshuai.xi
776*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_GENPATTERN:
777*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_GenPattern(*((VDEC_PatternType*)(((VDEC_V2_IO_Param *)pArgs)->param[0])),
778*53ee8cc1Swenshuai.xi *((MS_PHYADDR*)(((VDEC_V2_IO_Param *)pArgs)->param[1])),
779*53ee8cc1Swenshuai.xi (MS_U32*)(((VDEC_V2_IO_Param *)pArgs)->param[2]));
780*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
781*53ee8cc1Swenshuai.xi break;
782*53ee8cc1Swenshuai.xi
783*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_GENPATTERNLEASTLENGTH:
784*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_GetPatternLeastLength(*((VDEC_PatternType*)(((VDEC_V2_IO_Param *)pArgs)->param[0])));
785*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
786*53ee8cc1Swenshuai.xi break;
787*53ee8cc1Swenshuai.xi
788*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_DISABLEDEBLOCKING:
789*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_DisableDeblocking(*((MS_BOOL*)(((VDEC_V2_IO_Param *)pArgs)->param[0])));
790*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
791*53ee8cc1Swenshuai.xi break;
792*53ee8cc1Swenshuai.xi
793*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_DISABLEQUARTERPIXEL:
794*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_DisableQuarterPixel(*((MS_BOOL*)(((VDEC_V2_IO_Param *)pArgs)->param[0])));
795*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
796*53ee8cc1Swenshuai.xi break;
797*53ee8cc1Swenshuai.xi
798*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_SETAUTORMLSTZEROBYTE:
799*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_SetAutoRmLstZeroByte(*((MS_BOOL*)(((VDEC_V2_IO_Param *)pArgs)->param[0])));
800*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
801*53ee8cc1Swenshuai.xi break;
802*53ee8cc1Swenshuai.xi
803*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_SETBALANCEBW:
804*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_SetBalanceBW(*((MS_U8*)(((VDEC_V2_IO_Param *)pArgs)->param[0])),
805*53ee8cc1Swenshuai.xi *((MS_U8*)(((VDEC_V2_IO_Param *)pArgs)->param[1])),
806*53ee8cc1Swenshuai.xi *((MS_U8*)(((VDEC_V2_IO_Param *)pArgs)->param[2])),
807*53ee8cc1Swenshuai.xi *((MS_U8*)(((VDEC_V2_IO_Param *)pArgs)->param[3])));
808*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
809*53ee8cc1Swenshuai.xi break;
810*53ee8cc1Swenshuai.xi
811*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_DBGDUMPSTATUS:
812*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_DbgDumpStatus();
813*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
814*53ee8cc1Swenshuai.xi break;
815*53ee8cc1Swenshuai.xi
816*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_SETCONTROL:
817*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_SetControl(*((VDEC_User_Cmd*)(((VDEC_V2_IO_Param *)pArgs)->param[0])),
818*53ee8cc1Swenshuai.xi *((MS_U32*)(((VDEC_V2_IO_Param *)pArgs)->param[1])));
819*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
820*53ee8cc1Swenshuai.xi break;
821*53ee8cc1Swenshuai.xi
822*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_GETCONTROL:
823*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_GetControl(*((VDEC_User_Cmd*)(((VDEC_V2_IO_Param *)pArgs)->param[0])),
824*53ee8cc1Swenshuai.xi *((MS_U32*)(((VDEC_V2_IO_Param *)pArgs)->param[1])));
825*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
826*53ee8cc1Swenshuai.xi break;
827*53ee8cc1Swenshuai.xi
828*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_GETDISPCNT:
829*53ee8cc1Swenshuai.xi *((MS_U32 *)pRet) = psVDEC_InstPri->fpVDEC_GetDispCnt();
830*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
831*53ee8cc1Swenshuai.xi break;
832*53ee8cc1Swenshuai.xi
833*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_GETFWVERSION:
834*53ee8cc1Swenshuai.xi *((MS_U32 *)pRet) = psVDEC_InstPri->fpVDEC_GetFwVersion(*((VDEC_FwType*)(((VDEC_V2_IO_Param *)pArgs)->param[0])));;
835*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
836*53ee8cc1Swenshuai.xi break;
837*53ee8cc1Swenshuai.xi
838*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_SETBLOCKDISPLAY:
839*53ee8cc1Swenshuai.xi *((MS_U32 *)pRet) = psVDEC_InstPri->fpVDEC_SetBlockDisplay(*((MS_BOOL*)(((VDEC_V2_IO_Param *)pArgs)->param[0])));
840*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
841*53ee8cc1Swenshuai.xi break;
842*53ee8cc1Swenshuai.xi
843*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_ENABLEESBUFFMALLOC:
844*53ee8cc1Swenshuai.xi *((MS_U32 *)pRet) = psVDEC_InstPri->fpVDEC_EnableESBuffMalloc(*((MS_BOOL*)(((VDEC_V2_IO_Param *)pArgs)->param[0])));
845*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
846*53ee8cc1Swenshuai.xi break;
847*53ee8cc1Swenshuai.xi
848*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_GETESBUFFVACANCY:
849*53ee8cc1Swenshuai.xi *((MS_U32 *)pRet) = psVDEC_InstPri->fpVDEC_GetESBuffVacancy((void*)(((VDEC_V2_IO_Param *)pArgs)->param[0]));
850*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
851*53ee8cc1Swenshuai.xi break;
852*53ee8cc1Swenshuai.xi
853*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_GETESBUFF:
854*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_GetESBuff(*((MS_U32*)(((VDEC_V2_IO_Param *)pArgs)->param[0])),
855*53ee8cc1Swenshuai.xi (MS_U32*)(((VDEC_V2_IO_Param *)pArgs)->param[1]),
856*53ee8cc1Swenshuai.xi (MS_PHYADDR*)(((VDEC_V2_IO_Param *)pArgs)->param[2]));
857*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
858*53ee8cc1Swenshuai.xi break;
859*53ee8cc1Swenshuai.xi
860*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_GETNEXTDISPFRAME:
861*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_GetNextDispFrame((VDEC_DispFrame**)(((VDEC_V2_IO_Param *)pArgs)->param[0]));
862*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
863*53ee8cc1Swenshuai.xi break;
864*53ee8cc1Swenshuai.xi
865*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_DISPLAYFRAME:
866*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_DisplayFrame((VDEC_DispFrame*)(((VDEC_V2_IO_Param *)pArgs)->param[0]));
867*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
868*53ee8cc1Swenshuai.xi break;
869*53ee8cc1Swenshuai.xi
870*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_RELEASEFRAME:
871*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_ReleaseFrame((VDEC_DispFrame*)(((VDEC_V2_IO_Param *)pArgs)->param[0]));
872*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
873*53ee8cc1Swenshuai.xi break;
874*53ee8cc1Swenshuai.xi
875*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_FLUSHPTSBUF:
876*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_FlushPTSBuf();
877*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
878*53ee8cc1Swenshuai.xi break;
879*53ee8cc1Swenshuai.xi
880*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_CAPTUREFRAME:
881*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_CaptureFrame(*((MS_U32*)(((VDEC_V2_IO_Param *)pArgs)->param[0])),
882*53ee8cc1Swenshuai.xi *((MS_BOOL*)(((VDEC_V2_IO_Param *)pArgs)->param[1])));
883*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
884*53ee8cc1Swenshuai.xi break;
885*53ee8cc1Swenshuai.xi
886*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_CC_INIT:
887*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_CC_Init((MS_U32*)(((VDEC_V2_IO_Param *)pArgs)->param[0]));
888*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
889*53ee8cc1Swenshuai.xi break;
890*53ee8cc1Swenshuai.xi
891*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_CC_SETCFG:
892*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_CC_SetCfg(*((VDEC_CCFormat*)(((VDEC_V2_IO_Param *)pArgs)->param[0])),
893*53ee8cc1Swenshuai.xi *((VDEC_CCType*)(((VDEC_V2_IO_Param *)pArgs)->param[1])),
894*53ee8cc1Swenshuai.xi (MS_U32*)(((VDEC_V2_IO_Param *)pArgs)->param[2]));
895*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
896*53ee8cc1Swenshuai.xi break;
897*53ee8cc1Swenshuai.xi
898*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_CC_SETBUFFSTARTADD:
899*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_CC_SetBuffStartAdd(*((VDEC_CCFormat*)(((VDEC_V2_IO_Param *)pArgs)->param[0])),
900*53ee8cc1Swenshuai.xi (MS_U32*)(((VDEC_V2_IO_Param *)pArgs)->param[1]));
901*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
902*53ee8cc1Swenshuai.xi break;
903*53ee8cc1Swenshuai.xi
904*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_CC_UPDATEWRITEADD:
905*53ee8cc1Swenshuai.xi *((MS_U32 *)pRet) = psVDEC_InstPri->fpVDEC_CC_UpdateWriteAdd(*((VDEC_CCFormat*)(((VDEC_V2_IO_Param *)pArgs)->param[0])),
906*53ee8cc1Swenshuai.xi (MS_U32*)(((VDEC_V2_IO_Param *)pArgs)->param[1]));
907*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
908*53ee8cc1Swenshuai.xi break;
909*53ee8cc1Swenshuai.xi
910*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_CC_UPDATEREADADD:
911*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_CC_UpdateReadAdd(*((VDEC_CCFormat*)(((VDEC_V2_IO_Param *)pArgs)->param[0])),
912*53ee8cc1Swenshuai.xi (MS_U32*)(((VDEC_V2_IO_Param *)pArgs)->param[1]));
913*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
914*53ee8cc1Swenshuai.xi break;
915*53ee8cc1Swenshuai.xi
916*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_CC_DISABLEPARSING:
917*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_CC_DisableParsing(*((VDEC_CCFormat*)(((VDEC_V2_IO_Param *)pArgs)->param[0])));
918*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
919*53ee8cc1Swenshuai.xi break;
920*53ee8cc1Swenshuai.xi
921*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_CC_GETINFO:
922*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_CC_GetInfo(*((VDEC_CCFormat*)(((VDEC_V2_IO_Param *)pArgs)->param[0])),
923*53ee8cc1Swenshuai.xi *((VDEC_CCInfoCmd*)(((VDEC_V2_IO_Param *)pArgs)->param[1])),
924*53ee8cc1Swenshuai.xi (MS_U32*)(((VDEC_V2_IO_Param *)pArgs)->param[2]));
925*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
926*53ee8cc1Swenshuai.xi break;
927*53ee8cc1Swenshuai.xi
928*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_CC_GETISRSTDONE:
929*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_CC_GetIsRstDone(*((VDEC_CCFormat*)(((VDEC_V2_IO_Param *)pArgs)->param[0])));
930*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
931*53ee8cc1Swenshuai.xi break;
932*53ee8cc1Swenshuai.xi
933*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_CC_GETISBUFFOVERFLOW:
934*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_CC_GetIsBuffOverflow(*((VDEC_CCFormat*)(((VDEC_V2_IO_Param *)pArgs)->param[0])));
935*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
936*53ee8cc1Swenshuai.xi break;
937*53ee8cc1Swenshuai.xi
938*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_CC_GETWRITEADD:
939*53ee8cc1Swenshuai.xi *((MS_PHYADDR *)pRet) = psVDEC_InstPri->fpVDEC_CC_GetWriteAdd(*((VDEC_CCFormat*)(((VDEC_V2_IO_Param *)pArgs)->param[0])));
940*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
941*53ee8cc1Swenshuai.xi break;
942*53ee8cc1Swenshuai.xi
943*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_CC_GETREADADD:
944*53ee8cc1Swenshuai.xi *((MS_PHYADDR *)pRet) = psVDEC_InstPri->fpVDEC_CC_GetReadAdd(*((VDEC_CCFormat*)(((VDEC_V2_IO_Param *)pArgs)->param[0])));
945*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
946*53ee8cc1Swenshuai.xi break;
947*53ee8cc1Swenshuai.xi
948*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_SYSTEMPRESETCONTROL:
949*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_SystemPreSetControl(*((VDEC_User_Cmd*)(((VDEC_V2_IO_Param *)pArgs)->param[0])),
950*53ee8cc1Swenshuai.xi (void*)(((VDEC_V2_IO_Param *)pArgs)->param[1]));
951*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
952*53ee8cc1Swenshuai.xi break;
953*53ee8cc1Swenshuai.xi
954*53ee8cc1Swenshuai.xi case E_VDEC_V2_CMD_PRESETCONTROL:
955*53ee8cc1Swenshuai.xi *((VDEC_Result *)pRet) = psVDEC_InstPri->fpVDEC_PreSetControl(*((VDEC_User_Cmd*)(((VDEC_V2_IO_Param *)pArgs)->param[0])),
956*53ee8cc1Swenshuai.xi (MS_U32 **)(((VDEC_V2_IO_Param *)pArgs)->param[1]));
957*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_SUCCESS;
958*53ee8cc1Swenshuai.xi break;
959*53ee8cc1Swenshuai.xi
960*53ee8cc1Swenshuai.xi default:
961*53ee8cc1Swenshuai.xi printf("Error Command = %ld\n",u32Cmd);
962*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_NOT_SUPPORTED;
963*53ee8cc1Swenshuai.xi break;
964*53ee8cc1Swenshuai.xi }
965*53ee8cc1Swenshuai.xi if(*pRet != E_VDEC_OK)
966*53ee8cc1Swenshuai.xi {
967*53ee8cc1Swenshuai.xi ret = UTOPIA_STATUS_FAIL;
968*53ee8cc1Swenshuai.xi }
969*53ee8cc1Swenshuai.xi return ret;
970*53ee8cc1Swenshuai.xi }
971*53ee8cc1Swenshuai.xi
VDEC_V2_Close(void * pInstance)972*53ee8cc1Swenshuai.xi MS_U32 VDEC_V2_Close(void* pInstance)
973*53ee8cc1Swenshuai.xi {
974*53ee8cc1Swenshuai.xi void* pResource = NULL;
975*53ee8cc1Swenshuai.xi VDEC_RESOURCE_PRIVATE* pVDEC_ResourcePrivate = NULL;
976*53ee8cc1Swenshuai.xi VDEC_INSTANCE_PRIVATE* psVDEC_InstPri = NULL;
977*53ee8cc1Swenshuai.xi
978*53ee8cc1Swenshuai.xi // Get instance private
979*53ee8cc1Swenshuai.xi UtopiaInstanceGetPrivate(pInstance, (void**)&psVDEC_InstPri);
980*53ee8cc1Swenshuai.xi
981*53ee8cc1Swenshuai.xi // Get resource private
982*53ee8cc1Swenshuai.xi if(UtopiaResourceObtain(pModuleVDEC_V2, 0, &pResource) != UTOPIA_STATUS_SUCCESS)
983*53ee8cc1Swenshuai.xi {
984*53ee8cc1Swenshuai.xi printf("UtopiaResourceObtain fail,%s,%d\n",__FUNCTION__,__LINE__);
985*53ee8cc1Swenshuai.xi return UTOPIA_STATUS_ERR_RESOURCE;
986*53ee8cc1Swenshuai.xi }
987*53ee8cc1Swenshuai.xi
988*53ee8cc1Swenshuai.xi UtopiaResourceGetPrivate(pResource,(void*)(&pVDEC_ResourcePrivate));
989*53ee8cc1Swenshuai.xi
990*53ee8cc1Swenshuai.xi // Set using decoder index to 0
991*53ee8cc1Swenshuai.xi pVDEC_ResourcePrivate->u8DecoderInUse = 0;
992*53ee8cc1Swenshuai.xi
993*53ee8cc1Swenshuai.xi UtopiaResourceRelease(pResource);
994*53ee8cc1Swenshuai.xi
995*53ee8cc1Swenshuai.xi UtopiaInstanceDelete(pInstance);
996*53ee8cc1Swenshuai.xi
997*53ee8cc1Swenshuai.xi return UTOPIA_STATUS_SUCCESS;
998*53ee8cc1Swenshuai.xi }
999*53ee8cc1Swenshuai.xi
1000*53ee8cc1Swenshuai.xi
1001*53ee8cc1Swenshuai.xi
1002*53ee8cc1Swenshuai.xi
1003