xref: /utopia/UTPA2-700.0.x/mxlib/include/apiDMX.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 //<MStar Software>
78*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
79*53ee8cc1Swenshuai.xi //
80*53ee8cc1Swenshuai.xi // Copyright (c) 2008-2009 MStar Semiconductor, Inc.
81*53ee8cc1Swenshuai.xi // All rights reserved.
82*53ee8cc1Swenshuai.xi //
83*53ee8cc1Swenshuai.xi // Unless otherwise stipulated in writing, any and all information contained
84*53ee8cc1Swenshuai.xi // herein regardless in any format shall remain the sole proprietary of
85*53ee8cc1Swenshuai.xi // MStar Semiconductor Inc. and be kept in strict confidence
86*53ee8cc1Swenshuai.xi // ("MStar Confidential Information") by the recipient.
87*53ee8cc1Swenshuai.xi // Any unauthorized act including without limitation unauthorized disclosure,
88*53ee8cc1Swenshuai.xi // copying, use, reproduction, sale, distribution, modification, disassembling,
89*53ee8cc1Swenshuai.xi // reverse engineering and compiling of the contents of MStar Confidential
90*53ee8cc1Swenshuai.xi // Information is unlawful and strictly prohibited. MStar hereby reserves the
91*53ee8cc1Swenshuai.xi // rights to any and all damages, losses, costs and expenses resulting therefrom.
92*53ee8cc1Swenshuai.xi //
93*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
94*53ee8cc1Swenshuai.xi 
95*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////////////////////////
96*53ee8cc1Swenshuai.xi ///
97*53ee8cc1Swenshuai.xi /// @file   apiDMX.h
98*53ee8cc1Swenshuai.xi /// @brief  Demux API
99*53ee8cc1Swenshuai.xi /// @author MStar Semiconductor,Inc.
100*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////////////////////////
101*53ee8cc1Swenshuai.xi 
102*53ee8cc1Swenshuai.xi //-------------------------------------------------
103*53ee8cc1Swenshuai.xi /*! \defgroup DMX DMX interface
104*53ee8cc1Swenshuai.xi 
105*53ee8cc1Swenshuai.xi   TSP (Transport Stream Processor) receives transport stream through serial or parallel interface.
106*53ee8cc1Swenshuai.xi   The input stream can be filtered by PID and masked pattern to get individual section data streams that are qualified with CRC and stored into the ring buffers located in external memory.
107*53ee8cc1Swenshuai.xi   Besides section filter, audio PES FIFO and video PES FIFO are used to pass the selected Audio/Video PES packet to audio/video decoder.
108*53ee8cc1Swenshuai.xi   PVR function is also supported.
109*53ee8cc1Swenshuai.xi 
110*53ee8cc1Swenshuai.xi   In order to parse section data in TS stream, TSP equipment a 32-bit RISC processor, besides, The PID filter, header compare, CRC, DMA and PVR are implemented with dedicated hardware.
111*53ee8cc1Swenshuai.xi 
112*53ee8cc1Swenshuai.xi   <b> Ownership of Filters </b> \n
113*53ee8cc1Swenshuai.xi   Not only one processor will use Demux driver at the same time, all the filters can be grouped into different processor by API MApi_DMX_SetOwner.
114*53ee8cc1Swenshuai.xi    \image html apiDMX_pic1.png
115*53ee8cc1Swenshuai.xi 
116*53ee8cc1Swenshuai.xi    <b> Filter Life Cycle </b> \n
117*53ee8cc1Swenshuai.xi    \image html apiDMX_pic2.png
118*53ee8cc1Swenshuai.xi 
119*53ee8cc1Swenshuai.xi   <b> API call flow for initiation: </b> \n
120*53ee8cc1Swenshuai.xi    \image html apiDMX_pic3.png
121*53ee8cc1Swenshuai.xi 
122*53ee8cc1Swenshuai.xi   <b> API call flow for exit: </b> \n
123*53ee8cc1Swenshuai.xi    \image html apiDMX_pic4.png
124*53ee8cc1Swenshuai.xi 
125*53ee8cc1Swenshuai.xi   <b> API call flow for general usage - Live in playback: </b> \n
126*53ee8cc1Swenshuai.xi    \image html apiDMX_pic5.png
127*53ee8cc1Swenshuai.xi 
128*53ee8cc1Swenshuai.xi   <b> API call flow for general usage - File in playback: </b> \n
129*53ee8cc1Swenshuai.xi    \image html apiDMX_pic6.png
130*53ee8cc1Swenshuai.xi 
131*53ee8cc1Swenshuai.xi   <b> API call flow for general usage - PVR/PVRCA: </b> \n
132*53ee8cc1Swenshuai.xi    \image html apiDMX_pic7.png
133*53ee8cc1Swenshuai.xi 
134*53ee8cc1Swenshuai.xi   <b> API call flow for general usage - MMFI Audio/MMFI Video3D: </b> \n
135*53ee8cc1Swenshuai.xi    \image html apiDMX_pic8.png
136*53ee8cc1Swenshuai.xi 
137*53ee8cc1Swenshuai.xi   *! \defgroup TSP TSP related functions
138*53ee8cc1Swenshuai.xi   *   \ingroup   DMX
139*53ee8cc1Swenshuai.xi 
140*53ee8cc1Swenshuai.xi   *! \defgroup TSP_General  TSP General functions
141*53ee8cc1Swenshuai.xi   *   \ingroup   TSP
142*53ee8cc1Swenshuai.xi 
143*53ee8cc1Swenshuai.xi   *! \defgroup TSP_Flow  TSP Flow control functions
144*53ee8cc1Swenshuai.xi   *   \ingroup   TSP
145*53ee8cc1Swenshuai.xi 
146*53ee8cc1Swenshuai.xi   *! \defgroup TSP_STC TSP STC/PCR functions
147*53ee8cc1Swenshuai.xi   *   \ingroup   TSP
148*53ee8cc1Swenshuai.xi 
149*53ee8cc1Swenshuai.xi   *! \defgroup TSP_Filter TSP Basic filter control functions
150*53ee8cc1Swenshuai.xi   *   \ingroup   TSP
151*53ee8cc1Swenshuai.xi 
152*53ee8cc1Swenshuai.xi   *! \defgroup TSP_SecFilter TSP Section filter control functions
153*53ee8cc1Swenshuai.xi   *   \ingroup   TSP
154*53ee8cc1Swenshuai.xi 
155*53ee8cc1Swenshuai.xi   *! \defgroup TSP_TTX TSP Teltext related functions
156*53ee8cc1Swenshuai.xi   *   \ingroup   TSP
157*53ee8cc1Swenshuai.xi 
158*53ee8cc1Swenshuai.xi   *! \defgroup TSP_FIFO TSP AVFIFO functions
159*53ee8cc1Swenshuai.xi   *   \ingroup   TSP
160*53ee8cc1Swenshuai.xi 
161*53ee8cc1Swenshuai.xi   *! \defgroup TSP_PVR TSP PVR (record) related functions
162*53ee8cc1Swenshuai.xi   *   \ingroup   TSP
163*53ee8cc1Swenshuai.xi 
164*53ee8cc1Swenshuai.xi   *! \defgroup TSP_PVR_General TSP PVR general  functions
165*53ee8cc1Swenshuai.xi   *   \ingroup   TSP_PVR
166*53ee8cc1Swenshuai.xi 
167*53ee8cc1Swenshuai.xi   *! \defgroup TSP_PVR_CA TSP PVR CA  functions (need decrypt)
168*53ee8cc1Swenshuai.xi   *   \ingroup   TSP_PVR
169*53ee8cc1Swenshuai.xi 
170*53ee8cc1Swenshuai.xi   *! \defgroup TSP_FILEIN_PVR TSP file-in record related functions
171*53ee8cc1Swenshuai.xi   *   \ingroup   TSP_PVR
172*53ee8cc1Swenshuai.xi 
173*53ee8cc1Swenshuai.xi   *! \defgroup TSP_PVR_STB TSP PVR related functions for STB
174*53ee8cc1Swenshuai.xi   *   \ingroup   TSP_PVR
175*53ee8cc1Swenshuai.xi 
176*53ee8cc1Swenshuai.xi   *! \defgroup TSP_Playback TSP playback (file-in) related functions
177*53ee8cc1Swenshuai.xi   *   \ingroup   TSP
178*53ee8cc1Swenshuai.xi 
179*53ee8cc1Swenshuai.xi   *! \defgroup TSP_SCMB TSP Scramble status check functions
180*53ee8cc1Swenshuai.xi   *   \ingroup   TSP
181*53ee8cc1Swenshuai.xi 
182*53ee8cc1Swenshuai.xi   *! \defgroup TSP_STB TSP functions which only used on STB chip
183*53ee8cc1Swenshuai.xi   *   \ingroup   TSP
184*53ee8cc1Swenshuai.xi 
185*53ee8cc1Swenshuai.xi   *! \defgroup TSP_Debug TSP Debug functions
186*53ee8cc1Swenshuai.xi   *   \ingroup   TSP
187*53ee8cc1Swenshuai.xi 
188*53ee8cc1Swenshuai.xi   *! \defgroup TSP_FIQ TSP FIQ related functions
189*53ee8cc1Swenshuai.xi   *   \ingroup   TSP
190*53ee8cc1Swenshuai.xi 
191*53ee8cc1Swenshuai.xi   *! \defgroup TSP_Merge TSP merge stream related functions for CI+ 1.4 used
192*53ee8cc1Swenshuai.xi   *   \ingroup   TSP
193*53ee8cc1Swenshuai.xi 
194*53ee8cc1Swenshuai.xi   *! \defgroup TSP_MM TSP MM (Multi-Media) related functions
195*53ee8cc1Swenshuai.xi   *   \ingroup   TSP
196*53ee8cc1Swenshuai.xi 
197*53ee8cc1Swenshuai.xi   *! \defgroup TSO TSO related functions
198*53ee8cc1Swenshuai.xi   *   \ingroup   DMX
199*53ee8cc1Swenshuai.xi 
200*53ee8cc1Swenshuai.xi   *! \defgroup TSO_General TSO general functions
201*53ee8cc1Swenshuai.xi   *   \ingroup   TSO
202*53ee8cc1Swenshuai.xi 
203*53ee8cc1Swenshuai.xi   *! \defgroup DMX_STR DMX STR functions
204*53ee8cc1Swenshuai.xi   *   \ingroup   DMX
205*53ee8cc1Swenshuai.xi 
206*53ee8cc1Swenshuai.xi   *! \defgroup DMX_ToBeModified DMX api to be modified
207*53ee8cc1Swenshuai.xi   *   \ingroup   DMX
208*53ee8cc1Swenshuai.xi 
209*53ee8cc1Swenshuai.xi   *! \defgroup DMX_ToBeModified_TSP TSP api to be modified
210*53ee8cc1Swenshuai.xi   *   \ingroup   DMX_ToBeModified
211*53ee8cc1Swenshuai.xi 
212*53ee8cc1Swenshuai.xi   *! \defgroup DMX_ToBeModified_MM MM api to be modified
213*53ee8cc1Swenshuai.xi   *   \ingroup   DMX_ToBeModified
214*53ee8cc1Swenshuai.xi 
215*53ee8cc1Swenshuai.xi   *! \defgroup DMX_ToBeModified_TSO TSO api to be modified
216*53ee8cc1Swenshuai.xi   *   \ingroup   DMX_ToBeModified
217*53ee8cc1Swenshuai.xi 
218*53ee8cc1Swenshuai.xi   *! \defgroup DMX_ToBeRemove DMX api to be removed
219*53ee8cc1Swenshuai.xi   *   \ingroup   DMX
220*53ee8cc1Swenshuai.xi 
221*53ee8cc1Swenshuai.xi   */
222*53ee8cc1Swenshuai.xi //-------------------------------------------------
223*53ee8cc1Swenshuai.xi 
224*53ee8cc1Swenshuai.xi #ifndef __API_DMX_H__
225*53ee8cc1Swenshuai.xi #define __API_DMX_H__
226*53ee8cc1Swenshuai.xi 
227*53ee8cc1Swenshuai.xi #include "MsCommon.h"
228*53ee8cc1Swenshuai.xi #include "UFO.h"
229*53ee8cc1Swenshuai.xi 
230*53ee8cc1Swenshuai.xi #ifdef __cplusplus
231*53ee8cc1Swenshuai.xi extern "C"
232*53ee8cc1Swenshuai.xi {
233*53ee8cc1Swenshuai.xi #endif
234*53ee8cc1Swenshuai.xi 
235*53ee8cc1Swenshuai.xi /// NULL PID definition
236*53ee8cc1Swenshuai.xi #define DMX_PID_NULL               (0x1FFFUL)
237*53ee8cc1Swenshuai.xi 
238*53ee8cc1Swenshuai.xi // Please don't change this value if you know exactly what you are doing
239*53ee8cc1Swenshuai.xi /// DMX Filter pattern depth
240*53ee8cc1Swenshuai.xi #define DMX_SECT_FLT_DEPTH         (16UL)
241*53ee8cc1Swenshuai.xi 
242*53ee8cc1Swenshuai.xi /// NULL DMX Id
243*53ee8cc1Swenshuai.xi #define DMX_DMXID_NULL             ((MS_U8)0xFFUL)
244*53ee8cc1Swenshuai.xi #define MSIF_DMX_LIB_CODE                     {'D','M','X','_'}    //Lib code
245*53ee8cc1Swenshuai.xi #define MSIF_DMX_LIBVER                       {'1','5'}            //LIB version
246*53ee8cc1Swenshuai.xi #define MSIF_DMX_BUILDNUM                     {'0','3'}            //Build Number
247*53ee8cc1Swenshuai.xi #define MSIF_DMX_CHANGELIST                   {'0','0','6','1','7','4','7','0'} //P4 ChangeList Number
248*53ee8cc1Swenshuai.xi 
249*53ee8cc1Swenshuai.xi /// DMX Version
250*53ee8cc1Swenshuai.xi #define DMX_API_VERSION                 /* Character String for DRV/API version             */  \
251*53ee8cc1Swenshuai.xi     MSIF_TAG,                           /* 'MSIF'                                           */  \
252*53ee8cc1Swenshuai.xi     MSIF_CLASS,                         /* '00'                                             */  \
253*53ee8cc1Swenshuai.xi     MSIF_CUS,                           /* 0x0000                                           */  \
254*53ee8cc1Swenshuai.xi     MSIF_MOD,                           /* 0x0000                                           */  \
255*53ee8cc1Swenshuai.xi     MSIF_CHIP,                                                                                  \
256*53ee8cc1Swenshuai.xi     MSIF_CPU,                                                                                   \
257*53ee8cc1Swenshuai.xi     MSIF_DMX_LIB_CODE,                  /* IP__                                             */  \
258*53ee8cc1Swenshuai.xi     MSIF_DMX_LIBVER,                    /* 0.0 ~ Z.Z                                        */  \
259*53ee8cc1Swenshuai.xi     MSIF_DMX_BUILDNUM,                  /* 00 ~ 99                                          */  \
260*53ee8cc1Swenshuai.xi     MSIF_DMX_CHANGELIST,                /* CL#                                              */  \
261*53ee8cc1Swenshuai.xi     MSIF_OS
262*53ee8cc1Swenshuai.xi 
263*53ee8cc1Swenshuai.xi /// DMX status indicator
264*53ee8cc1Swenshuai.xi typedef enum
265*53ee8cc1Swenshuai.xi {
266*53ee8cc1Swenshuai.xi     DMX_FILTER_STATUS_OK,                   ///< DMX status OK
267*53ee8cc1Swenshuai.xi     DMX_FILTER_STATUS_ERROR,                ///< DMX status ERROR
268*53ee8cc1Swenshuai.xi     DMX_FILTER_STATUS_NOT_SUPPORT,           ///< DMX status NOT SUPPORT
269*53ee8cc1Swenshuai.xi     DMX_FILTER_STATUS_MULTIPRC_RUNNING      ///< DMX status multiple process still sunning
270*53ee8cc1Swenshuai.xi } DMX_FILTER_STATUS;
271*53ee8cc1Swenshuai.xi 
272*53ee8cc1Swenshuai.xi /// DMX debug levels
273*53ee8cc1Swenshuai.xi typedef enum
274*53ee8cc1Swenshuai.xi {
275*53ee8cc1Swenshuai.xi     DMX_DBG_NONE,   ///< None
276*53ee8cc1Swenshuai.xi     DMX_DBG_ERR,    ///< Errors
277*53ee8cc1Swenshuai.xi     DMX_DBG_WARN,   ///< Warnings
278*53ee8cc1Swenshuai.xi     DMX_DBG_INFO,   ///< Information
279*53ee8cc1Swenshuai.xi     DMX_DBG_PVR,    ///< PVR
280*53ee8cc1Swenshuai.xi     DMX_DBG_FUNC    ///< Function calls
281*53ee8cc1Swenshuai.xi } DMX_DBGMSG_LEVEL;
282*53ee8cc1Swenshuai.xi 
283*53ee8cc1Swenshuai.xi /// DMX internal startup parameter
284*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_500_3)
285*53ee8cc1Swenshuai.xi typedef struct __attribute__((__packed__)) _DMX_FW_Param
286*53ee8cc1Swenshuai.xi #else
287*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _DMX_FW_Param
288*53ee8cc1Swenshuai.xi #endif
289*53ee8cc1Swenshuai.xi {
290*53ee8cc1Swenshuai.xi     MS_PHY                                  phyFWAddr;           ///< Firmware physical address
291*53ee8cc1Swenshuai.xi     MS_U32                                  u32FWSize;           ///< Firmware size
292*53ee8cc1Swenshuai.xi 
293*53ee8cc1Swenshuai.xi     MS_PHY                                  phyVQAddr;           ///< Virtual Queue physical address
294*53ee8cc1Swenshuai.xi     MS_U32                                  u32VQSize;           ///< Virtual Queue size
295*53ee8cc1Swenshuai.xi 
296*53ee8cc1Swenshuai.xi     MS_U32                                  u32IsHK;             ///< Indicates whether this is the "house-keeping" (= main) CPU
297*53ee8cc1Swenshuai.xi     MS_U32                                  u32Res;
298*53ee8cc1Swenshuai.xi 
299*53ee8cc1Swenshuai.xi     MS_U32                                  _zero_reserved[2];   ///< Reserved
300*53ee8cc1Swenshuai.xi 
301*53ee8cc1Swenshuai.xi } DMX_TSPParam;
302*53ee8cc1Swenshuai.xi 
303*53ee8cc1Swenshuai.xi 
304*53ee8cc1Swenshuai.xi #if 0
305*53ee8cc1Swenshuai.xi /// DMX fitler type and source type
306*53ee8cc1Swenshuai.xi typedef enum
307*53ee8cc1Swenshuai.xi {
308*53ee8cc1Swenshuai.xi     DMX_FILTER_TYPE_VIDEO,                                   ///< DMX video filter type
309*53ee8cc1Swenshuai.xi     DMX_FILTER_TYPE_AUDIO,                                   ///< DMX audio filter type
310*53ee8cc1Swenshuai.xi     DMX_FILTER_TYPE_AUDIO2,                                  ///< DMX audio2 filter type
311*53ee8cc1Swenshuai.xi     DMX_FILTER_TYPE_SECTION,                                 ///< DMX section filter type
312*53ee8cc1Swenshuai.xi     DMX_FILTER_TYPE_PES,                                     ///< DMX PES filter type
313*53ee8cc1Swenshuai.xi     DMX_FILTER_TYPE_PACKET,                                  ///< DMX TS packet filter type
314*53ee8cc1Swenshuai.xi     DMX_FILTER_TYPE_PCR,                                     ///< DMX PCR filter type
315*53ee8cc1Swenshuai.xi     DMX_FILTER_TYPE_TELETEXT,                                ///< DMX teletext filter type
316*53ee8cc1Swenshuai.xi 
317*53ee8cc1Swenshuai.xi     DMX_FILTER_SOURCE_TYPE_MASK  =  0xC0000000,              ///< DMX filter source mask
318*53ee8cc1Swenshuai.xi     DMX_FILTER_SOURCE_TYPE_LIVE  =  0x80000000,              ///< DMX live stream filter source
319*53ee8cc1Swenshuai.xi     DMX_FILTER_SOURCE_TYPE_FILE  =  0x40000000,              ///< DMX file in filter type
320*53ee8cc1Swenshuai.xi } DMX_FILTER_TYPE;
321*53ee8cc1Swenshuai.xi #endif
322*53ee8cc1Swenshuai.xi 
323*53ee8cc1Swenshuai.xi /// DMX fitler type and source type
324*53ee8cc1Swenshuai.xi #define DMX_FILTER_TYPE MS_U32  ///< Filter types
325*53ee8cc1Swenshuai.xi 
326*53ee8cc1Swenshuai.xi #define DMX_FILTER_TYPE_VIDEO                   0x00000000UL                  ///< DMX video filter type
327*53ee8cc1Swenshuai.xi #define DMX_FILTER_TYPE_AUDIO                   0x00000001UL                  ///< DMX audio filter type
328*53ee8cc1Swenshuai.xi #define DMX_FILTER_TYPE_AUDIO2                  0x00000002UL                  ///< DMX audio2 filter type
329*53ee8cc1Swenshuai.xi #define DMX_FILTER_TYPE_SECTION                 0x00000003UL                  ///< DMX section filter type
330*53ee8cc1Swenshuai.xi #define DMX_FILTER_TYPE_PES                     0x00000004UL                  ///< DMX PES filter type
331*53ee8cc1Swenshuai.xi #define DMX_FILTER_TYPE_PACKET                  0x00000005UL                  ///< DMX TS packet filter type
332*53ee8cc1Swenshuai.xi #define DMX_FILTER_TYPE_PCR                     0x00000006UL                  ///< DMX PCR filter type
333*53ee8cc1Swenshuai.xi #define DMX_FILTER_TYPE_TELETEXT                0x00000007UL                  ///< DMX teletext filter type
334*53ee8cc1Swenshuai.xi #define DMX_FILTER_TYPE_VIDEO3D                 0x00000008UL                  ///< DMX V3D filter type
335*53ee8cc1Swenshuai.xi #define DMX_FILTER_TYPE_VIDEO2                  DMX_FILTER_TYPE_VIDEO3D       ///< DMX video2 filter type
336*53ee8cc1Swenshuai.xi #define DMX_FILTER_TYPE_AUDIO3                  0x00000009UL                  ///< DMX audio3 filter type
337*53ee8cc1Swenshuai.xi #define DMX_FILTER_TYPE_AUDIO4                  0x0000000AUL                  ///< DMX audio4 filter type
338*53ee8cc1Swenshuai.xi #define DMX_FILTER_TYPE_REC                     0x0000000BUL                  ///< DMX record filter type no destination needs to be set
339*53ee8cc1Swenshuai.xi #define DMX_FILTER_TYPE_SCMBCHK                 0x0000000CUL                  ///< DMX filter type for checking TS scrambling status
340*53ee8cc1Swenshuai.xi #define DMX_FILTER_TYPE_SECTION_VER             0x0000000DUL                  ///< DMX section filter type with version and CRC check
341*53ee8cc1Swenshuai.xi #define DMX_FILTER_TYPE_SECTION_NO_PUSI         0x0000000EUL                  ///< DMX section filter type which receive section without PUSI
342*53ee8cc1Swenshuai.xi #define DMX_FILTER_TYPE_VIDEO3                  0x0000000FUL                  ///< DMX video3 filter type
343*53ee8cc1Swenshuai.xi #define DMX_FILTER_TYPE_VIDEO4                  0x00000010UL                  ///< DMX video4 filter type
344*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_500_3)
345*53ee8cc1Swenshuai.xi #define DMX_FILTER_TYPE_PVR                     0x00000010UL                  ///< DMX record filter (merge stream) type no destination needs to be set
346*53ee8cc1Swenshuai.xi #define DMX_FILTER_TYPE_PVR1                    0x00000011UL                  ///< DMX record filter (merge stream) type no destination needs to be set
347*53ee8cc1Swenshuai.xi #define DMX_FILTER_TYPE_PVR2                    0x00000012UL                  ///< DMX record filter (merge stream) type no destination needs to be set
348*53ee8cc1Swenshuai.xi #define DMX_FILTER_TYPE_PVR3                    0x00000013UL                  ///< DMX record filter (merge stream) type no destination needs to be set
349*53ee8cc1Swenshuai.xi #else
350*53ee8cc1Swenshuai.xi #define DMX_FILTER_TYPE_PVR                     0x00000011UL                  ///< DMX record filter (merge stream) type no destination needs to be set
351*53ee8cc1Swenshuai.xi #define DMX_FILTER_TYPE_PVR1                    0x00000012UL                  ///< DMX record filter (merge stream) type no destination needs to be set
352*53ee8cc1Swenshuai.xi #define DMX_FILTER_TYPE_PVR2                    0x00000013UL                  ///< DMX record filter (merge stream) type no destination needs to be set
353*53ee8cc1Swenshuai.xi #define DMX_FILTER_TYPE_PVR3                    0x00000014UL                  ///< DMX record filter (merge stream) type no destination needs to be set
354*53ee8cc1Swenshuai.xi #endif
355*53ee8cc1Swenshuai.xi #define DMX_FILTER_TYPE_PVR4                    0x00000015UL                  ///< DMX record filter (merge stream) type no destination needs to be set
356*53ee8cc1Swenshuai.xi #define DMX_FILTER_TYPE_PVR5                    0x00000016UL                  ///< DMX record filter (merge stream) type no destination needs to be set
357*53ee8cc1Swenshuai.xi #define DMX_FILTER_TYPE_PVR6                    0x00000017UL                  ///< DMX record filter (merge stream) type no destination needs to be set
358*53ee8cc1Swenshuai.xi #define DMX_FILTER_TYPE_PVR7                    0x00000018UL                  ///< DMX record filter (merge stream) type no destination needs to be set
359*53ee8cc1Swenshuai.xi #define DMX_FILTER_TYPE_PVR8                    0x00000019UL                  ///< DMX record filter (merge stream) type no destination needs to be set
360*53ee8cc1Swenshuai.xi #define DMX_FILTER_TYPE_PVR9                    0x0000001AUL                  ///< DMX record filter (merge stream) type no destination needs to be set
361*53ee8cc1Swenshuai.xi #define DMX_FILTER_TYPE_AUDIO5                  0x0000001BUL                  ///< DMX audio5 filter type
362*53ee8cc1Swenshuai.xi #define DMX_FILTER_TYPE_AUDIO6                  0x0000001CUL                  ///< DMX audio6 filter type
363*53ee8cc1Swenshuai.xi #define DMX_FILTER_TYPE_VIDEO5                  0x0000001DUL                  ///< DMX video5 filter type
364*53ee8cc1Swenshuai.xi #define DMX_FILTER_TYPE_VIDEO6                  0x0000001EUL                  ///< DMX video6 filter type
365*53ee8cc1Swenshuai.xi #define DMX_FILTER_TYPE_VIDEO7                  0x0000001FUL                  ///< DMX video7 filter type
366*53ee8cc1Swenshuai.xi #define DMX_FILTER_TYPE_VIDEO8                  0x00000020UL                  ///< DMX video8 filter type
367*53ee8cc1Swenshuai.xi #define DMX_FILTER_FLT_MASK                     0xF3FF0F00UL
368*53ee8cc1Swenshuai.xi 
369*53ee8cc1Swenshuai.xi #define DMX_FILTER_SOURCE_TYPE_MASK             0xF0FC0000UL                   ///< DMX filter source mask
370*53ee8cc1Swenshuai.xi #define DMX_FILTER_SOURCE_TYPE_LIVE             0x80000000UL                   ///< DMX live stream filter source
371*53ee8cc1Swenshuai.xi #define DMX_FILTER_SOURCE_TYPE_FILE             0x40000000UL                   ///< DMX file in filter type
372*53ee8cc1Swenshuai.xi #define DMX_FILTER_SOURCE_TYPE_LIVEB            DMX_FILTER_SOURCE_TYPE_FILE    ///< Input from TS1 to File PID filter
373*53ee8cc1Swenshuai.xi #define DMX_FILTER_SOURCE_TYPE_TS1              0x00800000UL                   ///< DMX live stream filter source 1
374*53ee8cc1Swenshuai.xi #define DMX_FILTER_SOURCE_TYPE_TS2              0x00400000UL                   ///< DMX live stream filter source 2
375*53ee8cc1Swenshuai.xi #define DMX_FILTER_SOURCE_TYPE_TS3              0x00200000UL                   ///< DMX live stream filter source 3
376*53ee8cc1Swenshuai.xi #define DMX_FILTER_SOURCE_TYPE_FILE1            0x00100000UL                   ///< DMX file-in stream, filter source from file1
377*53ee8cc1Swenshuai.xi #define DMX_FILTER_SOURCE_TYPE_FILE2            0x00080000UL                   ///< DMX file-in stream, filter source from file2
378*53ee8cc1Swenshuai.xi #define DMX_FILTER_SOURCE_TYPE_FILE3            0x00040000UL                   ///< DMX file-in stream, filter source from file3
379*53ee8cc1Swenshuai.xi #define DMX_FILTER_SOURCE_TYPE_TS4              0x00000000UL                   ///< DMX live stream filter source 4
380*53ee8cc1Swenshuai.xi #define DMX_FILTER_SOURCE_TYPE_TS5              0x000C0000UL                   ///< DMX live stream filter source 5
381*53ee8cc1Swenshuai.xi #define DMX_FILTER_SOURCE_TYPE_TS6              0x00140000UL                   ///< DMX live stream filter source 6
382*53ee8cc1Swenshuai.xi #define DMX_FILTER_SOURCE_TYPE_FILE4            0x00180000UL                   ///< DMX file-in stream, filter source from file4
383*53ee8cc1Swenshuai.xi #define DMX_FILTER_SOURCE_TYPE_FILE5            0x001C0000UL                   ///< DMX file-in stream, filter source from file5
384*53ee8cc1Swenshuai.xi #define DMX_FILTER_SOURCE_TYPE_FILE6            0x00240000UL                   ///< DMX file-in stream, filter source from file6
385*53ee8cc1Swenshuai.xi 
386*53ee8cc1Swenshuai.xi 
387*53ee8cc1Swenshuai.xi // Source ID define.  For merge stream
388*53ee8cc1Swenshuai.xi #define DMX_FILTER_SOURCEID_MASK                0x00010F00UL
389*53ee8cc1Swenshuai.xi #define DMX_FILTER_SOURCEID_0                   0x00000000UL
390*53ee8cc1Swenshuai.xi #define DMX_FILTER_SOURCEID_1                   0x00000100UL
391*53ee8cc1Swenshuai.xi #define DMX_FILTER_SOURCEID_2                   0x00000200UL
392*53ee8cc1Swenshuai.xi #define DMX_FILTER_SOURCEID_3                   0x00000300UL
393*53ee8cc1Swenshuai.xi #define DMX_FILTER_SOURCEID_4                   0x00000400UL
394*53ee8cc1Swenshuai.xi #define DMX_FILTER_SOURCEID_5                   0x00000500UL
395*53ee8cc1Swenshuai.xi #define DMX_FILTER_SOURCEID_6                   0x00000600UL
396*53ee8cc1Swenshuai.xi #define DMX_FILTER_SOURCEID_7                   0x00000700UL
397*53ee8cc1Swenshuai.xi #define DMX_FILTER_SOURCEID_8                   0x00000800UL
398*53ee8cc1Swenshuai.xi #define DMX_FILTER_SOURCEID_9                   0x00000900UL
399*53ee8cc1Swenshuai.xi #define DMX_FILTER_SOURCEID_10                  0x00000a00UL
400*53ee8cc1Swenshuai.xi #define DMX_FILTER_SOURCEID_11                  0x00000b00UL
401*53ee8cc1Swenshuai.xi #define DMX_FILTER_SOURCEID_12                  0x00000c00UL
402*53ee8cc1Swenshuai.xi #define DMX_FILTER_SOURCEID_13                  0x00000d00UL
403*53ee8cc1Swenshuai.xi #define DMX_FILTER_SOURCEID_14                  0x00000e00UL
404*53ee8cc1Swenshuai.xi #define DMX_FILTER_SOURCEID_15                  0x00000f00UL
405*53ee8cc1Swenshuai.xi #define DMX_FILTER_SOURCEID_16                  0x00010000UL
406*53ee8cc1Swenshuai.xi #define DMX_FILTER_SOURCEID_17                  0x00010100UL
407*53ee8cc1Swenshuai.xi #define DMX_FILTER_SOURCEID_18                  0x00010200UL
408*53ee8cc1Swenshuai.xi #define DMX_FILTER_SOURCEID_19                  0x00010300UL
409*53ee8cc1Swenshuai.xi #define DMX_FILTER_SOURCEID_20                  0x00010400UL
410*53ee8cc1Swenshuai.xi #define DMX_FILTER_SOURCEID_21                  0x00010500UL
411*53ee8cc1Swenshuai.xi #define DMX_FILTER_SOURCEID_22                  0x00010600UL
412*53ee8cc1Swenshuai.xi #define DMX_FILTER_SOURCEID_23                  0x00010700UL
413*53ee8cc1Swenshuai.xi #define DMX_FILTER_SOURCEID_24                  0x00010800UL
414*53ee8cc1Swenshuai.xi #define DMX_FILTER_SOURCEID_25                  0x00010900UL
415*53ee8cc1Swenshuai.xi #define DMX_FILTER_SOURCEID_26                  0x00010a00UL
416*53ee8cc1Swenshuai.xi #define DMX_FILTER_SOURCEID_27                  0x00010b00UL
417*53ee8cc1Swenshuai.xi #define DMX_FILTER_SOURCEID_28                  0x00010c00UL
418*53ee8cc1Swenshuai.xi #define DMX_FILTER_SOURCEID_29                  0x00010d00UL
419*53ee8cc1Swenshuai.xi #define DMX_FILTER_SOURCEID_30                  0x00010e00UL
420*53ee8cc1Swenshuai.xi #define DMX_FILTER_SOURCEID_31                  0x00010f00UL
421*53ee8cc1Swenshuai.xi 
422*53ee8cc1Swenshuai.xi 
423*53ee8cc1Swenshuai.xi // Only supported by TSP ver3.0 driver for section filter duplicate sw patch
424*53ee8cc1Swenshuai.xi #define DMX_FILTER_FLT_TYPE_DUPSEC              0x02000000UL
425*53ee8cc1Swenshuai.xi 
426*53ee8cc1Swenshuai.xi // Only supported by TSP ver2.0 driver
427*53ee8cc1Swenshuai.xi #define DMX_FILTER_SOURCE_TYPE_PLAYBACK         DMX_FILTER_SOURCE_TYPE_LIVE   ///< DMX playback filter source
428*53ee8cc1Swenshuai.xi #define DMX_FILTER_SOURCE_TYPE_PVR0             0x20000000UL                  ///< DMX PVR0 stream filter source
429*53ee8cc1Swenshuai.xi #define DMX_FILTER_SOURCE_TYPE_PVR1             0x10000000UL                  ///< DMX PVR1 stream filter source
430*53ee8cc1Swenshuai.xi 
431*53ee8cc1Swenshuai.xi #define DMX_FILTER_FLT_SCMB_MASK                0x30000000UL                  ///< DMX descramble filter mask
432*53ee8cc1Swenshuai.xi #define DMX_FILTER_FLT_TYPE_SCMB                0x20000000UL                  ///< DMX descramble filter type
433*53ee8cc1Swenshuai.xi #define DMX_FILTER_FLT_TYPE_SCMB_SHAREKEY       0x10000000UL                  ///< DMX descramble filter type with sharekey
434*53ee8cc1Swenshuai.xi 
435*53ee8cc1Swenshuai.xi // Support PVR I frame parser LUT.
436*53ee8cc1Swenshuai.xi // When open the filter type DMX_FILTER_TYPE_PVRx, video PID need to OR(|) this source type for PVR. EX: DMX_FILTER_TYPE_PVRx | DMX_FILTER_TYPE_EX_I_FRAME_PVR
437*53ee8cc1Swenshuai.xi #define DMX_FILTER_TYPE_EX_I_FRAME_PVR          0x01000000UL                  ///< DMX PVR I frame LUT PVR_TABLE enable
438*53ee8cc1Swenshuai.xi //--------------------------------------------------
439*53ee8cc1Swenshuai.xi // Debug table
440*53ee8cc1Swenshuai.xi /// DMX debug commands
441*53ee8cc1Swenshuai.xi typedef enum
442*53ee8cc1Swenshuai.xi {
443*53ee8cc1Swenshuai.xi     DMX_DEBUG_CMD_NONE,     ///< None
444*53ee8cc1Swenshuai.xi     DMX_DEBUG_CMD_CLEAR,    ///< Clear debug command
445*53ee8cc1Swenshuai.xi     DMX_DEBUG_CMD_ENABLE,   ///< Enable debug command
446*53ee8cc1Swenshuai.xi     DMX_DEBUG_CMD_DISABLE,  ///< Disable debug command
447*53ee8cc1Swenshuai.xi } DMX_DEBUG_CMD;
448*53ee8cc1Swenshuai.xi 
449*53ee8cc1Swenshuai.xi /// DMX debug source
450*53ee8cc1Swenshuai.xi typedef enum
451*53ee8cc1Swenshuai.xi {
452*53ee8cc1Swenshuai.xi     DMX_DEBUG_SRC_TS0       = 0,                     ///< Debug LIVE0 input
453*53ee8cc1Swenshuai.xi     DMX_DEBUG_SRC_TS1       = 1,                     ///< Debug LIVE1 input
454*53ee8cc1Swenshuai.xi     DMX_DEBUG_SRC_TS2       = 2,                     ///< Debug LIVE2 input
455*53ee8cc1Swenshuai.xi     DMX_DEBUG_SRC_FILE      = 3,                     ///< Debug FILE0 input
456*53ee8cc1Swenshuai.xi     DMX_DEBUG_SRC_TS3       = 4,                     ///< Debug LIVE3 input
457*53ee8cc1Swenshuai.xi     DMX_DEBUG_SRC_FILE0     = DMX_DEBUG_SRC_FILE,    ///< Debug FILE0 input
458*53ee8cc1Swenshuai.xi     DMX_DEBUG_SRC_FILE1     = 5,                     ///< Debug FILE1 input
459*53ee8cc1Swenshuai.xi     DMX_DEBUG_SRC_FILE2     = 6,                     ///< Debug FILE2 input
460*53ee8cc1Swenshuai.xi     DMX_DEBUG_SRC_FILE3     = 7,                     ///< Debug FILE3 input
461*53ee8cc1Swenshuai.xi     DMX_DEBUG_SRC_MMFI0     = 8,                     ///< Debug MMFI0 input
462*53ee8cc1Swenshuai.xi     DMX_DEBUG_SRC_MMFI1     = 9,                     ///< Debug MMFI1 input
463*53ee8cc1Swenshuai.xi     DMX_DEBUG_SRC_TS4       = 10,                    ///< Debug LIVE4 input
464*53ee8cc1Swenshuai.xi     DMX_DEBUG_SRC_TS5       = 11,                    ///< Debug LIVE5 input
465*53ee8cc1Swenshuai.xi     DMX_DEBUG_SRC_TS6       = 12,                    ///< Debug LIVE6 input
466*53ee8cc1Swenshuai.xi     DMX_DEBUG_SRC_FILE4     = 13,                    ///< Debug FILE4 input
467*53ee8cc1Swenshuai.xi     DMX_DEBUG_SRC_FILE5     = 14,                    ///< Debug FILE5 input
468*53ee8cc1Swenshuai.xi     DMX_DEBUG_SRC_FILE6     = 15,                    ///< Debug FILE6 input
469*53ee8cc1Swenshuai.xi } DMX_DEBUG_SRC;
470*53ee8cc1Swenshuai.xi 
471*53ee8cc1Swenshuai.xi /// DMX debug TSIF type
472*53ee8cc1Swenshuai.xi typedef enum
473*53ee8cc1Swenshuai.xi {
474*53ee8cc1Swenshuai.xi     DMX_DEBUG_TSIF_TS0,        ///< Debug LIVE0  input
475*53ee8cc1Swenshuai.xi     DMX_DEBUG_TSIF_TS1,        ///< Debug LIVE1  input
476*53ee8cc1Swenshuai.xi     DMX_DEBUG_TSIF_TSCB,       ///< Debug LIVECB input
477*53ee8cc1Swenshuai.xi     DMX_DEBUG_TSIF_TS2,        ///< Debug LIVE2  input
478*53ee8cc1Swenshuai.xi     DMX_DEBUG_TSIF_TS3,        ///< Debug LIVE3  input
479*53ee8cc1Swenshuai.xi     DMX_DEBUG_TSIF_TS4,        ///< Debug LIVE4  input
480*53ee8cc1Swenshuai.xi     DMX_DEBUG_TSIF_TS5,        ///< Debug LIVE5  input
481*53ee8cc1Swenshuai.xi     DMX_DEBUG_TSIF_TS6,        ///< Debug LIVE6  input
482*53ee8cc1Swenshuai.xi 
483*53ee8cc1Swenshuai.xi } DMX_DEBUG_TSIF;
484*53ee8cc1Swenshuai.xi 
485*53ee8cc1Swenshuai.xi /// DMX debug FIFO type
486*53ee8cc1Swenshuai.xi typedef enum
487*53ee8cc1Swenshuai.xi {
488*53ee8cc1Swenshuai.xi     DMX_DEBUG_FIFO_VIDEO,                                ///< Debug Video    FIFO
489*53ee8cc1Swenshuai.xi     DMX_DEBUG_FIFO_AUDIO,                                ///< Debug Audio    FIFO
490*53ee8cc1Swenshuai.xi     DMX_DEBUG_FIFO_VIDEO3D,                              ///< Debug Video 3D FIFO
491*53ee8cc1Swenshuai.xi     DMX_DEBUG_FIFO_VIDEO2 = DMX_DEBUG_FIFO_VIDEO3D,      ///< Debug Video 2  FIFO
492*53ee8cc1Swenshuai.xi     DMX_DEBUG_FIFO_AUDIOB,                               ///< Debug Audio B  FIFO
493*53ee8cc1Swenshuai.xi     DMX_DEBUG_FIFO_AUDIOC,                               ///< Debug Audio C  FIFO
494*53ee8cc1Swenshuai.xi     DMX_DEBUG_FIFO_AUDIOD,                               ///< Debug Audio D  FIFO
495*53ee8cc1Swenshuai.xi     DMX_DEBUG_FIFO_VIDEO3,                               ///< Debug Video 3  FIFO
496*53ee8cc1Swenshuai.xi     DMX_DEBUG_FIFO_VIDEO4,                               ///< Debug Video 4  FIFO
497*53ee8cc1Swenshuai.xi     DMX_DEBUG_FIFO_VIDEO5,                               ///< Debug Video 5  FIFO
498*53ee8cc1Swenshuai.xi     DMX_DEBUG_FIFO_VIDEO6,                               ///< Debug Video 6  FIFO
499*53ee8cc1Swenshuai.xi     DMX_DEBUG_FIFO_VIDEO7,                               ///< Debug Video 7  FIFO
500*53ee8cc1Swenshuai.xi     DMX_DEBUG_FIFO_VIDEO8,                               ///< Debug Video 8  FIFO
501*53ee8cc1Swenshuai.xi     DMX_DEBUG_FIFO_AUDIOE,                               ///< Debug Audio E  FIFO
502*53ee8cc1Swenshuai.xi     DMX_DEBUG_FIFO_AUDIOF                                ///< Debug Audio F  FIFO
503*53ee8cc1Swenshuai.xi 
504*53ee8cc1Swenshuai.xi } DMX_DEBUG_FIFO;
505*53ee8cc1Swenshuai.xi 
506*53ee8cc1Swenshuai.xi /// DMX debug FIFO Source
507*53ee8cc1Swenshuai.xi typedef enum
508*53ee8cc1Swenshuai.xi {
509*53ee8cc1Swenshuai.xi     DMX_DEBUG_PKT_DEMUX_0,      ///< Debug LIVE0  input
510*53ee8cc1Swenshuai.xi     DMX_DEBUG_PKT_DEMUX_0_FILE, ///< Debug FILE0  input
511*53ee8cc1Swenshuai.xi     DMX_DEBUG_PKT_DEMUX_1,      ///< Debug LIVE1  input
512*53ee8cc1Swenshuai.xi     DMX_DEBUG_PKT_DEMUX_2,      ///< Debug LIVE2  input
513*53ee8cc1Swenshuai.xi     DMX_DEBUG_MMFI0,            ///< Debug MMFI0  input
514*53ee8cc1Swenshuai.xi     DMX_DEBUG_MMFI1,            ///< Debug MMFI1  input
515*53ee8cc1Swenshuai.xi     DMX_DEBUG_PKT_DEMUX_3,      ///< Debug LIVE3  input
516*53ee8cc1Swenshuai.xi     DMX_DEBUG_PKT_DEMUX_1_FILE, ///< Debug FILE1  input
517*53ee8cc1Swenshuai.xi     DMX_DEBUG_PKT_DEMUX_2_FILE, ///< Debug FILE2  input
518*53ee8cc1Swenshuai.xi     DMX_DEBUG_PKT_DEMUX_3_FILE, ///< Debug FILE3  input
519*53ee8cc1Swenshuai.xi     DMX_DEBUG_PKT_DEMUX_4,      ///< Debug LIVE4  input
520*53ee8cc1Swenshuai.xi     DMX_DEBUG_PKT_DEMUX_5,      ///< Debug LIVE5  input
521*53ee8cc1Swenshuai.xi     DMX_DEBUG_PKT_DEMUX_6,      ///< Debug LIVE6  input
522*53ee8cc1Swenshuai.xi     DMX_DEBUG_PKT_DEMUX_4_FILE, ///< Debug FILE4  input
523*53ee8cc1Swenshuai.xi     DMX_DEBUG_PKT_DEMUX_5_FILE, ///< Debug FILE5  input
524*53ee8cc1Swenshuai.xi     DMX_DEBUG_PKT_DEMUX_6_FILE, ///< Debug FILE6  input
525*53ee8cc1Swenshuai.xi 
526*53ee8cc1Swenshuai.xi } DMX_DEBUG_FIFO_SRC;
527*53ee8cc1Swenshuai.xi 
528*53ee8cc1Swenshuai.xi // only one playback flow or PVR flow exist
529*53ee8cc1Swenshuai.xi // Playback flow and PVR flow can exist simultaneously
530*53ee8cc1Swenshuai.xi 
531*53ee8cc1Swenshuai.xi /// DMX flow type
532*53ee8cc1Swenshuai.xi typedef enum
533*53ee8cc1Swenshuai.xi {
534*53ee8cc1Swenshuai.xi     DMX_FLOW_PLAYBACK                   = 0,                       ///< DMX playback flow
535*53ee8cc1Swenshuai.xi     DMX_FLOW_PVR                        = 1,                       ///< DMX recording flow
536*53ee8cc1Swenshuai.xi     DMX_FLOW_PVR1                       = 2,                       ///< DMX recording flow 1 note: Not support for all chip
537*53ee8cc1Swenshuai.xi 
538*53ee8cc1Swenshuai.xi     DMX_FLOW_PVRCA                      = 3,                       ///< CI+ PVR
539*53ee8cc1Swenshuai.xi 
540*53ee8cc1Swenshuai.xi     DMX_FLOW_FILEIN_MM                  = 4,                       ///< DMX Filein flow with Main path Vido and MMFI path Audio
541*53ee8cc1Swenshuai.xi     DMX_FLOW_MMFI0                      = DMX_FLOW_FILEIN_MM,      ///< DMX Filein flow with MMFI 0 (MMFI version 2.0)
542*53ee8cc1Swenshuai.xi     DMX_FLOW_FILEIN_MM3D                = 5,                       ///< DMX Filein flow with Main path Video, MMFI path 3DVideo, and MMFI Audio
543*53ee8cc1Swenshuai.xi     DMX_FLOW_MMFI1                      = DMX_FLOW_FILEIN_MM3D,    ///< DMX Filein flow with MMFI 1 (MMFI version 2.0)
544*53ee8cc1Swenshuai.xi 
545*53ee8cc1Swenshuai.xi     DMX_FLOW_CIPHSS_PLAYBACK            = 6,                       ///< Playback flow for CI+ HSS 2 path input for CI+
546*53ee8cc1Swenshuai.xi     DMX_FLOW_CIPHSS_PVRCA               = 7,                       ///< PVR flow for CI+ HSS 2 path input for CI+
547*53ee8cc1Swenshuai.xi 
548*53ee8cc1Swenshuai.xi     DMX_FLOW_PVR2                       = 8,                       ///< DMX recording flow 2, note: Not support for all chip, PVR2
549*53ee8cc1Swenshuai.xi     DMX_FLOW_PVR3                       = 9,                       ///< DMX recording flow 3, note: Not support for all chip
550*53ee8cc1Swenshuai.xi     DMX_FLOW_PVR4                       = 10,                      ///< DMX recording flow 4, note: Not support for all chip
551*53ee8cc1Swenshuai.xi     DMX_FLOW_PVR5                       = 11,                      ///< DMX recording flow 5, note: Not support for all chip
552*53ee8cc1Swenshuai.xi 
553*53ee8cc1Swenshuai.xi     DMX_FLOW_TSO_PLAYBACK               = 12,                      ///< DMX TSO playback flow (live0 & file0)
554*53ee8cc1Swenshuai.xi     DMX_FLOW_PLAYBACK1                  = 13,                      ///< DMX playback flow from TS1 (version 3.0)
555*53ee8cc1Swenshuai.xi     DMX_FLOW_PVRCA1                     = 14,                      ///< CI+ PVR (version 3.0)
556*53ee8cc1Swenshuai.xi 
557*53ee8cc1Swenshuai.xi     DMX_FLOW_TSO_PLAYBACK1              = 15,                      ///< DMX TSO1 playback flow (live1 & file1)
558*53ee8cc1Swenshuai.xi     DMX_FLOW_PLAYBACK2                  = 16,                      ///< DMX playback flow from TS2 (version 3.0/4.0)
559*53ee8cc1Swenshuai.xi     DMX_FLOW_PLAYBACK3                  = 17,                      ///< DMX playback flow from TS3 (version 4.0)
560*53ee8cc1Swenshuai.xi 
561*53ee8cc1Swenshuai.xi     DMX_FLOW_PLAYBACK_NOCA              = 18,                      ///< DMX playback flow without pass through CA
562*53ee8cc1Swenshuai.xi     DMX_FLOW_PLAYBACK_SRC_TS1           = 19,                      ///< DMX playback, CA input from TS1 output to Live0
563*53ee8cc1Swenshuai.xi 
564*53ee8cc1Swenshuai.xi     DMX_FLOW_PLAYBACK_FI                = 20,                      ///< DMX playback flow from TSFI (version 3.0)
565*53ee8cc1Swenshuai.xi 
566*53ee8cc1Swenshuai.xi     DMX_FLOW_TSO_MMT                    = 21,                      ///< TSO MMT Flow
567*53ee8cc1Swenshuai.xi 
568*53ee8cc1Swenshuai.xi     DMX_FLOW_TSIO_PLAYBACK              = 22,                      ///< DMX TSIO playback flow
569*53ee8cc1Swenshuai.xi 
570*53ee8cc1Swenshuai.xi     DMX_FLOW_PLAYBACK4                  = 23,                      ///< DMX playback flow from TS4 (version 4.0)
571*53ee8cc1Swenshuai.xi     DMX_FLOW_PLAYBACK5                  = 24,                      ///< DMX playback flow from TS5 (version 4.0)
572*53ee8cc1Swenshuai.xi     DMX_FLOW_PLAYBACK6                  = 25,                      ///< DMX playback flow from TS6 (version 4.0)
573*53ee8cc1Swenshuai.xi 
574*53ee8cc1Swenshuai.xi     DMX_FLOW_NUM,
575*53ee8cc1Swenshuai.xi } DMX_FLOW;
576*53ee8cc1Swenshuai.xi 
577*53ee8cc1Swenshuai.xi /// DMX input type
578*53ee8cc1Swenshuai.xi typedef enum
579*53ee8cc1Swenshuai.xi {
580*53ee8cc1Swenshuai.xi     DMX_FLOW_INPUT_DEMOD,               ///< DMX input from internal demodulator 0
581*53ee8cc1Swenshuai.xi     DMX_FLOW_INPUT_MEM,                 ///< DMX input from memory
582*53ee8cc1Swenshuai.xi     DMX_FLOW_INPUT_EXT_INPUT0,          ///< DMX input from external input 0
583*53ee8cc1Swenshuai.xi     DMX_FLOW_INPUT_EXT_INPUT1,          ///< DMX input from external input 1
584*53ee8cc1Swenshuai.xi     DMX_FLOW_INPUT_EXT_INPUT2,          ///< DMX input from external input 2. note: Not support for all chip
585*53ee8cc1Swenshuai.xi     DMX_FLOW_INPUT_EXT_INPUT3,          ///< DMX input from external input 3. note: Not support for all chip
586*53ee8cc1Swenshuai.xi     DMX_FLOW_INPUT_MEM_NOPASSCA,        ///< DMX input from memory, but not pass through CA
587*53ee8cc1Swenshuai.xi     DMX_FLOW_INPUT_DEMOD1,              ///< DMX input from internal demodulator 1
588*53ee8cc1Swenshuai.xi     DMX_FLOW_INPUT_TSO,                 ///< DMX input from TS Output 0
589*53ee8cc1Swenshuai.xi     DMX_FLOW_INPUT_TSO1,                ///< DMX input from TS Output 1
590*53ee8cc1Swenshuai.xi     DMX_FLOW_INPUT_MEM_PASSCA1,         ///< DMX input from memory, but pass through CA1, not CA0
591*53ee8cc1Swenshuai.xi     DMX_FLOW_INPUT_MEM1,                ///< DMX input from memory path 2
592*53ee8cc1Swenshuai.xi     DMX_FLOW_INPUT_EXT_INPUT4,          ///< DMX input from external input 4. note: Not support for all chip
593*53ee8cc1Swenshuai.xi     DMX_FLOW_INPUT_EXT_INPUT5,          ///< DMX input from external input 5. note: Not support for all chip
594*53ee8cc1Swenshuai.xi 
595*53ee8cc1Swenshuai.xi     DMX_FLOW_INPUT_EXT_INPUT0_3WIRE,    ///< DMX input from external 3-wire input 0. note: Not support for all chip
596*53ee8cc1Swenshuai.xi     DMX_FLOW_INPUT_EXT_INPUT1_3WIRE,    ///< DMX input from external 3-wire input 1. note: Not support for all chip
597*53ee8cc1Swenshuai.xi     DMX_FLOW_INPUT_EXT_INPUT2_3WIRE,    ///< DMX input from external 3-wire input 2. note: Not support for all chip
598*53ee8cc1Swenshuai.xi     DMX_FLOW_INPUT_EXT_INPUT3_3WIRE,    ///< DMX input from external 3-wire input 3. note: Not support for all chip
599*53ee8cc1Swenshuai.xi     DMX_FLOW_INPUT_EXT_INPUT4_3WIRE,    ///< DMX input from external 3-wire input 4. note: Not support for all chip
600*53ee8cc1Swenshuai.xi     DMX_FLOW_INPUT_EXT_INPUT5_3WIRE,    ///< DMX input from external 3-wire input 5. note: Not support for all chip
601*53ee8cc1Swenshuai.xi     DMX_FLOW_INPUT_EXT_INPUT6_3WIRE,    ///< DMX input from external 3-wire input 6. note: Not support for all chip
602*53ee8cc1Swenshuai.xi 
603*53ee8cc1Swenshuai.xi     DMX_FLOW_INPUT_TSIO,                ///< DMX input from TSIO output
604*53ee8cc1Swenshuai.xi 
605*53ee8cc1Swenshuai.xi     DMX_FLOW_INPUT_EXT_INPUT6,          ///< DMX input from external input 6. note: Not support for all chip
606*53ee8cc1Swenshuai.xi     DMX_FLOW_INPUT_EXT_INPUT7,          ///< DMX input from external input 7. note: Not support for all chip
607*53ee8cc1Swenshuai.xi     DMX_FLOW_INPUT_EXT_INPUT7_3WIRE,    ///< DMX input from external 3-wire input 7. note: Not support for all chip
608*53ee8cc1Swenshuai.xi 
609*53ee8cc1Swenshuai.xi     DMX_FLOW_INPUT_DISABLE,             ///< DMX input disable
610*53ee8cc1Swenshuai.xi 
611*53ee8cc1Swenshuai.xi } DMX_FLOW_INPUT;
612*53ee8cc1Swenshuai.xi 
613*53ee8cc1Swenshuai.xi /// DMX output pad
614*53ee8cc1Swenshuai.xi typedef enum
615*53ee8cc1Swenshuai.xi {
616*53ee8cc1Swenshuai.xi     DMX_FLOW_OUTPUT_NONE                = 0,
617*53ee8cc1Swenshuai.xi     DMX_FLOW_OUTPUT_EXT_PAD1            = 1,            ///< DMX output to external pad 1
618*53ee8cc1Swenshuai.xi     DMX_FLOW_OUTPUT_EXT_PAD3            = 3,            ///< DMX output to external pad 3
619*53ee8cc1Swenshuai.xi }DMX_FLOW_OUTPUT_PAD;
620*53ee8cc1Swenshuai.xi 
621*53ee8cc1Swenshuai.xi /// DMX Transport Stream interface
622*53ee8cc1Swenshuai.xi typedef enum
623*53ee8cc1Swenshuai.xi {
624*53ee8cc1Swenshuai.xi     DMX_TSIF_LIVE0, ///< TS interface for live streams number 0
625*53ee8cc1Swenshuai.xi     DMX_TSIF_LIVE1, ///< TS interface for live streams number 1
626*53ee8cc1Swenshuai.xi     DMX_TSIF_LIVE2, ///< TS interface for live streams number 2
627*53ee8cc1Swenshuai.xi     DMX_TSIF_LIVE3, ///< TS interface for live streams number 3
628*53ee8cc1Swenshuai.xi 
629*53ee8cc1Swenshuai.xi     DMX_TSIF_FILE0, ///< TS interface for file input number 0
630*53ee8cc1Swenshuai.xi     DMX_TSIF_FILE1, ///< TS interface for file input number 1
631*53ee8cc1Swenshuai.xi     DMX_TSIF_FILE2, ///< TS interface for file input number 2
632*53ee8cc1Swenshuai.xi     DMX_TSIF_FILE3, ///< TS interface for file input number 3
633*53ee8cc1Swenshuai.xi 
634*53ee8cc1Swenshuai.xi     DMX_TSIF_MMT,
635*53ee8cc1Swenshuai.xi 
636*53ee8cc1Swenshuai.xi     DMX_TSIF_LIVE4, ///< TS interface for live streams number 4
637*53ee8cc1Swenshuai.xi     DMX_TSIF_LIVE5, ///< TS interface for live streams number 5
638*53ee8cc1Swenshuai.xi     DMX_TSIF_LIVE6, ///< TS interface for live streams number 6
639*53ee8cc1Swenshuai.xi 
640*53ee8cc1Swenshuai.xi     DMX_TSIF_FILE4, ///< TS interface for file input number 4
641*53ee8cc1Swenshuai.xi     DMX_TSIF_FILE5, ///< TS interface for file input number 5
642*53ee8cc1Swenshuai.xi     DMX_TSIF_FILE6, ///< TS interface for file input number 6
643*53ee8cc1Swenshuai.xi 
644*53ee8cc1Swenshuai.xi     DMX_TSIF_MAX,
645*53ee8cc1Swenshuai.xi } DMX_TSIF;
646*53ee8cc1Swenshuai.xi 
647*53ee8cc1Swenshuai.xi /// PVR recording engines - allow up to 6 simultaneous recordings
648*53ee8cc1Swenshuai.xi typedef enum
649*53ee8cc1Swenshuai.xi {
650*53ee8cc1Swenshuai.xi     DMX_PVR_EGN0, ///< Engine 0
651*53ee8cc1Swenshuai.xi     DMX_PVR_EGN1, ///< Engine 1
652*53ee8cc1Swenshuai.xi     DMX_PVR_EGN2, ///< Engine 2
653*53ee8cc1Swenshuai.xi     DMX_PVR_EGN3, ///< Engine 3
654*53ee8cc1Swenshuai.xi     DMX_PVR_EGN4, ///< Engine 4
655*53ee8cc1Swenshuai.xi     DMX_PVR_EGN5, ///< Engine 5
656*53ee8cc1Swenshuai.xi 
657*53ee8cc1Swenshuai.xi     DMX_PVR_TSO0,
658*53ee8cc1Swenshuai.xi 
659*53ee8cc1Swenshuai.xi     DMX_PVR_EGN6, ///< Engine 6
660*53ee8cc1Swenshuai.xi     DMX_PVR_EGN7, ///< Engine 7
661*53ee8cc1Swenshuai.xi     DMX_PVR_EGN8, ///< Engine 8
662*53ee8cc1Swenshuai.xi     DMX_PVR_EGN9, ///< Engine 9
663*53ee8cc1Swenshuai.xi 
664*53ee8cc1Swenshuai.xi     DMX_PVR_ENG_NUM,
665*53ee8cc1Swenshuai.xi } DMX_PVR_ENG;
666*53ee8cc1Swenshuai.xi 
667*53ee8cc1Swenshuai.xi #if 0
668*53ee8cc1Swenshuai.xi // make sure what you are doing before changing the value
669*53ee8cc1Swenshuai.xi /// DMX callback types
670*53ee8cc1Swenshuai.xi typedef enum
671*53ee8cc1Swenshuai.xi {
672*53ee8cc1Swenshuai.xi     DMX_EVENT_DATA_READY           = 0x00000001, ///< DMX event ready
673*53ee8cc1Swenshuai.xi     DMX_EVENT_BUF_OVERFLOW         = 0x00000002, ///< DMX event overflow
674*53ee8cc1Swenshuai.xi     DMX_EVENT_PVRBUF_FULL          = 0x00000010, ///< DMX event PVR buffer overflow
675*53ee8cc1Swenshuai.xi 
676*53ee8cc1Swenshuai.xi     /// TSP self task callback // optional --> default is CB by poll
677*53ee8cc1Swenshuai.xi     DMX_EVENT_CB_MASK              = 0x80000000, ///< DMX callback mask
678*53ee8cc1Swenshuai.xi     DMX_EVENT_CB_POLL              = 0x00000000, ///< DMX callback by polling // OBSOLETE
679*53ee8cc1Swenshuai.xi     DMX_EVENT_CB_SELF              = 0x80000000, ///< DMX callback by demux module
680*53ee8cc1Swenshuai.xi     DMX_EVENT_CB_SELF_TYPE2        = 0xC0000000, ///< DMX callback by demux module , type 2
681*53ee8cc1Swenshuai.xi } DMX_EVENT;
682*53ee8cc1Swenshuai.xi #endif
683*53ee8cc1Swenshuai.xi 
684*53ee8cc1Swenshuai.xi #define DMX_EVENT MS_U32                           ///< DMX event type
685*53ee8cc1Swenshuai.xi #define DMX_EVENT_DATA_READY          0x00000001UL ///< DMX event ready
686*53ee8cc1Swenshuai.xi #define DMX_EVENT_BUF_OVERFLOW        0x00000002UL ///< DMX event overflow
687*53ee8cc1Swenshuai.xi #define DMX_EVENT_SEC_CRCERROR        0x00000004UL ///< DMX event CRC error
688*53ee8cc1Swenshuai.xi #define DMX_EVENT_PVRBUF_FULL         0x00000010UL ///< DMX event PVR buffer overflow
689*53ee8cc1Swenshuai.xi #define DMX_EVENT_PVR1BUF_FULL        0x00000020UL ///< DMX event Channel Browser buffer overflow
690*53ee8cc1Swenshuai.xi #define DMX_EVENT_PVRBUF_SIZE_MET     0x00000040UL ///< DMX event PVR buffer callback size meet. note: Not support for all chips
691*53ee8cc1Swenshuai.xi 
692*53ee8cc1Swenshuai.xi /// TSP self task callback                         ///< optional --> default is CB by poll
693*53ee8cc1Swenshuai.xi #define DMX_EVENT_CB_MASK             0x80000000UL ///< DMX callback mask
694*53ee8cc1Swenshuai.xi #define DMX_EVENT_CB_POLL             0x00000000UL ///< DMX callback by polling // OBSOLETE
695*53ee8cc1Swenshuai.xi #define DMX_EVENT_CB_SELF             0x80000000UL ///< DMX callback by demux module
696*53ee8cc1Swenshuai.xi #define DMX_EVENT_CB_SELF_TYPE2       0xC0000000UL ///< DMX callback by demux module
697*53ee8cc1Swenshuai.xi 
698*53ee8cc1Swenshuai.xi /// DMX burst type
699*53ee8cc1Swenshuai.xi typedef enum
700*53ee8cc1Swenshuai.xi {
701*53ee8cc1Swenshuai.xi     DMX_BURSTSINGLE                = 0x00, ///< Single byte
702*53ee8cc1Swenshuai.xi     DMX_BURST2BYTE                 = 0x01, ///< 2 bytes
703*53ee8cc1Swenshuai.xi     DMX_BURST4BYTE                 = 0x02, ///< 4 bytes
704*53ee8cc1Swenshuai.xi     DMX_BURST8BYTE                 = 0x03, ///< 8 bytes
705*53ee8cc1Swenshuai.xi } DMX_BURSTTYPE;
706*53ee8cc1Swenshuai.xi 
707*53ee8cc1Swenshuai.xi #if 0
708*53ee8cc1Swenshuai.xi // make sure what you are doing before changing the value
709*53ee8cc1Swenshuai.xi /// DMX section mode setting
710*53ee8cc1Swenshuai.xi typedef enum
711*53ee8cc1Swenshuai.xi {
712*53ee8cc1Swenshuai.xi     DMX_SECT_MODE_CONTI            = 0x00000000, ///< DMX receive section contiguously
713*53ee8cc1Swenshuai.xi     DMX_SECT_MODE_ONESHOT          = 0x00000001, ///< DMX only receive one section
714*53ee8cc1Swenshuai.xi 
715*53ee8cc1Swenshuai.xi     // optional
716*53ee8cc1Swenshuai.xi     DMX_SECT_MODE_CRCCHK           = 0x00000002, ///< DMX enables CRC check
717*53ee8cc1Swenshuai.xi     DMX_SECT_MODE_AUTO_ADDR        = 0x00000004, ///< DMX align read pointer to write pointer when get write pointer // OBSOLETE
718*53ee8cc1Swenshuai.xi } DMX_SECT_MODE;
719*53ee8cc1Swenshuai.xi #endif
720*53ee8cc1Swenshuai.xi 
721*53ee8cc1Swenshuai.xi #define DMX_SECT_MODE MS_U32                           ///< DMX section mode type
722*53ee8cc1Swenshuai.xi #define DMX_SECT_MODE_CONTI               0x00000000UL ///< DMX receive section contiguously
723*53ee8cc1Swenshuai.xi #define DMX_SECT_MODE_ONESHOT             0x00000001UL ///< DMX only receive one section
724*53ee8cc1Swenshuai.xi #define DMX_SECT_MODE_PESSCMCHK           0x00000003UL ///< DMX checking PES SCMB status
725*53ee8cc1Swenshuai.xi 
726*53ee8cc1Swenshuai.xi // optional
727*53ee8cc1Swenshuai.xi #define DMX_SECT_MODE_CRCCHK              0x00000002UL ///< DMX enables CRC check
728*53ee8cc1Swenshuai.xi #define DMX_SECT_MODE_AUTO_ADDR           0x00000004UL ///< DMX align read pointer to write pointer when get write pointer // OBSOLETE
729*53ee8cc1Swenshuai.xi #define DMX_SECT_MODE_AUTO_CRCCHK         0x00000008UL ///< DMX enables Auto CRC check, should not be set with DMX_SECT_MODE_CRCCHK together
730*53ee8cc1Swenshuai.xi 
731*53ee8cc1Swenshuai.xi /// for MApi_DMX_AVFifo_Status return value u32FifoStatus
732*53ee8cc1Swenshuai.xi #define DMX_FIFO_STATUS            MS_U32              ///< DMX fifo status type
733*53ee8cc1Swenshuai.xi #define DMX_FIFO_STATUS_LV_MASK           0x0000000FUL ///< use this mask to get fifo level and use below macro to get current fifo status
734*53ee8cc1Swenshuai.xi #define DMX_FIFO_STATUS_LV_USAGE_MASK     0x0000000CUL ///< use this mask to get fifo level usage
735*53ee8cc1Swenshuai.xi #define DMX_FIFO_STATUS_LV_USAGE_SHIFT             2UL
736*53ee8cc1Swenshuai.xi #define DMX_FIFO_STATUS_LV_EMPTY          0x00000001UL ///< if fifo level status equal to this macro means fifo is empty
737*53ee8cc1Swenshuai.xi #define DMX_FIFO_STATUS_RST_MASK          0x80000000UL ///< use this mask to get fifo reset status
738*53ee8cc1Swenshuai.xi #define DMX_FIFO_STATUS_RST_EN            0x80000000UL ///< if fifo reset status equal to this macro means fifo reset is enabled.
739*53ee8cc1Swenshuai.xi 
740*53ee8cc1Swenshuai.xi /// DMX filein Engine by path
741*53ee8cc1Swenshuai.xi typedef enum
742*53ee8cc1Swenshuai.xi {
743*53ee8cc1Swenshuai.xi     DMX_FILEIN_TSIF0,    ///< File input path 0
744*53ee8cc1Swenshuai.xi     DMX_FILEIN_TSIF1,    ///< File input path 1
745*53ee8cc1Swenshuai.xi     DMX_FILEIN_TSIF2,    ///< File input path 2
746*53ee8cc1Swenshuai.xi     DMX_FILEIN_TSIF3,    ///< File input path 3
747*53ee8cc1Swenshuai.xi     DMX_FILEIN_TSIF4,    ///< File input path 4
748*53ee8cc1Swenshuai.xi     DMX_FILEIN_TSIF5,    ///< File input path 5
749*53ee8cc1Swenshuai.xi     DMX_FILEIN_TSIF6,    ///< File input path 6
750*53ee8cc1Swenshuai.xi     DMX_FILEIN_INVALID,  ///< Invalid file input path
751*53ee8cc1Swenshuai.xi } DMX_FILEIN_PATH;
752*53ee8cc1Swenshuai.xi 
753*53ee8cc1Swenshuai.xi 
754*53ee8cc1Swenshuai.xi /// DMX filein destination types
755*53ee8cc1Swenshuai.xi typedef enum
756*53ee8cc1Swenshuai.xi {
757*53ee8cc1Swenshuai.xi     DMX_PES_AUDIO2_FIFO     = 0,                       ///< DMX destination is audio2 fifo
758*53ee8cc1Swenshuai.xi     DMX_PES_AUDIO_FIFO      = 1,                       ///< DMX destination is audio  fifo
759*53ee8cc1Swenshuai.xi     DMX_PES_VIDEO_FIFO      = 2,                       ///< DMX destination is video  fifo
760*53ee8cc1Swenshuai.xi     DMX_PES_NO_BYPASS_FIFO  = 3,                       ///< DMX destination with no bypass
761*53ee8cc1Swenshuai.xi     DMX_PES_VIDEO3D_FIFO    = 4,                       ///< DMX destination is video3D fifo
762*53ee8cc1Swenshuai.xi     DMX_PES_VIDEO2_FIFO     = DMX_PES_VIDEO3D_FIFO,    ///< DMX destination is video2  fifo
763*53ee8cc1Swenshuai.xi     DMX_PES_AUDIO3_FIFO     = 5,                       ///< DMX destination is audio3 fifo
764*53ee8cc1Swenshuai.xi     DMX_PES_AUDIO4_FIFO     = 6,                       ///< DMX destination is audio4 fifo
765*53ee8cc1Swenshuai.xi     DMX_PES_VIDEO3_FIFO     = 7,                       ///< DMX destination is video3 fifo
766*53ee8cc1Swenshuai.xi     DMX_PES_VIDEO4_FIFO     = 8,                       ///< DMX destination is video4 fifo
767*53ee8cc1Swenshuai.xi     DMX_PES_AUDIO5_FIFO     = 9,                       ///< DMX destination is audio5 fifo
768*53ee8cc1Swenshuai.xi     DMX_PES_AUDIO6_FIFO     = 10,                      ///< DMX destination is audio6 fifo
769*53ee8cc1Swenshuai.xi     DMX_PES_VIDEO5_FIFO     = 11,                      ///< DMX destination is video5 fifo
770*53ee8cc1Swenshuai.xi     DMX_PES_VIDEO6_FIFO     = 12,                      ///< DMX destination is video6 fifo
771*53ee8cc1Swenshuai.xi     DMX_PES_VIDEO7_FIFO     = 13,                      ///< DMX destination is video7 fifo
772*53ee8cc1Swenshuai.xi     DMX_PES_VIDEO8_FIFO     = 14,                      ///< DMX destination is video8 fifo
773*53ee8cc1Swenshuai.xi 
774*53ee8cc1Swenshuai.xi } DMX_FILEIN_DST; ///<  DMXPESDATAFIFO;
775*53ee8cc1Swenshuai.xi 
776*53ee8cc1Swenshuai.xi /// DMX callback prototype
777*53ee8cc1Swenshuai.xi typedef void (*DMX_NotifyCb)(MS_U8 u8DmxId, DMX_EVENT enEvent);                                ///< Callback type
778*53ee8cc1Swenshuai.xi /// DMX type 2 callback prototype
779*53ee8cc1Swenshuai.xi typedef void (*DMX_Type2NotifyCb)(MS_U8 u8DmxId, DMX_EVENT enEvent, MS_U32 NotifyParam1);      ///< Callback type 2
780*53ee8cc1Swenshuai.xi /// DMX type 2 callback prototype for filter number > 256
781*53ee8cc1Swenshuai.xi typedef void (*DMX_Type2NotifyCb_Ex)(MS_U32 u32DmxId, DMX_EVENT enEvent, void* NotifyParamEx); ///< Callback_Ex type 2
782*53ee8cc1Swenshuai.xi /// DMX callback used in copy data \ref MApi_DMX_CopyData
783*53ee8cc1Swenshuai.xi typedef MS_BOOL (*DMX_CheckCb)(MS_U8 u8DmxId, MS_U8* start, MS_U8* end, MS_U8* read, MS_U8* write);
784*53ee8cc1Swenshuai.xi 
785*53ee8cc1Swenshuai.xi // dummy data structure
786*53ee8cc1Swenshuai.xi typedef struct
787*53ee8cc1Swenshuai.xi {
788*53ee8cc1Swenshuai.xi     MS_U32                      streaminfo;
789*53ee8cc1Swenshuai.xi } DMX_Stream_info;
790*53ee8cc1Swenshuai.xi 
791*53ee8cc1Swenshuai.xi /// DMX open information structure for filter number > 256
792*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
793*53ee8cc1Swenshuai.xi {
794*53ee8cc1Swenshuai.xi     MS_U32                                  u32DmxInfoSize;  // total size of DMX_Info_EX data structure
795*53ee8cc1Swenshuai.xi     DMX_FILTER_TYPE                         DmxFltType;
796*53ee8cc1Swenshuai.xi } DMX_Info_EX;
797*53ee8cc1Swenshuai.xi 
798*53ee8cc1Swenshuai.xi /// DMX section filter information structure
799*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_500_3)
800*53ee8cc1Swenshuai.xi typedef struct __attribute__((__packed__))
801*53ee8cc1Swenshuai.xi #else
802*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
803*53ee8cc1Swenshuai.xi #endif
804*53ee8cc1Swenshuai.xi {
805*53ee8cc1Swenshuai.xi     MS_PHY                      SectBufAddr;        ///< DMX section buffer in physical address
806*53ee8cc1Swenshuai.xi     MS_U32                      SectBufSize;        ///< DMX section buffer size
807*53ee8cc1Swenshuai.xi     DMX_SECT_MODE               SectMode;           ///< DMX section mode
808*53ee8cc1Swenshuai.xi     DMX_EVENT                   Event;              ///< DMX section event
809*53ee8cc1Swenshuai.xi     DMX_NotifyCb                pNotify;            ///< DMX section callback
810*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_500_3) || defined(UFO_PUBLIC_HEADER_700)
811*53ee8cc1Swenshuai.xi #if !defined (__aarch64__)
812*53ee8cc1Swenshuai.xi     MS_U32                      u32AlignDummy0;   //align size for MI init share mem size check fail
813*53ee8cc1Swenshuai.xi #endif
814*53ee8cc1Swenshuai.xi #endif
815*53ee8cc1Swenshuai.xi     DMX_Type2NotifyCb           pType2Notify;       ///< DMX section callback type 2
816*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_500_3) || defined(UFO_PUBLIC_HEADER_700)
817*53ee8cc1Swenshuai.xi #if !defined (__aarch64__)
818*53ee8cc1Swenshuai.xi     MS_U32                      u32AlignDummy1;   //align size for MI init share mem size check fail
819*53ee8cc1Swenshuai.xi #endif
820*53ee8cc1Swenshuai.xi #endif
821*53ee8cc1Swenshuai.xi     MS_U32                      Type2NotifyParam1;  ///< DMX section callback type 2 user's data
822*53ee8cc1Swenshuai.xi } DMX_Sect_info;
823*53ee8cc1Swenshuai.xi 
824*53ee8cc1Swenshuai.xi /// DMX section filter information structure for filter number > 256
825*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
826*53ee8cc1Swenshuai.xi {
827*53ee8cc1Swenshuai.xi     MS_U32                      u32SectInfoSize;    // sizeof(DMX_Sect_info_Ex)
828*53ee8cc1Swenshuai.xi     MS_PHY                      SectBufAddr;        ///< DMX section buffer in physical address
829*53ee8cc1Swenshuai.xi     MS_U32                      SectBufSize;        ///< DMX section buffer size
830*53ee8cc1Swenshuai.xi     DMX_SECT_MODE               SectMode;           ///< DMX section mode
831*53ee8cc1Swenshuai.xi     DMX_EVENT                   Event;              ///< DMX section event
832*53ee8cc1Swenshuai.xi     DMX_Type2NotifyCb_Ex        pType2Notify_Ex;    ///< DMX section callback type 2
833*53ee8cc1Swenshuai.xi     void*                       pType2NotifyParamEx;///< DMX section callback type 2 user's data
834*53ee8cc1Swenshuai.xi } DMX_Sect_info_Ex;
835*53ee8cc1Swenshuai.xi 
836*53ee8cc1Swenshuai.xi 
837*53ee8cc1Swenshuai.xi /// DMX filter information structure
838*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_500_3)
839*53ee8cc1Swenshuai.xi typedef struct __attribute__((__packed__))
840*53ee8cc1Swenshuai.xi #else
841*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
842*53ee8cc1Swenshuai.xi #endif
843*53ee8cc1Swenshuai.xi {
844*53ee8cc1Swenshuai.xi     union {
845*53ee8cc1Swenshuai.xi         DMX_Stream_info    StreamInfo; ///< DMX stream information for future use
846*53ee8cc1Swenshuai.xi         DMX_Sect_info      SectInfo;   ///< DMX section information
847*53ee8cc1Swenshuai.xi     } Info;
848*53ee8cc1Swenshuai.xi } DMX_Flt_info;
849*53ee8cc1Swenshuai.xi 
850*53ee8cc1Swenshuai.xi /// DMX filter information structure for filter number > 256
851*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
852*53ee8cc1Swenshuai.xi {
853*53ee8cc1Swenshuai.xi     MS_U32                  u32FltInfoSize; // sizeof(DMX_Flt_info_Ex)
854*53ee8cc1Swenshuai.xi     MS_BOOL                 bSet;
855*53ee8cc1Swenshuai.xi     DMX_Sect_info_Ex        SectInfoEx;
856*53ee8cc1Swenshuai.xi     DMX_FILTER_TYPE         DmxFltType;
857*53ee8cc1Swenshuai.xi } DMX_Flt_info_Ex;
858*53ee8cc1Swenshuai.xi 
859*53ee8cc1Swenshuai.xi /// DMX PVR information structure
860*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_500_3)
861*53ee8cc1Swenshuai.xi typedef struct __attribute__((__packed__))
862*53ee8cc1Swenshuai.xi #else
863*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
864*53ee8cc1Swenshuai.xi #endif
865*53ee8cc1Swenshuai.xi {
866*53ee8cc1Swenshuai.xi     MS_PHY                      pPvrBuf0;           ///< DMX PVR buffer 0 starting address
867*53ee8cc1Swenshuai.xi     MS_PHY                      pPvrBuf1;           ///< DMX PVR buffer 1 starting address
868*53ee8cc1Swenshuai.xi     MS_U32                      PvrBufSize0;        ///< DMX PVR buffer 0 size
869*53ee8cc1Swenshuai.xi     MS_U32                      PvrBufSize1;        ///< DMX PVR buffer 1 size
870*53ee8cc1Swenshuai.xi     DMX_EVENT                   Event;              ///< DMX PVR event
871*53ee8cc1Swenshuai.xi     DMX_NotifyCb                pNotify;            ///< DMX PVR callback
872*53ee8cc1Swenshuai.xi 
873*53ee8cc1Swenshuai.xi     MS_U16                      u16CaPvrModel;      ///< DMX PVR CA mode
874*53ee8cc1Swenshuai.xi     MS_BOOL                     bSpsEnable;         ///< DMX PVR CA mode
875*53ee8cc1Swenshuai.xi 
876*53ee8cc1Swenshuai.xi } DMX_Pvr_info;
877*53ee8cc1Swenshuai.xi 
878*53ee8cc1Swenshuai.xi /// DMX CAPVR mode
879*53ee8cc1Swenshuai.xi typedef enum
880*53ee8cc1Swenshuai.xi {
881*53ee8cc1Swenshuai.xi     DMX_CA_PVR_TSP                          = 0x00000000UL,
882*53ee8cc1Swenshuai.xi     DMX_CA_PVR_PROG0                        = 0x00000001UL,
883*53ee8cc1Swenshuai.xi     DMX_CA_PVR_PROG1                        = 0x00000002UL,
884*53ee8cc1Swenshuai.xi }DMX_CA_PVRMODE;
885*53ee8cc1Swenshuai.xi 
886*53ee8cc1Swenshuai.xi //----------------------------------
887*53ee8cc1Swenshuai.xi /// DMX debug table information structure
888*53ee8cc1Swenshuai.xi //----------------------------------
889*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
890*53ee8cc1Swenshuai.xi {
891*53ee8cc1Swenshuai.xi     DMX_DEBUG_CMD               TspCmd;
892*53ee8cc1Swenshuai.xi     DMX_DEBUG_SRC               TspSrc;
893*53ee8cc1Swenshuai.xi     DMX_DEBUG_FIFO              TspFifo;
894*53ee8cc1Swenshuai.xi } DMX_DisContiCnt_info, DMX_DropPktCnt_info;
895*53ee8cc1Swenshuai.xi 
896*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
897*53ee8cc1Swenshuai.xi {
898*53ee8cc1Swenshuai.xi     DMX_DEBUG_CMD               TspCmd;
899*53ee8cc1Swenshuai.xi     DMX_DEBUG_TSIF              TspTsif;
900*53ee8cc1Swenshuai.xi } DMX_LockPktCnt_info;
901*53ee8cc1Swenshuai.xi 
902*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
903*53ee8cc1Swenshuai.xi {
904*53ee8cc1Swenshuai.xi     DMX_DEBUG_CMD               TspCmd;
905*53ee8cc1Swenshuai.xi     DMX_DEBUG_FIFO              TspFifo;
906*53ee8cc1Swenshuai.xi     DMX_DEBUG_FIFO_SRC          TspFifoSrc;
907*53ee8cc1Swenshuai.xi } DMX_AVPktCnt_info;
908*53ee8cc1Swenshuai.xi 
909*53ee8cc1Swenshuai.xi /// DMX capability query type, all the capabilities' info are returned by MS_U32* except DMX_CAP_*_RANGE,
910*53ee8cc1Swenshuai.xi /// and return MS_U32* data0 & data1(array) for DMX_CAP_*_RANGE
911*53ee8cc1Swenshuai.xi typedef enum
912*53ee8cc1Swenshuai.xi {
913*53ee8cc1Swenshuai.xi     DMX_CAP_PID_FILTER_NUM          = 0,          ///< Get PID filter number
914*53ee8cc1Swenshuai.xi     DMX_CAP_SEC_FILTER_NUM          = 1,          ///< Get section filter number
915*53ee8cc1Swenshuai.xi     DMX_CAP_SEC_BUF_NUM             = 2,          ///< Get section buffer number
916*53ee8cc1Swenshuai.xi 
917*53ee8cc1Swenshuai.xi     DMX_CAP_PVR_ENG_NUM             = 3,          ///< Get pvr engine number
918*53ee8cc1Swenshuai.xi     DMX_CAP_PVR_FILTER_NUM          = 4,          ///< Get pvr filter number
919*53ee8cc1Swenshuai.xi     DMX_CAP_PVR1_FILTER_NUM         = 5,          ///< Get pvr1 filter number
920*53ee8cc1Swenshuai.xi 
921*53ee8cc1Swenshuai.xi     DMX_CAP_MMFI_AUDIO_FILTER_NUM   = 6,          ///< Get MM file in audio path filter number
922*53ee8cc1Swenshuai.xi     DMX_CAP_MMFI_V3D_FILTER_NUM     = 7,          ///< Get MM file in video 3D path filter number
923*53ee8cc1Swenshuai.xi 
924*53ee8cc1Swenshuai.xi     DMX_CAP_MMFI0_FILTER_NUM        = 6,          ///< Get MM file in 0 path filter number
925*53ee8cc1Swenshuai.xi     DMX_CAP_MMFI1_FILTER_NUM        = 7,          ///< Get MM file in 1 path filter number
926*53ee8cc1Swenshuai.xi 
927*53ee8cc1Swenshuai.xi     DMX_CAP_TSIF_NUM                = 8,          ///< Get ts interface number
928*53ee8cc1Swenshuai.xi     DMX_CAP_DEMOD_NUM               = 9,          ///< Get demod support number
929*53ee8cc1Swenshuai.xi     DMX_CAP_TS_PAD_NUM              = 10,         ///< Get TS pad support number
930*53ee8cc1Swenshuai.xi     DMX_CAP_VQ_NUM                  = 11,         ///< Get virtual queue support number
931*53ee8cc1Swenshuai.xi 
932*53ee8cc1Swenshuai.xi     DMX_CAP_CA_FLT_NUM              = 12,         ///< Get descramble filter number
933*53ee8cc1Swenshuai.xi     DMX_CAP_CA_KEY_NUM              = 13,         ///< Get total descramble key number
934*53ee8cc1Swenshuai.xi 
935*53ee8cc1Swenshuai.xi     DMX_CAP_FW_ALIGN                = 14,         ///< Get MIU alignment in bytes of DMX FW
936*53ee8cc1Swenshuai.xi     DMX_CAP_VQ_ALIGN                = 15,         ///< Get MIU alignment in bytes of Virtual queue
937*53ee8cc1Swenshuai.xi     DMX_CAP_VQ_PITCH                = 16,         ///< Get length in bytes in bytes of one VQ unit
938*53ee8cc1Swenshuai.xi     DMX_CAP_SEC_BUF_ALIGN           = 17,         ///< Get MIU alignment in bytes of section buffer
939*53ee8cc1Swenshuai.xi     DMX_CAP_PVR_ALIGN               = 18,         ///< Get miu alignment in bytes of record buffer
940*53ee8cc1Swenshuai.xi 
941*53ee8cc1Swenshuai.xi     DMX_CAP_PVRCA_PATH_NUM          = 19,         ///< Get the numbers of descramble record path
942*53ee8cc1Swenshuai.xi 
943*53ee8cc1Swenshuai.xi     DMX_CAP_SHAREKEY_FLT_RANGE      = 20,         ///< Get the range of sharekey descramble 0  filter id. data0 is start ID, data 1 is end ID
944*53ee8cc1Swenshuai.xi     DMX_CAP_PVRCA0_FLT_RANGE        = 21,         ///< Get the range of PVRCA0 filter id. data0 is start ID, data 1 is end ID
945*53ee8cc1Swenshuai.xi     DMX_CAP_PVRCA1_FLT_RANGE        = 22,         ///< Get the range of PVRCA1 filter id. data0 is start ID, data 1 is end ID
946*53ee8cc1Swenshuai.xi     DMX_CAP_PVRCA2_FLT_RANGE        = 23,         ///< Get the range of PVRCA2 filter id. data0 is start ID, data 1 is end ID
947*53ee8cc1Swenshuai.xi     DMX_CAP_SHAREKEY_FLT1_RANGE     = 24,         ///< Get the range of sharekey descramble 1 filter id. data0 is start ID, data 1 is end ID
948*53ee8cc1Swenshuai.xi     DMX_CAP_SHAREKEY_FLT2_RANGE     = 25,         ///< Get the range of sharekey descramble 2 filter id. data0 is start ID, data 1 is end ID
949*53ee8cc1Swenshuai.xi 
950*53ee8cc1Swenshuai.xi     DMX_CAP_HW_TYPE                 = 26,         ///< Get the HW architecture type. 0xXXX0: No PVR, 0x100X: TV series, 0x200X: STB series
951*53ee8cc1Swenshuai.xi 
952*53ee8cc1Swenshuai.xi     DMX_CAP_RESOURCE_SIZE           = 27,         ///< Get DMX Private Resource data struct size (Share resource)
953*53ee8cc1Swenshuai.xi 
954*53ee8cc1Swenshuai.xi     DMX_CAP_VFIFO_NUM               = 28,         ///< Get VFIFO support number
955*53ee8cc1Swenshuai.xi     DMX_CAP_AFIFO_NUM               = 29,         ///< Get AFIFO support number
956*53ee8cc1Swenshuai.xi 
957*53ee8cc1Swenshuai.xi     DMX_CAP_HWPCR_SUPPORT           = 30,         ///< Get HWPCR support status
958*53ee8cc1Swenshuai.xi     DMX_CAP_PCRFLT_START_IDX        = 31,         ///< Get PCR start index
959*53ee8cc1Swenshuai.xi     DMX_CAP_TSP_HWWP_SET_NUM        = 32,         ///< Get TSP write protect set numbers
960*53ee8cc1Swenshuai.xi 
961*53ee8cc1Swenshuai.xi     DMX_CAP_DSCMB_ENG_NUM           = 33,         ///< Get DSCMB engine numbers
962*53ee8cc1Swenshuai.xi 
963*53ee8cc1Swenshuai.xi     DMX_CAP_MAX_MERGESTR_NUM        = 34,         ///< Get Maxumum merge stream number
964*53ee8cc1Swenshuai.xi 
965*53ee8cc1Swenshuai.xi     DMX_CAP_MAX_SEC_FLT_DEPTH       = 35,
966*53ee8cc1Swenshuai.xi     DMX_CAP_FW_BUF_SIZE             = 36,
967*53ee8cc1Swenshuai.xi     DMX_CAP_FW_BUF_RANGE            = 37,
968*53ee8cc1Swenshuai.xi     DMX_CAP_VQ_BUF_RANGE            = 38,
969*53ee8cc1Swenshuai.xi     DMX_CAP_SEC_BUF_RANGE           = 39,
970*53ee8cc1Swenshuai.xi     DMX_CAP_FIQ_NUM                 = 40,
971*53ee8cc1Swenshuai.xi 
972*53ee8cc1Swenshuai.xi     DMX_CAP_NULL,
973*53ee8cc1Swenshuai.xi } DMX_QUERY_TYPE;
974*53ee8cc1Swenshuai.xi 
975*53ee8cc1Swenshuai.xi /// HW architecture type
976*53ee8cc1Swenshuai.xi typedef enum
977*53ee8cc1Swenshuai.xi {
978*53ee8cc1Swenshuai.xi     DMX_HW_TYPE_NONE             = 0UL,
979*53ee8cc1Swenshuai.xi     DMX_HW_TYPE_TV_SERIES        = 0x00001000UL,       ///< The HW architecture is TV series without PVR cunfction
980*53ee8cc1Swenshuai.xi     DMX_HW_TYPE_TV_TYPE1         = 0x00001001UL,       ///< The HW architecture is TV series with Seperate PVR filters
981*53ee8cc1Swenshuai.xi     DMX_HW_TYPE_TV_TYPE2         = 0x00001002UL,       ///< The HW architecture is TV series with general PVR filters
982*53ee8cc1Swenshuai.xi     DMX_HW_TYPE_TV_TYPE2_CA2     = 0x00001006UL,       ///< The HW architecture is TV series with general PVR filters, with general dscmb filters, and merge stream
983*53ee8cc1Swenshuai.xi     DMX_HW_TYPE_STB_SERIES       = 0x00002000UL,       ///< The HW architecture is BOX series without PVR cunfction
984*53ee8cc1Swenshuai.xi     DMX_HW_TYPE_STB_TYPE1        = 0x00002001UL,       ///< The HW architecture is BOX series 1
985*53ee8cc1Swenshuai.xi     DMX_HW_TYPE_STB_TYPE2        = 0x00002002UL,       ///< The HW architecture is BOX series 2
986*53ee8cc1Swenshuai.xi     DMX_HW_TYPE_STB_TYPE3        = 0x00002003UL,       ///< The HW architecture is BOX series 3
987*53ee8cc1Swenshuai.xi     DMX_HW_TYPE_STB_TYPE3_CASPS  = 0x80002003UL,       ///< The HW architecture is BOX series 3 with PVR CA SPS enable mode
988*53ee8cc1Swenshuai.xi } DMX_HW_TYPE;
989*53ee8cc1Swenshuai.xi 
990*53ee8cc1Swenshuai.xi /// Time-stamping clock type
991*53ee8cc1Swenshuai.xi typedef enum
992*53ee8cc1Swenshuai.xi {
993*53ee8cc1Swenshuai.xi     DMX_TIMESTAMP_CLK_90K       =  0x00000000UL,        ///< Original timestamp clock 90K
994*53ee8cc1Swenshuai.xi     DMX_TIMESTAMP_CLK_27M       =  0x00000001UL,        ///< Original timestamp clock 27M
995*53ee8cc1Swenshuai.xi 
996*53ee8cc1Swenshuai.xi     DMX_TIMESTAMP_CLK_STC0_90K  =  0x00000100UL,        ///< Select STC0 90K clock for timestamp clock source
997*53ee8cc1Swenshuai.xi     DMX_TIMESTAMP_CLK_STC0_27M  =  0x00000101UL,        ///< Select STC0 27M clock for timestamp clock source
998*53ee8cc1Swenshuai.xi 
999*53ee8cc1Swenshuai.xi     DMX_TIMESTAMP_CLK_STC1_90K  =  0x00000200UL,        ///< Select STC1 90K clock for timestamp clock source
1000*53ee8cc1Swenshuai.xi     DMX_TIMESTAMP_CLK_STC1_27M  =  0x00000201UL,        ///< Select STC1 27M clock for timestamp clock source
1001*53ee8cc1Swenshuai.xi 
1002*53ee8cc1Swenshuai.xi     DMX_TIMESTAMP_CLK_STC2_90K  =  0x00000300UL,        ///< Select STC2 90K clock for timestamp clock source
1003*53ee8cc1Swenshuai.xi     DMX_TIMESTAMP_CLK_STC2_27M  =  0x00000301UL,        ///< Select STC2 27M clock for timestamp clock source
1004*53ee8cc1Swenshuai.xi 
1005*53ee8cc1Swenshuai.xi     DMX_TIMESTAMP_CLK_STC3_90K  =  0x00000400UL,        ///< Select STC3 90K clock for timestamp clock source
1006*53ee8cc1Swenshuai.xi     DMX_TIMESTAMP_CLK_STC3_27M  =  0x00000401UL,        ///< Select STC3 27M clock for timestamp clock source
1007*53ee8cc1Swenshuai.xi 
1008*53ee8cc1Swenshuai.xi     DMX_TIMESTAMP_CLK_STC4_90K  =  0x00000500UL,        ///< Select STC4 90K clock for timestamp clock source
1009*53ee8cc1Swenshuai.xi     DMX_TIMESTAMP_CLK_STC4_27M  =  0x00000501UL,        ///< Select STC4 27M clock for timestamp clock source
1010*53ee8cc1Swenshuai.xi 
1011*53ee8cc1Swenshuai.xi     DMX_TIMESTAMP_CLK_STC5_90K  =  0x00000600UL,        ///< Select STC5 90K clock for timestamp clock source
1012*53ee8cc1Swenshuai.xi     DMX_TIMESTAMP_CLK_STC5_27M  =  0x00000601UL,        ///< Select STC5 27M clock for timestamp clock source
1013*53ee8cc1Swenshuai.xi 
1014*53ee8cc1Swenshuai.xi     DMX_TIMESTAMP_CLK_STC6_90K  =  0x00000700UL,        ///< Select STC6 90K clock for timestamp clock source
1015*53ee8cc1Swenshuai.xi     DMX_TIMESTAMP_CLK_STC6_27M  =  0x00000701UL,        ///< Select STC6 27M clock for timestamp clock source
1016*53ee8cc1Swenshuai.xi 
1017*53ee8cc1Swenshuai.xi     DMX_TIMESTAMP_CLK_STC7_90K  =  0x00000800UL,        ///< Select STC7 90K clock for timestamp clock source
1018*53ee8cc1Swenshuai.xi     DMX_TIMESTAMP_CLK_STC7_27M  =  0x00000801UL         ///< Select STC7 27M clock for timestamp clock source
1019*53ee8cc1Swenshuai.xi 
1020*53ee8cc1Swenshuai.xi } DMX_TimeStamp_Clk;
1021*53ee8cc1Swenshuai.xi 
1022*53ee8cc1Swenshuai.xi /// TSP file in Packet mode
1023*53ee8cc1Swenshuai.xi typedef enum //_DMX_Filein_Packmode
1024*53ee8cc1Swenshuai.xi {
1025*53ee8cc1Swenshuai.xi     DMX_PKTMODE_188         = 0x00000000UL,       ///< DMX live/file in packet size with 188 (Single stream)
1026*53ee8cc1Swenshuai.xi     DMX_PKTMODE_192         = 0x00000001UL,       ///< DMX file in packet size with 192 (Single stream)
1027*53ee8cc1Swenshuai.xi     DMX_PKTMODE_204         = 0x00000002UL,       ///< DMX file in packet size with 204 (Single stream)
1028*53ee8cc1Swenshuai.xi     DMX_PKTMODE_130         = 0x00000003UL,       ///< DMX live/file in packet size with 130 (RVU/DSS)
1029*53ee8cc1Swenshuai.xi     DMX_PKTMODE_134         = 0x00000004UL,       ///< DMX file in packet size with 134 (RVU with timestamp)
1030*53ee8cc1Swenshuai.xi     DMX_PKTMODE_200         = 0x00000005UL,       ///< DMX live/file in packet size with 200 (Open cable Single stream)
1031*53ee8cc1Swenshuai.xi 
1032*53ee8cc1Swenshuai.xi     DMX_PKTMODE_MERG188     = 0x00000006UL,       ///< DMX live/file in packet size with 188 (Merge stream)
1033*53ee8cc1Swenshuai.xi     DMX_PKTMODE_MERG192     = 0x00000007UL,       ///< DMX live/file in packet size with 192 (Merge stream)
1034*53ee8cc1Swenshuai.xi     DMX_PKTMODE_MERG200     = 0x00000008UL,       ///< DMX live/file in packet size with 200 (Open cable Merge stream)
1035*53ee8cc1Swenshuai.xi 
1036*53ee8cc1Swenshuai.xi     DMX_PKTMODE_MXL192      = 0x00000009UL,       ///< DMX live/file in packet size with 192 (MxL 192 mode)
1037*53ee8cc1Swenshuai.xi     DMX_PKTMODE_MXL196      = 0x0000000AUL,       ///< DMX live/file in packet size with 196 (MxL 196 mode)
1038*53ee8cc1Swenshuai.xi     DMX_PKTMODE_MXL200      = 0x0000000BUL,       ///< DMX live/file in packet size with 196 (MxL 196 mode)
1039*53ee8cc1Swenshuai.xi 
1040*53ee8cc1Swenshuai.xi     DMX_PKTMODE_PES         = 0x00000100UL        ///< DMX pvr PES packet size
1041*53ee8cc1Swenshuai.xi } DMX_Filein_PacketMode;
1042*53ee8cc1Swenshuai.xi 
1043*53ee8cc1Swenshuai.xi #define DMX_PacketMode DMX_Filein_PacketMode
1044*53ee8cc1Swenshuai.xi 
1045*53ee8cc1Swenshuai.xi /// TSP file in information structure
1046*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_500_3)
1047*53ee8cc1Swenshuai.xi typedef struct __attribute__((__packed__))
1048*53ee8cc1Swenshuai.xi #else
1049*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
1050*53ee8cc1Swenshuai.xi #endif
1051*53ee8cc1Swenshuai.xi {
1052*53ee8cc1Swenshuai.xi     MS_U32                 Rate;   ///< DMX file in rate
1053*53ee8cc1Swenshuai.xi     DMX_Filein_PacketMode  PKT_Mode;    ///< DMX file in packet size mode
1054*53ee8cc1Swenshuai.xi } DMX_Filein_info;
1055*53ee8cc1Swenshuai.xi 
1056*53ee8cc1Swenshuai.xi /// TSP PVR record Packet mode
1057*53ee8cc1Swenshuai.xi #define DMX_Pvr_PacketMode DMX_Filein_PacketMode
1058*53ee8cc1Swenshuai.xi 
1059*53ee8cc1Swenshuai.xi 
1060*53ee8cc1Swenshuai.xi /// TSP Flow Input information structure
1061*53ee8cc1Swenshuai.xi /// For TSO_20 structure DMX_TSO_InputCfg
1062*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_500_3)
1063*53ee8cc1Swenshuai.xi typedef struct __attribute__((__packed__))
1064*53ee8cc1Swenshuai.xi #else
1065*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
1066*53ee8cc1Swenshuai.xi #endif
1067*53ee8cc1Swenshuai.xi {
1068*53ee8cc1Swenshuai.xi     DMX_FLOW_INPUT          Input;
1069*53ee8cc1Swenshuai.xi     MS_BOOL                 bClkInv;
1070*53ee8cc1Swenshuai.xi     MS_BOOL                 bExtSync;
1071*53ee8cc1Swenshuai.xi     MS_BOOL                 bParallel;
1072*53ee8cc1Swenshuai.xi }DMX_FlowInput_Info;
1073*53ee8cc1Swenshuai.xi 
1074*53ee8cc1Swenshuai.xi //MMFI Path
1075*53ee8cc1Swenshuai.xi #define DMX_MMFI_PATH       MS_U32                ///< DMX multimedia file input path type.
1076*53ee8cc1Swenshuai.xi #define DMX_MMFI_AUDIO      0UL                   ///< DMX destination with no bypass to MM Audio path
1077*53ee8cc1Swenshuai.xi #define DMX_MMFI_VIDEO      1UL                   ///< DMX destination with no bypass to MM Video path
1078*53ee8cc1Swenshuai.xi #define DMX_MMFI_PATH0      DMX_MMFI_AUDIO        ///< DMX MMFI path 0 to MM Audio path
1079*53ee8cc1Swenshuai.xi #define DMX_MMFI_PATH1      DMX_MMFI_VIDEO        ///< DMX MMFI path 1 to MM Video path
1080*53ee8cc1Swenshuai.xi 
1081*53ee8cc1Swenshuai.xi /// Multimedia file input filter type
1082*53ee8cc1Swenshuai.xi /// must alignment with TSP_FIFO_XXX in halTSP.h
1083*53ee8cc1Swenshuai.xi typedef enum
1084*53ee8cc1Swenshuai.xi {
1085*53ee8cc1Swenshuai.xi     DMX_MMFI_FLTTYPE_AUD    = 0x00,                   ///< Pid filter whose output is sent to Audio    decoder FIFO
1086*53ee8cc1Swenshuai.xi     DMX_MMFI_FLTTYPE_AUDB   = 0x01,                   ///< Pid filter whose output is sent to Audio-B  decoder FIFO
1087*53ee8cc1Swenshuai.xi     DMX_MMFI_FLTTYPE_VD3D   = 0x02,                   ///< Pid filter whose output is sent to Video 3D decoder FIFO
1088*53ee8cc1Swenshuai.xi     DMX_MMFI_FLTTYPE_VD2    = DMX_MMFI_FLTTYPE_VD3D,  ///< Pid filter whose output is sent to Video-2  decoder FIFO
1089*53ee8cc1Swenshuai.xi     DMX_MMFI_FLTTYPE_VD     = 0x03,                   ///< Pid filter whose output is sent to Video    decoder FIFO
1090*53ee8cc1Swenshuai.xi     DMX_MMFI_FLTTYPE_AUDC   = 0x04,                   ///< Pid filter whose output is sent to Audio-C  decoder FIFO
1091*53ee8cc1Swenshuai.xi     DMX_MMFI_FLTTYPE_AUDD   = 0x05,                   ///< Pid filter whose output is sent to Audio-D  decoder FIFO
1092*53ee8cc1Swenshuai.xi     DMX_MMFI_FLTTYPE_VD3    = 0x06,                   ///< Pid filter whose output is sent to Video-3  decoder FIFO
1093*53ee8cc1Swenshuai.xi     DMX_MMFI_FLTTYPE_VD4    = 0x07,                   ///< Pid filter whose output is sent to Video-4  decoder FIFO
1094*53ee8cc1Swenshuai.xi     DMX_MMFI_FLTTYPE_AUDE   = 0x08,                   ///< Pid filter whose output is sent to Audio-E  decoder FIFO
1095*53ee8cc1Swenshuai.xi     DMX_MMFI_FLTTYPE_AUDF   = 0x09,                   ///< Pid filter whose output is sent to Audio-F  decoder FIFO
1096*53ee8cc1Swenshuai.xi     DMX_MMFI_FLTTYPE_VD5    = 0x0A,                   ///< Pid filter whose output is sent to Video-5  decoder FIFO
1097*53ee8cc1Swenshuai.xi     DMX_MMFI_FLTTYPE_VD6    = 0x0B,                   ///< Pid filter whose output is sent to Video-6  decoder FIFO
1098*53ee8cc1Swenshuai.xi     DMX_MMFI_FLTTYPE_VD7    = 0x0C,                   ///< Pid filter whose output is sent to Video-7  decoder FIFO
1099*53ee8cc1Swenshuai.xi     DMX_MMFI_FLTTYPE_VD8    = 0x0D,                   ///< Pid filter whose output is sent to Video-8  decoder FIFO
1100*53ee8cc1Swenshuai.xi 
1101*53ee8cc1Swenshuai.xi     DMX_MMFI1_FLTTYPE_MASK  = 0x80,
1102*53ee8cc1Swenshuai.xi }DMX_MMFI_FLTTYPE;
1103*53ee8cc1Swenshuai.xi 
1104*53ee8cc1Swenshuai.xi /// Multimedia file input destination
1105*53ee8cc1Swenshuai.xi typedef enum
1106*53ee8cc1Swenshuai.xi {
1107*53ee8cc1Swenshuai.xi     DMX_MMFI_PES_NO_BYPASS_AU       = 0x0000, ///< No audio bypass
1108*53ee8cc1Swenshuai.xi 
1109*53ee8cc1Swenshuai.xi     DMX_MMFI_PES_PS_AU              = 0x0001, ///< Directly bypass file-in data to audio fifo without any check or transformation. Since there is a PES parser between audio fifo and audio decoder, the data format should be PES formated such that the file can be decoded correctly
1110*53ee8cc1Swenshuai.xi     DMX_MMFI_PES_PS_AUB             = 0x0002, ///< Directly bypass file-in data to audio-B fifo without any check or transformation. Since there is a PES parser between audio-B fifo and audio decoder, the data format should be PES formated such that the data can be decoded correctly
1111*53ee8cc1Swenshuai.xi 
1112*53ee8cc1Swenshuai.xi     DMX_MMFI_PES_APID_BYPASS        = 0x0004, ///< Audio PES data with bypass of audio PID to audio FIFO
1113*53ee8cc1Swenshuai.xi     DMX_MMFI_PES_APIDB_BYPASS       = 0x0008, ///< Audio-B PES data with bypass audio-B PID to audio-2 FIFO
1114*53ee8cc1Swenshuai.xi 
1115*53ee8cc1Swenshuai.xi     DMX_MMFI_PES_NO_BYPASS_V3D      = 0x0010, ///< Extract PES data from input Transport Stream to video 3D FIFO
1116*53ee8cc1Swenshuai.xi     DMX_MMFI_PES_NO_BYPASS_VD2      = DMX_MMFI_PES_NO_BYPASS_V3D,
1117*53ee8cc1Swenshuai.xi     DMX_MMFI_PES_PS_V3D             = 0x0020, ///< Extract PES data from input Program Stream to video 3D FIFO
1118*53ee8cc1Swenshuai.xi     DMX_MMFI_PES_PS_VD2             = DMX_MMFI_PES_PS_V3D,
1119*53ee8cc1Swenshuai.xi     DMX_MMFI_PES_V3DPID_BYPASS      = 0x0040, ///< Video 3D PES data with bypass of video 3D PID to video 3D FIFO
1120*53ee8cc1Swenshuai.xi     DMX_MMFI_PES_V2PID_BYPASS       = DMX_MMFI_PES_V3DPID_BYPASS,
1121*53ee8cc1Swenshuai.xi 
1122*53ee8cc1Swenshuai.xi     DMX_MMFI_PES_NO_BYPASS_VD       = 0x0080, ///< No video bypass
1123*53ee8cc1Swenshuai.xi     DMX_MMFI_PES_VPID_BYPASS        = 0x0100, ///< Directly bypass file-in data to video fifo without any check or transformation. Since there is a PES parser between video fifo and video decoder, the data format should be PES formated such that the file can be decoded correctly
1124*53ee8cc1Swenshuai.xi 
1125*53ee8cc1Swenshuai.xi     DMX_MMFI_PES_NO_BYPASS_TS       = 0x0200, ///< The file-in data need to be TS format. Only pid-hit packets will be sent to audio/audioB fifo. User can use MApi_DMX_MMFI_Pid_Open() to set the pid filter to audio or audioB
1126*53ee8cc1Swenshuai.xi 
1127*53ee8cc1Swenshuai.xi     DMX_MMFI_PES_PS_VD              = 0x0400, ///< Program stream audio PES data bypass to video FIFO
1128*53ee8cc1Swenshuai.xi 
1129*53ee8cc1Swenshuai.xi     DMX_MMFI_PES_PS_AUC             = 0x0800, ///< Program stream audio PES data bypass to audio-C FIFO
1130*53ee8cc1Swenshuai.xi     DMX_MMFI_PES_PS_AUD             = 0x1000, ///< Program stream audio PES data bypass to audio-D FIFO
1131*53ee8cc1Swenshuai.xi 
1132*53ee8cc1Swenshuai.xi     DMX_MMFI_PES_PS_VD3             = 0x2000, ///< Program stream audio PES data bypass to video-3 FIFO
1133*53ee8cc1Swenshuai.xi     DMX_MMFI_PES_PS_VD4             = 0x4000, ///< Program stream audio PES data bypass to video-4 FIFO
1134*53ee8cc1Swenshuai.xi 
1135*53ee8cc1Swenshuai.xi     DMX_MMFI_PES_PS_AUE             = 0x0003, ///< Program stream audio PES data bypass to audio-E FIFO
1136*53ee8cc1Swenshuai.xi     DMX_MMFI_PES_PS_AUF             = 0x0005, ///< Program stream audio PES data bypass to audio-F FIFO
1137*53ee8cc1Swenshuai.xi 
1138*53ee8cc1Swenshuai.xi     DMX_MMFI_PES_PS_VD5             = 0x0006, ///< Program stream audio PES data bypass to video-5 FIFO
1139*53ee8cc1Swenshuai.xi     DMX_MMFI_PES_PS_VD6             = 0x0007, ///< Program stream audio PES data bypass to video-6 FIFO
1140*53ee8cc1Swenshuai.xi     DMX_MMFI_PES_PS_VD7             = 0x0009, ///< Program stream audio PES data bypass to video-7 FIFO
1141*53ee8cc1Swenshuai.xi     DMX_MMFI_PES_PS_VD8             = 0x000A, ///< Program stream audio PES data bypass to video-8 FIFO
1142*53ee8cc1Swenshuai.xi 
1143*53ee8cc1Swenshuai.xi     DMX_MMFI1_PES_TYPE_MASK         = 0x8000,   ///<  Must set, when using MMFI1 path
1144*53ee8cc1Swenshuai.xi }DMX_MMFI_DST;
1145*53ee8cc1Swenshuai.xi 
1146*53ee8cc1Swenshuai.xi /// DMX TSO Clk
1147*53ee8cc1Swenshuai.xi typedef enum
1148*53ee8cc1Swenshuai.xi {
1149*53ee8cc1Swenshuai.xi     E_DMX_TSO_OUTCLK_DIV2N,
1150*53ee8cc1Swenshuai.xi     E_DMX_TSO_OUTCLK_DIVN,
1151*53ee8cc1Swenshuai.xi     E_DMX_TSO_OUTCLK_62M,
1152*53ee8cc1Swenshuai.xi     E_DMX_TSO_OUTCLK_54M,
1153*53ee8cc1Swenshuai.xi     E_DMX_TSO_OUTCLK_PTSOOUT,
1154*53ee8cc1Swenshuai.xi     E_DMX_TSO_OUTCLK_PTSOOUT_DIV8,
1155*53ee8cc1Swenshuai.xi     E_DMX_TSO_OUTCLK_Dmd,
1156*53ee8cc1Swenshuai.xi     E_DMX_TSO_OUTCLK_27M,
1157*53ee8cc1Swenshuai.xi     E_DMX_TSO_OUTCLK_108M,
1158*53ee8cc1Swenshuai.xi     E_DMX_TSO_OUTCLK_123M,
1159*53ee8cc1Swenshuai.xi }DMX_TSO_OutClk;
1160*53ee8cc1Swenshuai.xi 
1161*53ee8cc1Swenshuai.xi /// DMX TSO Clk Source
1162*53ee8cc1Swenshuai.xi typedef enum
1163*53ee8cc1Swenshuai.xi {
1164*53ee8cc1Swenshuai.xi     E_DMX_TSO_OUTCLKSRC_172M_2N,    ///< E_DMX_TSO_OUTCLK_DIV2N
1165*53ee8cc1Swenshuai.xi     E_DMX_TSO_OUTCLKSRC_288M_2N,    ///< E_DMX_TSO_OUTCLK_DIV2N
1166*53ee8cc1Swenshuai.xi     E_DMX_TSO_OUTCLKSRC_432M_2N,    ///< E_DMX_TSO_OUTCLK_DIV2N
1167*53ee8cc1Swenshuai.xi     E_DMX_TSO_OUTCLKSRC_216M_N,     ///< E_DMX_TSO_OUTCLK_DIVN
1168*53ee8cc1Swenshuai.xi     E_DMX_TSO_OUTCLKSRC_P_TS0IN,    ///< E_DMX_TSO_OUTCLK_PTSOOUT or E_DMX_TSO_OUTCLK_PTSOOUT_DIV8
1169*53ee8cc1Swenshuai.xi     E_DMX_TSO_OUTCLKSRC_P_TS1IN,    ///< E_DMX_TSO_OUTCLK_PTSOOUT or E_DMX_TSO_OUTCLK_PTSOOUT_DIV8
1170*53ee8cc1Swenshuai.xi     E_DMX_TSO_OUTCLKSRC_P_TS2IN,    ///< E_DMX_TSO_OUTCLK_PTSOOUT or E_DMX_TSO_OUTCLK_PTSOOUT_DIV8
1171*53ee8cc1Swenshuai.xi     E_DMX_TSO_OUTCLKSRC_P_TS3IN,    ///< E_DMX_TSO_OUTCLK_PTSOOUT or E_DMX_TSO_OUTCLK_PTSOOUT_DIV8
1172*53ee8cc1Swenshuai.xi     E_DMX_TSO_OUTCLKSRC_P_TS4IN,    ///< E_DMX_TSO_OUTCLK_PTSOOUT or E_DMX_TSO_OUTCLK_PTSOOUT_DIV8
1173*53ee8cc1Swenshuai.xi     E_DMX_TSO_OUTCLKSRC_P_TS5IN,    ///< E_DMX_TSO_OUTCLK_PTSOOUT or E_DMX_TSO_OUTCLK_PTSOOUT_DIV8
1174*53ee8cc1Swenshuai.xi }DMX_TSO_OutClkSrc;
1175*53ee8cc1Swenshuai.xi 
1176*53ee8cc1Swenshuai.xi /// DMX TSO output packet size config. For TSO_20
1177*53ee8cc1Swenshuai.xi typedef enum
1178*53ee8cc1Swenshuai.xi {
1179*53ee8cc1Swenshuai.xi     E_DMX_TSO_CFG_NONE         = 0x00000000UL,
1180*53ee8cc1Swenshuai.xi     E_DMX_TSO_CFG_OPIF         = 0x00000001UL,
1181*53ee8cc1Swenshuai.xi }DMX_TSO_CfgCmd;
1182*53ee8cc1Swenshuai.xi 
1183*53ee8cc1Swenshuai.xi /// DMX TSO Input Config. For TSO_20
1184*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_500_3)
1185*53ee8cc1Swenshuai.xi typedef struct __attribute__((__packed__))
1186*53ee8cc1Swenshuai.xi #else
1187*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
1188*53ee8cc1Swenshuai.xi #endif
1189*53ee8cc1Swenshuai.xi {
1190*53ee8cc1Swenshuai.xi     MS_U32                  u32Res;
1191*53ee8cc1Swenshuai.xi     DMX_FLOW                eFlow;
1192*53ee8cc1Swenshuai.xi     DMX_TSIF                eTSOInIf;
1193*53ee8cc1Swenshuai.xi     DMX_FlowInput_Info      stInputInfo;
1194*53ee8cc1Swenshuai.xi     MS_U8                   u8LocalStrId;
1195*53ee8cc1Swenshuai.xi     MS_BOOL                 bBypassAll;
1196*53ee8cc1Swenshuai.xi     MS_BOOL                 bEnable;
1197*53ee8cc1Swenshuai.xi     MS_BOOL                 bSet;
1198*53ee8cc1Swenshuai.xi }DMX_TSO_InputCfg;
1199*53ee8cc1Swenshuai.xi 
1200*53ee8cc1Swenshuai.xi /// DMX TSO Output Config. For TSO_20
1201*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_500_3)
1202*53ee8cc1Swenshuai.xi typedef struct __attribute__((__packed__))
1203*53ee8cc1Swenshuai.xi #else
1204*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
1205*53ee8cc1Swenshuai.xi #endif
1206*53ee8cc1Swenshuai.xi {
1207*53ee8cc1Swenshuai.xi     MS_U32                  u32Res;
1208*53ee8cc1Swenshuai.xi     DMX_FLOW                eFlow;
1209*53ee8cc1Swenshuai.xi     DMX_FLOW_OUTPUT_PAD     eOutPad;
1210*53ee8cc1Swenshuai.xi     MS_U16                  u16OutPktSize;
1211*53ee8cc1Swenshuai.xi     MS_BOOL                 bEnable;
1212*53ee8cc1Swenshuai.xi 
1213*53ee8cc1Swenshuai.xi     MS_BOOL                 bDefOutClk;
1214*53ee8cc1Swenshuai.xi     MS_BOOL                 bOutClkInv;
1215*53ee8cc1Swenshuai.xi     DMX_TSO_OutClk          eTsoOutClk;
1216*53ee8cc1Swenshuai.xi     DMX_TSO_OutClkSrc       eTsoOutClkSrc;
1217*53ee8cc1Swenshuai.xi     MS_U16                  u16DivNum;
1218*53ee8cc1Swenshuai.xi     MS_BOOL                 bSet;
1219*53ee8cc1Swenshuai.xi }DMX_TSO_OutputCfg;
1220*53ee8cc1Swenshuai.xi 
1221*53ee8cc1Swenshuai.xi /// DMX TSO Config. For TSO_20
1222*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
1223*53ee8cc1Swenshuai.xi {
1224*53ee8cc1Swenshuai.xi     MS_U32                  u32Res;
1225*53ee8cc1Swenshuai.xi     MS_U32                  u32TsoEng;
1226*53ee8cc1Swenshuai.xi     MS_U32                  u32TsoCfgDataSize;  // total size of DMX_TSO_Cfg data structure
1227*53ee8cc1Swenshuai.xi     MS_BOOL                 bSet;
1228*53ee8cc1Swenshuai.xi 
1229*53ee8cc1Swenshuai.xi     DMX_TSO_CfgCmd          eCfgCmd;
1230*53ee8cc1Swenshuai.xi     MS_U32                  u32CmdData0;
1231*53ee8cc1Swenshuai.xi }DMX_TSO_Cfg;
1232*53ee8cc1Swenshuai.xi 
1233*53ee8cc1Swenshuai.xi /// DMX FQ init infomation
1234*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_500_3)
1235*53ee8cc1Swenshuai.xi typedef struct __attribute__((__packed__))
1236*53ee8cc1Swenshuai.xi #else
1237*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
1238*53ee8cc1Swenshuai.xi #endif
1239*53ee8cc1Swenshuai.xi {
1240*53ee8cc1Swenshuai.xi     MS_U8    u8AddrMode;
1241*53ee8cc1Swenshuai.xi     MS_PHY   u32BufStart;
1242*53ee8cc1Swenshuai.xi     MS_U32   u32BufSize;
1243*53ee8cc1Swenshuai.xi } DMX_FQ_Info;
1244*53ee8cc1Swenshuai.xi 
1245*53ee8cc1Swenshuai.xi /// File-in Queue data path skipping options
1246*53ee8cc1Swenshuai.xi typedef enum
1247*53ee8cc1Swenshuai.xi {
1248*53ee8cc1Swenshuai.xi     E_DMX_FQ_SKIP_RUSH_DATA_PATH_NON        = 0x00000000UL, ///< None
1249*53ee8cc1Swenshuai.xi     E_DMX_FQ_SKIP_APES_RUSH_DATA            = 0x00000008UL, ///< Audio-A data are filtered out
1250*53ee8cc1Swenshuai.xi     E_DMX_FQ_SKIP_APES_B_RUSH_DATA          = 0x00000010UL, ///< Audio-B data are filtered out
1251*53ee8cc1Swenshuai.xi     E_DMX_FQ_SKIP_VPES_RUSH_DATA            = 0x00000020UL, ///< Video data are filtered out
1252*53ee8cc1Swenshuai.xi     E_DMX_FQ_SKIP_SEC_RUSH_DATA             = 0x00000040UL, ///< Sections data are filtered out
1253*53ee8cc1Swenshuai.xi     E_DMX_FQ_SKIP_ADP_RUSH_DATA             = 0x00000080UL, ///< Reserved
1254*53ee8cc1Swenshuai.xi     E_DMX_FQ_SKIP_PCR_RUSH_DATA             = 0x00000100UL, ///< PCR data is filtered out
1255*53ee8cc1Swenshuai.xi     E_DMX_FQ_SKIP_RASP_RUSH_DATA            = 0x00000200UL, ///< RASP data are filtered out
1256*53ee8cc1Swenshuai.xi     E_DMX_FQ_SKIP_PVR1_RUSH_DATA            = E_DMX_FQ_SKIP_RASP_RUSH_DATA,
1257*53ee8cc1Swenshuai.xi     E_DMX_FQ_SKIP_PCR1_RUSH_DATA            = 0x00001000UL,
1258*53ee8cc1Swenshuai.xi     E_DMX_FQ_SKIP_PVR3_RUSH_DATA            = E_DMX_FQ_SKIP_PCR1_RUSH_DATA,
1259*53ee8cc1Swenshuai.xi     E_DMX_FQ_SKIP_CFG1_MASK                 = 0x80000000UL,
1260*53ee8cc1Swenshuai.xi     E_DMX_FQ_SKIP_APES_C_RUSH_DATA          = 0x80000008UL, ///< Audio-C data are filtered out
1261*53ee8cc1Swenshuai.xi     E_DMX_FQ_SKIP_APES_D_RUSH_DATA          = 0x80000010UL, ///< Audio-D data are filtered out
1262*53ee8cc1Swenshuai.xi     E_DMX_FQ_SKIP_V3DPES_RUSH_DATA          = 0x80000020UL, ///< Video3D data are filtered out
1263*53ee8cc1Swenshuai.xi     E_DMX_FQ_SKIP_V2PES_RUSH_DATA           = E_DMX_FQ_SKIP_V3DPES_RUSH_DATA,
1264*53ee8cc1Swenshuai.xi     E_DMX_FQ_SKIP_PVR2_RUSH_DATA            = 0x80000200UL,
1265*53ee8cc1Swenshuai.xi }DMX_FQ_SkipPath;
1266*53ee8cc1Swenshuai.xi 
1267*53ee8cc1Swenshuai.xi /// File-in Queue configuration options
1268*53ee8cc1Swenshuai.xi typedef enum
1269*53ee8cc1Swenshuai.xi {
1270*53ee8cc1Swenshuai.xi     E_DMX_FQ_CFG_NONE                       = 0x00000000UL, ///< None
1271*53ee8cc1Swenshuai.xi     E_DMX_FQ_CFG_SEL_SRCMUX                 = 0x000000001L, ///< File-in queue source selection
1272*53ee8cc1Swenshuai.xi     E_DMX_FQ_CFG_FLT_NULL_PKT               = 0x000000002L
1273*53ee8cc1Swenshuai.xi 
1274*53ee8cc1Swenshuai.xi }DMX_FQ_CfgCmd;
1275*53ee8cc1Swenshuai.xi 
1276*53ee8cc1Swenshuai.xi /// File-in Queue configuration information
1277*53ee8cc1Swenshuai.xi #if defined(UFO_PUBLIC_HEADER_500_3)
1278*53ee8cc1Swenshuai.xi typedef struct __attribute__((__packed__))
1279*53ee8cc1Swenshuai.xi #else
1280*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
1281*53ee8cc1Swenshuai.xi #endif
1282*53ee8cc1Swenshuai.xi {
1283*53ee8cc1Swenshuai.xi     MS_U32              u32Res;          ///< result field
1284*53ee8cc1Swenshuai.xi     MS_U32              u32FQEng;        ///< File-in queue engine Id
1285*53ee8cc1Swenshuai.xi     MS_U32              u32CfgDataSize;  ///< total size of DMX_FQ_Cfg data structure
1286*53ee8cc1Swenshuai.xi     MS_BOOL             bSet;            ///< set (TRUE) or get (FALSE)
1287*53ee8cc1Swenshuai.xi     DMX_FQ_CfgCmd       eCfgCmd;         ///< command field
1288*53ee8cc1Swenshuai.xi     DMX_TSIF            eFqSrcSel;       ///< File-in queue source selection (transport stream input interface Id)
1289*53ee8cc1Swenshuai.xi }DMX_FQ_Cfg;
1290*53ee8cc1Swenshuai.xi 
1291*53ee8cc1Swenshuai.xi /// DMX TEI  Remove Error Packet Infomation
1292*53ee8cc1Swenshuai.xi typedef enum
1293*53ee8cc1Swenshuai.xi {
1294*53ee8cc1Swenshuai.xi     E_DMX_TEI_REMOVE_AUDIO_PKT,     ///< DMX TEI Remove Audio Packet
1295*53ee8cc1Swenshuai.xi     E_DMX_TEI_REMOVE_VIDEO_PKT,     ///< DMX TEI Remove Video Packet
1296*53ee8cc1Swenshuai.xi 
1297*53ee8cc1Swenshuai.xi     E_DMX_TEI_REMOVE_PKT0_LIVE,
1298*53ee8cc1Swenshuai.xi     E_DMX_TEI_REMOVE_PKT0_FILE,
1299*53ee8cc1Swenshuai.xi     E_DMX_TEI_REMOVE_PKT1,
1300*53ee8cc1Swenshuai.xi     E_DMX_TEI_REMOVE_PKT2,
1301*53ee8cc1Swenshuai.xi 
1302*53ee8cc1Swenshuai.xi     E_DMX_TEI_REMOVE_AUDIO2_PKT,    ///< DMX TEI Remove AudioB  Packet
1303*53ee8cc1Swenshuai.xi     E_DMX_TEI_REMOVE_AUDIO3_PKT,    ///< DMX TEI Remove Audio3  Packet
1304*53ee8cc1Swenshuai.xi     E_DMX_TEI_REMOVE_AUDIO4_PKT,    ///< DMX TEI Remove Audio4  Packet
1305*53ee8cc1Swenshuai.xi 
1306*53ee8cc1Swenshuai.xi     E_DMX_TEI_REMOVE_VIDEO2_PKT,    ///< DMX TEI Remove Video2  Packet
1307*53ee8cc1Swenshuai.xi     E_DMX_TEI_REMOVE_VIDEO3_PKT ,   ///< DMX TEI Remove Video3  Packet
1308*53ee8cc1Swenshuai.xi     E_DMX_TEI_REMOVE_VIDEO4_PKT ,   ///< DMX TEI Remove Video4  Packet
1309*53ee8cc1Swenshuai.xi 
1310*53ee8cc1Swenshuai.xi }DMX_TEI_RmPktType;
1311*53ee8cc1Swenshuai.xi 
1312*53ee8cc1Swenshuai.xi // DMX_RES_ALLOC_EN
1313*53ee8cc1Swenshuai.xi typedef enum
1314*53ee8cc1Swenshuai.xi {
1315*53ee8cc1Swenshuai.xi     DMX_RES_NONE,
1316*53ee8cc1Swenshuai.xi     DMX_RES_STC_ENG,                ///< STC engine: return data type (MS_U32)
1317*53ee8cc1Swenshuai.xi     DMX_RES_FLOW_PB_LIVE,           ///< Live-in playback path: return data type (DMX_FLOW) , DMX_FLOW_PLAYBACK ~ DMX_FLOW_PLAYBACK3
1318*53ee8cc1Swenshuai.xi     DMX_RES_FLOW_PB_FILE,           ///< File-in playback path: return data type (DMX_FLOW) , DMX_FLOW_PLAYBACK ~ DMX_FLOW_PLAYBACK3
1319*53ee8cc1Swenshuai.xi     DMX_RES_FLOW_MMFI               ///< MMFI path: return data type (DMX_FLOW) , DMX_FLOW_MMFI0 ~ DMX_FLOW_MMFI1
1320*53ee8cc1Swenshuai.xi }DMX_RES_TYPE;
1321*53ee8cc1Swenshuai.xi 
1322*53ee8cc1Swenshuai.xi //STC update Control Parameters define
1323*53ee8cc1Swenshuai.xi #define eStcUpdateCtrlMode                  MS_U8 ///< STC update control options
1324*53ee8cc1Swenshuai.xi #define DMX_STC_UPDATE_FW                   0x00  ///< Update STC by TSP FW (STC is updated by TSP FW running at AEON processor)
1325*53ee8cc1Swenshuai.xi #define DMX_STC_UPDATE_HK                   0x01  ///< Update STC by HK (STC is updated by TSP utopia driver running at ARM/MIPS processor)
1326*53ee8cc1Swenshuai.xi #define DMX_STC_UPDATE_UPDATEONCE           0x02  ///< Update STC Once when PCR reset
1327*53ee8cc1Swenshuai.xi 
1328*53ee8cc1Swenshuai.xi //S2P Clock Option
1329*53ee8cc1Swenshuai.xi #define eS2PClkOpt                          MS_U32
1330*53ee8cc1Swenshuai.xi #define S2P_CLK_OPT_NONE                    0x00000000
1331*53ee8cc1Swenshuai.xi #define S2P_CLK_OPT_INVERT                  0x00000001
1332*53ee8cc1Swenshuai.xi #define S2P_CLK_OPT_NON_INVERT              0x00000002
1333*53ee8cc1Swenshuai.xi 
1334*53ee8cc1Swenshuai.xi // Policy Manager
1335*53ee8cc1Swenshuai.xi typedef enum
1336*53ee8cc1Swenshuai.xi {
1337*53ee8cc1Swenshuai.xi     DMX_PIPEID_GRP_NONE,
1338*53ee8cc1Swenshuai.xi     DMX_PIPEID_GRP_PVR,
1339*53ee8cc1Swenshuai.xi     DMX_PIPEID_GRP_FILE,
1340*53ee8cc1Swenshuai.xi     DMX_PIPEID_GRP_MMFI,
1341*53ee8cc1Swenshuai.xi     DMX_PIPEID_GRP_MAX_NUM,
1342*53ee8cc1Swenshuai.xi }DMX_PIPEID_GROUP;
1343*53ee8cc1Swenshuai.xi 
1344*53ee8cc1Swenshuai.xi typedef union GENERAL_ENGID{
1345*53ee8cc1Swenshuai.xi     DMX_PVR_ENG             PvrEng;         ///< PVR engine
1346*53ee8cc1Swenshuai.xi     DMX_FILEIN_PATH         FileinPath;     ///< Filein Path
1347*53ee8cc1Swenshuai.xi     DMX_MMFI_PATH           MmfiPath;
1348*53ee8cc1Swenshuai.xi } DMX_GENERAL_ENGID;
1349*53ee8cc1Swenshuai.xi 
1350*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
1351*53ee8cc1Swenshuai.xi // include utopia v2  header files here
1352*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
1353*53ee8cc1Swenshuai.xi #ifdef DMX_UTOPIA_20
1354*53ee8cc1Swenshuai.xi #include "apiDMX_v2.h"
1355*53ee8cc1Swenshuai.xi #endif
1356*53ee8cc1Swenshuai.xi 
1357*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1358*53ee8cc1Swenshuai.xi /// Initialize lib resource API
1359*53ee8cc1Swenshuai.xi /// @ingroup TSP_General
1360*53ee8cc1Swenshuai.xi /// @param pu32ResMemAddr       \b IN: Pointer to store resource memory addresses
1361*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
1362*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
1363*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1364*53ee8cc1Swenshuai.xi  DMX_FILTER_STATUS MApi_DMX_InitLibResource(void *pResMemAddr);
1365*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1366*53ee8cc1Swenshuai.xi /// Set TSP firmware address and size.
1367*53ee8cc1Swenshuai.xi /// @ingroup TSP_General
1368*53ee8cc1Swenshuai.xi /// @param pFwAddr       \b IN: TSP firmware address in DRAM physical address
1369*53ee8cc1Swenshuai.xi /// @param u32FwSize     \b IN: TSP firmware size
1370*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
1371*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
1372*53ee8cc1Swenshuai.xi /// @note It should be called before calling any other Demux API functions.
1373*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1374*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_SetFW(MS_PHY pFwAddr, MS_U32 u32FwSize); // In DRAM physical address
1375*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1376*53ee8cc1Swenshuai.xi /// Set the MIU address for TSP aeon (firmware) used.
1377*53ee8cc1Swenshuai.xi /// @ingroup TSP_General
1378*53ee8cc1Swenshuai.xi /// @param phyDataAddr       \b IN: MIU phsyical address
1379*53ee8cc1Swenshuai.xi /// @param u32size           \b IN: MIU buffer size
1380*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
1381*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
1382*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1383*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_SetFwDataAddr(MS_PHY phyDataAddr, MS_U32 u32size);
1384*53ee8cc1Swenshuai.xi /// Set TSP is work on HK or AEON.
1385*53ee8cc1Swenshuai.xi /// @ingroup TSP_General
1386*53ee8cc1Swenshuai.xi /// @param bIsHK       \b IN: TRUE: HK, FALSE: AEON
1387*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
1388*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
1389*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1390*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_SetHK(MS_BOOL bIsHK); // OBSOLETE
1391*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1392*53ee8cc1Swenshuai.xi /// Initialize Demux module.
1393*53ee8cc1Swenshuai.xi /// @ingroup TSP_General
1394*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
1395*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
1396*53ee8cc1Swenshuai.xi /// @note It should be called before calling any other Demux API functions.
1397*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1398*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Init(void);
1399*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1400*53ee8cc1Swenshuai.xi /// Get init parameters of MApi_DMX_TSPInit
1401*53ee8cc1Swenshuai.xi /// @ingroup TSP_General
1402*53ee8cc1Swenshuai.xi /// @param pstParam       \b OUT: init parameters
1403*53ee8cc1Swenshuai.xi /// @return UTOPIA_STATUS_ERR_NOT_AVAIL: DMX not system init
1404*53ee8cc1Swenshuai.xi /// @return UTOPIA_STATUS_ERR_NOT_AVAIL: DMX system init ready
1405*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1406*53ee8cc1Swenshuai.xi MS_U32 SYMBOL_WEAK MApi_DMX_TSPInit_GetConfig(DMX_TSPParam *pstParam);
1407*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1408*53ee8cc1Swenshuai.xi /// Initialize Demux API for Virtual Quere Enable
1409*53ee8cc1Swenshuai.xi /// @ingroup TSP_General
1410*53ee8cc1Swenshuai.xi /// @param param          \b IN: Init Virtual Quere Setting
1411*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
1412*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
1413*53ee8cc1Swenshuai.xi /// @note if want to use virtual quere, please call this API after calling MApi_DMX_Init. (VQ does not support for all chip)
1414*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1415*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_TSPInit(DMX_TSPParam *param);
1416*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1417*53ee8cc1Swenshuai.xi /// Exit Demux API
1418*53ee8cc1Swenshuai.xi /// @ingroup TSP_General
1419*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
1420*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
1421*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1422*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Exit(void);
1423*53ee8cc1Swenshuai.xi 
1424*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1425*53ee8cc1Swenshuai.xi /// Force exit Demux API
1426*53ee8cc1Swenshuai.xi /// @ingroup TSP_General
1427*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
1428*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
1429*53ee8cc1Swenshuai.xi /// @note It is special case for MM
1430*53ee8cc1Swenshuai.xi ///-------------------------------------------------------------------------------------------------
1431*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_ForceExit(void);
1432*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1433*53ee8cc1Swenshuai.xi /// Save DMX driver states to DRAM.
1434*53ee8cc1Swenshuai.xi /// @ingroup DMX_STR
1435*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
1436*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
1437*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1438*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Suspend(void);
1439*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1440*53ee8cc1Swenshuai.xi /// Restore DMX driver states from DRAM. And TSP need input the firmware info. to reload TSP FW.
1441*53ee8cc1Swenshuai.xi /// @ingroup DMX_STR
1442*53ee8cc1Swenshuai.xi /// @param phyFWAddr     \b IN: TSP firmware load address
1443*53ee8cc1Swenshuai.xi /// @param u32FWSize      \b IN: TSP firmware size
1444*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
1445*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
1446*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1447*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Resume(MS_PHY phyFWAddr, MS_U32 u32FWSize);
1448*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1449*53ee8cc1Swenshuai.xi /// Check TSP is alive or not. (Firmware)
1450*53ee8cc1Swenshuai.xi /// @ingroup TSP_General
1451*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
1452*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
1453*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1454*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_ChkAlive(void);
1455*53ee8cc1Swenshuai.xi 
1456*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1457*53ee8cc1Swenshuai.xi /// Reset TSP and MM. It will reset all filter and do HW reset.
1458*53ee8cc1Swenshuai.xi /// @ingroup TSP_General
1459*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
1460*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
1461*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1462*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Reset(void);
1463*53ee8cc1Swenshuai.xi 
1464*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1465*53ee8cc1Swenshuai.xi /// Release TSP driver HW lock semaphone
1466*53ee8cc1Swenshuai.xi /// @ingroup TSP_General
1467*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
1468*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
1469*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1470*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_ReleaseSemaphone(void);
1471*53ee8cc1Swenshuai.xi 
1472*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1473*53ee8cc1Swenshuai.xi /// Enable/Disable TSP MIU internal write protect. Include PVR record buffer and section buffer.
1474*53ee8cc1Swenshuai.xi /// @ingroup TSP_General
1475*53ee8cc1Swenshuai.xi /// @param bEnable          \b IN: Enable/Disable protect
1476*53ee8cc1Swenshuai.xi /// @param pphyStartAddr    \b IN: Protect start address. Array[0-3]: [0]: PVR, [1-2]: Section, [3]: PVR1
1477*53ee8cc1Swenshuai.xi /// @param pphyEndAddr      \b IN: Protect end address. Array[0-3]: [0]: PVR, [1-2]: Section, [3]: PVR1
1478*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
1479*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
1480*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1481*53ee8cc1Swenshuai.xi void              MApi_DMX_WriteProtect_Enable(MS_BOOL bEnable, MS_PHY* pphyStartAddr, MS_PHY* pphyEndAddr);
1482*53ee8cc1Swenshuai.xi 
1483*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1484*53ee8cc1Swenshuai.xi /// Enable/Disable Demux MIU internal Firmware write protect.
1485*53ee8cc1Swenshuai.xi /// @ingroup TSP_General
1486*53ee8cc1Swenshuai.xi /// @param bEnable          \b IN: Enable/Disable protect
1487*53ee8cc1Swenshuai.xi /// @param phyStartAddr     \b IN: Protect start address.
1488*53ee8cc1Swenshuai.xi /// @param phyEndAddr       \b IN: Protect end address.
1489*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
1490*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
1491*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1492*53ee8cc1Swenshuai.xi void              MApi_DMX_OrzWriteProtect_Enable(MS_BOOL bEnable, MS_PHY phyStartAddr, MS_PHY phyEndAddr);
1493*53ee8cc1Swenshuai.xi 
1494*53ee8cc1Swenshuai.xi //-----------------
1495*53ee8cc1Swenshuai.xi // DMX_ToBeRemove
1496*53ee8cc1Swenshuai.xi //-----------------
1497*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1498*53ee8cc1Swenshuai.xi /// Read drop packet count of AV due to duplicate. (Use new debug function to get this information)
1499*53ee8cc1Swenshuai.xi /// @ingroup DMX_ToBeRemove
1500*53ee8cc1Swenshuai.xi /// @param  eDmxPktType       \b IN: The packet type wihch want to remove
1501*53ee8cc1Swenshuai.xi /// @param  bEnable           \b IN: Enable or Disable
1502*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
1503*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
1504*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1505*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Read_DropPktCnt(MS_U16* pu16ADropCnt, MS_U16* pu16VDropCnt);
1506*53ee8cc1Swenshuai.xi 
1507*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1508*53ee8cc1Swenshuai.xi /// Control DMX STR functions.
1509*53ee8cc1Swenshuai.xi /// @ingroup DMX_STR
1510*53ee8cc1Swenshuai.xi /// @param  u16PowerState  \b IN: STR power mode. (to control STR suspend & resume case.)
1511*53ee8cc1Swenshuai.xi /// @param phyFWAddr       \b IN: TSP firmware load address
1512*53ee8cc1Swenshuai.xi /// @param u32FWSize       \b IN: TSP firmware size
1513*53ee8cc1Swenshuai.xi /// @return : Utopia status - UTOPIA_STATUS_SUCCESS (Succeed) or UTOPIA_STATUS_FAIL (Fail)
1514*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1515*53ee8cc1Swenshuai.xi MS_U32            MApi_DMX_SetPowerState(EN_POWER_MODE u16PowerState, MS_PHY phyFWAddr, MS_U32 u32FWSize);
1516*53ee8cc1Swenshuai.xi 
1517*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1518*53ee8cc1Swenshuai.xi /// @brief Remove TEI error packet
1519*53ee8cc1Swenshuai.xi /// @param eDmxPktType \b IN: DMX remove packet type
1520*53ee8cc1Swenshuai.xi /// @param bEnable     \b IN: TRUE: enable the feature, FALSE: disable it
1521*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK Success
1522*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR Failure
1523*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1524*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_TEI_RemoveErrorPkt(DMX_TEI_RmPktType eDmxPktType, MS_BOOL bEnable);
1525*53ee8cc1Swenshuai.xi 
1526*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1527*53ee8cc1Swenshuai.xi /// Set Demux Flow packet mode
1528*53ee8cc1Swenshuai.xi /// @ingroup TSP_General
1529*53ee8cc1Swenshuai.xi /// @param DmxFlow   \b IN: TSP flow path
1530*53ee8cc1Swenshuai.xi /// @param ePktMode  \b IN: Packet mode of flow path.
1531*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
1532*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
1533*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1534*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_SetPacketMode(DMX_FLOW DmxFlow, DMX_PacketMode ePktMode);
1535*53ee8cc1Swenshuai.xi 
1536*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1537*53ee8cc1Swenshuai.xi /// Set Sync Byte value to Stream source ID or TS source ID.
1538*53ee8cc1Swenshuai.xi /// @ingroup TSP_Merge
1539*53ee8cc1Swenshuai.xi /// @param u32SrcID       \b IN: Index of stream source id or TS source id
1540*53ee8cc1Swenshuai.xi /// @param u8SyncByte     \b IN: Sync byte, defalut value is 0x47
1541*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
1542*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
1543*53ee8cc1Swenshuai.xi /// @note:  u32SrcID - Stream source ID is from 0 ~7
1544*53ee8cc1Swenshuai.xi ///                              TS source ID is mapping TSIF index
1545*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1546*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_SetMergeStrSyncByte(MS_U32 u32SrcID, MS_U8 u8SyncByte);
1547*53ee8cc1Swenshuai.xi 
1548*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1549*53ee8cc1Swenshuai.xi /// Set enable/disable drop scramble packet of FIFO/PVR. If enable, scramble packet can't pass through FIFO/PVR.
1550*53ee8cc1Swenshuai.xi /// @ingroup TSP_General
1551*53ee8cc1Swenshuai.xi /// @param  pDmxFltType     \b IN: Type select: FIFO or PVR
1552*53ee8cc1Swenshuai.xi /// @param  bEnable         \b IN: Enable/Disable
1553*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
1554*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
1555*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1556*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS SYMBOL_WEAK MApi_DMX_DropScmbPkt(DMX_FILTER_TYPE pDmxFltType, MS_BOOL bEnable);
1557*53ee8cc1Swenshuai.xi 
1558*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1559*53ee8cc1Swenshuai.xi /// Allocate DMX resource
1560*53ee8cc1Swenshuai.xi /// @ingroup TSP_General
1561*53ee8cc1Swenshuai.xi /// @param eResType      \b IN: Resource type to allocate
1562*53ee8cc1Swenshuai.xi /// @param pRes          \b OUT: Pointer to store resource content
1563*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
1564*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
1565*53ee8cc1Swenshuai.xi /// @note
1566*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1567*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS SYMBOL_WEAK MApi_DMX_ResAllocate(DMX_RES_TYPE eResType, void *pRes);
1568*53ee8cc1Swenshuai.xi 
1569*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1570*53ee8cc1Swenshuai.xi /// Free  DMX resource
1571*53ee8cc1Swenshuai.xi /// @ingroup TSP_General
1572*53ee8cc1Swenshuai.xi /// @param eResType         \b IN: Resource type to free
1573*53ee8cc1Swenshuai.xi /// @param pRes             \b IN: Pointer to store resource content
1574*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
1575*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
1576*53ee8cc1Swenshuai.xi /// @note
1577*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1578*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS SYMBOL_WEAK MApi_DMX_ResFree(DMX_RES_TYPE eResType, void *pRes);
1579*53ee8cc1Swenshuai.xi 
1580*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1581*53ee8cc1Swenshuai.xi /// Get STC engine which PCR PID index mapping to
1582*53ee8cc1Swenshuai.xi /// @ingroup TSP_General
1583*53ee8cc1Swenshuai.xi /// @param u32PcrFltId                \b IN: PCR PID index
1584*53ee8cc1Swenshuai.xi /// @param pu32StcEng                 \b OUT: STC engine id
1585*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
1586*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
1587*53ee8cc1Swenshuai.xi /// @note
1588*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1589*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS SYMBOL_WEAK MApi_DMX_Pcr_Get_MapSTC(MS_U32 u32PcrFltId, MS_U32 *pu32StcEng);
1590*53ee8cc1Swenshuai.xi 
1591*53ee8cc1Swenshuai.xi // owner ship set/checking
1592*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1593*53ee8cc1Swenshuai.xi /// Set demux filter owner.
1594*53ee8cc1Swenshuai.xi /// @ingroup TSP_General
1595*53ee8cc1Swenshuai.xi /// @param  u32DmxIdStart     \b IN: Demux filter start index
1596*53ee8cc1Swenshuai.xi /// @param  u32DmxIdEnd       \b IN: Demux filter end index
1597*53ee8cc1Swenshuai.xi /// @param  bOwner            \b IN: TRUE for owner, FALSE for not owner
1598*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
1599*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
1600*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1601*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_SetOwner(MS_U32 u32DmxIdStart, MS_U32 u32DmxIdEnd, MS_BOOL bOwner); //OBSOLETE
1602*53ee8cc1Swenshuai.xi 
1603*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1604*53ee8cc1Swenshuai.xi /// Query DMX specific hardware capability.
1605*53ee8cc1Swenshuai.xi /// @ingroup TSP_General
1606*53ee8cc1Swenshuai.xi /// @param  DmxQueryType           \b IN: query type
1607*53ee8cc1Swenshuai.xi /// @param  pOutput                \b OUT: answer of query type
1608*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
1609*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
1610*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1611*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_GetCap(DMX_QUERY_TYPE DmxQueryType, void* pOutput);
1612*53ee8cc1Swenshuai.xi 
1613*53ee8cc1Swenshuai.xi //-----------------
1614*53ee8cc1Swenshuai.xi // DMX_ToBeModified
1615*53ee8cc1Swenshuai.xi //-----------------
1616*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1617*53ee8cc1Swenshuai.xi /// Query DMX specific hardware capability by string type.
1618*53ee8cc1Swenshuai.xi /// @ingroup DMX_ToBeModified_TSP
1619*53ee8cc1Swenshuai.xi /// @param  pstrQueryType          \b IN: String of capability item
1620*53ee8cc1Swenshuai.xi /// @param  s32Strlen              \b IN: String size of capability item
1621*53ee8cc1Swenshuai.xi /// @param  pOutput                \b OUT: answer of query type
1622*53ee8cc1Swenshuai.xi /// @param  ps32OutSize            \b OUT: Output data length
1623*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
1624*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
1625*53ee8cc1Swenshuai.xi /// @note:  Keep MApi_DMX_GetCap function and refine interface for parameter
1626*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1627*53ee8cc1Swenshuai.xi  DMX_FILTER_STATUS SYMBOL_WEAK MApi_DMX_GetCap_Ex(char* pstrQueryType, MS_S32 s32Strlen, void* pOutput, MS_S32* ps32OutSize);
1628*53ee8cc1Swenshuai.xi 
1629*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1630*53ee8cc1Swenshuai.xi /// Invert Demux parallel input bit order
1631*53ee8cc1Swenshuai.xi /// @ingroup TSP_General
1632*53ee8cc1Swenshuai.xi /// @param DmxFlow       \b IN: TSP flow path
1633*53ee8cc1Swenshuai.xi /// @param bInvert       \b IN: Invert bit order of TS parallel in. (TRUE: Invert, FALSE: Not invert)
1634*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
1635*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
1636*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------
1637*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Parl_Invert(DMX_FLOW DmxFlow, MS_BOOL bInvert);
1638*53ee8cc1Swenshuai.xi 
1639*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1640*53ee8cc1Swenshuai.xi /// Set Demux DMA burst length.
1641*53ee8cc1Swenshuai.xi /// @ingroup TSP_General
1642*53ee8cc1Swenshuai.xi /// @param BurstType    \b IN: Burst length
1643*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
1644*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
1645*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------
1646*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_SetBurstLen(DMX_BURSTTYPE BurstType);
1647*53ee8cc1Swenshuai.xi 
1648*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1649*53ee8cc1Swenshuai.xi /// Enable/Disable TSP VQ.
1650*53ee8cc1Swenshuai.xi /// @ingroup TSP_General
1651*53ee8cc1Swenshuai.xi /// @param bEnable        \b IN: Enable/Disable
1652*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
1653*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
1654*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1655*53ee8cc1Swenshuai.xi  DMX_FILTER_STATUS MApi_DMX_VQ_Enable(MS_BOOL bEnable);
1656*53ee8cc1Swenshuai.xi 
1657*53ee8cc1Swenshuai.xi //-----------------
1658*53ee8cc1Swenshuai.xi // TSP_Flow
1659*53ee8cc1Swenshuai.xi //-----------------
1660*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1661*53ee8cc1Swenshuai.xi /// Set Demux Flow config.
1662*53ee8cc1Swenshuai.xi /// @ingroup TSP_Flow
1663*53ee8cc1Swenshuai.xi /// @param DmxFlow          \b IN: TSP flow path
1664*53ee8cc1Swenshuai.xi /// @param DmxFlowInput     \b IN: Input port. (ex: external pad0, internal demod...etc)
1665*53ee8cc1Swenshuai.xi /// @param bClkInv          \b IN: TS-in options: clock phase inversion
1666*53ee8cc1Swenshuai.xi /// @param bExtSync         \b IN: TS-in options: sync by external signal
1667*53ee8cc1Swenshuai.xi /// @param bParallel        \b IN: TS-in is parallel interface or serial interface
1668*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
1669*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
1670*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1671*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_FlowSet(DMX_FLOW DmxFlow, DMX_FLOW_INPUT DmxFlowInput, MS_BOOL bClkInv, MS_BOOL bExtSync, MS_BOOL bParallel);
1672*53ee8cc1Swenshuai.xi 
1673*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1674*53ee8cc1Swenshuai.xi /// Setting PVR flow.
1675*53ee8cc1Swenshuai.xi /// @ingroup TSP_Flow
1676*53ee8cc1Swenshuai.xi /// @param  Eng              \b IN: PVR Engine ID
1677*53ee8cc1Swenshuai.xi /// @param  ePvrSrcTSIf      \b IN: Select the record source
1678*53ee8cc1Swenshuai.xi /// @param  bDscmbRec        \b IN: TRUE for recording dscmbled stream; FALSE for recording orignal stream
1679*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
1680*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
1681*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1682*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_PVR_FlowSet(DMX_PVR_ENG Eng, DMX_TSIF ePvrSrcTSIf, MS_BOOL bDscmbRec);
1683*53ee8cc1Swenshuai.xi 
1684*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1685*53ee8cc1Swenshuai.xi /// Get Demux Flow setting.
1686*53ee8cc1Swenshuai.xi /// @ingroup TSP_Flow
1687*53ee8cc1Swenshuai.xi /// @param DmxFlow            \b IN: TSP flow path
1688*53ee8cc1Swenshuai.xi /// @param pDmxFlowInput      \b OUT: pointer to store DMX input flow value.
1689*53ee8cc1Swenshuai.xi /// @param pbClkInv           \b OUT: pointer to store clock phase inversion
1690*53ee8cc1Swenshuai.xi /// @param pbExtSync          \b OUT: pointer to store sync by external signal
1691*53ee8cc1Swenshuai.xi /// @param pbParallel         \b OUT: pointer to store parallel interface or serial interface
1692*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
1693*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
1694*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1695*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Get_FlowInput_Status(DMX_FLOW DmxFlow, DMX_FLOW_INPUT *pDmxFlowInput, MS_BOOL *pbClkInv, MS_BOOL *pbExtSync, MS_BOOL *pbParallel);
1696*53ee8cc1Swenshuai.xi 
1697*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1698*53ee8cc1Swenshuai.xi /// Enable Demux flow path.
1699*53ee8cc1Swenshuai.xi /// @ingroup TSP_Flow
1700*53ee8cc1Swenshuai.xi /// @param DmxFlow             \b IN: TSP flow path
1701*53ee8cc1Swenshuai.xi /// @param bEnable             \b IN: TRUE: enable, FALSE: disable
1702*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
1703*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
1704*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1705*53ee8cc1Swenshuai.xi  DMX_FILTER_STATUS MApi_DMX_FlowEnable(DMX_FLOW DmxFlow, MS_BOOL bEnable);
1706*53ee8cc1Swenshuai.xi 
1707*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1708*53ee8cc1Swenshuai.xi /// Enable liveAB config: TSIF1 path can use as live through TSIF0_FILE path. (Old arichtecture TSIF1 can't goto section)
1709*53ee8cc1Swenshuai.xi /// Only support on TSP 1.0
1710*53ee8cc1Swenshuai.xi /// @param bPF_EN              \b IN: Enable/Disable liveAB bit.
1711*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
1712*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
1713*53ee8cc1Swenshuai.xi /// @note
1714*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1715*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_LiveAB_En(MS_BOOL bPF_EN);
1716*53ee8cc1Swenshuai.xi 
1717*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1718*53ee8cc1Swenshuai.xi /// Check liveAB config is enable or not
1719*53ee8cc1Swenshuai.xi /// Only support on TSP 1.0
1720*53ee8cc1Swenshuai.xi /// @return TRUE - LiveAB is enable
1721*53ee8cc1Swenshuai.xi /// @return FALSE - LiveAB is disable
1722*53ee8cc1Swenshuai.xi /// @note
1723*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1724*53ee8cc1Swenshuai.xi MS_BOOL           MApi_DMX_IsLiveAB_Enable(void);
1725*53ee8cc1Swenshuai.xi 
1726*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1727*53ee8cc1Swenshuai.xi /// Set/Get DScmbler engine id depend on TSIF path
1728*53ee8cc1Swenshuai.xi /// @ingroup TSP_Flow
1729*53ee8cc1Swenshuai.xi /// @param  eTsIf                 \b IN: TSP flow path (interface)
1730*53ee8cc1Swenshuai.xi /// @param  pu32EngId             \b IN/OUT: pointer to store dscmb engine id
1731*53ee8cc1Swenshuai.xi /// @param  bSet                  \b IN: TRUE:Set dscmb engine id ; FALSE: Get dscmb engine id
1732*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
1733*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
1734*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1735*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS SYMBOL_WEAK MApi_DMX_Flow_DscmbEng(DMX_TSIF eTsIf, MS_U32* pu32EngId, MS_BOOL bSet);
1736*53ee8cc1Swenshuai.xi 
1737*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1738*53ee8cc1Swenshuai.xi /// Configure TS output pad.
1739*53ee8cc1Swenshuai.xi /// @ingroup TSP_Flow
1740*53ee8cc1Swenshuai.xi /// @param  eOutPad           \b IN: Select output pad
1741*53ee8cc1Swenshuai.xi /// @param  eInSrcPad         \b IN: Select input source pad
1742*53ee8cc1Swenshuai.xi /// @param  bInParallel       \b IN: TRUE: input source is paralleled; FALSE: input source is serial in
1743*53ee8cc1Swenshuai.xi /// @param  u32ResvNum        \b IN: Reserved value of the number of reserved parameters for future using
1744*53ee8cc1Swenshuai.xi /// @param  pu32Resv          \b IN: Reserved pointer to store parameters for future using
1745*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
1746*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
1747*53ee8cc1Swenshuai.xi /// @note Only EXT_PAD1 and EXT_PAD3 has output mode
1748*53ee8cc1Swenshuai.xi /// @note If output from S2P mode, input source should be external input pad only
1749*53ee8cc1Swenshuai.xi /// @note If output from TSO mode, eInputPad should be E_DRVTSP_PAD_TSO
1750*53ee8cc1Swenshuai.xi /// @note If input source is internal demod, output mode can be demod out or TSO out
1751*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1752*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS SYMBOL_WEAK MApi_DMX_TsOutputPadCfg(DMX_FLOW_OUTPUT_PAD eOutPad, DMX_FLOW_INPUT eInSrcPad, MS_BOOL bInParallel, MS_U32 u32ResvNum, MS_U32 *pu32Resv);
1753*53ee8cc1Swenshuai.xi 
1754*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1755*53ee8cc1Swenshuai.xi /// Configure output pad
1756*53ee8cc1Swenshuai.xi /// Set S2P output clock phase and invert.
1757*53ee8cc1Swenshuai.xi /// @ingroup TSP_Flow
1758*53ee8cc1Swenshuai.xi /// @param  u16Val               \b IN: Value of phase
1759*53ee8cc1Swenshuai.xi /// @param  bEnable              \b IN: Enable/Disable phase tuning
1760*53ee8cc1Swenshuai.xi /// @param  u32Reserved          \b IN: Reserved for future using
1761*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
1762*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
1763*53ee8cc1Swenshuai.xi /// @note Configure for S2P mode
1764*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1765*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS SYMBOL_WEAK MApi_DMX_TsS2POutputClkPhase(MS_U16 u16Val, MS_BOOL bEnable, MS_U32 u32S2pOpt);
1766*53ee8cc1Swenshuai.xi 
1767*53ee8cc1Swenshuai.xi //-----------------
1768*53ee8cc1Swenshuai.xi // TSP_STC
1769*53ee8cc1Swenshuai.xi //-----------------
1770*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1771*53ee8cc1Swenshuai.xi /// Enable/Disable STC64 bit mode.
1772*53ee8cc1Swenshuai.xi /// @ingroup TSP_STC
1773*53ee8cc1Swenshuai.xi /// @param  bEnable              \b IN: Enable or Disable STC64 mode
1774*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
1775*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
1776*53ee8cc1Swenshuai.xi /// @note This is also set by TSP init function.
1777*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1778*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_STC64_Mode_Enable(MS_BOOL bEnable);
1779*53ee8cc1Swenshuai.xi 
1780*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1781*53ee8cc1Swenshuai.xi /// Get STC counter.
1782*53ee8cc1Swenshuai.xi /// @ingroup DMX_ToBeRemove
1783*53ee8cc1Swenshuai.xi /// @param pu32Stc32       \b OUT: STC counter (bit 32)
1784*53ee8cc1Swenshuai.xi /// @param pu32Stc         \b OUT: STC counter (bit 31 to bit 0)
1785*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
1786*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
1787*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1788*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Stc_Get(MS_U32* pu32Stc32, MS_U32* pu32Stc);
1789*53ee8cc1Swenshuai.xi 
1790*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1791*53ee8cc1Swenshuai.xi /// Set STC counter.
1792*53ee8cc1Swenshuai.xi /// @ingroup DMX_ToBeRemove
1793*53ee8cc1Swenshuai.xi /// @param u32Stc32       \b OUT: STC counter (bit 32)
1794*53ee8cc1Swenshuai.xi /// @param u32Stc         \b OUT: STC counter (bit 31 to bit 0)
1795*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
1796*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
1797*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1798*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Stc_Set(MS_U32 u32Stc32, MS_U32 u32Stc);
1799*53ee8cc1Swenshuai.xi 
1800*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1801*53ee8cc1Swenshuai.xi /// Get PCR value.
1802*53ee8cc1Swenshuai.xi /// @ingroup DMX_ToBeRemove
1803*53ee8cc1Swenshuai.xi /// @param pu32Pcr32     \b OUT: PCR counter (bit 32)
1804*53ee8cc1Swenshuai.xi /// @param pu32Pcr       \b OUT: PCR counter (bit 31 to bit 0)
1805*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
1806*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
1807*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1808*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Pcr_Get(MS_U32* pu32Pcr32, MS_U32* pu32Pcr);
1809*53ee8cc1Swenshuai.xi 
1810*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1811*53ee8cc1Swenshuai.xi /// Select STC Engine.
1812*53ee8cc1Swenshuai.xi /// @ingroup TSP_STC
1813*53ee8cc1Swenshuai.xi /// @param eFltSrc         \b IN: Fliter Source type and Filter source ID
1814*53ee8cc1Swenshuai.xi /// @param u32StcEng       \b IN: STC engine ID (0, 1)
1815*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
1816*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
1817*53ee8cc1Swenshuai.xi /// @note Only support in driver version 3.0.
1818*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1819*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS SYMBOL_WEAK MApi_DMX_Stc_Select(DMX_FILTER_TYPE eFltSrc, MS_U32 u32StcEng);
1820*53ee8cc1Swenshuai.xi 
1821*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1822*53ee8cc1Swenshuai.xi /// Get STC counter.
1823*53ee8cc1Swenshuai.xi /// @ingroup TSP_STC
1824*53ee8cc1Swenshuai.xi /// @param u8Eng             \b IN: STC Engine ID
1825*53ee8cc1Swenshuai.xi /// @param pu32Stc32         \b OUT: STC counter (bit 32)
1826*53ee8cc1Swenshuai.xi /// @param pu32Stc           \b OUT: STC counter (bit 31 to bit 0)
1827*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
1828*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
1829*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1830*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Stc_Eng_Get(MS_U8 u8Eng, MS_U32* pu32Stc32, MS_U32* pu32Stc);
1831*53ee8cc1Swenshuai.xi 
1832*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1833*53ee8cc1Swenshuai.xi /// Set STC counter.
1834*53ee8cc1Swenshuai.xi /// @ingroup TSP_STC
1835*53ee8cc1Swenshuai.xi /// @param u8Eng          \b IN: STC Engine ID
1836*53ee8cc1Swenshuai.xi /// @param u32Stc32       \b OUT: STC counter (bit 32)
1837*53ee8cc1Swenshuai.xi /// @param u32Stc         \b OUT: STC counter (bit 31 to bit 0)
1838*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
1839*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
1840*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1841*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Stc_Eng_Set(MS_U8 u8Eng, MS_U32 u32Stc32, MS_U32 u32Stc);
1842*53ee8cc1Swenshuai.xi 
1843*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1844*53ee8cc1Swenshuai.xi /// Get PCR.
1845*53ee8cc1Swenshuai.xi /// @ingroup TSP_STC
1846*53ee8cc1Swenshuai.xi /// @param u8PcrEng      \b INPUT: PCR Eng
1847*53ee8cc1Swenshuai.xi /// @param pu32Pcr32     \b OUT: PCR counter (bit 32)
1848*53ee8cc1Swenshuai.xi /// @param pu32Pcr       \b OUT: PCR counter (bit 31 to bit 0)
1849*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
1850*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
1851*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1852*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Pcr_Eng_Get(MS_U8 u8PcrEng, MS_U32* pu32Pcr32, MS_U32* pu32Pcr);
1853*53ee8cc1Swenshuai.xi 
1854*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1855*53ee8cc1Swenshuai.xi /// Set STC control.
1856*53ee8cc1Swenshuai.xi /// @ingroup TSP_STC
1857*53ee8cc1Swenshuai.xi /// @param u8Eng             \b IN: STC Engine ID
1858*53ee8cc1Swenshuai.xi /// @param eMode             \b IN: STC update control options
1859*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
1860*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
1861*53ee8cc1Swenshuai.xi /// @note eMode: 0x00 -> Update STC by TSP FW
1862*53ee8cc1Swenshuai.xi /// @note             0x01 -> Update STC by HK
1863*53ee8cc1Swenshuai.xi /// @note             0x02 -> Update STC Once when PCR reset
1864*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1865*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_STC_UpdateCtrl(MS_U8 u8Eng, eStcUpdateCtrlMode eMode);
1866*53ee8cc1Swenshuai.xi 
1867*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1868*53ee8cc1Swenshuai.xi /// Add or subtract STC Offset.
1869*53ee8cc1Swenshuai.xi /// @ingroup TSP_STC
1870*53ee8cc1Swenshuai.xi /// @param u32Eng              \b IN: STC Engine ID
1871*53ee8cc1Swenshuai.xi /// @param u32Offset           \b IN: STC offset value
1872*53ee8cc1Swenshuai.xi /// @param bAdd                \b IN: If TRUE, add the offset value; otherwise subtract the offset value
1873*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
1874*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
1875*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1876*53ee8cc1Swenshuai.xi  DMX_FILTER_STATUS MApi_DMX_Stc_Eng_SetOffset(MS_U32 u32Eng, MS_U32 u32Offset, MS_BOOL bAdd);
1877*53ee8cc1Swenshuai.xi 
1878*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1879*53ee8cc1Swenshuai.xi /// Adjust STC Clock.
1880*53ee8cc1Swenshuai.xi /// @ingroup TSP_STC
1881*53ee8cc1Swenshuai.xi /// @param u32EngId            \b IN: STC Engine ID
1882*53ee8cc1Swenshuai.xi /// @param bUpClk              \b IN: If TRUE, Clk will be faster, and if FALSE, Clk will be slower
1883*53ee8cc1Swenshuai.xi /// @param u32Percentage       \b IN: The percentage of STC clock ratio
1884*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
1885*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
1886*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1887*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Stc_Clk_Adjust(MS_U32 u32EngId, MS_BOOL bUpClk, MS_U32 u32Percentage);
1888*53ee8cc1Swenshuai.xi 
1889*53ee8cc1Swenshuai.xi //-----------------
1890*53ee8cc1Swenshuai.xi // TSP_Filter
1891*53ee8cc1Swenshuai.xi //-----------------
1892*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1893*53ee8cc1Swenshuai.xi /// Open a demux filter.
1894*53ee8cc1Swenshuai.xi /// @ingroup TSP_Filter
1895*53ee8cc1Swenshuai.xi /// @param DmxFltType    \b IN: The filter information to allocate
1896*53ee8cc1Swenshuai.xi /// @param pu8DmxId      \b OUT: The available demux filer index
1897*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
1898*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
1899*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1900*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Open(DMX_FILTER_TYPE DmxFltType, MS_U8* pu8DmxId);
1901*53ee8cc1Swenshuai.xi 
1902*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1903*53ee8cc1Swenshuai.xi /// Open a demux filter.
1904*53ee8cc1Swenshuai.xi /// @ingroup TSP_Filter
1905*53ee8cc1Swenshuai.xi /// @param pDmxInfo      \b IN: The filter information to allocate
1906*53ee8cc1Swenshuai.xi /// @param pu32DmxId     \b OUT: The available demux filer index
1907*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
1908*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
1909*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1910*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Open_Ex(DMX_Info_EX *pDmxInfo, MS_U32* pu32DmxId);
1911*53ee8cc1Swenshuai.xi 
1912*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1913*53ee8cc1Swenshuai.xi /// Close a demux filter.
1914*53ee8cc1Swenshuai.xi /// @ingroup TSP_Filter
1915*53ee8cc1Swenshuai.xi /// @param u32DmxId        \b IN: the demux filer index to free
1916*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
1917*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
1918*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1919*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Close(MS_U32 u32DmxId);
1920*53ee8cc1Swenshuai.xi 
1921*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1922*53ee8cc1Swenshuai.xi /// Activate a demux filter.
1923*53ee8cc1Swenshuai.xi /// @ingroup TSP_Filter
1924*53ee8cc1Swenshuai.xi /// @param u32DmxId        \b IN: the demux filer index to activate
1925*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
1926*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
1927*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1928*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Start(MS_U32 u32DmxId);
1929*53ee8cc1Swenshuai.xi 
1930*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1931*53ee8cc1Swenshuai.xi /// Deactivate a demux filter.
1932*53ee8cc1Swenshuai.xi /// @ingroup TSP_Filter
1933*53ee8cc1Swenshuai.xi /// @param u32DmxId         \b IN: the demux filer index to deactivate
1934*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
1935*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
1936*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1937*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Stop(MS_U32 u32DmxId);
1938*53ee8cc1Swenshuai.xi 
1939*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1940*53ee8cc1Swenshuai.xi /// Get/set a demultiplexer filter information
1941*53ee8cc1Swenshuai.xi /// @param  u32DmxId    \b IN: The ID of the demultiplexer filter
1942*53ee8cc1Swenshuai.xi /// @param  pDmxFltInfo \b IN/OUT: The demultiplexer filter information
1943*53ee8cc1Swenshuai.xi /// @param  pDmxFltType \b IN/OUT: The demultiplexer filter type
1944*53ee8cc1Swenshuai.xi /// @param  bSet        \b IN: set (TRUE) or get (FALSE)
1945*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK Success
1946*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR Failure
1947*53ee8cc1Swenshuai.xi /// @note If \b pDmxFltType is equal to \ref DMX_FILTER_TYPE_VIDEO, \ref DMX_FILTER_TYPE_AUDIO or \ref DMX_FILTER_TYPE_AUDIO2 :
1948*53ee8cc1Swenshuai.xi /// - If \b bSet is equal to TRUE, pDmxFltInfo->StreamInfo shall be filled-in (for future usage)
1949*53ee8cc1Swenshuai.xi /// - If \b bSet is equal to FALSE, then the previously set stream information will be returned in pDmxFltInfo->StreamInfo
1950*53ee8cc1Swenshuai.xi /// @note If \b pDmxFltType is equal to \ref DMX_FILTER_TYPE_SECTION, \ref DMX_FILTER_TYPE_TELETEXT, \ref DMX_FILTER_TYPE_PES, \ref DMX_FILTER_TYPE_PACKET or \ref DMX_FILTER_TYPE_PCR :
1951*53ee8cc1Swenshuai.xi /// - If \b bSet is equal to TRUE, pDmxFltInfo->SectInfo shall be filled-in
1952*53ee8cc1Swenshuai.xi /// - If \b bSet is equal to FALSE, then the previously set information will be returned in pDmxFltInfo->SectInfo
1953*53ee8cc1Swenshuai.xi /// - The members in pDmxFltInfo->SectInfo structure shall be set as follows: \n
1954*53ee8cc1Swenshuai.xi ///      SectBufAddr : the section buffer physical address \n
1955*53ee8cc1Swenshuai.xi ///      SectBufSize : the section buffer size \n
1956*53ee8cc1Swenshuai.xi ///      SectMode    : OR combination of the following: (DMX_SECT_MODE_CONTI and DMX_SECT_MODE_ONESHOT are exclusive) \n
1957*53ee8cc1Swenshuai.xi ///                    \ref DMX_SECT_MODE_CONTI : Receive section data continuously \n
1958*53ee8cc1Swenshuai.xi ///                    \ref DMX_SECT_MODE_ONESHOT : Receive one section only \n
1959*53ee8cc1Swenshuai.xi ///                    \ref DMX_SECT_MODE_CRCCHK : Ask DMX hardware to check CRC32 value of section data and to drop incorrect sections \n
1960*53ee8cc1Swenshuai.xi ///      Event       : OR combination of the following ( \ref DMX_EVENT_CB_POLL, \ref DMX_EVENT_CB_SELF and \ref DMX_EVENT_CB_SELF_TYPE2 are exclusive) \n
1961*53ee8cc1Swenshuai.xi ///                    \ref DMX_EVENT_CB_POLL : use polling mode \n
1962*53ee8cc1Swenshuai.xi ///                    \ref DMX_EVENT_CB_SELF : User set events will be notified to the user using the callback set in the \b pNotify field \n
1963*53ee8cc1Swenshuai.xi ///                    \ref DMX_EVENT_CB_SELF_TYPE2 : User set events will be notified to the user using the callback set in the \b pType2Notify field. The caller may specify specific user data using the \b Type2NotifyParam1 field \n
1964*53ee8cc1Swenshuai.xi ///                    \ref DMX_EVENT_DATA_READY : If set, an event will be raised (and notified through callback if \ref DMX_EVENT_CB_SELF or \ref DMX_EVENT_CB_SELF_TYPE2 are set) when one or more complete section data has been captured in the section buffer \n
1965*53ee8cc1Swenshuai.xi ///                    \ref DMX_EVENT_BUF_OVERFLOW : If set, an event will be raised (and notified through callback if \ref DMX_EVENT_CB_SELF or \ref DMX_EVENT_CB_SELF_TYPE2 are set) if the section buffer overflows \n
1966*53ee8cc1Swenshuai.xi ///                    \ref DMX_EVENT_DATA_READY : If set, an event will be raised (and notified through callback if \ref DMX_EVENT_CB_SELF or \ref DMX_EVENT_CB_SELF_TYPE2 are set) if CRC32 check fails (assuming \ref DMX_SECT_MODE_CRCCHK has been set in \b SectMode) \n
1967*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1968*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Info(MS_U32 u32DmxId, DMX_Flt_info* pDmxFltInfo, DMX_FILTER_TYPE* pDmxFltType, MS_BOOL bSet);
1969*53ee8cc1Swenshuai.xi 
1970*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1971*53ee8cc1Swenshuai.xi /// Get/set a demultiplexer filter information for filter number > 256
1972*53ee8cc1Swenshuai.xi /// @param u32DmxId    \b IN: The ID of the demultiplexer filter
1973*53ee8cc1Swenshuai.xi /// @param pDmxFltInfo \b IN/OUT: The demultiplexer filter information
1974*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK Success
1975*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR Failure
1976*53ee8cc1Swenshuai.xi /// - The members in pDmxFltInfo->SectInfoEx structure shall be set as follows: \n
1977*53ee8cc1Swenshuai.xi ///      SectBufAddr : the section buffer physical address \n
1978*53ee8cc1Swenshuai.xi ///      SectBufSize : the section buffer size \n
1979*53ee8cc1Swenshuai.xi ///      SectMode    : OR combination of the following: (DMX_SECT_MODE_CONTI and DMX_SECT_MODE_ONESHOT are exclusive) \n
1980*53ee8cc1Swenshuai.xi ///                    \ref DMX_SECT_MODE_CONTI : Receive section data continuously \n
1981*53ee8cc1Swenshuai.xi ///                    \ref DMX_SECT_MODE_ONESHOT : Receive one section only \n
1982*53ee8cc1Swenshuai.xi ///                    \ref DMX_SECT_MODE_CRCCHK : Ask DMX hardware to check CRC32 value of section data and to drop incorrect sections \n
1983*53ee8cc1Swenshuai.xi ///      Event       : OR combination of the following ( \ref DMX_EVENT_CB_POLL, \ref DMX_EVENT_CB_SELF and \ref DMX_EVENT_CB_SELF_TYPE2 are exclusive) \n
1984*53ee8cc1Swenshuai.xi ///                    \ref DMX_EVENT_CB_POLL : use polling mode \n
1985*53ee8cc1Swenshuai.xi ///                    \ref DMX_EVENT_CB_SELF : User set events will be notified to the user using the callback set in the \b pNotify field \n
1986*53ee8cc1Swenshuai.xi ///                    \ref DMX_EVENT_CB_SELF_TYPE2 : User set events will be notified to the user using the callback set in the \b pType2Notify field. The caller may specify specific user data using the \b Type2NotifyParam1 field \n
1987*53ee8cc1Swenshuai.xi ///                    \ref DMX_EVENT_DATA_READY : If set, an event will be raised (and notified through callback if \ref DMX_EVENT_CB_SELF or \ref DMX_EVENT_CB_SELF_TYPE2 are set) when one or more complete section data has been captured in the section buffer \n
1988*53ee8cc1Swenshuai.xi ///                    \ref DMX_EVENT_BUF_OVERFLOW : If set, an event will be raised (and notified through callback if \ref DMX_EVENT_CB_SELF or \ref DMX_EVENT_CB_SELF_TYPE2 are set) if the section buffer overflows \n
1989*53ee8cc1Swenshuai.xi ///                    \ref DMX_EVENT_DATA_READY : If set, an event will be raised (and notified through callback if \ref DMX_EVENT_CB_SELF or \ref DMX_EVENT_CB_SELF_TYPE2 are set) if CRC32 check fails (assuming \ref DMX_SECT_MODE_CRCCHK has been set in \b SectMode) \n
1990*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1991*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Info_Ex(MS_U32 u32DmxId, DMX_Flt_info_Ex* pDmxFltInfo);
1992*53ee8cc1Swenshuai.xi 
1993*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1994*53ee8cc1Swenshuai.xi /// Set a demux filter PID.
1995*53ee8cc1Swenshuai.xi /// @ingroup TSP_Filter
1996*53ee8cc1Swenshuai.xi /// @param u32DmxId      \b IN: the demux filer index
1997*53ee8cc1Swenshuai.xi /// @param pu16Pid        \b IN/OUT: PID
1998*53ee8cc1Swenshuai.xi /// @param bSet             \b IN: set/get
1999*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2000*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2001*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2002*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Pid(MS_U32 u32DmxId, MS_U16* pu16Pid, MS_BOOL bSet);
2003*53ee8cc1Swenshuai.xi 
2004*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2005*53ee8cc1Swenshuai.xi /// Get a demux filter status.
2006*53ee8cc1Swenshuai.xi /// @ingroup TSP_Filter
2007*53ee8cc1Swenshuai.xi /// @param u32DmxId       \b IN: the demux filer index
2008*53ee8cc1Swenshuai.xi /// @param pbEnable       \b OUT: the demux filer enable/disable
2009*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2010*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2011*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2012*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_IsStart(MS_U32 u32DmxId, MS_BOOL* pbEnable);
2013*53ee8cc1Swenshuai.xi 
2014*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
2015*53ee8cc1Swenshuai.xi /// @brief Copy section data from section buffer to user-assigned buffer
2016*53ee8cc1Swenshuai.xi /// @param   u32DmxId               \b IN:  demultiplexer filter ID
2017*53ee8cc1Swenshuai.xi /// @param   pu8Buf                 \b OUT: address of the user-assigned destination buffer
2018*53ee8cc1Swenshuai.xi /// @param   u32BufSize             \b IN:  size of the user-assigned destination buffer
2019*53ee8cc1Swenshuai.xi /// @param   pu32ActualSize         \b OUT: actual copied data size
2020*53ee8cc1Swenshuai.xi /// @param   pu32RmnSize            \b OUT: section buffer remainning data size
2021*53ee8cc1Swenshuai.xi /// @param   pfCheckCB              \b IN:  callback function to check data correctness (NOTE: callback function must return to avoid blocking)
2022*53ee8cc1Swenshuai.xi /// @pre The filter type of the filter corresponding to \b u32DmxId shall be one of \ref DMX_FILTER_TYPE_SECTION, \ref DMX_FILTER_TYPE_PES, \ref DMX_FILTER_TYPE_TELETEXT or \ref DMX_FILTER_TYPE_PACKET
2023*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2024*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2025*53ee8cc1Swenshuai.xi /// @note If the filter type of the filter corresponding to \b u32DmxId is equal to \ref DMX_FILTER_TYPE_SECTION :
2026*53ee8cc1Swenshuai.xi /// - If the data size in the section buffer is smaller than a complete section data length, then this function will return \ref DMX_FILTER_STATUS_ERROR. \n
2027*53ee8cc1Swenshuai.xi /// - If \b u32BufSize is smaller than a complete section data length, then this function will print error message and remove a complete section data from the section buffer, without any copy operation.\n
2028*53ee8cc1Swenshuai.xi /// - If the data size in the section buffer and \b u32BufSize are both larger than a complete section data length, then this function will copy a complete section data from the section buffer to \b pu8Buf. \n
2029*53ee8cc1Swenshuai.xi /// @note If the filter type is equal to \ref DMX_FILTER_TYPE_SECTION, \ref DMX_FILTER_TYPE_PES, \ref DMX_FILTER_TYPE_TELETEXT or \ref DMX_FILTER_TYPE_PACKET :
2030*53ee8cc1Swenshuai.xi /// - If \b u32BufSize is larger than all data in the section buffer, the function will copy all data in the section buffer to \b pu8Buf.\n
2031*53ee8cc1Swenshuai.xi /// - If \b u32BufSize is smaller than all data in section buffer, the function will copy \b u32BufSize bytes to \b pu8Buf.
2032*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
2033*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_CopyData(MS_U32 u32DmxId, MS_U8* pu8Buf, MS_U32 u32BufSize, MS_U32* pu32ActualSize, MS_U32* pu32RmnSize, DMX_CheckCb pfCheckCB);
2034*53ee8cc1Swenshuai.xi 
2035*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
2036*53ee8cc1Swenshuai.xi /// Ask demuxer to process section/pvr data for Non-OS driver.
2037*53ee8cc1Swenshuai.xi /// @ingroup TSP_Filter
2038*53ee8cc1Swenshuai.xi /// @param  u32DmxId  \b IN: ID of the filter to be processed, or 0xFFFFFFFF for all filters
2039*53ee8cc1Swenshuai.xi /// @param  pEvent    \b IN: Pointer to DMX event.
2040*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2041*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2042*53ee8cc1Swenshuai.xi /// @note Calling this function in OS environment causes nothing
2043*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
2044*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Proc(MS_U32 u32DmxId, DMX_EVENT* pEvent);
2045*53ee8cc1Swenshuai.xi 
2046*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
2047*53ee8cc1Swenshuai.xi /// Change DMX filter source type.
2048*53ee8cc1Swenshuai.xi /// @ingroup TSP_Filter
2049*53ee8cc1Swenshuai.xi /// @param  u32DmxId             \b IN: DMX filter ID
2050*53ee8cc1Swenshuai.xi /// @param  DmxFltSrcType        \b IN: DMX filter Source Type and filter source id
2051*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2052*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2053*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
2054*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Change_FilterSource(MS_U32 u32DmxId, DMX_FILTER_TYPE DmxFltSrcType);
2055*53ee8cc1Swenshuai.xi 
2056*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
2057*53ee8cc1Swenshuai.xi ///MApi_DMX_FilterFlowSwitch : Switch filter source from one channel to another.
2058*53ee8cc1Swenshuai.xi /// @ingroup TSP_Filter
2059*53ee8cc1Swenshuai.xi /// @param  TgtFlow        \b IN: chagne to this path setting
2060*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2061*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2062*53ee8cc1Swenshuai.xi /// @note TSP 1.0:
2063*53ee8cc1Swenshuai.xi /// @note DMX_FILTER_SOURCE_TYPE_LIVE
2064*53ee8cc1Swenshuai.xi /// @note DMX_FILTER_SOURCE_TYPE_TS1
2065*53ee8cc1Swenshuai.xi /// @note TSP 2.0:
2066*53ee8cc1Swenshuai.xi /// @note DMX_FILTER_SOURCE_TYPE_PLAYBACK
2067*53ee8cc1Swenshuai.xi /// @note DMX_FILTER_SOURCE_TYPE_PVR0
2068*53ee8cc1Swenshuai.xi /// @note DMX_FILTER_SOURCE_TYPE_PVR1
2069*53ee8cc1Swenshuai.xi /// @note TSP 4.0:
2070*53ee8cc1Swenshuai.xi /// @note DMX_FILTER_SOURCE_TYPE_LIVE
2071*53ee8cc1Swenshuai.xi /// @note DMX_FILTER_SOURCE_TYPE_FILE
2072*53ee8cc1Swenshuai.xi /// @note DMX_FILTER_SOURCE_TYPE_TS1
2073*53ee8cc1Swenshuai.xi /// @note DMX_FILTER_SOURCE_TYPE_TS2
2074*53ee8cc1Swenshuai.xi /// @note DMX_FILTER_SOURCE_TYPE_TS3
2075*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
2076*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_LiveSrcSwitch(DMX_FILTER_TYPE TgtFlow);
2077*53ee8cc1Swenshuai.xi 
2078*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
2079*53ee8cc1Swenshuai.xi /// @brief Get demux filter owner
2080*53ee8cc1Swenshuai.xi /// @param  u32DmxId            \b IN: demux ID
2081*53ee8cc1Swenshuai.xi /// @param  pbOwner             \b IN: pointer to store return value of owner flag
2082*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS
2083*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
2084*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_GetOwner(MS_U32 u32DmxId, MS_BOOL* pbOwner); //OBSOLETE
2085*53ee8cc1Swenshuai.xi 
2086*53ee8cc1Swenshuai.xi //-----------------
2087*53ee8cc1Swenshuai.xi // TSP_SCMB
2088*53ee8cc1Swenshuai.xi //-----------------
2089*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2090*53ee8cc1Swenshuai.xi /// Get PID filter scramble status.
2091*53ee8cc1Swenshuai.xi /// @ingroup TSP_SCMB
2092*53ee8cc1Swenshuai.xi /// @param  FltSrc                 \b IN    : Filter source
2093*53ee8cc1Swenshuai.xi /// @param  u32FltGroupId          \b IN    : Pid filter group id, every 32 filter for 1 group. 0: filter 0~31, 1: 32~63, 2: 64~95, 3: 96~127
2094*53ee8cc1Swenshuai.xi /// @param  PidFltId               \b IN    : Pid filter id for getting. If 0xFFFFFFFF, means getting the status of all filters of the same group
2095*53ee8cc1Swenshuai.xi /// @param  pu32ScmbSts            \b OUT : The scrmabling status of pid filter.
2096*53ee8cc1Swenshuai.xi /// @return TSP_Result
2097*53ee8cc1Swenshuai.xi /// @note pu32ScmbSts: If getting all group status, every bit means one status of every filter.
2098*53ee8cc1Swenshuai.xi /// @note If only checking one filter,  1 means scrambled status and 0 means non-scrambled status.
2099*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2100*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Get_FltScmbSts(DMX_FILTER_TYPE FltSrc, MS_U32 u32FltGroupId, MS_U32 PidFltId, MS_U32 *pu32ScmbSts);
2101*53ee8cc1Swenshuai.xi 
2102*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2103*53ee8cc1Swenshuai.xi /// Get the PES scrambling control status.
2104*53ee8cc1Swenshuai.xi /// @ingroup TSP_SCMB
2105*53ee8cc1Swenshuai.xi /// @param u32DmxId       \b IN: the demux filer Id
2106*53ee8cc1Swenshuai.xi /// @param pu8scmb        \b OUT: the PES scrambling status. bit 0~ bit3, Every bit indicates one status of one packet. bit4 ~ bit7, packet count
2107*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2108*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2109*53ee8cc1Swenshuai.xi /// @note Must open and start filter with DMX_FILTER_TYPE_PACKET type and DMX_SECT_MODE_PESSCMCHK mode
2110*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2111*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Get_PesScmbSts(MS_U32 u32DmxId, MS_U8* pu8scmb);
2112*53ee8cc1Swenshuai.xi 
2113*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2114*53ee8cc1Swenshuai.xi /// Get the TS scrambling control status.
2115*53ee8cc1Swenshuai.xi /// @ingroup TSP_SCMB
2116*53ee8cc1Swenshuai.xi /// @param u32DmxId        \b IN: the demux filer Id
2117*53ee8cc1Swenshuai.xi /// @param pu8ScmSts       \b OUT: TS scrambling status. bit 0~ bit3, Every bit indicates one status of one packet. bit4 ~ bit7, packet count
2118*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2119*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2120*53ee8cc1Swenshuai.xi /// @note Must open and start filter with DMX_FILTER_TYPE_PACKET type and DMX_SECT_MODE_PESSCMCHK mode
2121*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2122*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Get_TsScmbSts(MS_U32 u32DmxId, MS_U8* pu8ScmSts);
2123*53ee8cc1Swenshuai.xi 
2124*53ee8cc1Swenshuai.xi //-----------------
2125*53ee8cc1Swenshuai.xi // TSP_STB
2126*53ee8cc1Swenshuai.xi //-----------------
2127*53ee8cc1Swenshuai.xi // ---------------- [NOTE] API for TSP Ver2.0 HW architecture.-------------
2128*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2129*53ee8cc1Swenshuai.xi /// Open a demux filter and attach to a existed filter and buffer
2130*53ee8cc1Swenshuai.xi /// @ingroup TSP_STB
2131*53ee8cc1Swenshuai.xi /// @param DmxFltType         \b IN: the filter information to allocate
2132*53ee8cc1Swenshuai.xi /// @param pu8DmxId           \b OUT: the available demux filer Id
2133*53ee8cc1Swenshuai.xi /// @param u8TargetDmxId      \b IN: the target demux filer Id
2134*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2135*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2136*53ee8cc1Swenshuai.xi /// @note Only use on TSP 2.0 (STB)
2137*53ee8cc1Swenshuai.xi /// @note API for U4 TSP N filter to 1 Buffer HW architecture.
2138*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2139*53ee8cc1Swenshuai.xi  DMX_FILTER_STATUS MApi_DMX_Open_MultiFlt( DMX_FILTER_TYPE DmxFltType , MS_U8* pu8DmxId, MS_U8 u8TargetDmxId);
2140*53ee8cc1Swenshuai.xi 
2141*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2142*53ee8cc1Swenshuai.xi /// Enable drop section filter packet.
2143*53ee8cc1Swenshuai.xi /// @ingroup TSP_STB
2144*53ee8cc1Swenshuai.xi /// @param bSet          \b IN: TRUE: enable, FALSE: disable
2145*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2146*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2147*53ee8cc1Swenshuai.xi /// @note Only use on TSP 2.0 (STB)
2148*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2149*53ee8cc1Swenshuai.xi  DMX_FILTER_STATUS MApi_DMX_Drop_Enable(MS_BOOL bSet);
2150*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------
2151*53ee8cc1Swenshuai.xi 
2152*53ee8cc1Swenshuai.xi //-----------------
2153*53ee8cc1Swenshuai.xi // TSP_SecFilter
2154*53ee8cc1Swenshuai.xi //-----------------
2155*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2156*53ee8cc1Swenshuai.xi /// Reset demux filer buffer.
2157*53ee8cc1Swenshuai.xi /// @ingroup TSP_SecFilter
2158*53ee8cc1Swenshuai.xi /// @param u32DmxId        \b IN: the target demux filer index
2159*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2160*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2161*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2162*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_SectReset(MS_U32 u32DmxId);
2163*53ee8cc1Swenshuai.xi 
2164*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2165*53ee8cc1Swenshuai.xi /// Set the read pointer of demux filer buffer.
2166*53ee8cc1Swenshuai.xi /// @ingroup TSP_SecFilter
2167*53ee8cc1Swenshuai.xi /// @param u32DmxId          \b IN: the target demux filer index
2168*53ee8cc1Swenshuai.xi /// @param Read              \b IN: the read pointer to be set
2169*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2170*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2171*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2172*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_SectReadSet(MS_U32 u32DmxId, MS_PHY Read);
2173*53ee8cc1Swenshuai.xi 
2174*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2175*53ee8cc1Swenshuai.xi /// Get the read pointer of demux filer buffer.
2176*53ee8cc1Swenshuai.xi /// @ingroup TSP_SecFilter
2177*53ee8cc1Swenshuai.xi /// @param u32DmxId        \b IN: the target demux filer index
2178*53ee8cc1Swenshuai.xi /// @param pRead           \b OUT: the pointer to store the obtained read pointer
2179*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2180*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2181*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2182*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_SectReadGet(MS_U32 u32DmxId, MS_PHY* pRead);
2183*53ee8cc1Swenshuai.xi 
2184*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2185*53ee8cc1Swenshuai.xi /// Get the write pointer of demux filer buffer.
2186*53ee8cc1Swenshuai.xi /// @ingroup TSP_SecFilter
2187*53ee8cc1Swenshuai.xi /// @param u32DmxId        \b IN: the target demux filer index
2188*53ee8cc1Swenshuai.xi /// @param pWrite          \b OUT: the pointer to store the obtained write pointer
2189*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2190*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2191*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2192*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_SectWriteGet(MS_U32 u32DmxId, MS_PHY* pWrite);
2193*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2194*53ee8cc1Swenshuai.xi /// Get the start pointer of demux filer buffer.
2195*53ee8cc1Swenshuai.xi /// @ingroup TSP_SecFilter
2196*53ee8cc1Swenshuai.xi /// @param u32DmxId        \b IN: the target demux filer index
2197*53ee8cc1Swenshuai.xi /// @param pStart          \b OUT: the pointer to store the obtained start pointer
2198*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2199*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2200*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2201*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_SectStartGet(MS_U32 u32DmxId, MS_PHY* pStart);
2202*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2203*53ee8cc1Swenshuai.xi /// Get the end pointer of demux filer buffer.
2204*53ee8cc1Swenshuai.xi /// @ingroup TSP_SecFilter
2205*53ee8cc1Swenshuai.xi /// @param u32DmxId        \b IN: the target demux filer index
2206*53ee8cc1Swenshuai.xi /// @param pEnd            \b OUT: the pointer to store the obtained end pointer
2207*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2208*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2209*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2210*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_SectEndGet(MS_U32 u32DmxId, MS_PHY* pEnd);
2211*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2212*53ee8cc1Swenshuai.xi /// Set demux filer match patterns.
2213*53ee8cc1Swenshuai.xi /// @ingroup TSP_SecFilter
2214*53ee8cc1Swenshuai.xi /// @param u32DmxId         \b IN: the target demux filer index
2215*53ee8cc1Swenshuai.xi /// @param pPattern         \b IN: the match patterns
2216*53ee8cc1Swenshuai.xi /// @param pMask            \b IN: the bit mask for match patterns
2217*53ee8cc1Swenshuai.xi /// @param pu8NotMask       \b IN: the bit mask for negative match patterns
2218*53ee8cc1Swenshuai.xi /// @param MatchSize        \b IN: the size in bytes for match patterns.
2219*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2220*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2221*53ee8cc1Swenshuai.xi /// @note The match pattern size is 16 bytes
2222*53ee8cc1Swenshuai.xi /// @note       match mask      -- must set 1 to be compare (customer request)
2223*53ee8cc1Swenshuai.xi /// @note       not match mask -- must set 1 to compare
2224*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2225*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_SectPatternSet(MS_U32 u32DmxId, MS_U8* pPattern, MS_U8* pMask, MS_U8 *pu8NotMask, MS_U32 MatchSize);
2226*53ee8cc1Swenshuai.xi 
2227*53ee8cc1Swenshuai.xi //-----------------
2228*53ee8cc1Swenshuai.xi // TSP_TTX
2229*53ee8cc1Swenshuai.xi //-----------------
2230*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2231*53ee8cc1Swenshuai.xi /// Get Teltext section buffer write address.
2232*53ee8cc1Swenshuai.xi /// @ingroup TSP_TTX
2233*53ee8cc1Swenshuai.xi /// @param u32DmxId          \b IN: the target demux filer index
2234*53ee8cc1Swenshuai.xi /// @param pWrite            \b OUT: the pointer to store the obtained write pointer
2235*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2236*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2237*53ee8cc1Swenshuai.xi /// @note Special case for TTX due to it can't use HW lock to do indirect read/write. (co-processer)
2238*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2239*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_TTX_WriteGet(MS_U32 u32DmxId, MS_PHY* pWrite);
2240*53ee8cc1Swenshuai.xi 
2241*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2242*53ee8cc1Swenshuai.xi /// Check can access TSP or not due to different CPU co-process. (HK and AEON)
2243*53ee8cc1Swenshuai.xi /// @ingroup TSP_TTX
2244*53ee8cc1Swenshuai.xi /// @param u32Try        \b IN: TRUE: check, FALSE: not check
2245*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2246*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2247*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2248*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_GetAccess(MS_U32 u32Try); //OBSOLETE
2249*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2250*53ee8cc1Swenshuai.xi /// Unlock HW semaphore.
2251*53ee8cc1Swenshuai.xi /// @ingroup TSP_TTX
2252*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2253*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2254*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2255*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_ReleaseAccess(void); //OBSOLETE
2256*53ee8cc1Swenshuai.xi 
2257*53ee8cc1Swenshuai.xi //-----------------
2258*53ee8cc1Swenshuai.xi // TSP_FIFO
2259*53ee8cc1Swenshuai.xi //-----------------
2260*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
2261*53ee8cc1Swenshuai.xi /// Reset AVFIFO.
2262*53ee8cc1Swenshuai.xi /// @ingroup TSP_FIFO
2263*53ee8cc1Swenshuai.xi /// @param  DmxFltType       \b IN: demux type
2264*53ee8cc1Swenshuai.xi /// @param  bFlush           \b IN: section buffer size
2265*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2266*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2267*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
2268*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_AVFifo_Reset(DMX_FILTER_TYPE DmxFltType, MS_BOOL bFlush);
2269*53ee8cc1Swenshuai.xi 
2270*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
2271*53ee8cc1Swenshuai.xi /// Get AVFIFO status (Level).
2272*53ee8cc1Swenshuai.xi /// @ingroup TSP_FIFO
2273*53ee8cc1Swenshuai.xi /// @param  DmxFltType       \b IN: demux type
2274*53ee8cc1Swenshuai.xi /// @param  u32FifoLevel     \b OUT: fifo level
2275*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2276*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2277*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
2278*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_AVFifo_Status(DMX_FILTER_TYPE DmxFltType, DMX_FIFO_STATUS* u32FifoLevel);
2279*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
2280*53ee8cc1Swenshuai.xi /// Enable remove duplicate A/V packets.
2281*53ee8cc1Swenshuai.xi /// @ingroup DMX_ToBeRemove
2282*53ee8cc1Swenshuai.xi /// @param  bEnable          \b IN: Enable or Disable
2283*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2284*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2285*53ee8cc1Swenshuai.xi /// @note It will apply to all FIFO.
2286*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
2287*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_RemoveDupAVPkt(MS_BOOL bEnable);
2288*53ee8cc1Swenshuai.xi 
2289*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
2290*53ee8cc1Swenshuai.xi /// Enable remove duplicate A/V Fifo packets.
2291*53ee8cc1Swenshuai.xi /// @ingroup TSP_FIFO
2292*53ee8cc1Swenshuai.xi /// @param  DmxFltType    \b IN: demux type
2293*53ee8cc1Swenshuai.xi /// @param  bEnable       \b IN: Enable or Disable
2294*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2295*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2296*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
2297*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_RemoveDupAVFifoPkt(DMX_FILTER_TYPE DmxFltType, MS_BOOL bEnable);
2298*53ee8cc1Swenshuai.xi 
2299*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
2300*53ee8cc1Swenshuai.xi /// Enable/Disable Audio AB S
2301*53ee8cc1Swenshuai.xi /// @ingroup TSP_FIFO
2302*53ee8cc1Swenshuai.xi /// @param bEnable           \b IN: Enable/Disable
2303*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2304*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2305*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
2306*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_AU_BD_Mode_Enable(MS_BOOL bEnable);
2307*53ee8cc1Swenshuai.xi 
2308*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
2309*53ee8cc1Swenshuai.xi /// Enable/Disable AV FIFO block mechanism.
2310*53ee8cc1Swenshuai.xi /// @ingroup TSP_FIFO
2311*53ee8cc1Swenshuai.xi /// @param  DmxFltType       \b IN: demux type
2312*53ee8cc1Swenshuai.xi /// @param  bEnable            \b IN: TRUR: Enable block mechanism, FALSE: Disable block mechanism
2313*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2314*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2315*53ee8cc1Swenshuai.xi /// @note Not supprot for all chips
2316*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
2317*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_AVFifo_BlockEnable(DMX_FILTER_TYPE DmxFltType, MS_BOOL bEnable);
2318*53ee8cc1Swenshuai.xi 
2319*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
2320*53ee8cc1Swenshuai.xi /// Bypass TS Header to AV Fifo
2321*53ee8cc1Swenshuai.xi /// @param  DmxFltType       \b IN: demux type
2322*53ee8cc1Swenshuai.xi /// @param  bEnable            \b IN: TRUR: Enable TS header bypass, FALSE: Disable TS header bypass
2323*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2324*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2325*53ee8cc1Swenshuai.xi /// @note Not supprot for all chips
2326*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
2327*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS SYMBOL_WEAK MApi_DMX_AVFifo_BypassTsHD(DMX_FILTER_TYPE DmxFltType, MS_BOOL bEnable);
2328*53ee8cc1Swenshuai.xi 
2329*53ee8cc1Swenshuai.xi // PVR Record API (Old)
2330*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2331*53ee8cc1Swenshuai.xi /// Set up the recording parameters.
2332*53ee8cc1Swenshuai.xi /// @ingroup DMX_ToBeRemove
2333*53ee8cc1Swenshuai.xi /// @param pPvrInfo      \b IN: the recording parameters
2334*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2335*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2336*53ee8cc1Swenshuai.xi /// @note Keep the function which have engine parameter.
2337*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2338*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Pvr_Open(DMX_Pvr_info* pPvrInfo);
2339*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2340*53ee8cc1Swenshuai.xi /// Clear the recording parameters.
2341*53ee8cc1Swenshuai.xi /// @ingroup DMX_ToBeRemove
2342*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2343*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2344*53ee8cc1Swenshuai.xi /// @note Keep the function which have engine parameter.
2345*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2346*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Pvr_Close(void);
2347*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2348*53ee8cc1Swenshuai.xi /// Pause/Resume PVR engine.
2349*53ee8cc1Swenshuai.xi /// @ingroup DMX_ToBeRemove
2350*53ee8cc1Swenshuai.xi /// @param bPause          \b IN: TRUE: pause, FALSE: resume
2351*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2352*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2353*53ee8cc1Swenshuai.xi /// @note Keep the function which have engine parameter.
2354*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2355*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Pvr_Pause(MS_BOOL bPause);
2356*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2357*53ee8cc1Swenshuai.xi /// Set the PID to be recorded.
2358*53ee8cc1Swenshuai.xi /// @ingroup DMX_ToBeRemove
2359*53ee8cc1Swenshuai.xi /// @param Pid                 \b IN: The target PID to be recorded
2360*53ee8cc1Swenshuai.xi /// @param pu8DmxId            \b OUT: The demux filter Id for this recorded PID
2361*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2362*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2363*53ee8cc1Swenshuai.xi /// @note Keep the function which have engine parameter.
2364*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2365*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Pvr_Pid_Open(MS_U32 Pid, MS_U8* pu8DmxId);
2366*53ee8cc1Swenshuai.xi 
2367*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2368*53ee8cc1Swenshuai.xi /// Free the PID to be recorded.
2369*53ee8cc1Swenshuai.xi /// @ingroup DMX_ToBeRemove
2370*53ee8cc1Swenshuai.xi /// @param u8DmxId        \b IN: The demux filter Id from MApi_DMX_Pvr_Pid_Open
2371*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2372*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2373*53ee8cc1Swenshuai.xi /// @note Keep the function which have engine parameter.
2374*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2375*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Pvr_Pid_Close(MS_U8 u8DmxId);
2376*53ee8cc1Swenshuai.xi 
2377*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2378*53ee8cc1Swenshuai.xi /// Start to record.
2379*53ee8cc1Swenshuai.xi /// @ingroup DMX_ToBeRemove
2380*53ee8cc1Swenshuai.xi /// @param bPvrAll           \b IN: TRUE to record original bit stream, FALSE to recording the PIDs of interests
2381*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2382*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2383*53ee8cc1Swenshuai.xi /// @note Keep the function which have engine parameter.
2384*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2385*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Pvr_Start(MS_BOOL bPvrAll);
2386*53ee8cc1Swenshuai.xi 
2387*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2388*53ee8cc1Swenshuai.xi /// Stop recording.
2389*53ee8cc1Swenshuai.xi /// @ingroup DMX_ToBeRemove
2390*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2391*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2392*53ee8cc1Swenshuai.xi /// @note Keep the function which have engine parameter.
2393*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2394*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Pvr_Stop(void);
2395*53ee8cc1Swenshuai.xi 
2396*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2397*53ee8cc1Swenshuai.xi /// Get write pointer of recording buffer.
2398*53ee8cc1Swenshuai.xi /// @ingroup DMX_ToBeRemove
2399*53ee8cc1Swenshuai.xi /// @param pphyWrite       \b OUT: the pointer to store the obtained write pointer
2400*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2401*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2402*53ee8cc1Swenshuai.xi /// @note Keep the function which have engine parameter.
2403*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2404*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Pvr_WriteGet(MS_PHY* pphyWrite);
2405*53ee8cc1Swenshuai.xi 
2406*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2407*53ee8cc1Swenshuai.xi /// Set recording packet mode.
2408*53ee8cc1Swenshuai.xi /// @ingroup DMX_ToBeRemove
2409*53ee8cc1Swenshuai.xi /// @param bSet               \b IN: TRUE: enable 192 mode, FALSE: disable 192 mode
2410*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2411*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2412*53ee8cc1Swenshuai.xi /// @note Keep the function which have engine parameter.
2413*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2414*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_PVR_SetPacketMode(MS_BOOL bSet);
2415*53ee8cc1Swenshuai.xi 
2416*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2417*53ee8cc1Swenshuai.xi /// Set recording starting time stamp.
2418*53ee8cc1Swenshuai.xi /// @ingroup DMX_ToBeRemove
2419*53ee8cc1Swenshuai.xi /// @param u32Stamp       \b IN: Record time-stamp (LPCR)
2420*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2421*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2422*53ee8cc1Swenshuai.xi /// @note Keep the function which have engine parameter.
2423*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2424*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Pvr_SetRecordStamp(MS_U32 u32Stamp);
2425*53ee8cc1Swenshuai.xi 
2426*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2427*53ee8cc1Swenshuai.xi /// Get current recording time stamp.
2428*53ee8cc1Swenshuai.xi /// @ingroup DMX_ToBeRemove
2429*53ee8cc1Swenshuai.xi /// @param pu32Stamp     \b OUT: the pointer to store the obtained record time-stamp (LPCR)
2430*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2431*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2432*53ee8cc1Swenshuai.xi /// @note Keep the function which have engine parameter.
2433*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2434*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Pvr_GetRecordStamp(MS_U32* pu32Stamp);
2435*53ee8cc1Swenshuai.xi 
2436*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2437*53ee8cc1Swenshuai.xi /// Enable MOBF encrypt.
2438*53ee8cc1Swenshuai.xi /// @ingroup DMX_ToBeRemove
2439*53ee8cc1Swenshuai.xi /// @param bEnable          \b IN: PVR MOBF Enable/Disable
2440*53ee8cc1Swenshuai.xi /// @param u32key0          \b IN: MOBF encrypt key0
2441*53ee8cc1Swenshuai.xi /// @param u32key1          \b IN: MOBF encrypt key1
2442*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2443*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2444*53ee8cc1Swenshuai.xi /// @note Keep the function which have engine parameter.
2445*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2446*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Pvr_MOBF_Enable(MS_BOOL bEnable, MS_U32 u32key0, MS_U32 u32key1);
2447*53ee8cc1Swenshuai.xi 
2448*53ee8cc1Swenshuai.xi //PVR Playback API (Old)
2449*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2450*53ee8cc1Swenshuai.xi /// Set playback time stamp.
2451*53ee8cc1Swenshuai.xi /// @ingroup TSP_FILEIN_PVR
2452*53ee8cc1Swenshuai.xi /// @param u32Stamp        \b IN: time stamp
2453*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2454*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2455*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2456*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Pvr_SetPlaybackStamp(MS_U32 u32Stamp);
2457*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2458*53ee8cc1Swenshuai.xi /// Get playback time stamp
2459*53ee8cc1Swenshuai.xi /// @ingroup TSP_FILEIN_PVR
2460*53ee8cc1Swenshuai.xi /// @param pu32Stamp        \b OUT: time stamp
2461*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2462*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2463*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2464*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Pvr_GetPlaybackStamp(MS_U32* pu32Stamp);
2465*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2466*53ee8cc1Swenshuai.xi /// Enable filein time stamp. (filein use 192 mode)
2467*53ee8cc1Swenshuai.xi /// @ingroup DMX_ToBeModified_TSP
2468*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2469*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2470*53ee8cc1Swenshuai.xi /// @note:  Merge with MApi_DMX_Pvr_TimeStampDisable
2471*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2472*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Pvr_TimeStampEnable(void);
2473*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2474*53ee8cc1Swenshuai.xi /// Disable filein time stamp. (filein not use 192 mode)
2475*53ee8cc1Swenshuai.xi /// @ingroup DMX_ToBeModified_TSP
2476*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2477*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2478*53ee8cc1Swenshuai.xi /// @note:  Merge with MApi_DMX_Pvr_TimeStampEnable
2479*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2480*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Pvr_TimeStampDisable(void);
2481*53ee8cc1Swenshuai.xi 
2482*53ee8cc1Swenshuai.xi 
2483*53ee8cc1Swenshuai.xi //-----------------
2484*53ee8cc1Swenshuai.xi // TSP_PVR_General
2485*53ee8cc1Swenshuai.xi //-----------------
2486*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2487*53ee8cc1Swenshuai.xi /// Set up the recording parameters.
2488*53ee8cc1Swenshuai.xi /// @ingroup TSP_PVR_General
2489*53ee8cc1Swenshuai.xi /// @param Eng               \b IN: PVR engine ID
2490*53ee8cc1Swenshuai.xi /// @param pPvrInfo          \b IN: the recording parameters
2491*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2492*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2493*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2494*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Pvr_Eng_Open(DMX_PVR_ENG Eng ,DMX_Pvr_info* pPvrInfo);
2495*53ee8cc1Swenshuai.xi 
2496*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2497*53ee8cc1Swenshuai.xi /// Clear the recording parameters.
2498*53ee8cc1Swenshuai.xi /// @ingroup TSP_PVR_General
2499*53ee8cc1Swenshuai.xi /// @param Eng               \b IN: PVR engine ID
2500*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2501*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2502*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2503*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Pvr_Eng_Close(DMX_PVR_ENG Eng );
2504*53ee8cc1Swenshuai.xi 
2505*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2506*53ee8cc1Swenshuai.xi /// Pause/Resume PVR engine.
2507*53ee8cc1Swenshuai.xi /// @ingroup TSP_PVR_General
2508*53ee8cc1Swenshuai.xi /// @param Eng               \b IN: PVR engine ID
2509*53ee8cc1Swenshuai.xi /// @param bPause            \b IN: TRUE: pause, FALSE: resume
2510*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2511*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2512*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2513*53ee8cc1Swenshuai.xi  DMX_FILTER_STATUS MApi_DMX_Pvr_Eng_Pause(DMX_PVR_ENG Eng ,MS_BOOL bPause);
2514*53ee8cc1Swenshuai.xi 
2515*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2516*53ee8cc1Swenshuai.xi /// Set the PID to be recorded.
2517*53ee8cc1Swenshuai.xi /// @ingroup TSP_PVR_General
2518*53ee8cc1Swenshuai.xi /// @param Eng                 \b IN: PVR engine ID
2519*53ee8cc1Swenshuai.xi /// @param Pid                 \b IN: The target PID to be recorded
2520*53ee8cc1Swenshuai.xi /// @param pu8DmxId            \b OUT: The demux filter Id for this recorded PID
2521*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2522*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2523*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2524*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Pvr_Eng_Pid_Open(DMX_PVR_ENG Eng ,MS_U32 Pid, MS_U8* pu8DmxId);
2525*53ee8cc1Swenshuai.xi 
2526*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2527*53ee8cc1Swenshuai.xi /// Free the PID to be recorded.
2528*53ee8cc1Swenshuai.xi /// @ingroup TSP_PVR_General
2529*53ee8cc1Swenshuai.xi /// @param Eng                \b IN: PVR engine ID
2530*53ee8cc1Swenshuai.xi /// @param u8DmxId            \b IN: The demux filter Id from MApi_DMX_Pvr_Pid_Open
2531*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2532*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2533*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2534*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Pvr_Eng_Pid_Close(DMX_PVR_ENG Eng ,MS_U8 u8DmxId);
2535*53ee8cc1Swenshuai.xi 
2536*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2537*53ee8cc1Swenshuai.xi /// Start to record.
2538*53ee8cc1Swenshuai.xi /// @ingroup TSP_PVR_General
2539*53ee8cc1Swenshuai.xi /// @param Eng                \b IN: PVR engine ID
2540*53ee8cc1Swenshuai.xi /// @param bPvrAll            \b IN: TRUE to record original bit stream, FALSE to recording the PIDs of interests
2541*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2542*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2543*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2544*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Pvr_Eng_Start(DMX_PVR_ENG Eng ,MS_BOOL bPvrAll);
2545*53ee8cc1Swenshuai.xi 
2546*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2547*53ee8cc1Swenshuai.xi /// Stop recording.
2548*53ee8cc1Swenshuai.xi /// @ingroup TSP_PVR_General
2549*53ee8cc1Swenshuai.xi /// @param Eng                \b IN: PVR engine ID
2550*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2551*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2552*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2553*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Pvr_Eng_Stop(DMX_PVR_ENG Eng );
2554*53ee8cc1Swenshuai.xi 
2555*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2556*53ee8cc1Swenshuai.xi /// Get write pointer of recording buffer.
2557*53ee8cc1Swenshuai.xi /// @ingroup TSP_PVR_General
2558*53ee8cc1Swenshuai.xi /// @param Eng                \b IN: PVR engine ID
2559*53ee8cc1Swenshuai.xi /// @param pphyWrite       \b OUT: the pointer to store the obtained write pointer
2560*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2561*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2562*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2563*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Pvr_Eng_WriteGet(DMX_PVR_ENG Eng ,MS_PHY* pphyWrite);
2564*53ee8cc1Swenshuai.xi 
2565*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2566*53ee8cc1Swenshuai.xi /// Set recording packet mode.
2567*53ee8cc1Swenshuai.xi /// @ingroup TSP_PVR_General
2568*53ee8cc1Swenshuai.xi /// @param Eng                \b IN: PVR engine ID
2569*53ee8cc1Swenshuai.xi /// @param bSet               \b IN: TRUE: enable 192 mode, FALSE: disable 192 mode
2570*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2571*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2572*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2573*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Pvr_Eng_SetPacketMode(DMX_PVR_ENG Eng ,MS_BOOL bSet);
2574*53ee8cc1Swenshuai.xi 
2575*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2576*53ee8cc1Swenshuai.xi /// Set recording packet mode(extension ver.).
2577*53ee8cc1Swenshuai.xi /// @ingroup TSP_PVR_General
2578*53ee8cc1Swenshuai.xi /// @param Eng                \b IN: PVR engine ID
2579*53ee8cc1Swenshuai.xi /// @param ePvrPktMode        \b IN: DMX record packet type
2580*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2581*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2582*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2583*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS SYMBOL_WEAK MApi_DMX_Pvr_Eng_SetPacketMode_Ex(DMX_PVR_ENG Eng, DMX_Pvr_PacketMode ePvrPktMode);
2584*53ee8cc1Swenshuai.xi 
2585*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2586*53ee8cc1Swenshuai.xi /// Set recording starting time stamp.
2587*53ee8cc1Swenshuai.xi /// @ingroup TSP_PVR_General
2588*53ee8cc1Swenshuai.xi /// @param Eng                \b IN: PVR engine ID
2589*53ee8cc1Swenshuai.xi /// @param u32Stamp           \b IN: Record time-stamp (LPCR)
2590*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2591*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2592*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2593*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Pvr_Eng_SetRecordStamp(DMX_PVR_ENG Eng ,MS_U32 u32Stamp);
2594*53ee8cc1Swenshuai.xi 
2595*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2596*53ee8cc1Swenshuai.xi /// Get current recording time stamp.
2597*53ee8cc1Swenshuai.xi /// @ingroup TSP_PVR_General
2598*53ee8cc1Swenshuai.xi /// @param Eng                \b IN: PVR engine ID
2599*53ee8cc1Swenshuai.xi /// @param pu32Stamp          \b OUT: the pointer to store the obtained record time-stamp (LPCR)
2600*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2601*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2602*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2603*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Pvr_Eng_GetRecordStamp(DMX_PVR_ENG Eng ,MS_U32* pu32Stamp);
2604*53ee8cc1Swenshuai.xi 
2605*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2606*53ee8cc1Swenshuai.xi /// Enable MOBF encrypt.
2607*53ee8cc1Swenshuai.xi /// @ingroup TSP_PVR_General
2608*53ee8cc1Swenshuai.xi /// @param u8Eng               \b IN: PVR engine ID
2609*53ee8cc1Swenshuai.xi /// @param bEnable             \b IN: PVR MOBF Enable/Disable
2610*53ee8cc1Swenshuai.xi /// @param u32key0             \b IN: MOBF encrypt key0
2611*53ee8cc1Swenshuai.xi /// @param u32key1             \b IN: MOBF encrypt key1
2612*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2613*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2614*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2615*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Pvr_Eng_MOBF_Enable(MS_U8 u8Eng, MS_BOOL bEnable, MS_U32 u32key0, MS_U32 u32key1);
2616*53ee8cc1Swenshuai.xi 
2617*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2618*53ee8cc1Swenshuai.xi /// Check if PVR engine is started.
2619*53ee8cc1Swenshuai.xi /// @ingroup TSP_PVR_General
2620*53ee8cc1Swenshuai.xi /// @param Eng                 \b IN: PVR engine ID
2621*53ee8cc1Swenshuai.xi /// @param pbIsStart           \b OUT: Pointer to store PVR engine starting status
2622*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2623*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2624*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2625*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Pvr_Eng_IsStart(DMX_PVR_ENG Eng, MS_BOOL *pbIsStart);
2626*53ee8cc1Swenshuai.xi 
2627*53ee8cc1Swenshuai.xi //-----------------
2628*53ee8cc1Swenshuai.xi // TSP_PVR_STB
2629*53ee8cc1Swenshuai.xi //-----------------
2630*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2631*53ee8cc1Swenshuai.xi /// Set/Get PVR PID filter PID.
2632*53ee8cc1Swenshuai.xi /// @ingroup TSP_PVR_STB
2633*53ee8cc1Swenshuai.xi /// @param Eng                 \b IN: PVR engine ID
2634*53ee8cc1Swenshuai.xi /// @param u8DmxId             \b IN: PID filter index
2635*53ee8cc1Swenshuai.xi /// @param Pid                 \b IN: PID value
2636*53ee8cc1Swenshuai.xi /// @param bSet                \b IN: TRUE: set, FALSE: get
2637*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2638*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2639*53ee8cc1Swenshuai.xi /// @note Only TSP 2.0/4.0 use this function now.
2640*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2641*53ee8cc1Swenshuai.xi  DMX_FILTER_STATUS MApi_DMX_Pvr_Eng_Pid(DMX_PVR_ENG Eng ,MS_U8 u8DmxId , MS_U32 *Pid, MS_BOOL bSet);
2642*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2643*53ee8cc1Swenshuai.xi /// Set PVR time-stamp clock.
2644*53ee8cc1Swenshuai.xi /// @ingroup TSP_PVR_General
2645*53ee8cc1Swenshuai.xi /// @param Eng                \b IN: PVR engine ID
2646*53ee8cc1Swenshuai.xi /// @param eClk               \b IN: select 90K or 27M
2647*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2648*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2649*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2650*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Pvr_Eng_SetRecordStampClk(DMX_PVR_ENG Eng, DMX_TimeStamp_Clk eClk);
2651*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2652*53ee8cc1Swenshuai.xi /// Set RASP callback engine size.
2653*53ee8cc1Swenshuai.xi /// @ingroup TSP_PVR_STB
2654*53ee8cc1Swenshuai.xi /// @param Eng                \b IN: PVR engine ID
2655*53ee8cc1Swenshuai.xi /// @param pu32CallbackSize               \b IN: select 90K or 27M
2656*53ee8cc1Swenshuai.xi /// @param bSet
2657*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2658*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2659*53ee8cc1Swenshuai.xi /// @note Only TSP 2.0 use this function now.
2660*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2661*53ee8cc1Swenshuai.xi  DMX_FILTER_STATUS MApi_DMX_Pvr_Eng_CallbackSize(DMX_PVR_ENG Eng, MS_U32* pu32CallbackSize, MS_BOOL bSet);
2662*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2663*53ee8cc1Swenshuai.xi ///Set PVR CA SPS enable mode
2664*53ee8cc1Swenshuai.xi /// @ingroup TSP_PVR_STB
2665*53ee8cc1Swenshuai.xi /// @param Eng                  \b IN: PVR Engine ID
2666*53ee8cc1Swenshuai.xi /// @param eCaMode              \b IN: CA PVR Selection, 0: from TSP, 1: from ca program0, 2: from ca program1
2667*53ee8cc1Swenshuai.xi /// @param bspsEnable           \b IN: SPS mode enabled flag
2668*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2669*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2670*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2671*53ee8cc1Swenshuai.xi  DMX_FILTER_STATUS MApi_DMX_Pvr_Eng_SetCaMode(DMX_PVR_ENG Eng, DMX_CA_PVRMODE eCaMode, MS_BOOL bspsEnable);
2672*53ee8cc1Swenshuai.xi 
2673*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2674*53ee8cc1Swenshuai.xi /// Set playback time-stamp clock.
2675*53ee8cc1Swenshuai.xi /// @ingroup TSP_FILEIN_PVR
2676*53ee8cc1Swenshuai.xi /// @param u8Eng              \b IN: PVR engine ID
2677*53ee8cc1Swenshuai.xi /// @param eClk               \b IN: select 90K or 27M
2678*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2679*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2680*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2681*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Pvr_Eng_SetPlaybackStampClk(MS_U8 u8Eng, DMX_TimeStamp_Clk eClk);
2682*53ee8cc1Swenshuai.xi 
2683*53ee8cc1Swenshuai.xi //PVR CA API (Old)
2684*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2685*53ee8cc1Swenshuai.xi /// Open PVR PID filter for recording scramble stream depended on Engine ID.
2686*53ee8cc1Swenshuai.xi /// @ingroup DMX_ToBeRemove
2687*53ee8cc1Swenshuai.xi /// @param Pid                         \b IN: PID to record
2688*53ee8cc1Swenshuai.xi /// @param pu8DmxId                    \b IN: Pointer to store PVR PID filter index
2689*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2690*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2691*53ee8cc1Swenshuai.xi /// @note Keep the function which have engine parameter.
2692*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2693*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_PvrCA_Pid_Open(MS_U32 Pid, MS_U8* pu8DmxId);
2694*53ee8cc1Swenshuai.xi 
2695*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2696*53ee8cc1Swenshuai.xi /// Close PVR PID filter depended on Engine ID.
2697*53ee8cc1Swenshuai.xi /// @ingroup DMX_ToBeRemove
2698*53ee8cc1Swenshuai.xi /// @param u8DmxId         \b IN: PID filter index to close
2699*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2700*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2701*53ee8cc1Swenshuai.xi /// @note Keep the function which have engine parameter.
2702*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2703*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_PvrCA_Pid_Close(MS_U8 u8DmxId);
2704*53ee8cc1Swenshuai.xi 
2705*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2706*53ee8cc1Swenshuai.xi /// Start to record scramble stream depend on engine id.
2707*53ee8cc1Swenshuai.xi /// @ingroup DMX_ToBeRemove
2708*53ee8cc1Swenshuai.xi /// @param bPvrAll             \b IN: If true, record all stream data; if false, record data by PIDs
2709*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2710*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2711*53ee8cc1Swenshuai.xi /// @note Keep the function which have engine parameter.
2712*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2713*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_PvrCA_Start(MS_BOOL bPvrAll);
2714*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2715*53ee8cc1Swenshuai.xi /// Stop to record scramble stream.
2716*53ee8cc1Swenshuai.xi /// @ingroup DMX_ToBeRemove
2717*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2718*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2719*53ee8cc1Swenshuai.xi /// @note Keep the function which have engine parameter.
2720*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2721*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_PvrCA_Stop(void);
2722*53ee8cc1Swenshuai.xi 
2723*53ee8cc1Swenshuai.xi //-----------------
2724*53ee8cc1Swenshuai.xi // TSP_PVR_CA
2725*53ee8cc1Swenshuai.xi //-----------------
2726*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2727*53ee8cc1Swenshuai.xi /// Open PVR PID filter for recording scramble stream depended on Engine ID.
2728*53ee8cc1Swenshuai.xi /// @ingroup TSP_PVR_CA
2729*53ee8cc1Swenshuai.xi /// @param Eng                         \b IN: PVR engine ID
2730*53ee8cc1Swenshuai.xi /// @param Pid                         \b IN: PID to record
2731*53ee8cc1Swenshuai.xi /// @param pu8DmxId                    \b IN: Pointer to store PVR PID filter index
2732*53ee8cc1Swenshuai.xi /// @param u8ShareKeyType              \b IN: PID filter share key type. 0: Not use sharekey filters.
2733*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2734*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2735*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2736*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_PvrCA_Eng_Pid_Open(DMX_PVR_ENG Eng, MS_U32 Pid, MS_U8* pu8DmxId, MS_U8 u8ShareKeyType);
2737*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2738*53ee8cc1Swenshuai.xi /// Close PVR PID filter depended on Engine ID.
2739*53ee8cc1Swenshuai.xi /// @ingroup TSP_PVR_CA
2740*53ee8cc1Swenshuai.xi /// @param Eng                 \b IN: PVR engine ID
2741*53ee8cc1Swenshuai.xi /// @param u8DmxId             \b IN: PID filter index to close
2742*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2743*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2744*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2745*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_PvrCA_Eng_Pid_Close(DMX_PVR_ENG Eng, MS_U8 u8DmxId);
2746*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2747*53ee8cc1Swenshuai.xi /// Start to record scramble stream depend on engine id.
2748*53ee8cc1Swenshuai.xi /// @ingroup TSP_PVR_CA
2749*53ee8cc1Swenshuai.xi /// @param Eng                  \b IN: PVR engine ID
2750*53ee8cc1Swenshuai.xi /// @param bPvrAll              \b IN: If true, record all stream data; if false, record data by PIDs
2751*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2752*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2753*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2754*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_PvrCA_Eng_Start(DMX_PVR_ENG Eng, MS_BOOL bPvrAll);
2755*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2756*53ee8cc1Swenshuai.xi /// Stop to record scramble stream.
2757*53ee8cc1Swenshuai.xi /// @ingroup TSP_PVR_CA
2758*53ee8cc1Swenshuai.xi /// @param Eng                  \b IN: PVR engine ID
2759*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2760*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2761*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2762*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_PvrCA_Eng_Stop(DMX_PVR_ENG Eng);
2763*53ee8cc1Swenshuai.xi //---------------------------------------------
2764*53ee8cc1Swenshuai.xi 
2765*53ee8cc1Swenshuai.xi //-----------------
2766*53ee8cc1Swenshuai.xi // TSP_FILEIN_PVR
2767*53ee8cc1Swenshuai.xi //-----------------
2768*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2769*53ee8cc1Swenshuai.xi /// Open & set pid filter for file-in PVR using.
2770*53ee8cc1Swenshuai.xi /// @ingroup TSP_FILEIN_PVR
2771*53ee8cc1Swenshuai.xi /// @param Eng                             \b IN   : PVR eigine id
2772*53ee8cc1Swenshuai.xi /// @param Pid                             \b IN   : PVR PID to record
2773*53ee8cc1Swenshuai.xi /// @param pu8DmxId                        \b OUT: Pointer to store PID filter index
2774*53ee8cc1Swenshuai.xi /// @param u8ShareKeyType                  \b IN   : The flag of sharekey filter using. if 0, not use sharekey filters
2775*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2776*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2777*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2778*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Filein_Pvr_Eng_Pid_Open(DMX_PVR_ENG Eng, MS_U32 Pid, MS_U8* pu8DmxId, MS_U8 u8ShareKeyType);
2779*53ee8cc1Swenshuai.xi 
2780*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2781*53ee8cc1Swenshuai.xi /// Close pid filter of file-in PVR.
2782*53ee8cc1Swenshuai.xi /// @ingroup TSP_FILEIN_PVR
2783*53ee8cc1Swenshuai.xi /// @param Eng                        \b IN   : PVR eigine id
2784*53ee8cc1Swenshuai.xi /// @param u8DmxId                    \b IN   : PID filter id
2785*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2786*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2787*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2788*53ee8cc1Swenshuai.xi  DMX_FILTER_STATUS MApi_DMX_Filein_Pvr_Eng_Pid_Close(DMX_PVR_ENG Eng, MS_U8 u8DmxId);
2789*53ee8cc1Swenshuai.xi 
2790*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2791*53ee8cc1Swenshuai.xi /// Start file-in PVR recording.
2792*53ee8cc1Swenshuai.xi /// @ingroup TSP_FILEIN_PVR
2793*53ee8cc1Swenshuai.xi /// @param Eng                         \b IN   : PVR eigine id
2794*53ee8cc1Swenshuai.xi /// @param bPvrAll                     \b IN   : FALSE is record PID, TRUE is record All ts data
2795*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2796*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2797*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2798*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Filein_Pvr_Eng_Start(DMX_PVR_ENG Eng, MS_BOOL bPvrAll);
2799*53ee8cc1Swenshuai.xi 
2800*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2801*53ee8cc1Swenshuai.xi /// Stop file-in PVR recording.
2802*53ee8cc1Swenshuai.xi /// @ingroup TSP_FILEIN_PVR
2803*53ee8cc1Swenshuai.xi /// @param Eng                         \b IN   : PVR eigine id
2804*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2805*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2806*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2807*53ee8cc1Swenshuai.xi  DMX_FILTER_STATUS MApi_DMX_Filein_Pvr_Eng_Stop(DMX_PVR_ENG Eng);
2808*53ee8cc1Swenshuai.xi //---------------------------------------------
2809*53ee8cc1Swenshuai.xi 
2810*53ee8cc1Swenshuai.xi 
2811*53ee8cc1Swenshuai.xi // File-in API (Old)
2812*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2813*53ee8cc1Swenshuai.xi /// Start to get bit stream from memory.
2814*53ee8cc1Swenshuai.xi /// @ingroup DMX_ToBeRemove
2815*53ee8cc1Swenshuai.xi /// @param Dst              \b IN: file in destination type
2816*53ee8cc1Swenshuai.xi /// @param pBuf             \b IN: the memory containing the bit stream
2817*53ee8cc1Swenshuai.xi /// @param u32BufSize       \b IN: the size the memory to get
2818*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2819*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2820*53ee8cc1Swenshuai.xi /// @note Keep the function which have path parameter.
2821*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2822*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Filein_Start(DMX_FILEIN_DST Dst, MS_PHY pBuf, MS_U32 u32BufSize);   // msAPI_DMX_PESPlayback/msAPI_DMX_TSPlayback will integrate into it
2823*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2824*53ee8cc1Swenshuai.xi /// Stop to get bit stream from memeory.
2825*53ee8cc1Swenshuai.xi /// @ingroup DMX_ToBeRemove
2826*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2827*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2828*53ee8cc1Swenshuai.xi /// @note Keep the function which have path parameter.
2829*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2830*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Filein_Stop(void);
2831*53ee8cc1Swenshuai.xi 
2832*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2833*53ee8cc1Swenshuai.xi /// Set up parameters for input bit stream from memory.
2834*53ee8cc1Swenshuai.xi /// @ingroup DMX_ToBeRemove
2835*53ee8cc1Swenshuai.xi /// @param pFileinInfo      \b IN: the file in parameters
2836*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2837*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2838*53ee8cc1Swenshuai.xi /// @note Keep the function which have path parameter.
2839*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2840*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Filein_Info(DMX_Filein_info *pFileinInfo);
2841*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2842*53ee8cc1Swenshuai.xi /// Pause to get bit stream by memeory.
2843*53ee8cc1Swenshuai.xi /// @ingroup DMX_ToBeRemove
2844*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2845*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2846*53ee8cc1Swenshuai.xi /// @note Keep the function which have path parameter.
2847*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2848*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Filein_Pause(void);
2849*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2850*53ee8cc1Swenshuai.xi /// Pause to get bit stream by memeory.
2851*53ee8cc1Swenshuai.xi /// @ingroup DMX_ToBeRemove
2852*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2853*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2854*53ee8cc1Swenshuai.xi /// @note Keep the function which have path parameter.
2855*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2856*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Filein_Resume(void);
2857*53ee8cc1Swenshuai.xi 
2858*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2859*53ee8cc1Swenshuai.xi /// Check if no memory transfer is under going.
2860*53ee8cc1Swenshuai.xi /// @ingroup DMX_ToBeRemove
2861*53ee8cc1Swenshuai.xi /// @return TRUE - if idle
2862*53ee8cc1Swenshuai.xi /// @return FALSE - otherwise
2863*53ee8cc1Swenshuai.xi /// @note Keep the function which have path parameter.
2864*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2865*53ee8cc1Swenshuai.xi MS_BOOL           MApi_DMX_Filein_IsIdle(void);
2866*53ee8cc1Swenshuai.xi 
2867*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2868*53ee8cc1Swenshuai.xi /// Check if memory transfer is under going.
2869*53ee8cc1Swenshuai.xi /// @ingroup DMX_ToBeRemove
2870*53ee8cc1Swenshuai.xi /// @return TRUE - if idle
2871*53ee8cc1Swenshuai.xi /// @return FALSE - otherwise
2872*53ee8cc1Swenshuai.xi /// @note Keep the function which have path parameter.
2873*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2874*53ee8cc1Swenshuai.xi MS_BOOL           MApi_DMX_Filein_IsBusy(void);
2875*53ee8cc1Swenshuai.xi 
2876*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2877*53ee8cc1Swenshuai.xi /// Check if memory transfer is paused.
2878*53ee8cc1Swenshuai.xi /// @ingroup DMX_ToBeRemove
2879*53ee8cc1Swenshuai.xi /// @return TRUE - if idle
2880*53ee8cc1Swenshuai.xi /// @return FALSE - otherwise
2881*53ee8cc1Swenshuai.xi /// @note Keep the function which have path parameter.
2882*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2883*53ee8cc1Swenshuai.xi MS_BOOL           MApi_DMX_Filein_IsPause(void);
2884*53ee8cc1Swenshuai.xi 
2885*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2886*53ee8cc1Swenshuai.xi /// Reset CMDQ.
2887*53ee8cc1Swenshuai.xi /// @ingroup DMX_ToBeRemove
2888*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2889*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2890*53ee8cc1Swenshuai.xi /// @note Keep the function which have path parameter.
2891*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2892*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Filein_CMDQ_Reset(void);
2893*53ee8cc1Swenshuai.xi 
2894*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2895*53ee8cc1Swenshuai.xi /// Get the number of CMDQ empty slot.
2896*53ee8cc1Swenshuai.xi /// @ingroup DMX_ToBeRemove
2897*53ee8cc1Swenshuai.xi /// @param pu32EmptySlot      \b OUT: empty slot number
2898*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2899*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2900*53ee8cc1Swenshuai.xi /// @note Keep the function which have path parameter.
2901*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2902*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Filein_CMDQ_GetEmptyNum(MS_U32 *pu32EmptySlot);
2903*53ee8cc1Swenshuai.xi 
2904*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2905*53ee8cc1Swenshuai.xi /// Get Command queue FIFO level.
2906*53ee8cc1Swenshuai.xi /// @ingroup DMX_ToBeRemove
2907*53ee8cc1Swenshuai.xi /// @param  pu8CmdQStatus   \b OUT: fifo level, 0~3
2908*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2909*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2910*53ee8cc1Swenshuai.xi /// @note Keep the function which have path parameter.
2911*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2912*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Filein_CMDQ_FIFOWriteLevel(MS_U8 *pu8CmdQStatus);
2913*53ee8cc1Swenshuai.xi 
2914*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2915*53ee8cc1Swenshuai.xi /// Disable 192 mode blovk scheme to bypass fill-in timestamp
2916*53ee8cc1Swenshuai.xi /// @ingroup DMX_ToBeRemove
2917*53ee8cc1Swenshuai.xi /// @param bbypass     \b IN: TRUE: bypass file-in timestamp, FALSE: not bypass
2918*53ee8cc1Swenshuai.xi /// @return None
2919*53ee8cc1Swenshuai.xi /// @note Keep the function which have path parameter.
2920*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2921*53ee8cc1Swenshuai.xi void MApi_DMX_BypassFileInTimeStamp(MS_BOOL bbypass);
2922*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2923*53ee8cc1Swenshuai.xi /// Get Command queue FIFO level.
2924*53ee8cc1Swenshuai.xi /// @ingroup DMX_ToBeRemove
2925*53ee8cc1Swenshuai.xi /// @param  pu8CmdQStatus   \b OUT: fifo level, 0~3
2926*53ee8cc1Swenshuai.xi /// - 0: 0 to 25% full
2927*53ee8cc1Swenshuai.xi /// - 1: 25 to 50% full
2928*53ee8cc1Swenshuai.xi /// - 2: 50 to 75% full
2929*53ee8cc1Swenshuai.xi /// - 3: 75 to 100% full
2930*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2931*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2932*53ee8cc1Swenshuai.xi /// @note Keep the function which have path parameter.
2933*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2934*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Filein_CMDQ_FIFOWriteLevel(MS_U8 *pu8CmdQStatus);
2935*53ee8cc1Swenshuai.xi 
2936*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2937*53ee8cc1Swenshuai.xi /// Get filein time stamp. (Current time stamp from TS packet). It is used on 192 packet mode.
2938*53ee8cc1Swenshuai.xi /// @ingroup DMX_ToBeRemove
2939*53ee8cc1Swenshuai.xi /// @param pu32FileInTS     \b OUT: pointer to store time-stamp value
2940*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2941*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2942*53ee8cc1Swenshuai.xi /// @note Keep the function which have path parameter.
2943*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2944*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_GetFileInTimeStamp(MS_U32 *pu32FileInTS);
2945*53ee8cc1Swenshuai.xi 
2946*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2947*53ee8cc1Swenshuai.xi /// Get playback read address.
2948*53ee8cc1Swenshuai.xi /// @ingroup DMX_ToBeRemove
2949*53ee8cc1Swenshuai.xi /// @param pphyRead        \b OUT: pointer to store read address
2950*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2951*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2952*53ee8cc1Swenshuai.xi /// @note Keep the function which have path parameter.
2953*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2954*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Filein_GetReadAddr(MS_PHY* pphyRead);
2955*53ee8cc1Swenshuai.xi 
2956*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2957*53ee8cc1Swenshuai.xi /// Enable MOBF decrypt key.
2958*53ee8cc1Swenshuai.xi /// @ingroup DMX_ToBeRemove
2959*53ee8cc1Swenshuai.xi /// @param bEnable    \b IN: File-in MOBF Enable/Disable
2960*53ee8cc1Swenshuai.xi /// @param u32key     \b IN: MOBF dyncrypt u32key
2961*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2962*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2963*53ee8cc1Swenshuai.xi /// @note Keep the function which have path parameter.
2964*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2965*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Filein_MOBF_Enable(MS_BOOL bEnable, MS_U32 u32key);
2966*53ee8cc1Swenshuai.xi 
2967*53ee8cc1Swenshuai.xi //-----------------
2968*53ee8cc1Swenshuai.xi // TSP_Playback
2969*53ee8cc1Swenshuai.xi //-----------------
2970*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2971*53ee8cc1Swenshuai.xi /// Start to get bit stream from memory.
2972*53ee8cc1Swenshuai.xi /// @ingroup TSP_Playback
2973*53ee8cc1Swenshuai.xi /// @param ePath            \b IN: file in path (TSIF)
2974*53ee8cc1Swenshuai.xi /// @param Dst              \b IN: file in destination type
2975*53ee8cc1Swenshuai.xi /// @param pBuf             \b IN: the memory containing the bit stream
2976*53ee8cc1Swenshuai.xi /// @param u32BufSize       \b IN: the size the memory to get
2977*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2978*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2979*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2980*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Filein_Eng_Start(DMX_FILEIN_PATH ePath, DMX_FILEIN_DST Dst, MS_PHY pBuf, MS_U32 u32BufSize);   // msAPI_DMX_PESPlayback/msAPI_DMX_TSPlayback will integrate into it
2981*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2982*53ee8cc1Swenshuai.xi /// Stop to get bit stream from memeory.
2983*53ee8cc1Swenshuai.xi /// @ingroup TSP_Playback
2984*53ee8cc1Swenshuai.xi /// @param ePath            \b IN: file in path (TSIF)
2985*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2986*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2987*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2988*53ee8cc1Swenshuai.xi  DMX_FILTER_STATUS MApi_DMX_Filein_Eng_Stop(DMX_FILEIN_PATH ePath);
2989*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2990*53ee8cc1Swenshuai.xi /// Set up parameters for input bit stream from memory.
2991*53ee8cc1Swenshuai.xi /// @ingroup TSP_Playback
2992*53ee8cc1Swenshuai.xi /// @param ePath             \b IN: file in path (TSIF)
2993*53ee8cc1Swenshuai.xi /// @param pFileinInfo       \b IN: the file in parameters
2994*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
2995*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
2996*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2997*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Filein_Eng_Info(DMX_FILEIN_PATH ePath, DMX_Filein_info *pFileinInfo);
2998*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2999*53ee8cc1Swenshuai.xi /// Pause to get bit stream by memeory.
3000*53ee8cc1Swenshuai.xi /// @ingroup TSP_Playback
3001*53ee8cc1Swenshuai.xi /// @param ePath             \b IN: file in path (TSIF)
3002*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3003*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3004*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3005*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Filein_Eng_Pause(DMX_FILEIN_PATH ePath);
3006*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3007*53ee8cc1Swenshuai.xi /// Pause to get bit stream by memeory.
3008*53ee8cc1Swenshuai.xi /// @ingroup TSP_Playback
3009*53ee8cc1Swenshuai.xi /// @param ePath             \b IN: file in path (TSIF)
3010*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3011*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3012*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3013*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Filein_Eng_Resume(DMX_FILEIN_PATH ePath);
3014*53ee8cc1Swenshuai.xi 
3015*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3016*53ee8cc1Swenshuai.xi /// Check if no memory transfer is under going.
3017*53ee8cc1Swenshuai.xi /// @ingroup TSP_Playback
3018*53ee8cc1Swenshuai.xi /// @param ePath             \b IN: file in path (TSIF)
3019*53ee8cc1Swenshuai.xi /// @return TRUE - if idle
3020*53ee8cc1Swenshuai.xi /// @return FALSE - otherwise
3021*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3022*53ee8cc1Swenshuai.xi MS_BOOL           MApi_DMX_Filein_Eng_IsIdle(DMX_FILEIN_PATH ePath);
3023*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3024*53ee8cc1Swenshuai.xi /// Check if memory transfer is under going.
3025*53ee8cc1Swenshuai.xi /// @ingroup TSP_Playback
3026*53ee8cc1Swenshuai.xi /// @param ePath             \b IN: file in path (TSIF)
3027*53ee8cc1Swenshuai.xi /// @return TRUE - if idle
3028*53ee8cc1Swenshuai.xi /// @return FALSE - otherwise
3029*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3030*53ee8cc1Swenshuai.xi  MS_BOOL          MApi_DMX_Filein_Eng_IsBusy(DMX_FILEIN_PATH ePath);
3031*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3032*53ee8cc1Swenshuai.xi /// Check if memory transfer is paused.
3033*53ee8cc1Swenshuai.xi /// @ingroup TSP_Playback
3034*53ee8cc1Swenshuai.xi /// @param ePath             \b IN: file in path (TSIF)
3035*53ee8cc1Swenshuai.xi /// @return TRUE - if idle
3036*53ee8cc1Swenshuai.xi /// @return FALSE - otherwise
3037*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3038*53ee8cc1Swenshuai.xi  MS_BOOL          MApi_DMX_Filein_Eng_IsPause(DMX_FILEIN_PATH ePath);
3039*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3040*53ee8cc1Swenshuai.xi /// Reset CMDQ.
3041*53ee8cc1Swenshuai.xi /// @ingroup TSP_Playback
3042*53ee8cc1Swenshuai.xi /// @param ePath             \b IN: file in path (TSIF)
3043*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3044*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3045*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3046*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Filein_Eng_CMDQ_Reset(DMX_FILEIN_PATH ePath);
3047*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3048*53ee8cc1Swenshuai.xi /// Get the number of CMDQ empty slot.
3049*53ee8cc1Swenshuai.xi /// @ingroup TSP_Playback
3050*53ee8cc1Swenshuai.xi /// @param ePath                   \b IN: file in path (TSIF)
3051*53ee8cc1Swenshuai.xi /// @param pu32EmptySlot           \b OUT: empty slot number
3052*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3053*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3054*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3055*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Filein_Eng_CMDQ_GetEmptyNum(DMX_FILEIN_PATH ePath, MS_U32 *pu32EmptySlot);
3056*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3057*53ee8cc1Swenshuai.xi /// Disable 192 mode blovk scheme to bypass fill-in timestamp
3058*53ee8cc1Swenshuai.xi /// @ingroup TSP_Playback
3059*53ee8cc1Swenshuai.xi /// @param ePath         \b IN: file in path (TSIF)
3060*53ee8cc1Swenshuai.xi /// @param bbypass       \b IN: TRUE: bypass file-in timestamp, FALSE: not bypass
3061*53ee8cc1Swenshuai.xi /// @return None
3062*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3063*53ee8cc1Swenshuai.xi void              MApi_DMX_Filein_Eng_BypassFileInTimeStamp(DMX_FILEIN_PATH ePath, MS_BOOL bbypass);
3064*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3065*53ee8cc1Swenshuai.xi /// Get Command queue FIFO level.
3066*53ee8cc1Swenshuai.xi /// @ingroup TSP_Playback
3067*53ee8cc1Swenshuai.xi /// @param ePath                   \b IN: file in path (TSIF)
3068*53ee8cc1Swenshuai.xi /// @param  pu8CmdQStatus          \b OUT: fifo level, 0~3
3069*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3070*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3071*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3072*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Filein_Eng_CMDQ_FIFOWriteLevel(DMX_FILEIN_PATH ePath, MS_U8 *pu8CmdQStatus);
3073*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3074*53ee8cc1Swenshuai.xi /// Get filein time stamp. (Current time stamp from TS packet). It is used on 192 packet mode.
3075*53ee8cc1Swenshuai.xi /// @ingroup TSP_Playback
3076*53ee8cc1Swenshuai.xi /// @param ePath                \b IN: file in path (TSIF)
3077*53ee8cc1Swenshuai.xi /// @param pu32FileInTS         \b OUT: pointer to store time-stamp value
3078*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3079*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3080*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3081*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Filein_Eng_GetFileInTimeStamp(DMX_FILEIN_PATH ePath, MS_U32 *pu32FileInTS);
3082*53ee8cc1Swenshuai.xi 
3083*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3084*53ee8cc1Swenshuai.xi /// Get playback read address.
3085*53ee8cc1Swenshuai.xi /// @ingroup TSP_Playback
3086*53ee8cc1Swenshuai.xi /// @param ePath              \b IN: file in path (TSIF)
3087*53ee8cc1Swenshuai.xi /// @param pphyRead           \b OUT: pointer to store read address
3088*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3089*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3090*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3091*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Filein_Eng_GetReadAddr(DMX_FILEIN_PATH ePath, MS_PHY* pphyRead);
3092*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3093*53ee8cc1Swenshuai.xi /// Enable MOBF decrypt key.
3094*53ee8cc1Swenshuai.xi /// @ingroup TSP_Playback
3095*53ee8cc1Swenshuai.xi /// @param ePath        \b IN: file in path (TSIF)
3096*53ee8cc1Swenshuai.xi /// @param bEnable      \b IN: File-in MOBF Enable/Disable
3097*53ee8cc1Swenshuai.xi /// @param u32key       \b IN: MOBF dyncrypt u32key
3098*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3099*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3100*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3101*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Filein_Eng_MOBF_Enable(DMX_FILEIN_PATH ePath, MS_BOOL bEnable, MS_U32 u32key);
3102*53ee8cc1Swenshuai.xi 
3103*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3104*53ee8cc1Swenshuai.xi /// Enable FileEng Playback time stamp.
3105*53ee8cc1Swenshuai.xi /// @ingroup TSP_Playback
3106*53ee8cc1Swenshuai.xi /// @param ePath         \b IN: file in path (TSIF)
3107*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3108*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3109*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3110*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Filein_Eng_PlaybackTimeStampEnable(DMX_FILEIN_PATH ePath);
3111*53ee8cc1Swenshuai.xi 
3112*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3113*53ee8cc1Swenshuai.xi /// Disable fileEng Playback time stamp.
3114*53ee8cc1Swenshuai.xi /// @ingroup TSP_Playback
3115*53ee8cc1Swenshuai.xi /// @param ePath         \b IN: file in path (TSIF)
3116*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3117*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3118*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3119*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Filein_Eng_PlaybackTimeStampDisable(DMX_FILEIN_PATH ePath);
3120*53ee8cc1Swenshuai.xi 
3121*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3122*53ee8cc1Swenshuai.xi /// Set playback time stamp. (LPCR)
3123*53ee8cc1Swenshuai.xi /// @ingroup TSP_Playback
3124*53ee8cc1Swenshuai.xi /// @param ePath              \b IN: file in path (TSIF)
3125*53ee8cc1Swenshuai.xi /// @param u32Stamp           \b IN: time-stamp value
3126*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3127*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3128*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3129*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Filein_Eng_SetPlaybackStamp(DMX_FILEIN_PATH ePath,MS_U32 u32Stamp);
3130*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3131*53ee8cc1Swenshuai.xi /// Get playback time stamp. (LPCR)
3132*53ee8cc1Swenshuai.xi /// @ingroup TSP_Playback
3133*53ee8cc1Swenshuai.xi /// @param ePath              \b IN: file in path (TSIF)
3134*53ee8cc1Swenshuai.xi /// @param pu32Stamp          \b OUT: pointer to store time-stamp value
3135*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3136*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3137*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3138*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Filein_Eng_GetPlaybackStamp(DMX_FILEIN_PATH ePath,MS_U32* pu32Stamp);
3139*53ee8cc1Swenshuai.xi 
3140*53ee8cc1Swenshuai.xi 
3141*53ee8cc1Swenshuai.xi //-------------------------------------------------------------
3142*53ee8cc1Swenshuai.xi //MMFI & MINITSP API
3143*53ee8cc1Swenshuai.xi //-----------------
3144*53ee8cc1Swenshuai.xi // TSP_MM
3145*53ee8cc1Swenshuai.xi //-----------------
3146*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3147*53ee8cc1Swenshuai.xi /// Check mmfi engine is ilde or not.
3148*53ee8cc1Swenshuai.xi /// @ingroup TSP_MM
3149*53ee8cc1Swenshuai.xi /// @param  ePath     \b IN: MM File-in Path
3150*53ee8cc1Swenshuai.xi /// @return TRUE - Idle
3151*53ee8cc1Swenshuai.xi /// @return FALSE - not idle
3152*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3153*53ee8cc1Swenshuai.xi MS_BOOL           MApi_DMX_MMFI_Filein_IsIdle(DMX_MMFI_PATH ePath);
3154*53ee8cc1Swenshuai.xi 
3155*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3156*53ee8cc1Swenshuai.xi /// Check mmfi engine is busy or not.
3157*53ee8cc1Swenshuai.xi /// @ingroup TSP_MM
3158*53ee8cc1Swenshuai.xi /// @param  ePath      \b IN: MM File-in Path
3159*53ee8cc1Swenshuai.xi /// @return TRUE - Busy
3160*53ee8cc1Swenshuai.xi /// @return FALSE - not busy
3161*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3162*53ee8cc1Swenshuai.xi MS_BOOL          MApi_DMX_MMFI_Filein_IsBusy(DMX_MMFI_PATH ePath);
3163*53ee8cc1Swenshuai.xi 
3164*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3165*53ee8cc1Swenshuai.xi /// Reset MMFilein Command queue
3166*53ee8cc1Swenshuai.xi /// @ingroup TSP_MM
3167*53ee8cc1Swenshuai.xi /// @param  ePath       \b IN: MM File-in Path
3168*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3169*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3170*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3171*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_MMFI_Filein_CMDQ_Reset(DMX_MMFI_PATH ePath);
3172*53ee8cc1Swenshuai.xi 
3173*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3174*53ee8cc1Swenshuai.xi /// Get the MMFilein CMDQ empty slot number.
3175*53ee8cc1Swenshuai.xi /// @ingroup TSP_MM
3176*53ee8cc1Swenshuai.xi /// @param  ePath                  \b IN: MM File-in Path
3177*53ee8cc1Swenshuai.xi /// @param  pu32EmptySlot          \b OUT: Empty slot
3178*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3179*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3180*53ee8cc1Swenshuai.xi /// @note The user can use MApi_DMX_MMFI_Filein_Start() as a multimedia file-in command to input data from memory to the demultiplexer. \n
3181*53ee8cc1Swenshuai.xi /// The DMX engine allows to add multimedia file-in command without having to wait that the previous multimedia file-in command have been processed completely. \n
3182*53ee8cc1Swenshuai.xi /// In this mode the waited multimedia file-in commands are stored to the so-called multimedia file-in command queue. \n
3183*53ee8cc1Swenshuai.xi /// However, the size of the command queue is limited and each multimedia file-in command will consumes 5 slots in the multimedia file-in command queue. \n
3184*53ee8cc1Swenshuai.xi /// Therefore, the caller has to check the number of empty slots in the multimedia file-in command queue with MApi_DMX_MMFI_Filein_CMDQ_GetEmptyNum()
3185*53ee8cc1Swenshuai.xi /// before adding a new multimedia file-in command.
3186*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3187*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_MMFI_Filein_CMDQ_GetEmptyNum(DMX_MMFI_PATH ePath, MS_U32 *pu32EmptySlot);
3188*53ee8cc1Swenshuai.xi 
3189*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3190*53ee8cc1Swenshuai.xi /// Start to get bit stream by memeory.
3191*53ee8cc1Swenshuai.xi /// @ingroup TSP_MM
3192*53ee8cc1Swenshuai.xi /// @param eDst             \b IN: file in destination path
3193*53ee8cc1Swenshuai.xi /// @param pBuf             \b IN: the memory containing the bit stream
3194*53ee8cc1Swenshuai.xi /// @param u32BufSize       \b IN: the size the memory to get
3195*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3196*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3197*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3198*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_MMFI_Filein_Start(DMX_MMFI_DST eDst, MS_PHY pBuf, MS_U32 u32BufSize);
3199*53ee8cc1Swenshuai.xi 
3200*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3201*53ee8cc1Swenshuai.xi /// Set up parameters for input bit stream from memory.
3202*53ee8cc1Swenshuai.xi /// @ingroup TSP_MM
3203*53ee8cc1Swenshuai.xi /// @param  ePath           \b IN: MM File-in Path
3204*53ee8cc1Swenshuai.xi /// @param pFileinInfo      \b IN: the file in parameters
3205*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3206*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3207*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3208*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_MMFI_Filein_Info(DMX_MMFI_PATH ePath, DMX_Filein_info *pFileinInfo);
3209*53ee8cc1Swenshuai.xi 
3210*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3211*53ee8cc1Swenshuai.xi /// Disable 192 mode blovk scheme to bypass fill-in timestamp
3212*53ee8cc1Swenshuai.xi /// @ingroup TSP_MM
3213*53ee8cc1Swenshuai.xi /// @param  ePath       \b IN: MM File-in Path
3214*53ee8cc1Swenshuai.xi /// @param bbypass      \b IN: If true, bypass file-in timestamp.
3215*53ee8cc1Swenshuai.xi /// @return None
3216*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3217*53ee8cc1Swenshuai.xi void             MApi_DMX_MMFI_Filein_BypassTimeStamp(DMX_MMFI_PATH ePath, MS_BOOL bbypass);
3218*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3219*53ee8cc1Swenshuai.xi /// Free the PID of MM Filein.
3220*53ee8cc1Swenshuai.xi /// @ingroup TSP_MM
3221*53ee8cc1Swenshuai.xi /// @param  ePath                \b IN: MM File-in Path
3222*53ee8cc1Swenshuai.xi /// @param pu32FileInTS          \b OUT: pointer for timestamp value
3223*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3224*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3225*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3226*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_MMFI_GetFileInTimeStamp(DMX_MMFI_PATH ePath, MS_U32 *pu32FileInTS);
3227*53ee8cc1Swenshuai.xi 
3228*53ee8cc1Swenshuai.xi //MMFI  (MMFI Only) API
3229*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3230*53ee8cc1Swenshuai.xi /// Set the PID to be MM File-in
3231*53ee8cc1Swenshuai.xi /// @ingroup TSP_MM
3232*53ee8cc1Swenshuai.xi /// @param flttype         \b IN: MMFI filter type
3233*53ee8cc1Swenshuai.xi /// @param u16Pid          \b IN: The target PID for MM Filein
3234*53ee8cc1Swenshuai.xi /// @param pu8DmxId        \b OUT: The demux filter Id for this MMFilein PID
3235*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3236*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3237*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3238*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_MMFI_Pid_Open(DMX_MMFI_FLTTYPE flttype, MS_U16 u16Pid, MS_U8* pu8DmxId);
3239*53ee8cc1Swenshuai.xi 
3240*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3241*53ee8cc1Swenshuai.xi /// Free the PID of MM Filein.
3242*53ee8cc1Swenshuai.xi /// @ingroup TSP_MM
3243*53ee8cc1Swenshuai.xi /// @param u8DmxId      \b IN: The demux filter Id from MApi_DMX_Pvr_Pid_Open
3244*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3245*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3246*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3247*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_MMFI_Pid_Close(MS_U8 u8DmxId);
3248*53ee8cc1Swenshuai.xi 
3249*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3250*53ee8cc1Swenshuai.xi /// Get MMFilein Command queue fifo level.
3251*53ee8cc1Swenshuai.xi /// @ingroup TSP_MM
3252*53ee8cc1Swenshuai.xi /// @param  ePath                   \b IN: MM File-in Path
3253*53ee8cc1Swenshuai.xi /// @param  pu8CmdQStatus           \b OUT: fifo level, 0~3
3254*53ee8cc1Swenshuai.xi /// - 0: 0 to 25% full
3255*53ee8cc1Swenshuai.xi /// - 1: 25 to 50% full
3256*53ee8cc1Swenshuai.xi /// - 2: 50 to 75% full
3257*53ee8cc1Swenshuai.xi /// - 3: 75 to 100% full
3258*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3259*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3260*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3261*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_MMFI_Filein_CMDQ_FIFOWriteLevel(DMX_MMFI_PATH ePath, MS_U8 *pu8CmdQStatus);
3262*53ee8cc1Swenshuai.xi 
3263*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3264*53ee8cc1Swenshuai.xi /// Set MMFI playback timestamp.
3265*53ee8cc1Swenshuai.xi /// @ingroup TSP_MM
3266*53ee8cc1Swenshuai.xi /// @param  ePath          \b IN: MM File-in Path
3267*53ee8cc1Swenshuai.xi /// @param u32pcr2         \b IN: LPCR2 value
3268*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3269*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3270*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3271*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_MMFI_SetPlaybackTimeStamp(DMX_MMFI_PATH ePath, MS_U32 u32pcr2);
3272*53ee8cc1Swenshuai.xi 
3273*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3274*53ee8cc1Swenshuai.xi /// Get MMFI Playback timestamp.
3275*53ee8cc1Swenshuai.xi /// @ingroup TSP_MM
3276*53ee8cc1Swenshuai.xi /// @param ePath               \b IN: MM File-in Path
3277*53ee8cc1Swenshuai.xi /// @param pu32pcr2            \b OUT: pointer to store LCPR2 value
3278*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3279*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3280*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3281*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_MMFI_GetPlaybackTimeStamp(DMX_MMFI_PATH ePath, MS_U32 *pu32pcr2);
3282*53ee8cc1Swenshuai.xi 
3283*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3284*53ee8cc1Swenshuai.xi /// Enable remove duplicate A/V packets.
3285*53ee8cc1Swenshuai.xi /// @ingroup TSP_MM
3286*53ee8cc1Swenshuai.xi /// @param  bEnable           \b IN: Enable or Disable
3287*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3288*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3289*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3290*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_MMFI_RemoveDupAVPkt(MS_BOOL bEnable);
3291*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3292*53ee8cc1Swenshuai.xi /// Enable MMFI timestamp mode.
3293*53ee8cc1Swenshuai.xi /// @ingroup DMX_ToBeModified_MM
3294*53ee8cc1Swenshuai.xi /// @param ePath               \b IN: MM File-in Path
3295*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3296*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3297*53ee8cc1Swenshuai.xi /// @note:  Merge with MApi_DMX_MMFI_TimeStampDisable
3298*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3299*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_MMFI_TimeStampEnable(DMX_MMFI_PATH ePath);
3300*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3301*53ee8cc1Swenshuai.xi /// Disable MMFI timestamp mode.
3302*53ee8cc1Swenshuai.xi /// @ingroup DMX_ToBeModified_MM
3303*53ee8cc1Swenshuai.xi /// @param ePath               \b IN: MM File-in Path
3304*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3305*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3306*53ee8cc1Swenshuai.xi /// @note:  Merge with MApi_DMX_MMFI_TimeStampEnable
3307*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3308*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_MMFI_TimeStampDisable(DMX_MMFI_PATH ePath);
3309*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3310*53ee8cc1Swenshuai.xi /// Enable/Disable MMFI MOBF function and set MOBF key index.
3311*53ee8cc1Swenshuai.xi /// @ingroup TSP_MM
3312*53ee8cc1Swenshuai.xi /// @param ePath              \b IN: MM File-in Path
3313*53ee8cc1Swenshuai.xi /// @param  bEnable           \b IN: Enable or Disable
3314*53ee8cc1Swenshuai.xi /// @param  u32key            \b IN: MOBF key index
3315*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3316*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3317*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3318*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_MMFI_MOBF_Enable(DMX_MMFI_PATH ePath, MS_BOOL bEnable, MS_U32 u32key);
3319*53ee8cc1Swenshuai.xi 
3320*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3321*53ee8cc1Swenshuai.xi /// Set MMFI MOBF level.
3322*53ee8cc1Swenshuai.xi /// @ingroup TSP_MM
3323*53ee8cc1Swenshuai.xi /// @param epath              \b IN: MM File-in Path
3324*53ee8cc1Swenshuai.xi /// @param  u8level           \b IN: the value of MOBF level
3325*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3326*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3327*53ee8cc1Swenshuai.xi /// @note only used on TSP 1.0
3328*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3329*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_MMFI_MOBF_SetLevel(DMX_MMFI_PATH epath, MS_U8 u8level);
3330*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3331*53ee8cc1Swenshuai.xi /// Set MMFI TimeStamp Clk.
3332*53ee8cc1Swenshuai.xi /// @ingroup TSP_MM
3333*53ee8cc1Swenshuai.xi /// @param ePath              \b IN: MM File-in Path
3334*53ee8cc1Swenshuai.xi /// @param eClk               \b IN: select 90K or 27M
3335*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3336*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3337*53ee8cc1Swenshuai.xi /// @note only used on TSP 1.0
3338*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3339*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_MMFI_TimeStampClk(DMX_MMFI_PATH ePath, DMX_TimeStamp_Clk eClk);
3340*53ee8cc1Swenshuai.xi 
3341*53ee8cc1Swenshuai.xi //-------------------------------------------------------------
3342*53ee8cc1Swenshuai.xi 
3343*53ee8cc1Swenshuai.xi 
3344*53ee8cc1Swenshuai.xi //-----------------
3345*53ee8cc1Swenshuai.xi // TSO_General
3346*53ee8cc1Swenshuai.xi //-----------------
3347*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3348*53ee8cc1Swenshuai.xi /// Set up parameters for input bit stream from memory of TSO path.
3349*53ee8cc1Swenshuai.xi /// @ingroup TSO_General
3350*53ee8cc1Swenshuai.xi /// @param u8Eng          \b IN: TSO engine ID
3351*53ee8cc1Swenshuai.xi /// @param pFileinInfo    \b IN: the file in parameters
3352*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3353*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3354*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3355*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS SYMBOL_WEAK MApi_DMX_TSO_Filein_Info(MS_U8 u8Eng, DMX_Filein_info *pFileinInfo);
3356*53ee8cc1Swenshuai.xi 
3357*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3358*53ee8cc1Swenshuai.xi /// Check if no memory transfer is under going of TSO path
3359*53ee8cc1Swenshuai.xi /// @ingroup TSO_General
3360*53ee8cc1Swenshuai.xi /// @param u8Eng       \b IN: TSO engine ID
3361*53ee8cc1Swenshuai.xi /// @return TRUE - if idle
3362*53ee8cc1Swenshuai.xi /// @return FALSE - otherwise
3363*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3364*53ee8cc1Swenshuai.xi MS_BOOL SYMBOL_WEAK MApi_DMX_TSO_Filein_IsIdle(MS_U8 u8Eng);
3365*53ee8cc1Swenshuai.xi 
3366*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3367*53ee8cc1Swenshuai.xi /// Get TSO file-in CMDQ empty number.
3368*53ee8cc1Swenshuai.xi /// @ingroup TSO_General
3369*53ee8cc1Swenshuai.xi /// @param u8Eng             \b IN: TSO engine ID
3370*53ee8cc1Swenshuai.xi /// @param pu32EmptySlot     \b OUT: pointer to store CMDQ empty slot number
3371*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3372*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3373*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3374*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS SYMBOL_WEAK MApi_DMX_TSO_Filein_CMDQ_GetEmptyNum(MS_U8 u8Eng, MS_U32 *pu32EmptySlot);
3375*53ee8cc1Swenshuai.xi 
3376*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3377*53ee8cc1Swenshuai.xi /// Get TSO file-in CMDQ reset.
3378*53ee8cc1Swenshuai.xi /// @ingroup TSO_General
3379*53ee8cc1Swenshuai.xi /// @param u8Eng           \b IN: TSO engine ID
3380*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3381*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3382*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3383*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS SYMBOL_WEAK MApi_DMX_TSO_Filein_CMDQ_Reset(MS_U8 u8Eng);
3384*53ee8cc1Swenshuai.xi 
3385*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3386*53ee8cc1Swenshuai.xi /// Start to get bit stream by memeory of TSO path.
3387*53ee8cc1Swenshuai.xi /// @ingroup TSO_General
3388*53ee8cc1Swenshuai.xi /// @param u8Eng             \b IN: TSO engine ID
3389*53ee8cc1Swenshuai.xi /// @param pBuf              \b IN: the memory containing the bit stream
3390*53ee8cc1Swenshuai.xi /// @param u32BufSize        \b IN: the size the memory to get
3391*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3392*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3393*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3394*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS SYMBOL_WEAK MApi_DMX_TSO_Filein_Start(MS_U8 u8Eng, MS_PHY pBuf, MS_U32 u32BufSize);
3395*53ee8cc1Swenshuai.xi 
3396*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3397*53ee8cc1Swenshuai.xi /// Stop to get bit stream by memeory of TSO path.
3398*53ee8cc1Swenshuai.xi /// @ingroup TSO_General
3399*53ee8cc1Swenshuai.xi /// @param u8Eng            \b IN: TSO engine ID
3400*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3401*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3402*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3403*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS SYMBOL_WEAK MApi_DMX_TSO_Filein_Stop(MS_U8 u8Eng);
3404*53ee8cc1Swenshuai.xi 
3405*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3406*53ee8cc1Swenshuai.xi /// Set TSO playback time stamp. (LPCR)
3407*53ee8cc1Swenshuai.xi /// @ingroup TSO_General
3408*53ee8cc1Swenshuai.xi /// @param u8Eng             \b IN: TSO engine ID
3409*53ee8cc1Swenshuai.xi /// @param u32Stamp          \b OUT: pointer to store timestamp value
3410*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3411*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3412*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3413*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS SYMBOL_WEAK MApi_DMX_TSO_SetPlaybackTimeStamp(MS_U8 u8Eng, MS_U32 u32Stamp);
3414*53ee8cc1Swenshuai.xi 
3415*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3416*53ee8cc1Swenshuai.xi /// Get TSO file-in  time stamp. (LPCR)
3417*53ee8cc1Swenshuai.xi /// @ingroup TSO_General
3418*53ee8cc1Swenshuai.xi /// @param u8Eng              \b IN: TSO engine ID
3419*53ee8cc1Swenshuai.xi /// @param pu32Stamp          \b OUT: pointer to store timestamp value
3420*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3421*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3422*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3423*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS SYMBOL_WEAK MApi_DMX_TSO_GetPlaybackStamp(MS_U8 u8Eng, MS_U32* pu32Stamp);
3424*53ee8cc1Swenshuai.xi 
3425*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3426*53ee8cc1Swenshuai.xi /// Get TSO file-in  time stamp.
3427*53ee8cc1Swenshuai.xi /// @ingroup TSO_General
3428*53ee8cc1Swenshuai.xi /// @param u8Eng              \b IN: TSO engine ID
3429*53ee8cc1Swenshuai.xi /// @param pu32Stamp          \b OUT: pointer to store timestamp value
3430*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3431*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3432*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3433*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS SYMBOL_WEAK MApi_DMX_TSO_GetFileInTimeStamp(MS_U8 u8Eng, MS_U32 *pu32Stamp);
3434*53ee8cc1Swenshuai.xi 
3435*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3436*53ee8cc1Swenshuai.xi /// Disable 192 mode block scheme to bypass fill-in timestamp.
3437*53ee8cc1Swenshuai.xi /// @ingroup TSO_General
3438*53ee8cc1Swenshuai.xi /// @param u8Eng           \b IN: TSO engine id.
3439*53ee8cc1Swenshuai.xi /// @param bbypass         \b IN: If true, bypass file-in timestamp.
3440*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3441*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3442*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3443*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS SYMBOL_WEAK MApi_DMX_TSO_BypassFileInTimeStamp(MS_U8 u8Eng, MS_BOOL bbypass);
3444*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3445*53ee8cc1Swenshuai.xi /// Enable TSO file in  time stamp.
3446*53ee8cc1Swenshuai.xi /// @ingroup DMX_ToBeModified_MM_TSO
3447*53ee8cc1Swenshuai.xi /// @param u8Eng           \b IN: TSO engine id.
3448*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3449*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3450*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3451*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS SYMBOL_WEAK MApi_DMX_TSO_TimeStampEnable(MS_U8 u8Eng);
3452*53ee8cc1Swenshuai.xi 
3453*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3454*53ee8cc1Swenshuai.xi /// Disable TSO file in time stamp
3455*53ee8cc1Swenshuai.xi /// @ingroup DMX_ToBeModified_MM_TSO
3456*53ee8cc1Swenshuai.xi /// @param u8Eng           \b IN: TSO engine id.
3457*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3458*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3459*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3460*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS SYMBOL_WEAK MApi_DMX_TSO_TimeStampDisable(MS_U8 u8Eng);
3461*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3462*53ee8cc1Swenshuai.xi /// Set TSO Out Clock.
3463*53ee8cc1Swenshuai.xi /// @ingroup TSO_General
3464*53ee8cc1Swenshuai.xi /// @param  u8Eng               \b IN: TSO engine ID
3465*53ee8cc1Swenshuai.xi /// @param  eTsOutClk           \b IN: TSO out clock select
3466*53ee8cc1Swenshuai.xi /// @param  eTsOutClkSrc        \b IN: TSO out clock source select
3467*53ee8cc1Swenshuai.xi /// @param  u16DivNum           \b IN: If select DMPLLDIV source, setting Divide number
3468*53ee8cc1Swenshuai.xi /// @param  bClkInv             \b IN: If Out Clock invert
3469*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3470*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3471*53ee8cc1Swenshuai.xi /// @note If eTsOutClk is E_DMX_TSO_OUTCLK_DIV2N, eTsOutClkSrc could be E_DMX_TSO_OUTCLKSRC_172M_2N/E_DMX_TSO_OUTCLKSRC_288M_2N/E_DMX_TSO_OUTCLKSRC_432M_2N,
3472*53ee8cc1Swenshuai.xi /// @note and user should set u16DivNum to generate final output clock.
3473*53ee8cc1Swenshuai.xi /// @note If eTsOutClk is E_DMX_TSO_OUTCLK_DIVN, eTsOutClkSrc could be E_DMX_TSO_OUTCLKSRC_216M_N, and user should set u16DivNum to generate final output clock.
3474*53ee8cc1Swenshuai.xi /// @note If eTsOutClk is E_DMX_TSO_OUTCLK_PTSOOUT/E_DMX_TSO_OUTCLK_PTSOOUT_DIV8, eTsOutClkSrc could be E_DMX_TSO_OUTCLKSRC_P_TS0IN/E_DMX_TSO_OUTCLKSRC_P_TS1IN, etc,
3475*53ee8cc1Swenshuai.xi /// @note and this colck is from external pad
3476*53ee8cc1Swenshuai.xi /// @note E_DMX_TSO_OUTCLK_62M/E_DMX_TSO_OUTCLK_54M/E_DMX_TSO_OUTCLK_27M/E_DMX_TSO_OUTCLK_Dmd are const
3477*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS SYMBOL_WEAK MApi_DMX_TSO_SetOutClk(MS_U8 u8Eng, DMX_TSO_OutClk eTsOutClk, DMX_TSO_OutClkSrc eTsOutClkSrc, MS_U16 u16DivNum, MS_BOOL bClkInv);
3478*53ee8cc1Swenshuai.xi 
3479*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3480*53ee8cc1Swenshuai.xi /// Enable or disable TSO output.
3481*53ee8cc1Swenshuai.xi /// @ingroup TSO_General
3482*53ee8cc1Swenshuai.xi /// @param  u8Eng                 \b IN: TSO engine ID
3483*53ee8cc1Swenshuai.xi /// @param  bEnable               \b IN: TRUE is enable, FALSE is disable
3484*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3485*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3486*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3487*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS SYMBOL_WEAK MApi_DMX_TSO_OutputEnable(MS_U8 u8Eng, MS_BOOL bEnable);
3488*53ee8cc1Swenshuai.xi 
3489*53ee8cc1Swenshuai.xi //TSO2 API
3490*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3491*53ee8cc1Swenshuai.xi /// Set or get local stream ID of TSO Out.
3492*53ee8cc1Swenshuai.xi /// @ingroup TSO_General
3493*53ee8cc1Swenshuai.xi /// @param  u8Eng              \b IN: TSO engine ID
3494*53ee8cc1Swenshuai.xi /// @param  eIf                \b IN: TSO input TSIF
3495*53ee8cc1Swenshuai.xi /// @param  pu8StrId           \b IN or OUT: pointer to store local stream ID, default value is 0x47
3496*53ee8cc1Swenshuai.xi /// @param  bSet               \b IN: If TRUE, set local stream id, otherwise get local stream id
3497*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3498*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3499*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3500*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS SYMBOL_WEAK MApi_DMX_TSO_LocalStreamId(MS_U8 u8Eng, DMX_TSIF eIf, MS_U8* pu8StrId, MS_BOOL bSet);
3501*53ee8cc1Swenshuai.xi 
3502*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3503*53ee8cc1Swenshuai.xi /// Set TSO virtual queue buffer.
3504*53ee8cc1Swenshuai.xi /// @ingroup TSO_General
3505*53ee8cc1Swenshuai.xi /// @param  u8Eng           \b IN: TSO engine ID
3506*53ee8cc1Swenshuai.xi /// @param  phyAddr         \b IN: TSO VQ buffer address
3507*53ee8cc1Swenshuai.xi /// @param  u32BufSize    \b IN: TSO VQ buffer size
3508*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3509*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3510*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3511*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS SYMBOL_WEAK MApi_DMX_TSO_SVQBuf_Set(MS_U8 u8Eng, MS_PHY phyAddr, MS_U32 u32BufSize);
3512*53ee8cc1Swenshuai.xi 
3513*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3514*53ee8cc1Swenshuai.xi ///TSO (TS output) Demux Flow input sources configure getting and setting.
3515*53ee8cc1Swenshuai.xi /// @ingroup TSO_General
3516*53ee8cc1Swenshuai.xi /// @param pstInputCfg                \b IN/OUT: Pointer of storing TSO input configure data
3517*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3518*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3519*53ee8cc1Swenshuai.xi /// - The members in pstInputCfg structure
3520*53ee8cc1Swenshuai.xi ///     eFlow                         \b IN: DMX TSO playback flow,  DMX_FLOW_TSO_PLAYBACK/DMX_FLOW_TSO_PLAYBACK1
3521*53ee8cc1Swenshuai.xi ///     eTSOInIf                      \b IN: TSO input interface,  DMX_TSIF_LIVE0/DMX_TSIF_LIVE1/DMX_TSIF_LIVE2/DMX_TSIF_FILE0/DMX_TSIF_FILE1
3522*53ee8cc1Swenshuai.xi ///     stInputInfo.Input             \b IN/OUT: TSO input interface source,  enum item of DMX_FLOW_INPUT
3523*53ee8cc1Swenshuai.xi ///     stInputInfo.bClkInv           \b IN/OUT: If TSO input interface source is from demod, please set clock invert type
3524*53ee8cc1Swenshuai.xi ///     stInputInfo.bExtSync          \b IN/OUT: If TSO input interface source is from demod, please set external sync type
3525*53ee8cc1Swenshuai.xi ///     stInputInfo.bParallel         \b IN/OUT: If TSO input interface source is from demod, please set parallel or serial type
3526*53ee8cc1Swenshuai.xi ///     u8LocalStrId                  \b IN/OUT: The local stream ID (TS output sync byte) value, default is 0x47
3527*53ee8cc1Swenshuai.xi ///     bBypassAll                    \b IN/OUT: TRUE means bypass all ts data for TSO playback; FALSE means tso will output ts data by PIDs
3528*53ee8cc1Swenshuai.xi ///     bEnable                       \b IN/OUT: TRUE means enable TSO input now; FALSE means disable this TSO input fource
3529*53ee8cc1Swenshuai.xi 
3530*53ee8cc1Swenshuai.xi /// @note This API is for TSO 2.0 HW architecture.
3531*53ee8cc1Swenshuai.xi /// @note Serval TSO input will be merge to be one TSO output. This API is for configuring one of TSO input.
3532*53ee8cc1Swenshuai.xi /// @note If there are 3 TSO input source, you shold call this API 3 times for every TSO input path configure.
3533*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3534*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS SYMBOL_WEAK MApi_DMX_TSO_Flow_InputCfg(DMX_TSO_InputCfg* pstInputCfg);
3535*53ee8cc1Swenshuai.xi 
3536*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3537*53ee8cc1Swenshuai.xi /// TSO (TS output) Demux Flow output path configure
3538*53ee8cc1Swenshuai.xi /// @ingroup TSO_General
3539*53ee8cc1Swenshuai.xi /// @param pstOutputCfg              \b IN/OUT: Pointer of storing TSO output configure data
3540*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3541*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3542*53ee8cc1Swenshuai.xi /// - The members in pstOutputCfg structure
3543*53ee8cc1Swenshuai.xi ///     eFlow                        \b IN: DMX TSO playback flow,  DMX_FLOW_TSO_PLAYBACK/DMX_FLOW_TSO_PLAYBACK1
3544*53ee8cc1Swenshuai.xi ///     eOutPad                      \b IN: TSO output pad  select,  DMX_FLOW_OUTPUT_EXT_PAD1/DMX_FLOW_OUTPUT_EXT_PAD3///
3545*53ee8cc1Swenshuai.xi ///     u16OutPktSize                \b IN/OUT: TSO output packet size. default vale is 188 bytes
3546*53ee8cc1Swenshuai.xi ///     bEnable                      \b IN/OUT: TRUE means enable TSO output now; FALSE means disable TSO output
3547*53ee8cc1Swenshuai.xi ///     bDefOutClk                   \b IN: TURE means using default clock setting given by driver; FALSE means set output clock by user parameters
3548*53ee8cc1Swenshuai.xi ///     bOutClkInv                   \b IN/OUT: Set inver type of TSO output clock
3549*53ee8cc1Swenshuai.xi ///     eTsoOutClk                   \b IN/OUT: Select TSO output clock, enum item of DMX_TSO_OutClk
3550*53ee8cc1Swenshuai.xi ///     eTsoOutClkSrc                \b IN/OUT: Select TSO output clock source, enum item of DMX_TSO_OutClkSrc
3551*53ee8cc1Swenshuai.xi ///     u16DivNum                    \b IN/OUT: If TSO output clock source is E_DMX_TSO_OUTCLK_DIV2N/E_DMX_TSO_OUTCLK_DIVN, set this value for clock generatng.
3552*53ee8cc1Swenshuai.xi ///     bSet                         \b IN: TURE: set, FALSE: get
3553*53ee8cc1Swenshuai.xi /// @note This API is for TSO 2.0 HW architecture.
3554*53ee8cc1Swenshuai.xi /// @note Serval TSO input will be merge to be one TSO output. This API is for configuring TSO output path.
3555*53ee8cc1Swenshuai.xi /// @note TSO output clock source selection, please also refer to MApi_DMX_TSO_SetOutClk API.
3556*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3557*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS SYMBOL_WEAK MApi_DMX_TSO_Flow_OutputCfg(DMX_TSO_OutputCfg* pstOutputCfg);
3558*53ee8cc1Swenshuai.xi 
3559*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3560*53ee8cc1Swenshuai.xi ///TSO configuration
3561*53ee8cc1Swenshuai.xi /// @param pstTsoCfg                  \b IN/OUT: Pointer of storing TSO configure data
3562*53ee8cc1Swenshuai.xi ///
3563*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3564*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3565*53ee8cc1Swenshuai.xi ///
3566*53ee8cc1Swenshuai.xi /// @note This API is for TSO2 HW architecture
3567*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3568*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS SYMBOL_WEAK MApi_DMX_TSO_Configure(DMX_TSO_Cfg* pstTsoCfg);
3569*53ee8cc1Swenshuai.xi 
3570*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3571*53ee8cc1Swenshuai.xi /// TSO (TS output) input pid filter open.
3572*53ee8cc1Swenshuai.xi /// @ingroup TSO_General
3573*53ee8cc1Swenshuai.xi /// @param u8Eng              \b IN: TSO engine ID
3574*53ee8cc1Swenshuai.xi /// @param eTSOInSrc          \b IN: TSO PID filter source
3575*53ee8cc1Swenshuai.xi /// @param u16Pid             \b IN: PID value of TSO PID filter
3576*53ee8cc1Swenshuai.xi /// @param pu16DmxId          \b IN: Pointer to store PID filter ID
3577*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3578*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3579*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3580*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS SYMBOL_WEAK MApi_DMX_TSO_Pid_Open(MS_U8 u8Eng, DMX_TSIF eTSOInSrc, MS_U16 u16Pid, MS_U16* pu16DmxId);
3581*53ee8cc1Swenshuai.xi 
3582*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3583*53ee8cc1Swenshuai.xi /// TSO (TS output) input pid filter close.
3584*53ee8cc1Swenshuai.xi /// @ingroup TSO_General
3585*53ee8cc1Swenshuai.xi /// @param u8Eng             \b IN: TSO engine ID
3586*53ee8cc1Swenshuai.xi /// @param u16DmxId          \b IN: TSO PID filter source
3587*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3588*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3589*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3590*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS SYMBOL_WEAK MApi_DMX_TSO_Pid_Close(MS_U8 u8Eng, MS_U16 u16DmxId);
3591*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3592*53ee8cc1Swenshuai.xi /// Get TSO file-in  read address.
3593*53ee8cc1Swenshuai.xi /// @ingroup TSO_General
3594*53ee8cc1Swenshuai.xi /// @param u8Eng             \b IN: TSO engine ID
3595*53ee8cc1Swenshuai.xi /// @param pphyRead          \b OUT: pointer to store read address
3596*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3597*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3598*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3599*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS SYMBOL_WEAK MApi_DMX_TSO_Filein_GetReadAddr(MS_U8 u8Eng, MS_PHY* pphyRead);
3600*53ee8cc1Swenshuai.xi //----------------------------------------------------------
3601*53ee8cc1Swenshuai.xi 
3602*53ee8cc1Swenshuai.xi 
3603*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
3604*53ee8cc1Swenshuai.xi /// Get TSP firmware version.
3605*53ee8cc1Swenshuai.xi /// @ingroup TSP_General
3606*53ee8cc1Swenshuai.xi /// @param u32FWVer      \b OUT: TSP firmware version infomation
3607*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3608*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3609*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
3610*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_TSP_Get_FW_VER(MS_U32* u32FWVer);
3611*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3612*53ee8cc1Swenshuai.xi /// Set TSP Debug Level.
3613*53ee8cc1Swenshuai.xi /// @ingroup TSP_General
3614*53ee8cc1Swenshuai.xi /// @param  level    \b IN: debug level.
3615*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3616*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3617*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3618*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_SetDbgLevel(DMX_DBGMSG_LEVEL level);
3619*53ee8cc1Swenshuai.xi 
3620*53ee8cc1Swenshuai.xi //-----------------
3621*53ee8cc1Swenshuai.xi // TSP_Debug
3622*53ee8cc1Swenshuai.xi //-----------------
3623*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3624*53ee8cc1Swenshuai.xi /// Get interrupt count.
3625*53ee8cc1Swenshuai.xi /// @ingroup TSP_Debug
3626*53ee8cc1Swenshuai.xi /// @param pu32Count       \b OUT: interrupt count
3627*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3628*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3629*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3630*53ee8cc1Swenshuai.xi  DMX_FILTER_STATUS MApi_DMX_Get_Intr_Count(MS_U32* pu32Count);
3631*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
3632*53ee8cc1Swenshuai.xi /// Get TSP driver library information
3633*53ee8cc1Swenshuai.xi /// @ingroup TSP_General
3634*53ee8cc1Swenshuai.xi /// @param ppVersion      \b OUT: TSP library version infomation
3635*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3636*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3637*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
3638*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_GetLibVer(const MSIF_Version **ppVersion);
3639*53ee8cc1Swenshuai.xi 
3640*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3641*53ee8cc1Swenshuai.xi /// Get the register value of HW debug port .
3642*53ee8cc1Swenshuai.xi /// @ingroup TSP_Debug
3643*53ee8cc1Swenshuai.xi /// @param u32DbgSel       \b IN: Set which HW debug info you want to get. (ex: 0x4F, check TSIF0 data info)
3644*53ee8cc1Swenshuai.xi /// @param u32DbgInfo      \b OUT: pointer to store the debug port value
3645*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3646*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3647*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3648*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_GetDbgPortInfo(MS_U32 u32DbgSel,MS_U32* u32DbgInfo);
3649*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3650*53ee8cc1Swenshuai.xi /// Set memory buffer information for TSP AEON to print debug message.
3651*53ee8cc1Swenshuai.xi /// @ingroup TSP_Debug
3652*53ee8cc1Swenshuai.xi /// @param phyAddr         \b IN: physical address of buffer
3653*53ee8cc1Swenshuai.xi /// @param u32Size         \b IN: size of buffer
3654*53ee8cc1Swenshuai.xi /// @param u32DbgWord      \b IN: control word to filter debug message
3655*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3656*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3657*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3658*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_SetFwDbgParam(MS_PHY phyAddr, MS_U32 u32Size, MS_U32 u32DbgWord);
3659*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3660*53ee8cc1Swenshuai.xi /// Get dis-continue count by ts source and specific FIFO.
3661*53ee8cc1Swenshuai.xi /// @ingroup TSP_Debug
3662*53ee8cc1Swenshuai.xi /// @param pDmxInfo          \b IN: set control parameter to get related tsif packet count.
3663*53ee8cc1Swenshuai.xi /// @param pu32Cnt           \b OUT: dis-continue packet count
3664*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3665*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3666*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3667*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Get_DisContiCnt(DMX_DisContiCnt_info* pDmxInfo, MS_U32* pu32Cnt);
3668*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3669*53ee8cc1Swenshuai.xi /// Get drop packet count by ts source and specific FIFO.
3670*53ee8cc1Swenshuai.xi /// @ingroup TSP_Debug
3671*53ee8cc1Swenshuai.xi /// @param pDmxInfo          \b IN: set control parameter to get related source packet count.
3672*53ee8cc1Swenshuai.xi /// @param pu32Cnt           \b OUT: drop packet count
3673*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3674*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3675*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3676*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Get_DropPktCnt(DMX_DropPktCnt_info* pDmxInfo, MS_U32* pu32Cnt);
3677*53ee8cc1Swenshuai.xi 
3678*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3679*53ee8cc1Swenshuai.xi ///Get locked packet count by ts source and specific FIFO.
3680*53ee8cc1Swenshuai.xi /// @ingroup TSP_Debug
3681*53ee8cc1Swenshuai.xi /// @param pDmxInfo          \b IN: set control parameter to get related tsif packet count.
3682*53ee8cc1Swenshuai.xi /// @param pu32Cnt           \b OUT: Lock packet count
3683*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3684*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3685*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3686*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Get_LockPktCnt(DMX_LockPktCnt_info* pDmxInfo, MS_U32* pu32Cnt);
3687*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3688*53ee8cc1Swenshuai.xi ///Get dis-continue count by ts source and specific FIFO.
3689*53ee8cc1Swenshuai.xi /// @ingroup TSP_Debug
3690*53ee8cc1Swenshuai.xi /// @param DmxInfo           \b IN: set control parameter to get related source packet count.
3691*53ee8cc1Swenshuai.xi /// @param pu32Cnt           \b OUT: AV packet count
3692*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3693*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3694*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3695*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Get_AVPktCnt(DMX_AVPktCnt_info* DmxInfo, MS_U32* pu32Cnt);
3696*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3697*53ee8cc1Swenshuai.xi /// Get section TEI packet count by ts source.
3698*53ee8cc1Swenshuai.xi /// @ingroup TSP_Debug
3699*53ee8cc1Swenshuai.xi /// @param FltSrc               \b IN: TS source
3700*53ee8cc1Swenshuai.xi /// @param pu32PktCnt           \b OUT: TEI packet count
3701*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3702*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3703*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3704*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Get_SecTEI_PktCount(DMX_FILTER_TYPE FltSrc, MS_U32* pu32PktCnt);
3705*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3706*53ee8cc1Swenshuai.xi /// Reset section TEI packet count by DMX filter index.
3707*53ee8cc1Swenshuai.xi /// @ingroup TSP_Debug
3708*53ee8cc1Swenshuai.xi /// @param FltSrc               \b IN: TS source
3709*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3710*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3711*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3712*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Reset_SecTEI_PktCount(DMX_FILTER_TYPE FltSrc);
3713*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3714*53ee8cc1Swenshuai.xi /// Get section dis-continue packet count.
3715*53ee8cc1Swenshuai.xi /// @ingroup TSP_Debug
3716*53ee8cc1Swenshuai.xi /// @param u32DmxID         \b IN: DMX filter index
3717*53ee8cc1Swenshuai.xi /// @param pu32PktCnt       \b OUT: Dis-continue packet count
3718*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3719*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3720*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3721*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_Get_SecDisCont_PktCount(MS_U32 u32DmxID, MS_U32* pu32PktCnt);
3722*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3723*53ee8cc1Swenshuai.xi /// Reset section dis-continue packet count.
3724*53ee8cc1Swenshuai.xi /// @ingroup TSP_Debug
3725*53ee8cc1Swenshuai.xi /// @param u32DmxID      \b IN: DMX filter Id
3726*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3727*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3728*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3729*53ee8cc1Swenshuai.xi  DMX_FILTER_STATUS MApi_DMX_Reset_SecDisCont_PktCount(MS_U32 u32DmxID);
3730*53ee8cc1Swenshuai.xi //-----------------------------------------------------
3731*53ee8cc1Swenshuai.xi 
3732*53ee8cc1Swenshuai.xi //-----------------
3733*53ee8cc1Swenshuai.xi // TSP_FIQ
3734*53ee8cc1Swenshuai.xi //-----------------
3735*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3736*53ee8cc1Swenshuai.xi /// Enable/Disable section filter rush pass.
3737*53ee8cc1Swenshuai.xi /// @ingroup TSP_FIQ
3738*53ee8cc1Swenshuai.xi /// @param u32DmxId      \b IN: DMX filter Id
3739*53ee8cc1Swenshuai.xi /// @param u8Enable      \b IN: TRUE: enable, FALSE: disable
3740*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3741*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3742*53ee8cc1Swenshuai.xi /// @note Now only TSP 2.0 & TSP 4.0 support it.
3743*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3744*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS SYMBOL_WEAK MApi_DMX_FQ_SetFltRushPass(MS_U32 u32DmxId, MS_U8 u8Enable);
3745*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3746*53ee8cc1Swenshuai.xi /// Initialize Demux API for FIQ Enable.
3747*53ee8cc1Swenshuai.xi /// @ingroup TSP_FIQ
3748*53ee8cc1Swenshuai.xi /// @param u32FQEng       \b IN: FQ engine id
3749*53ee8cc1Swenshuai.xi /// @param pFQInfo        \b IN: Init FQ Setting
3750*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3751*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3752*53ee8cc1Swenshuai.xi /// @note if want to use FQ, please call this API after calling MApi_DMX_Init. (FQ does not support for all chip)
3753*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3754*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS SYMBOL_WEAK MApi_DMX_FQ_Init(MS_U32 u32FQEng, DMX_FQ_Info* pFQInfo);
3755*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3756*53ee8cc1Swenshuai.xi /// Finalize Demux API for FIQ.
3757*53ee8cc1Swenshuai.xi /// @ingroup TSP_FIQ
3758*53ee8cc1Swenshuai.xi /// @param u32FQEng       \b IN: FQ engine id
3759*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3760*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3761*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3762*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS SYMBOL_WEAK MApi_DMX_FQ_Exit(MS_U32 u32FQEng);
3763*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3764*53ee8cc1Swenshuai.xi /// Enable FIQ rush function.
3765*53ee8cc1Swenshuai.xi /// @ingroup TSP_FIQ
3766*53ee8cc1Swenshuai.xi /// @param u32FQEng       \b IN: FQ engine id
3767*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3768*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3769*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3770*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS SYMBOL_WEAK MApi_DMX_FQ_RushEnable(MS_U32 u32FQEng);
3771*53ee8cc1Swenshuai.xi 
3772*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3773*53ee8cc1Swenshuai.xi /// Select path to skip rush data.
3774*53ee8cc1Swenshuai.xi /// @ingroup TSP_FIQ
3775*53ee8cc1Swenshuai.xi /// @param u32FQEng       \b IN: FQ engine id
3776*53ee8cc1Swenshuai.xi /// @param eSkipPath      \b IN: Select path to skip rush data
3777*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3778*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3779*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3780*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS SYMBOL_WEAK MApi_DMX_FQ_SkipRushData(MS_U32 u32FQEng, DMX_FQ_SkipPath eSkipPath);
3781*53ee8cc1Swenshuai.xi //-----------------------------------------------------
3782*53ee8cc1Swenshuai.xi 
3783*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3784*53ee8cc1Swenshuai.xi /// Configure FIQ
3785*53ee8cc1Swenshuai.xi /// @ingroup TSP_FIQ
3786*53ee8cc1Swenshuai.xi /// @param pstFqCfg                         \b IN/OUT: Pointer of storing configure data
3787*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3788*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3789*53ee8cc1Swenshuai.xi /// @note
3790*53ee8cc1Swenshuai.xi /// E_DMX_FQ_CFG_SEL_SRCMUX --> Set eFqSrcSel to select FQ source of TS path
3791*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3792*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS SYMBOL_WEAK MApi_DMX_FQ_Configure(DMX_FQ_Cfg* pstFqCfg);
3793*53ee8cc1Swenshuai.xi 
3794*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3795*53ee8cc1Swenshuai.xi /// Set rush start address in the FIQ buffer.
3796*53ee8cc1Swenshuai.xi /// @ingroup TSP_FIQ
3797*53ee8cc1Swenshuai.xi /// @param u32FQEng        \b IN: FQ engine id
3798*53ee8cc1Swenshuai.xi /// @param phyRushAddr     \b IN: Rush start address in the FIQ buffer
3799*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK    - Success
3800*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3801*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3802*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS SYMBOL_WEAK MApi_DMX_FQ_SetRushAddr(MS_U32 u32FQEng, MS_PHY phyRushAddr);
3803*53ee8cc1Swenshuai.xi 
3804*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3805*53ee8cc1Swenshuai.xi /// Get FIQ File-in read pointer
3806*53ee8cc1Swenshuai.xi /// @ingroup TSP_FIQ
3807*53ee8cc1Swenshuai.xi /// @param u32FQEng        \b IN : FQ engine id
3808*53ee8cc1Swenshuai.xi /// @param pphyRead        \b OUT: The pointer to store the obtained FIQ File-in read pointer
3809*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK    - Success
3810*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3811*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3812*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS SYMBOL_WEAK MApi_DMX_FQ_ReadGet(MS_U32 u32FQEng, MS_PHY* pphyRead);
3813*53ee8cc1Swenshuai.xi 
3814*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3815*53ee8cc1Swenshuai.xi /// Get FIQ PVR write pointer
3816*53ee8cc1Swenshuai.xi /// @ingroup TSP_FIQ
3817*53ee8cc1Swenshuai.xi /// @param u32FQEng        \b IN : FQ engine id
3818*53ee8cc1Swenshuai.xi /// @param pphyWrite       \b OUT: The pointer to store the obtained FIQ PVR write pointer
3819*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK    - Success
3820*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3821*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3822*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS SYMBOL_WEAK MApi_DMX_FQ_WriteGet(MS_U32 u32FQEng, MS_PHY* pphyWrite);
3823*53ee8cc1Swenshuai.xi 
3824*53ee8cc1Swenshuai.xi //-----------------
3825*53ee8cc1Swenshuai.xi // TSP_Merge
3826*53ee8cc1Swenshuai.xi //-----------------
3827*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3828*53ee8cc1Swenshuai.xi /// Set or Get merge stream source id and sync byte
3829*53ee8cc1Swenshuai.xi /// @ingroup TSP_Merge
3830*53ee8cc1Swenshuai.xi /// @param eIf                    \b IN:  Eunm value of DMX TSIF selection
3831*53ee8cc1Swenshuai.xi /// @param u8StrId                \b IN:  Stream index
3832*53ee8cc1Swenshuai.xi /// @param pu8SyncByte            \b IN:  Pointer to sync bytearray of merege streams
3833*53ee8cc1Swenshuai.xi /// @param bSet                   \b IN:  TRUE to setting data or FALSE to getting table
3834*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3835*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3836*53ee8cc1Swenshuai.xi /// @note: Currently, maxmum number is 8, and don't call this API when stream processing is started
3837*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3838*53ee8cc1Swenshuai.xi  DMX_FILTER_STATUS SYMBOL_WEAK MApi_DMX_MStr_SyncByte(DMX_TSIF eIf, MS_U8 u8StrId, MS_U8* pu8SyncByte, MS_BOOL bSet);
3839*53ee8cc1Swenshuai.xi //-----------------------------------------------------
3840*53ee8cc1Swenshuai.xi 
3841*53ee8cc1Swenshuai.xi //-----------------
3842*53ee8cc1Swenshuai.xi // Policy Manager
3843*53ee8cc1Swenshuai.xi //-----------------
3844*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3845*53ee8cc1Swenshuai.xi /// Get pipe id
3846*53ee8cc1Swenshuai.xi /// @param eGroup                           \b IN: Pipe Group
3847*53ee8cc1Swenshuai.xi /// @param EngId                            \b IN: Engine id
3848*53ee8cc1Swenshuai.xi /// @param pu32PipeId                       \b OUT: Pointer to store pipe id
3849*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3850*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3851*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3852*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS SYMBOL_WEAK MApi_DMX_Get_PipeId(DMX_PIPEID_GROUP eGroup, DMX_GENERAL_ENGID EngId, MS_U32 *pu32PipeId);
3853*53ee8cc1Swenshuai.xi 
3854*53ee8cc1Swenshuai.xi //---  Common Interface for TSP config and Api commands ------------//
3855*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3856*53ee8cc1Swenshuai.xi /// General function for set cmd or get infomation.
3857*53ee8cc1Swenshuai.xi /// @ingroup TSP_Debug
3858*53ee8cc1Swenshuai.xi /// @param u32Cmd          \b IN: DMX filter Id
3859*53ee8cc1Swenshuai.xi /// @param u32Config       \b IN: Config 0 (define by case)
3860*53ee8cc1Swenshuai.xi /// @param u32DataNum   \b IN: Config 0 (define by case)
3861*53ee8cc1Swenshuai.xi /// @param pData             \b OUT: Output data
3862*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_OK - Success
3863*53ee8cc1Swenshuai.xi /// @return DMX_FILTER_STATUS_ERROR - Failure
3864*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
3865*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_CMD_Run(MS_U32 u32Cmd, MS_U32 u32Config, MS_U32 u32DataNum, void *pData);
3866*53ee8cc1Swenshuai.xi 
3867*53ee8cc1Swenshuai.xi //u32Cmd of MApi_DMX_CMD_Run(MS_U32 u32Cmd, MS_U32 u32Config, MS_U32 u32DataNum, void *pData);
3868*53ee8cc1Swenshuai.xi #define DMX_CMD_RUN_DISABLE_SEC_CC_CHECK                0x00000001 //[u32Config]: 1-> Disable cc check on fw; 0-> Enable cc check on fw; [u32DataNum,*pData] do not use
3869*53ee8cc1Swenshuai.xi #define DMX_CMD_SET_PESCPY_CONT_MODE                    0x00000010 //[u32Config]: 0-> Disable; 1 -> Enable
3870*53ee8cc1Swenshuai.xi     #define DMX_CMD_PESCPY_CONT_MODE_DISABLE            0
3871*53ee8cc1Swenshuai.xi     #define DMX_CMD_PESCPY_CONT_MODE_ENABLE             1
3872*53ee8cc1Swenshuai.xi #define DMX_CMD_ENABLE_INIT_REF_CNT                     0x00000100 //[u32Config]: 1-> Enable DMX init reference counter; 0-> Disable DMX init reference counter
3873*53ee8cc1Swenshuai.xi #define DMX_CMD_STC_ADJUST_UNIT                         0x00000020 //[u32Config]: data
3874*53ee8cc1Swenshuai.xi #define DMX_CMD_PVR_PES_MODE                            0x00000030  //u32Config: PVR EngineID, u32DataNum=1, *pData = 1 is enable, pData = 0 is disable
3875*53ee8cc1Swenshuai.xi 
3876*53ee8cc1Swenshuai.xi #if 0
3877*53ee8cc1Swenshuai.xi DMX_FILTER_STATUS MApi_DMX_ResetFileinTimestamp(void)
3878*53ee8cc1Swenshuai.xi #endif
3879*53ee8cc1Swenshuai.xi 
3880*53ee8cc1Swenshuai.xi 
3881*53ee8cc1Swenshuai.xi #ifdef __cplusplus
3882*53ee8cc1Swenshuai.xi }
3883*53ee8cc1Swenshuai.xi #endif
3884*53ee8cc1Swenshuai.xi 
3885*53ee8cc1Swenshuai.xi #endif // #ifndef __API_DMX_H__
3886