#!/usr/bin/python
|
|
# 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.
|
|
from consts import *
|
import numpy as np
|
import scipy as sp
|
from calc_thd import *
|
import calc_delay
|
|
# calculate THD for dut_playback_thd case
|
# Input: host recording (mono),
|
# frequency of sine in Hz (i64)
|
# THD pass level in percentile (double)
|
# Output: THD device (double) in percentile
|
|
def playback_thd(inputData, inputTypes):
|
output = []
|
outputData = []
|
outputTypes = []
|
# basic sanity check
|
inputError = False
|
if (inputTypes[0] != TYPE_MONO):
|
inputError = True
|
if (inputTypes[1] != TYPE_I64):
|
inputError = True
|
if (inputTypes[2] != TYPE_DOUBLE):
|
inputError = True
|
if inputError:
|
output.append(RESULT_ERROR)
|
output.append(outputData)
|
output.append(outputTypes)
|
return output
|
|
hostRecording = inputData[0]
|
signalFrequency = inputData[1]
|
thdPassPercentile = inputData[2]
|
samplingRate = 44100
|
|
thd = calc_thd(hostRecording, signalFrequency, samplingRate, 0.02) * 100
|
print "THD %", thd, "Margain % ", thdPassPercentile
|
if (thd < thdPassPercentile):
|
output.append(RESULT_PASS)
|
else:
|
output.append(RESULT_OK)
|
outputData.append(thd)
|
outputTypes.append(TYPE_DOUBLE)
|
output.append(outputData)
|
output.append(outputTypes)
|
return output
|