annotate include/ne10/NE10_macros.h @ 537:bfcbeb437869 API-update

Updated RTAudioSettings with in/out, ported some examples and libpd
author Giulio Moro <giuliomoro@yahoo.it>
date Fri, 24 Jun 2016 01:36:07 +0100
parents 24c3a0663d54
children
rev   line source
andrewm@379 1 /*
andrewm@379 2 * Copyright 2013-15 ARM Limited and Contributors.
andrewm@379 3 * All rights reserved.
andrewm@379 4 *
andrewm@379 5 * Redistribution and use in source and binary forms, with or without
andrewm@379 6 * modification, are permitted provided that the following conditions are met:
andrewm@379 7 * * Redistributions of source code must retain the above copyright
andrewm@379 8 * notice, this list of conditions and the following disclaimer.
andrewm@379 9 * * Redistributions in binary form must reproduce the above copyright
andrewm@379 10 * notice, this list of conditions and the following disclaimer in the
andrewm@379 11 * documentation and/or other materials provided with the distribution.
andrewm@379 12 * * Neither the name of ARM Limited nor the
andrewm@379 13 * names of its contributors may be used to endorse or promote products
andrewm@379 14 * derived from this software without specific prior written permission.
andrewm@379 15 *
andrewm@379 16 * THIS SOFTWARE IS PROVIDED BY ARM LIMITED AND CONTRIBUTORS "AS IS" AND
andrewm@379 17 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
andrewm@379 18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
andrewm@379 19 * DISCLAIMED. IN NO EVENT SHALL ARM LIMITED AND CONTRIBUTORS BE LIABLE FOR ANY
andrewm@379 20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
andrewm@379 21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
andrewm@379 22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
andrewm@379 23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
andrewm@379 24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
andrewm@379 25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
andrewm@379 26 */
andrewm@379 27
andrewm@379 28 /*
andrewm@379 29 * NE10 Library : inc/NE10_macros.h
andrewm@379 30 */
andrewm@379 31
andrewm@379 32 /** NE10 defines a number of macros for use in its function signatures.
andrewm@379 33 * The macros are defined within this header file.
andrewm@379 34 */
andrewm@379 35
andrewm@379 36 #ifndef NE10_MACROS_H
andrewm@379 37 #define NE10_MACROS_H
andrewm@379 38
andrewm@379 39 #ifdef __cplusplus
andrewm@379 40 extern "C" {
andrewm@379 41 #endif
andrewm@379 42
andrewm@379 43 /////////////////////////////////////////////////////////
andrewm@379 44 // constant values that are used across the library
andrewm@379 45 /////////////////////////////////////////////////////////
andrewm@379 46
andrewm@379 47 #define NE10_PI (ne10_float32_t)(3.1415926535897932384626433832795)
andrewm@379 48
andrewm@379 49 /////////////////////////////////////////////////////////
andrewm@379 50 // some external macro definitions to be exposed to the users
andrewm@379 51 /////////////////////////////////////////////////////////
andrewm@379 52
andrewm@379 53 #define NE10_MALLOC malloc
andrewm@379 54 #define NE10_FREE(p) \
andrewm@379 55 do { \
andrewm@379 56 free(p); \
andrewm@379 57 p = NULL; \
andrewm@379 58 }while(0)
andrewm@379 59
andrewm@379 60 #define NE10_MIN(a,b) ((a)>(b)?(b):(a))
andrewm@379 61 #define NE10_MAX(a,b) ((a)<(b)?(b):(a))
andrewm@379 62
andrewm@379 63 #define NE10_BYTE_ALIGNMENT(address, alignment) \
andrewm@379 64 do { \
andrewm@379 65 (address) = (((address) + ((alignment) - 1)) & ~ ((alignment) - 1)); \
andrewm@379 66 }while (0)
andrewm@379 67
andrewm@379 68 /////////////////////////////////////////////////////////
andrewm@379 69 // macro definitions for float to fixed point
andrewm@379 70 /////////////////////////////////////////////////////////
andrewm@379 71 #define NE10_F2I16_MAX 32767
andrewm@379 72 #define NE10_F2I16_SHIFT 15
andrewm@379 73 #define NE10_F2I16_SAMPPROD ne10_int32_t
andrewm@379 74 #define NE10_F2I16_OP(x) (ne10_int16_t)((x)*NE10_F2I16_MAX + 0.5f)
andrewm@379 75 #define NE10_F2I16_SROUND(x) (ne10_int16_t)((((x)<<1)+(1<<NE10_F2I16_SHIFT))>>16)
andrewm@379 76 #define NE10_F2I16_SMUL(a,b) ((NE10_F2I16_SAMPPROD)(a)*(b))
andrewm@379 77 #define NE10_F2I16_FIXDIV(c,div) \
andrewm@379 78 do { ((c).r) = ( ( ((c).r)/div) ); \
andrewm@379 79 ((c).i) = ( ( ((c).i)/div) ); }while (0)
andrewm@379 80
andrewm@379 81 #define NE10_F2I32_MAX 2147483647
andrewm@379 82 #define NE10_F2I32_SHIFT 31
andrewm@379 83 #define NE10_F2I32_SAMPPROD ne10_int64_t
andrewm@379 84 #define NE10_F2I32_OP(x) (ne10_int32_t)((x)*NE10_F2I32_MAX + 0.5f)
andrewm@379 85 #define NE10_F2I32_SROUND(x) (ne10_int32_t) ((x)>>NE10_F2I32_SHIFT)
andrewm@379 86 #define NE10_F2I32_SMUL(a,b) ((NE10_F2I32_SAMPPROD)(a)*(b))
andrewm@379 87 #define NE10_F2I32_FIXDIV(c,div) \
andrewm@379 88 do { ((c).r) = ( ( ((c).r)/div) ); \
andrewm@379 89 ((c).i) = ( ( ((c).i)/div) ); }while (0)
andrewm@379 90
andrewm@379 91 #ifdef __cplusplus
andrewm@379 92 }
andrewm@379 93 #endif
andrewm@379 94
andrewm@379 95 #endif