cts_audio work: initial code
- volume calibration and THD test case work tuned.
- 59 unit tests pass
- local audio playback / recording works : uses tinyalsa
- host to device ptorocol in host side implemented / tested (with loopback)
- device side recording / playback works for test cases / test_io.xml
- python processing baseline added.
- spectrum algorithm implementated: calculate Transfer Function of device
  over host and check if amplitudes are within margain. Needs parameter tuning
- spectrum test needs some improvements due to the non-flat response from
  ref microphone.

Change-Id: I5288dec42f272260f30f1ace1374d365e31d1664
diff --git a/suite/audio_quality/lib/include/SignalProcessingInterface.h b/suite/audio_quality/lib/include/SignalProcessingInterface.h
new file mode 100644
index 0000000..202cdf9
--- /dev/null
+++ b/suite/audio_quality/lib/include/SignalProcessingInterface.h
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+#ifndef CTSAUDIO_SIGNALPROCESSINGINTERFACE_H
+#define CTSAUDIO_SIGNALPROCESSINGINTERFACE_H
+
+#include <utils/String8.h>
+
+#include "task/TaskGeneric.h"
+
+/**
+ * Interface to Signal processing module to run signal processing script and retrieve the result
+ * After construction, init() should be called before doing anything else.
+ */
+class SignalProcessingInterface {
+public:
+    virtual ~SignalProcessingInterface() {};
+
+    virtual bool init(const android::String8& script) = 0;
+    /**
+     * run the script with given input / output parameters. Note that this function does not
+     * do any type check.
+     * @param functionScript function name (python script name to run for this call)
+     * @param nInputs number of inputs. This is the length of inputTypes and inputs array
+     * @param inputTypes represent types of each input.
+     *              when true: android::sp<Buffer>*, false: Value*
+     * @param inputs pointer to input. Either android::sp<Buffer>* or Value*
+     * @param nOutputs
+     * @param outputTypes
+     * @param outputs
+     */
+    virtual TaskGeneric::ExecutionResult run(const android::String8& functionScript,
+            int nInputs, bool* inputTypes, void** inputs,
+            int nOutputs, bool* outputTypes, void** outputs) = 0;
+};
+
+#endif //CTSAUDIO_SIGNALPROCESSINGINTERFACE_H