Home | History | Annotate | Download | only in core
      1 /*
      2  * Copyright (C) 2013 The Android Open Source Project
      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 express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 #ifndef LE_FX_ENGINE_COMMON_CORE_BASIC_TYPES_H_
     18 #define LE_FX_ENGINE_COMMON_CORE_BASIC_TYPES_H_
     19 
     20 #include <stddef.h>
     21 #include <stdlib.h>
     22 #include <string>
     23 using ::std::string;
     24 using ::std::basic_string;
     25 #include <vector>
     26 using ::std::vector;
     27 
     28 #include "common/core/os.h"
     29 
     30 // -----------------------------------------------------------------------------
     31 // Definitions of common basic types:
     32 // -----------------------------------------------------------------------------
     33 
     34 #if !defined(G_COMPILE) && !defined(BASE_INTEGRAL_TYPES_H_)
     35 
     36 namespace le_fx {
     37 
     38 typedef signed char         schar;
     39 typedef signed char         int8;
     40 typedef short               int16;
     41 typedef int                 int32;
     42 typedef long long           int64;
     43 
     44 typedef unsigned char       uint8;
     45 typedef unsigned short      uint16;
     46 typedef unsigned int        uint32;
     47 typedef unsigned long long  uint64;
     48 
     49 }  // namespace le_fx
     50 
     51 #endif
     52 
     53 namespace le_fx {
     54 
     55 struct FloatArray {
     56   int length;
     57   float *data;
     58 
     59   FloatArray(void) {
     60     data = NULL;
     61     length = 0;
     62   }
     63 };
     64 
     65 struct Int16Array {
     66   int length;
     67   int16 *data;
     68 
     69   Int16Array(void) {
     70     data = NULL;
     71     length = 0;
     72   }
     73 };
     74 
     75 struct Int32Array {
     76   int length;
     77   int32 *data;
     78 
     79   Int32Array(void) {
     80     data = NULL;
     81     length = 0;
     82   }
     83 };
     84 
     85 struct Int8Array {
     86   int length;
     87   uint8 *data;
     88 
     89   Int8Array(void) {
     90     data = NULL;
     91     length = 0;
     92   }
     93 };
     94 
     95 //
     96 // Simple wrapper for waveform data:
     97 //
     98 class WaveData : public vector<int16> {
     99  public:
    100   WaveData();
    101   ~WaveData();
    102 
    103   void Set(int number_samples, int sampling_rate, int16 *data);
    104   int sample_rate(void) const;
    105   void set_sample_rate(int sample_rate);
    106   bool Equals(const WaveData &wave_data, int threshold = 0) const;
    107 
    108  private:
    109   int sample_rate_;
    110 };
    111 
    112 }  // namespace le_fx
    113 
    114 #endif  // LE_FX_ENGINE_COMMON_CORE_BASIC_TYPES_H_
    115