/*----------------------------------------------------------------------------*
 * No Warranty                                                                *
 * Except as may be otherwise agreed to in writing, no warranties of any      *
 * kind, whether express or implied, are given by MTK with respect to any MTK *
 * Deliverables or any use thereof, and MTK Deliverables are provided on an   *
 * "AS IS" basis.  MTK hereby expressly disclaims all such warranties,        *
 * including any implied warranties of merchantability, non-infringement and  *
 * fitness for a particular purpose and any warranties arising out of course  *
 * of performance, course of dealing or usage of trade.  Parties further      *
 * acknowledge that Company may, either presently and/or in the future,       *
 * instruct MTK to assist it in the development and the implementation, in    *
 * accordance with Company's designs, of certain softwares relating to        *
 * Company's product(s) (the "Services").  Except as may be otherwise agreed  *
 * to in writing, no warranties of any kind, whether express or implied, are  *
 * given by MTK with respect to the Services provided, and the Services are   *
 * provided on an "AS IS" basis.  Company further acknowledges that the       *
 * Services may contain errors, that testing is important and Company is      *
 * solely responsible for fully testing the Services and/or derivatives       *
 * thereof before they are used, sublicensed or distributed.  Should there be *
 * any third party action brought against MTK, arising out of or relating to  *
 * the Services, Company agree to fully indemnify and hold MTK harmless.      *
 * If the parties mutually agree to enter into or continue a business         *
 * relationship or other arrangement, the terms and conditions set forth      *
 * hereunder shall remain effective and, unless explicitly stated otherwise,  *
 * shall prevail in the event of a conflict in the terms in any agreements    *
 * entered into between the parties.                                          *
 *---------------------------------------------------------------------------*/
/*-----------------------------------------------------------------------------
 * Copyright (c) 2005, MediaTek, Inc.
 * All rights reserved.
 *
 * Unauthorized use, practice, perform, copy, distribution, reproduction,
 * or disclosure of this information in whole or in part is prohibited.
 *-----------------------------------------------------------------------------
 * $RCSfile: x_mux_util.h,v $
 * $Revision: #1 $
 * $Date: 2015/05/29 $
 * $Author: brianpc.huang $
 * $CCRevision: /main/DTV_X_HQ_int/5 $
 * $SWAuthor: Clear Case Administrator $
 * $MD5HEX: e5a2644d77eac094a5d2aa1496612a57 $
 *
 * Description:
 *         This contains Record Utility exported macros, definitons,
 *         and structures.
 *---------------------------------------------------------------------------*/

#ifndef _X_MUX_UTIL_H_
#define _X_MUX_UTIL_H_

/*-----------------------------------------------------------------------------
                    include files
-----------------------------------------------------------------------------*/
#include "u_mux_util.h"
#include "u_common.h"
#include "u_handle.h"


/*-----------------------------------------------------------------------------
                    Functions declarations
-----------------------------------------------------------------------------*/
extern INT32 x_mux_util_init( const MUX_UTIL_SYS_CONFIG_T* pt_sys_cfg );

extern INT32 x_mux_util_deinit(VOID);

extern INT32 x_mux_util_open( MUX_UTIL_PARAM_T* pt_mux_param,
                                    HANDLE_T*    ph_mux );

extern INT32 x_mux_util_start( HANDLE_T  h_mux,
                                    VOID*    pv_info );

extern INT32 x_mux_util_stop( HANDLE_T   h_mux,
                                   VOID*      pv_info );


extern INT32 x_mux_util_get( HANDLE_T            h_mux,
                                  MUX_UTIL_GET_TYPE_T t_type,
                                  SIZE_T*             pz_info_size,
                                  VOID*               pv_info );

extern INT32 x_mux_util_set( HANDLE_T            h_mux,
                                  MUX_UTIL_GET_TYPE_T t_type,
                                  SIZE_T*             pz_info_size,
                                  VOID*               pv_info );
extern INT32 x_mux_util_close( HANDLE_T  h_mux,
                                    VOID*      pv_info );

extern INT32 x_mux_util_open_64( MUX_UTIL_PARAM_EX_T*   pt_mux_param_ex,
                             HANDLE_T*           ph_mux );

extern INT32 x_mux_util_get_64( HANDLE_T  h_mux,
                            MUX_UTIL_GET_TYPE_T t_type,
                            UINT32*             pz_info_size,
                            UNION_POINTER_T       pv_info );

extern INT32 x_mux_util_set_64( HANDLE_T h_mux,
                           MUX_UTIL_SET_TYPE_T t_type,
                           UINT32*               pz_info_size,
                           UNION_POINTER_T         pv_info );

#endif /*end of _X_MUX_UTIL_H_ */


