CETK Waveform Audio Driver Test测试Case描述
Posted on 2011-11-12 23:00 RunForever 阅读(642) 评论(0) 编辑 收藏 举报因为要对Audio Driver做CETK测试,所以今天了解了一下CETK测试中Audio Driver Test相关的源代码,简单的对各个Case列写如下:
Test ID
Test Name
测试目的
测试方法
100
Build Verification Test
驱动验证
遍历BuildIn下的流驱动并尝试同时打开wavein和waveout
1000
Easy Playback
播放wav文件
调用wave api sndPlaySound来播放wav文件
2000
Playback Capabilities
检查wave out支持的格式
调用wave api waveOutGetDevCaps()来获取wave out支持的格式
2001
Playback
播放音频
以wave out支持的音频格式来播放sine音频数据
2002
Playback Notifications
测试放音过程中的Notification机制
在调用waveout api waveoutopen时,通过参数传递不同通知方式(CALLBACK_NULL/CALLBACK_EVENT/CALLBACK_THREAD/CALLBACK_FUNCTION/CALLBACK_WINDOW),测试程序接收到通知信息后,将会去计算所耗费的时间并和标准时间做对比
2003
Playback Using Extended Functions
放音的过程中使用扩展功能函数
放音的同时调用调整增益的扩展功能函数
2004
Playback Buffer Freed During Playback
放音的同时释放内存
开始放音后释放内存,等待放音结束并记录所耗费的时间,并和标准时间做对比
2005
Playback Sample Rate Reporting
输出放音所支持的格式及具体的参数
调用waveOutGetDevCaps获取waveout所支持的格式,并打印其具体的参数信息,包括Channel/Sample Rate/BitsPerSample等信息
2006
Playback Initial Latency
测试放音耗时(WAVE_FORMAT_1M08)
依次调用waveout api以WAVE_FORMAT_1M08格式播放4毫秒数据量,记录时间并和标准时间做对比
2007
Playback Initial Latencies Series
测试放音耗时(所有格式)
1. 测试所有格式下的放音耗时,包括WAVE_FORMAT_1M08到WAVE_FORMAT_48000S16间的所有格式,并和标准的值做比较,在对每一种放音格式进行测试的时候,会以2^n(n介于1和12之间)毫秒为放音时常;
2. 具体的测试原理和方法与2006一样;
2008
Playback Interoperability
创建wav文件并播放
该测试按照标准的wav文件格式,创建wav文件,包含了多个chunk,然后进行播放,测试过程中Abort,原因不详
3000
Capture Capabilities
检查wave in支持的格式
调用wave api waveInGetDevCaps()来获取wave in支持的格式
3001
Capture
录音
以wave in支持的各种音频格式来录音,录音时长为1秒
3002
Capture Notifications
测试录音过程中的Notification机制
在调用wavein api waveinopen时,通过参数传递不同通知方式(CALLBACK_NULL/CALLBACK_EVENT/CALLBACK_THREAD/CALLBACK_FUNCTION/CALLBACK_WINDOW),测试程序接收到通知信息后,将会去计算所耗费的时间并和标准时间做对比
3003
Capture Buffer Freed During Capture
录音过程中释放内存
开始录音后释放内存,等待录音结束并记录所耗费的时间,并和标准时间做对比(之前的项目上出现过Wave Driver中发生Data Abort的情况,类似的其它项目却没有出现,原因不详)
3006
Capture Initial Latency
测试录音耗时(WAVE_FORMAT_1M08)
依次调用wavein api以WAVE_FORMAT_1M08格式录制4毫秒数据量大小的数据,记录时间并和标准时间做对比
3007
Capture Initial Latencies Series
测试录音耗时(所有格式)
1. 测试所有格式下的录音耗时,包括WAVE_FORMAT_1M08到WAVE_FORMAT_48000S16间的所有格式,并和标准的值做比较,在对每一种录音格式进行测试的时候,会以2^n(n介于1和12之间)毫秒为录音时常;
2. 具体的测试原理和方法与3006一样;
3008
Capture Multiple Streams
多个stream同时录音
1.线程中调用waveInPrepareHeader成功后开始计时,然后调用waveInAddBuffer和waveInStart开始录音(录音时长为2秒),录音结束后记录时间并计算录音所耗费的时间,最后和标准的时长做对比;
2. 创建最多257个线程,每个线程中都重复上述的动作;
注:
waveInPrepareHeader是阻塞式的么,当然不是,waveOutReset是阻塞式的
4000
Test Volume Control
测试混音器音量控制
测试混音器音量控制,目前的项目上不支持
4001
Test waveOutSetVolume & waveOutGetVolume
测试音量调整函数waveOutSetVolume
1. 函数waveOutSetVolume定义如下:
MMRESULT WINAPI waveOutSetVolume(HWAVEOUT hwo, DWORD dwVolume);
2. 第一个参数hwo可以传入音频设备的ID号,即0/1等,也可以传入waveout操作Handle(通过waveOutOpen可以获取到Handle);
3. 这个测试Case就是用来测试通过上述两种方式来调整音量;
注:
给函数waveOutSetVolume第一个参数传入设备号调整设备音量,而传入Stream句柄为调整Stream音量
5000
Test Power Down/Up with PlaySound Synchronus
播音时改变音频设备状态(PlaySound(…,SND_SYNC))
1. 调用PlaySound(…,SND_SYNC)播音;
2. 调用SetKernelAlarm配置系统RTC唤醒,然后调用SetSystemPowerState(TEXT("Suspend"), NULL, POWER_FORCE)使系统进入Suspend,等待系统RTC唤醒成功;
3. 判断播音是否正常;
注:
PlaySound(…,SND_SYNC)调用为阻塞式的,所以该测试没有意义
5001
Test Power Down/Up with PlaySound Asynchronus
播音时改变音频设备状态(PlaySound(…,SND_ASYNC))
1. 调用PlaySound(…,SND_ASYNC)播音;
2. 调用SetKernelAlarm配置系统RTC唤醒,然后调用SetSystemPowerState(TEXT("Suspend"), NULL, POWER_FORCE)使系统进入Suspend,等待系统RTC唤醒成功;
3. 判断播音是否正常;
5002
Test Power Down/Up with sndPlaySound Synchronus
播音时改变音频设备状态(sndPlaySound(…,SND_SYNC))
1. 调用sndPlaySound(…,SND_SYNC)播音;
2. 调用SetKernelAlarm配置系统RTC唤醒,然后调用SetSystemPowerState(TEXT("Suspend"), NULL, POWER_FORCE)使系统进入Suspend,等待系统RTC唤醒成功;
3. 判断播音是否正常;
注:
sndPlaySound(…,SND_SYNC)调用为阻塞式的,所以该测试没有意义
5003
Test Power Down/Up with sndPlaySound Asynchronus
播音时改变音频设备状态(sndPlaySound(…,SND_ASYNC))
1. 调用sndPlaySound(…,SND_ASYNC)播音;
2. 调用SetKernelAlarm配置系统RTC唤醒,然后调用SetSystemPowerState(TEXT("Suspend"), NULL, POWER_FORCE)使系统进入Suspend,等待系统RTC唤醒成功;
3. 判断播音是否正常;
5004
Test Power Down/Up with waveOutWrite
播音时改变音频设备状态(waveOutOpen/waveOutPrepareHeader/waveOutWrite)
1. 调用waveOutOpen/waveOutPrepareHeader/waveOutWrite播音;
2. 调用SetKernelAlarm配置系统RTC唤醒,然后调用SetSystemPowerState(TEXT("Suspend"), NULL, POWER_FORCE)使系统进入Suspend,等待系统RTC唤醒成功;
3. 判断播音是否正常;
6000
Playback Mixing
测试混音(播音)
1. 调用Wave out API播音;
2. 创建多个完成第一步功能的线程,并等待播音结束;
6001
Capture Mixing
测试混音(录音)
与6000测试类似,只不过是测试录音
7000
International Audio File Names
常见wav标准格式的文件并播放
1. 使用内建类CWaveFileEx创建wav文件并填充chunk;
2. 分别调用PlaySound和sndPlaySound播放;
8000
Verify Handle Validation
测试wave api
调用各种各样的wave api进行测试,确定api可用
8001
Verify Device ID Validation
测试Device ID
1. 获取录音和播音设备个数;
2. 通过调用waveOutGetDevCaps/waveInGetDevCaps并传入设备ID来确定该设备ID是否可用;
8002
Verify GUID Validation
测试GUID
调用waveOutGetProperty获取GUID,然后调用waveOutSetProperty写入
以上仅仅是个人理解,可能有错误。