// //****************************************************************************** // MStar Software // Copyright (c) 2010 - 2012 MStar Semiconductor, Inc. All rights reserved. // All software, firmware and related documentation herein ("MStar Software") are // intellectual property of MStar Semiconductor, Inc. ("MStar") and protected by // law, including, but not limited to, copyright law and international treaties. // Any use, modification, reproduction, retransmission, or republication of all // or part of MStar Software is expressly prohibited, unless prior written // permission has been granted by MStar. // // By accessing, browsing and/or using MStar Software, you acknowledge that you // have read, understood, and agree, to be bound by below terms ("Terms") and to // comply with all applicable laws and regulations: // // 1. MStar shall retain any and all right, ownership and interest to MStar // Software and any modification/derivatives thereof. // No right, ownership, or interest to MStar Software and any // modification/derivatives thereof is transferred to you under Terms. // // 2. You understand that MStar Software might include, incorporate or be // supplied together with third party`s software and the use of MStar // Software may require additional licenses from third parties. // Therefore, you hereby agree it is your sole responsibility to separately // obtain any and all third party right and license necessary for your use of // such third party`s software. // // 3. MStar Software and any modification/derivatives thereof shall be deemed as // MStar`s confidential information and you agree to keep MStar`s // confidential information in strictest confidence and not disclose to any // third party. // // 4. MStar Software is provided on an "AS IS" basis without warranties of any // kind. Any warranties are hereby expressly disclaimed by MStar, including // without limitation, any warranties of merchantability, non-infringement of // intellectual property rights, fitness for a particular purpose, error free // and in conformity with any international standard. You agree to waive any // claim against MStar for any loss, damage, cost or expense that you may // incur related to your use of MStar Software. // In no event shall MStar be liable for any direct, indirect, incidental or // consequential damages, including without limitation, lost of profit or // revenues, lost or damage of data, and unauthorized system use. // You agree that this Section 4 shall still apply without being affected // even if MStar Software has been modified by MStar in accordance with your // request or instruction for your use, except otherwise agreed by both // parties in writing. // // 5. If requested, MStar may from time to time provide technical supports or // services in relation with MStar Software to you for your use of // MStar Software in conjunction with your or your customer`s product // ("Services"). // You understand and agree that, except otherwise agreed by both parties in // writing, Services are provided on an "AS IS" basis and the warranty // disclaimer set forth in Section 4 above shall apply. // // 6. Nothing contained herein shall be construed as by implication, estoppels // or otherwise: // (a) conferring any license or right to use MStar name, trademark, service // mark, symbol or any other identification; // (b) obligating MStar or any of its affiliates to furnish any person, // including without limitation, you and your customers, any assistance // of any kind whatsoever, or any information; or // (c) conferring any license or right under any intellectual property right. // // 7. These terms shall be governed by and construed in accordance with the laws // of Taiwan, R.O.C., excluding its conflict of law rules. // Any and all dispute arising out hereof or related hereto shall be finally // settled by arbitration referred to the Chinese Arbitration Association, // Taipei in accordance with the ROC Arbitration Law and the Arbitration // Rules of the Association by three (3) arbitrators appointed in accordance // with the said Rules. // The place of arbitration shall be in Taipei, Taiwan and the language shall // be English. // The arbitration award shall be final and binding to both parties. // //****************************************************************************** // //////////////////////////////////////////////////////////////////////////////// // // Copyright (c) 2008-2009 MStar Semiconductor, Inc. // All rights reserved. // // Unless otherwise stipulated in writing, any and all information contained // herein regardless in any format shall remain the sole proprietary of // MStar Semiconductor Inc. and be kept in strict confidence // ("MStar Confidential Information") by the recipient. // Any unauthorized act including without limitation unauthorized disclosure, // copying, use, reproduction, sale, distribution, modification, disassembling, // reverse engineering and compiling of the contents of MStar Confidential // Information is unlawful and strictly prohibited. MStar hereby reserves the // rights to any and all damages, losses, costs and expenses resulting therefrom. // //////////////////////////////////////////////////////////////////////////////// #ifndef _DRV_AUDIO_IF_H_ #define _DRV_AUDIO_IF_H_ #include "MsTypes.h" #ifdef __cplusplus extern "C" { #endif //------------------------------------------------------------------------------------------------- // Macro and Define //------------------------------------------------------------------------------------------------- //CathyRemove #define drvMAD_STOP 0x0 #define AUD_CAP_VERSION 1 #define AUDIO_BIFROST_TEST_SUPPORT_VERSION 2 #define HDMI_Tx_HD 1 #define HDMI_Tx_DTS_HD 1 //================================================================ // HDMI PC Define //================================================================ #define AU_HDMI_AC3 0x01 #define AU_HDMI_AC3P 0x15 #define AU_HDMI_DTS_TYPE1 0x0B #define AU_HDMI_DTS_TYPE2 0x0C #define AU_HDMI_DTS_TYPE3 0x0D //================================================================ // Common PCM I/O DEFINE //================================================================ #define AUDIO_PCM_INFO_VERSION 2 #define AUDIO_HW_DMA_READER1 "HW DMA Reader1" #define AUDIO_HW_DMA_READER2 "HW DMA Reader2" #define AUDIO_SW_DMA_READER1 "SW DMA Reader1" #define AUDIO_R2_DMA_READER1 "R2 DMA Reader1" #define AUDIO_R2_DMA_READER2 "R2 DMA Reader2" #define AUDIO_PCM_CAPTURE1 "PCM Capture1" #define AUDIO_PCM_CAPTURE2 "PCM Capture2" #define AUDIO_HW_DMA_WRITER1 "HW DMA Writer1" #define A_EPERM 1 /* Operation not permitted */ #define A_ENOMEM 12 /* Out of memory */ #define A_EFAULT 14 /* Bad address */ #define A_EBUSY 16 /* Device or resource busy */ #define A_ENODEV 19 /* No such device */ #define A_EINVAL 22 /* Invalid argument */ //================================================================ // Structure //================================================================ typedef struct { MS_U32 u32Addr; MS_U32 u32Size; MS_U64 u64Idx; }AU_DVB_ENC_FRAME_INFO, *PAU_DVB_ENC_FRAME_INFO; typedef struct { MS_U32 u32Addr; MS_U32 u32Size; MS_U32 u32Idx; }AUDIO_UPLOAD_INFO, *PAUDIO_UPLOAD_INFO; typedef enum { AUDIO_COEF_PREVER_PEQ, //for compatible with PEQ of previous version AUDIO_COEF_PEQ, AUDIO_COEF_HPF, AUDIO_COEF_BASS, AUDIO_COEF_TREBLE, }AUDIO_COEF_TYPE; typedef enum { AUDIO_SINGLE_PRECISION, AUDIO_DOUBLE_PRECISION, }AUDIO_PRECISION_TYPE; typedef struct { MS_U8 band; ///< band MS_U8 sfs; ///< fs MS_U8 scale; ///< scale MS_U32 a0; ///< a0 MS_U32 a1; ///< a1 MS_U32 a2; ///< a2 MS_U32 b1; ///< b1 MS_U32 b2; ///< b2 AUDIO_COEF_TYPE type; /// PEQ, HPF or tone MS_BOOL enable; /// PEQ band enable AUDIO_PRECISION_TYPE precision; /// PEQ filter precision } AUDIO_PEQ_COEF, *PAUDIO_PEQ_COEF; typedef struct __attribute__((packed)) { MS_U32 u32AudioCapsVersion; MS_U32 u32AudioCapsStructSize; MS_U8 u8MaxDecoderNum; MS_U8 u8MaxDmaReaderNum; MS_BOOL bIsADSupported; MS_BOOL bIsPusiDetectSupported; MS_BOOL bIsMpegSupported; MS_BOOL bIsAc3Supported; MS_BOOL bIsAc3pSupported; MS_BOOL bIsAacSupported; MS_BOOL bIsMp3Supported; MS_BOOL bIsWmaSupported; MS_BOOL bIsRa8LbrSupported; MS_BOOL bIsXpcmSupported; MS_BOOL bIsDtsSupported; MS_BOOL bIsWmaProSupported; MS_BOOL bIsFlacSupported; MS_BOOL bIsVorbisSupported; MS_BOOL bIsDtsLbrSupported; MS_BOOL bIsAmrNbSupported; MS_BOOL bIsAmrWbSupported; MS_BOOL bIsDraSupported; /* * Note!!! * * 1. No matter what kind of modification in this structure, "AUD_CAP_VERSION" must be updated as well!!! * * 2. The element in this structure can only be added, never removed!!! * */ } AUDIO_CAPABILITIES; typedef struct { MS_U32 u32StructVersion; /* version number of this data structure */ MS_U32 u32StructSize; /* size of this data structure */ MS_U8 u8ConnectFlag; /* it is TRUE when opened */ MS_U8 u8StartFlag; /* it is TRUE when started and opened */ MS_U8 u8Name[32]; /* The PCM name requested (only 32 bytes, if change this length, must change u8Name of AUDIO_PCM_INFO_t as well!) */ MS_U8 u8NonBlockingFlag; /* it is TRUE when request for nonblocking mode */ MS_U8 u8MultiChFlag; /* it is TRUE when request for a multi-channel PCM IO */ MS_U8 u8MixingFlag; /* it is TRUE when request for a mixing PCM IO */ MS_U32 u32MixingGroup; /* PCM mixing group, i.e. AUDIO_PCMMIXER_GROUP_ALL */ MS_S8 *pBuffer; /* PCM buffer address */ MS_S8 *pReadPtr; /* PCM read pointer */ MS_S8 *pWritePtr; /* PCM write pointer */ MS_U32 u32BufferDuration; /* PCM buffer size in mini-second unit, and up to a maximun size */ MS_U32 u32Channel; /* PCM channel number */ MS_U32 u32SampleRate; /* PCM sample rate */ MS_U32 u32BitWidth; /* PCM sample's bit width of each channel */ MS_U32 u32BigEndien; /* PCM endien, TRUE means Big Endien, FALSE means Little Endien */ MS_U32 u32Timestamp; /* PCM timestamp */ MS_U32 u32Weighting; /* PCM weighting for mixing case, differs from volume it's an extra attenuation for PCM level, the range is 0~100, and 100 means no any attenuation */ MS_U32 u32Volume; /* PCM volume, the range is 0 ~ 1016, and 96 means 0dB */ MS_U32 u32BufferLevel; /* PCM bufffer level in byte unit */ /* * Note!!! * * 1. No matter what kind of modification in this structure, "AUDIO_PCM_INFO_VERSION" must be updated as well!!! * * 2. The element in this structure can only be added, never removed!!! * */ } AUDIO_PCM_INFO_t; //================================================================ // Enum //================================================================ //================================================================ // AuCommon //================================================================ typedef enum { AUDIO_PATH_GROUP_1, AUDIO_PATH_GROUP_2, AUDIO_PATH_GROUP_3, }AUDIO_PATH_GROUP_TYPE; ///