Home | History | Annotate | Download | only in processing
      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