http://blog.csdn.net/daydayupfromnowon/article/details/6003500

因为要对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写入

以上仅仅是个人理解,可能有错误。

Wave Driver介绍-5(Waveform Audio Driver Test测试Case描述)相关推荐

  1. [Linux Audio Driver] Android 10 machine driver probe函数分析

    0. 背景 平台:Qualcomm 5G SM6350.android10.kernel version: msm-4.19. 本文重点分析machine driver里面的msm_asoc_mach ...

  2. [Linux Audio Driver] 高通平台内部MIC_BIAS简介

    #更新 2020.05.10 我觉得我这个标题取的不是很妥当,为了表达对技术的敬畏之心,我将原标题 <一文搞懂内部MIC_BIAS>修改为<高通平台内部MIC_BIAS简介> ...

  3. 安装Realtek HD Audio Driver 失败 就是安装不上怎么办

    之前重装系统一直好好的,前几天重装完,安装声卡驱动时,一直提示 安装realtek hd audio driver 失败 [error code:0x0000FF] 网上的办法都用了,系统再次重装都没 ...

  4. Microsoft uaa bus driver for high definition audio

    Microsoft uaa bus driver for high definition audio 解决办法: 打上微软的HD Audio补丁就行了 KB888111.exe 下载1: http:/ ...

  5. Touch Driver介绍

    Touch Driver介绍 一.相关知识介绍 1.Touch Driver的加载过程 GWES到[HKEY_LOCAL_MACHINE/HARDWARE/DEVICEMAP/TOUCH]的" ...

  6. [Linux Audio Driver] Qualcomm平台音频GMS认证器件要求

    从GMS测试常见的fail项来明确其器件要求,常见的fail测试项主要是以下三个: 后面是分析,要看结论的话直接拉到文末: 一:Audio Frequency Speaker Test 此测试使用外部 ...

  7. 笔记本电脑外放没声音,或外放有声音/插耳机没声音———Realtek High Definition Audio Driver安装

    情况1:之前自己的电脑插入圆孔有线耳机,耳机没声音,当时直接在realtek官网下载64位,Windows10适配的Realtek High Definition Audio Driver,安装后耳机 ...

  8. [Linux Audio Driver] SM6350平台音频bring up ( 一 )

    0. 背景 这个是高通5G平台,音频的内容改的比较多,比较直接的是platform.c就直接移动到vendor了:目前 高通那边的趋势还是把音频逐渐从kernel剥离,android 7/androi ...

  9. Linux SDIO WIFI Marvell8801/Marvell88w8801(六) --- Marvell Linux Wi-Fi driver介绍-WIFI插入卡槽内发生的事情

    代码工程的GITHUB连接:点进进入GITHUB仓库 https://github.com/sj15712795029/stm32f1_marvell88w8801_marvell8801_wifi ...

最新文章

  1. An attempt has been made to start a new process before the current process has finished its
  2. 「BZOJ3226」[Sdoi2008]校门外的区间
  3. RabbitMQ学习及实践3--SpringMVC实现
  4. 数字图像处理应用matlab,数字图像处理与应用(MATLAB版)
  5. POJ 1273 Drainage Ditches 最大流
  6. C#颜色和名称样式对照表
  7. SpaceX再获美国宇航局价值1.525亿美元合同
  8. 向Spark集群提交任务
  9. d3js fill与class优先级
  10. 阶乘的传统流程图 c语言,C语言算法与流程图.ppt
  11. matplotlib 使用简明教程(三)-一些专业图表简介
  12. 高速无人驾驶车辆防滑移MPC控制 学习笔记(未完结)
  13. linux开启cups服务,Linux中cups打印服务实战设置
  14. 程序员怎么提高代码编写的速度?
  15. amigo幸运字符什么意思_无线网络ssid是什么意思(全面解析SSID涵义)
  16. openssl 加密解密 指令_openssl命令aes加密和解密
  17. [Bug] Spring相关bug收集
  18. 某程序员发现 CSDN官方“漏洞”,立省¥10000+,抓紧薅吧
  19. Android原生拼音输入法分析
  20. 创业者如何克服困难,控制焦虑情绪,走向成功

热门文章

  1. html 无刷新显示公告,用javascript实现页面无刷新更新数据_js
  2. html语言图像,[多选] HTML语言能描述图像的()
  3. yslow的安装(注意兼容性)
  4. Springboot项目使用smart-doc+Apifox 便捷生成管理接口文档
  5. 0002 计算长方形周长和面积
  6. 英语话题 Zodiac
  7. php 框架效率测试,关于DoitPHP,ThinkPHP,Yii,CI,DooPHP等框架的性能对比测试
  8. fanuc机器人SCN_FANUC福尼斯以太网通讯.pdf
  9. [ZT] 戏言面向对象
  10. springboot蓝天幼儿园管理系统、