1/* ------------------------------------------------------------------ 2 * Copyright (C) 1998-2009 PacketVideo 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 13 * express or implied. 14 * See the License for the specific language governing permissions 15 * and limitations under the License. 16 * ------------------------------------------------------------------- 17 */ 18/* 19------------------------------------------------------------------------------ 20 PacketVideo Corp. 21 MP3 Decoder Library 22 23 Filename: pvmp3_decode_header.h 24 25 Date: 09/21/2007 26 27------------------------------------------------------------------------------ 28 REVISION HISTORY 29 30 Description: 31 32------------------------------------------------------------------------------ 33 INCLUDE DESCRIPTION 34 35------------------------------------------------------------------------------ 36*/ 37 38/*---------------------------------------------------------------------------- 39; CONTINUE ONLY IF NOT ALREADY DEFINED 40----------------------------------------------------------------------------*/ 41#ifndef PVMP3_POLYPHASE_FILTER_WINDOW_H 42#define PVMP3_POLYPHASE_FILTER_WINDOW_H 43 44/*---------------------------------------------------------------------------- 45; INCLUDES 46----------------------------------------------------------------------------*/ 47 48#include "pvmp3_audio_type_defs.h" 49#include "s_tmp3dec_chan.h" 50 51/*---------------------------------------------------------------------------- 52; MACROS 53; Define module specific macros here 54----------------------------------------------------------------------------*/ 55 56/*---------------------------------------------------------------------------- 57; DEFINES 58; Include all pre-processor statements here. 59----------------------------------------------------------------------------*/ 60#define MAX_16BITS_INT 0x7FFF 61 62/*---------------------------------------------------------------------------- 63; EXTERNAL VARIABLES REFERENCES 64; Declare variables used in this module but defined elsewhere 65----------------------------------------------------------------------------*/ 66 67/*---------------------------------------------------------------------------- 68; SIMPLE TYPEDEF'S 69----------------------------------------------------------------------------*/ 70 71/*---------------------------------------------------------------------------- 72; ENUMERATED TYPEDEF'S 73----------------------------------------------------------------------------*/ 74 75/*---------------------------------------------------------------------------- 76; STRUCTURES TYPEDEF'S 77----------------------------------------------------------------------------*/ 78 79/*---------------------------------------------------------------------------- 80; GLOBAL FUNCTION DEFINITIONS 81; Function Prototype declaration 82----------------------------------------------------------------------------*/ 83 84#ifdef __cplusplus 85extern "C" 86{ 87#endif 88 89 90#if (defined(PV_ARM_V5)||defined(PV_ARM_V4)) 91 92 93 __inline int16 saturate16(int32 sample) 94 { 95 int32 a; 96 int32 b = 31; 97 __asm 98 { 99 mov a, sample, asr#15 100 teq a, sample, asr b 101 eorne sample, MAX_16BITS_INT, sample, asr#31 102 } 103 return sample ; 104 } 105 106#else 107 108 inline int16 saturate16(int32 sample) 109 { 110 111 if ((sample >> 15) ^(sample >> 31)) 112 { 113 sample = MAX_16BITS_INT ^(sample >> 31); 114 } 115 return sample; 116 117 } 118#endif 119 120 121 void pvmp3_polyphase_filter_window(int32 *synth_buffer, 122 int16 *outPcm, 123 int32 numChannels); 124 125 126#ifdef __cplusplus 127} 128#endif 129 130/*---------------------------------------------------------------------------- 131; END 132----------------------------------------------------------------------------*/ 133#endif 134 135 136 137 138 139