1 #!/usr/bin/python 2 3 # Copyright (C) 2012 The Android Open Source Project 4 # 5 # Licensed under the Apache License, Version 2.0 (the "License"); 6 # you may not use this file except in compliance with the License. 7 # You may obtain a copy of the License at 8 # 9 # http://www.apache.org/licenses/LICENSE-2.0 10 # 11 # Unless required by applicable law or agreed to in writing, software 12 # distributed under the License is distributed on an "AS IS" BASIS, 13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 # See the License for the specific language governing permissions and 15 # limitations under the License. 16 17 from consts import * 18 import numpy as np 19 import scipy as sp 20 from calc_thd import * 21 import calc_delay 22 23 # calculate THD for dut_playback_thd case 24 # Input: host recording (mono), 25 # frequency of sine in Hz (i64) 26 # THD pass level in percentile (double) 27 # Output: THD device (double) in percentile 28 29 def playback_thd(inputData, inputTypes): 30 output = [] 31 outputData = [] 32 outputTypes = [] 33 # basic sanity check 34 inputError = False 35 if (inputTypes[0] != TYPE_MONO): 36 inputError = True 37 if (inputTypes[1] != TYPE_I64): 38 inputError = True 39 if (inputTypes[2] != TYPE_DOUBLE): 40 inputError = True 41 if inputError: 42 output.append(RESULT_ERROR) 43 output.append(outputData) 44 output.append(outputTypes) 45 return output 46 47 hostRecording = inputData[0] 48 signalFrequency = inputData[1] 49 thdPassPercentile = inputData[2] 50 samplingRate = 44100 51 52 thd = calc_thd(hostRecording, signalFrequency, samplingRate, 0.02) * 100 53 print "THD %", thd, "Margain % ", thdPassPercentile 54 if (thd < thdPassPercentile): 55 output.append(RESULT_PASS) 56 else: 57 output.append(RESULT_OK) 58 outputData.append(thd) 59 outputTypes.append(TYPE_DOUBLE) 60 output.append(outputData) 61 output.append(outputTypes) 62 return output 63