/* ------------------------------------------------------------------ * Copyright (C) 1998-2009 PacketVideo * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. * See the License for the specific language governing permissions * and limitations under the License. * ------------------------------------------------------------------- */ /* ------------------------------------------------------------------------------ PacketVideo Corp. MP3 Decoder Library Filename: pvmp3_decode_header.h Date: 09/21/2007 ------------------------------------------------------------------------------ REVISION HISTORY Description: ------------------------------------------------------------------------------ INCLUDE DESCRIPTION ------------------------------------------------------------------------------ */ /*---------------------------------------------------------------------------- ; CONTINUE ONLY IF NOT ALREADY DEFINED ----------------------------------------------------------------------------*/ #ifndef PVMP3_POLYPHASE_FILTER_WINDOW_H #define PVMP3_POLYPHASE_FILTER_WINDOW_H /*---------------------------------------------------------------------------- ; INCLUDES ----------------------------------------------------------------------------*/ #include "pvmp3_audio_type_defs.h" #include "s_tmp3dec_chan.h" /*---------------------------------------------------------------------------- ; MACROS ; Define module specific macros here ----------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------- ; DEFINES ; Include all pre-processor statements here. ----------------------------------------------------------------------------*/ #define MAX_16BITS_INT 0x7FFF /*---------------------------------------------------------------------------- ; EXTERNAL VARIABLES REFERENCES ; Declare variables used in this module but defined elsewhere ----------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------- ; SIMPLE TYPEDEF'S ----------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------- ; ENUMERATED TYPEDEF'S ----------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------- ; STRUCTURES TYPEDEF'S ----------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------- ; GLOBAL FUNCTION DEFINITIONS ; Function Prototype declaration ----------------------------------------------------------------------------*/ #ifdef __cplusplus extern "C" { #endif #if (defined(PV_ARM_V5)||defined(PV_ARM_V4)) __inline int16 saturate16(int32 sample) { int32 a; int32 b = 31; __asm { mov a, sample, asr#15 teq a, sample, asr b eorne sample, MAX_16BITS_INT, sample, asr#31 } return sample ; } #else inline int16 saturate16(int32 sample) { if ((sample >> 15) ^(sample >> 31)) { sample = MAX_16BITS_INT ^(sample >> 31); } return sample; } #endif void pvmp3_polyphase_filter_window(int32 *synth_buffer, int16 *outPcm, int32 numChannels); #ifdef __cplusplus } #endif /*---------------------------------------------------------------------------- ; END ----------------------------------------------------------------------------*/ #endif