16cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi/*
26cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi * Copyright (C) 2013 The Android Open Source Project
36cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi *
46cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi * Licensed under the Apache License, Version 2.0 (the "License");
56cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi * you may not use this file except in compliance with the License.
66cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi * You may obtain a copy of the License at
76cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi *
86cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi *      http://www.apache.org/licenses/LICENSE-2.0
96cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi *
106cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi * Unless required by applicable law or agreed to in writing, software
116cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi * distributed under the License is distributed on an "AS IS" BASIS,
126cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
136cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi * See the License for the specific language governing permissions and
146cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi * limitations under the License.
156cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi */
166cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi
176cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi#ifndef LE_FX_ENGINE_COMMON_CORE_BASIC_TYPES_H_
186cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi#define LE_FX_ENGINE_COMMON_CORE_BASIC_TYPES_H_
196cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi
206cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi#include <stddef.h>
216cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi#include <stdlib.h>
226cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi#include <string>
236cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Triviusing ::std::string;
246cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Triviusing ::std::basic_string;
256cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi#include <vector>
266cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Triviusing ::std::vector;
276cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi
286cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi#include "common/core/os.h"
296cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi
306cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi// -----------------------------------------------------------------------------
316cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi// Definitions of common basic types:
326cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi// -----------------------------------------------------------------------------
336cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi
346cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi#if !defined(G_COMPILE) && !defined(BASE_INTEGRAL_TYPES_H_)
356cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi
366cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivinamespace le_fx {
376cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi
386cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivitypedef signed char         schar;
396cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivitypedef signed char         int8;
406cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivitypedef short               int16;
416cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivitypedef int                 int32;
426cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivitypedef long long           int64;
436cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi
446cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivitypedef unsigned char       uint8;
456cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivitypedef unsigned short      uint16;
466cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivitypedef unsigned int        uint32;
476cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivitypedef unsigned long long  uint64;
486cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi
496cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi}  // namespace le_fx
506cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi
516cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi#endif
526cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi
536cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivinamespace le_fx {
546cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi
556cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivistruct FloatArray {
566cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi  int length;
576cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi  float *data;
586cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi
596cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi  FloatArray(void) {
606cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi    data = NULL;
616cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi    length = 0;
626cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi  }
636cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi};
646cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi
656cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivistruct Int16Array {
666cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi  int length;
676cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi  int16 *data;
686cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi
696cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi  Int16Array(void) {
706cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi    data = NULL;
716cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi    length = 0;
726cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi  }
736cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi};
746cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi
756cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivistruct Int32Array {
766cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi  int length;
776cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi  int32 *data;
786cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi
796cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi  Int32Array(void) {
806cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi    data = NULL;
816cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi    length = 0;
826cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi  }
836cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi};
846cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi
856cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivistruct Int8Array {
866cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi  int length;
876cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi  uint8 *data;
886cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi
896cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi  Int8Array(void) {
906cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi    data = NULL;
916cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi    length = 0;
926cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi  }
936cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi};
946cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi
956cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi//
966cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi// Simple wrapper for waveform data:
976cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi//
986cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Triviclass WaveData : public vector<int16> {
996cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi public:
1006cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi  WaveData();
1016cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi  ~WaveData();
1026cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi
1036cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi  void Set(int number_samples, int sampling_rate, int16 *data);
1046cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi  int sample_rate(void) const;
1056cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi  void set_sample_rate(int sample_rate);
1066cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi  bool Equals(const WaveData &wave_data, int threshold = 0) const;
1076cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi
1086cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi private:
1096cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi  int sample_rate_;
1106cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi};
1116cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi
1126cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi}  // namespace le_fx
1136cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi
1146cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3cJean-Michel Trivi#endif  // LE_FX_ENGINE_COMMON_CORE_BASIC_TYPES_H_
115