1*aef9bcd9SKiyoung Kim /* 2*aef9bcd9SKiyoung Kim * Copyright (C) 2003 - 2016 Sony Corporation 3*aef9bcd9SKiyoung Kim * 4*aef9bcd9SKiyoung Kim * Licensed under the Apache License, Version 2.0 (the "License"); 5*aef9bcd9SKiyoung Kim * you may not use this file except in compliance with the License. 6*aef9bcd9SKiyoung Kim * You may obtain a copy of the License at 7*aef9bcd9SKiyoung Kim * 8*aef9bcd9SKiyoung Kim * http://www.apache.org/licenses/LICENSE-2.0 9*aef9bcd9SKiyoung Kim * 10*aef9bcd9SKiyoung Kim * Unless required by applicable law or agreed to in writing, software 11*aef9bcd9SKiyoung Kim * distributed under the License is distributed on an "AS IS" BASIS, 12*aef9bcd9SKiyoung Kim * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*aef9bcd9SKiyoung Kim * See the License for the specific language governing permissions and 14*aef9bcd9SKiyoung Kim * limitations under the License. 15*aef9bcd9SKiyoung Kim */ 16*aef9bcd9SKiyoung Kim 17*aef9bcd9SKiyoung Kim #ifndef _STRUCT_H 18*aef9bcd9SKiyoung Kim #define _STRUCT_H 19*aef9bcd9SKiyoung Kim 20*aef9bcd9SKiyoung Kim #include <stdio.h> 21*aef9bcd9SKiyoung Kim #include <stdlib.h> 22*aef9bcd9SKiyoung Kim #include <string.h> 23*aef9bcd9SKiyoung Kim #include <math.h> 24*aef9bcd9SKiyoung Kim 25*aef9bcd9SKiyoung Kim /*************************************************************************************************** 26*aef9bcd9SKiyoung Kim Macro Definition 27*aef9bcd9SKiyoung Kim ***************************************************************************************************/ 28*aef9bcd9SKiyoung Kim 29*aef9bcd9SKiyoung Kim #define DECLFUNC static 30*aef9bcd9SKiyoung Kim #define UNUSED_ATTR __attribute__((unused)) 31*aef9bcd9SKiyoung Kim 32*aef9bcd9SKiyoung Kim #ifndef PI 33*aef9bcd9SKiyoung Kim #ifdef M_PI 34*aef9bcd9SKiyoung Kim #define PI M_PI 35*aef9bcd9SKiyoung Kim #else /* M_PI */ 36*aef9bcd9SKiyoung Kim #define PI (double)(3.14159265358979323846) 37*aef9bcd9SKiyoung Kim #endif /* M_PI */ 38*aef9bcd9SKiyoung Kim #endif /* PI */ 39*aef9bcd9SKiyoung Kim 40*aef9bcd9SKiyoung Kim /*************************************************************************************************** 41*aef9bcd9SKiyoung Kim Type Definition 42*aef9bcd9SKiyoung Kim ***************************************************************************************************/ 43*aef9bcd9SKiyoung Kim typedef unsigned char STREAM; 44*aef9bcd9SKiyoung Kim 45*aef9bcd9SKiyoung Kim typedef short INT16; 46*aef9bcd9SKiyoung Kim typedef int INT32; 47*aef9bcd9SKiyoung Kim typedef unsigned int UINT32; 48*aef9bcd9SKiyoung Kim typedef long long INT64; 49*aef9bcd9SKiyoung Kim 50*aef9bcd9SKiyoung Kim typedef float SCALAR; 51*aef9bcd9SKiyoung Kim #define _scalar(x) x##f 52*aef9bcd9SKiyoung Kim typedef union { 53*aef9bcd9SKiyoung Kim float f; 54*aef9bcd9SKiyoung Kim int i; 55*aef9bcd9SKiyoung Kim } IEEE754_FI; 56*aef9bcd9SKiyoung Kim 57*aef9bcd9SKiyoung Kim /*************************************************************************************************** 58*aef9bcd9SKiyoung Kim Macro Functions 59*aef9bcd9SKiyoung Kim ***************************************************************************************************/ 60*aef9bcd9SKiyoung Kim /* Buffer Operations */ 61*aef9bcd9SKiyoung Kim #define clear_data_ldac(p, n) memset((p), 0, (n)) 62*aef9bcd9SKiyoung Kim #define clear_seq_s_ldac(p, n) memset((char *)(p), 0, (n)*sizeof(short)) 63*aef9bcd9SKiyoung Kim #define clear_seq_l_ldac(p, n) memset((char *)(p), 0, (n)*sizeof(int)) 64*aef9bcd9SKiyoung Kim #define clear_seq_f_ldac(p, n) memset((char *)(p), 0, (n)*sizeof(SCALAR)) 65*aef9bcd9SKiyoung Kim 66*aef9bcd9SKiyoung Kim #if _MSC_VER >=1400 67*aef9bcd9SKiyoung Kim /* Secured CRT Functions */ 68*aef9bcd9SKiyoung Kim #define copy_data_ldac(p1, p2, n) memcpy_s((p2), (n), (p1), (n)) 69*aef9bcd9SKiyoung Kim #define copy_seq_s_ldac(p1, p2, n) memcpy_s((p2), (n)*sizeof(short), (p1), (n)*sizeof(short)) 70*aef9bcd9SKiyoung Kim #define copy_seq_l_ldac(p1, p2, n) memcpy_s((p2), (n)*sizeof(int), (p1), (n)*sizeof(int)) 71*aef9bcd9SKiyoung Kim #define copy_seq_f_ldac(p1, p2, n) memcpy_s((p2), (n)*sizeof(SCALAR), (p1), (n)*sizeof(SCALAR)) 72*aef9bcd9SKiyoung Kim #define move_seq_f_ldac(p1, p2, n) memmove_s((p2), (n)*sizeof(SCALAR), (p1), (n)*sizeof(SCALAR)) 73*aef9bcd9SKiyoung Kim #else 74*aef9bcd9SKiyoung Kim #define copy_data_ldac(p1, p2, n) memcpy((p2), (p1), (n)) 75*aef9bcd9SKiyoung Kim #define copy_seq_s_ldac(p1, p2, n) memcpy((p2), (p1), (n)*sizeof(short)) 76*aef9bcd9SKiyoung Kim #define copy_seq_l_ldac(p1, p2, n) memcpy((p2), (p1), (n)*sizeof(int)) 77*aef9bcd9SKiyoung Kim #define copy_seq_f_ldac(p1, p2, n) memcpy((p2), (p1), (n)*sizeof(SCALAR)) 78*aef9bcd9SKiyoung Kim #define move_seq_f_ldac(p1, p2, n) memmove((p2), (p1), (n)*sizeof(SCALAR)) 79*aef9bcd9SKiyoung Kim #endif 80*aef9bcd9SKiyoung Kim 81*aef9bcd9SKiyoung Kim #endif /* _STRUCT_H */ 82*aef9bcd9SKiyoung Kim 83