<?xml version="1.0" encoding="utf-8"?>

<!-- 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.
-->

<case name="dut_playback_thd" version="1.0" description="Check THD in DUT's playback side">
	<setup>
		<!-- prepare sound source id: to be used in output, sine 1000Hz, 4000ms long -->
		<sound id="sound1" type="sin:32000:1000:4000" preload="1" />
	</setup>
	<action>
		<sequential repeat="1" index="i">
			<output device="DUT" id="sound1" gain="100" sync="start" waitforcompletion="0" />
			<sequential repeat="1" index="j">
				<!-- dummy recording to compensate for possible playback latency -->
				<input device="host" id="dummy" gain="100" time="1000" sync="complete" />
				<input device="host" id="host_in_$j" gain="100" time="2000" sync="complete" />
			</sequential>
		</sequential>
		<sequential repeat="1" index="k">
			<!-- input: host record, signal frequency in Hz, THD for pass in percentile, output: THD calculated -->
			<process method="script:playback_thd" input="id:host_in_$k,consti:1000,constf:5.0" output="val:thd_device_$k" />
		</sequential>
	</action>
	<save file="host_in_.*" report="thd_.*" />
</case>
