耳机俱乐部论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 18637|回复: 54

吃个操作系统的螃蟹

[复制链接]

129

主题

2422

帖子

54

积分

高级会员

Rank: 4Rank: 4Rank: 4Rank: 4

积分
54
注册时间
2001-11-21
发表于 2012-5-21 00:11:35 | 显示全部楼层 |阅读模式

感谢关注耳机俱乐部网站,注册后有更多权限。

您需要 登录 才可以下载或查看,没有账号?注册

x
近日有些许闲暇, 计划亲自做个Realtime Linux的音频播放器玩玩。

G了些许日子,发现已经有个ubuntu Studio,估计用来做音频和图像处理的工作站系统。
其主打Feature是low latency,即低延时,作为音频播放,带来更低的Jitter,
应该有超过windows和MAC OSX的能力。

一切都很顺利,很容易就完成系统的安装。ubuntu Studio初试莺啼,相比Windows ASIO和WASAPI,
这个系统少了一分烦躁,多了一分安宁;抹去了一分刺硬,增铺了一分柔软。

此时用的Low latency内核,为了进一步玩玩;我一不做二不休,换了一个实时内核,不出其然,声音舒服了些许。

ubuntu studio 基本安装时非常简单的,基本就是: 下载文件 -》 刻录光盘 -》 安装系统

此时即为low latency内核,声音有良好表现。它对USB解码器(包括USB转同轴)支持良好,基本无需驱动。
不过播放器要手动选择输出设备。这在Windows也是需要的。

评分

参与人数 1威望 +3 金钱 +300 收起 理由
nadesicozhao + 3 + 300 感谢分享

查看全部评分

回复

使用道具 举报

1

主题

281

帖子

2

积分

初级会员

Rank: 2Rank: 2

积分
2
注册时间
2010-5-21
发表于 2012-5-21 00:16:49 | 显示全部楼层
看来又有好东西吃了
回复 支持 反对

使用道具 举报

7

主题

1064

帖子

10

积分

中级会员

Rank: 3Rank: 3Rank: 3

积分
10
注册时间
2010-9-14
发表于 2012-5-21 08:15:46 | 显示全部楼层
同志

有空多交流交流,话说我也是无邦土,系统已经能够出声 ,就是目前忙,暂时懒得动了。
mini-dac + se535
回复 支持 反对

使用道具 举报

134

主题

3948

帖子

82

积分

高级会员

Rank: 4Rank: 4Rank: 4Rank: 4

积分
82
注册时间
2008-4-24
QQ
发表于 2012-5-21 08:21:27 | 显示全部楼层

标题

支持,准备安装linux
回复 支持 反对

使用道具 举报

16

主题

451

帖子

3

积分

初级会员

Rank: 2Rank: 2

积分
3
注册时间
2012-2-16
发表于 2012-5-21 09:20:44 | 显示全部楼层
有Linux与Windows,mac osx的AB对比吗
回复 支持 反对

使用道具 举报

143

主题

3018

帖子

31

积分

中级会员

Rank: 3Rank: 3Rank: 3

积分
31
注册时间
2010-12-26
发表于 2012-5-21 09:27:41 | 显示全部楼层
感谢分享! :D
找你可以负担的,然后尽全力去喜欢它...
回复 支持 反对

使用道具 举报

9

主题

2787

帖子

11

积分

中级会员

Rank: 3Rank: 3Rank: 3

积分
11
注册时间
2011-3-9
发表于 2012-5-21 09:37:04 | 显示全部楼层
楼主高人啊。
君と約束した優しいあの場所まで。。。
回复 支持 反对

使用道具 举报

129

主题

2422

帖子

54

积分

高级会员

Rank: 4Rank: 4Rank: 4Rank: 4

积分
54
注册时间
2001-11-21
 楼主| 发表于 2012-5-21 23:08:06 | 显示全部楼层
接一个,

目前,推动音频发展的真正力量是芯片厂商。 最近这两年,很多USB界面的新产品出现。以前老旧的操作系统音频框架无法支持24/192规格的USB音频。

USB芯片厂商研发成功后,需要操作系统配合,由于Linux的开源,很容易为其编写驱动。Linux率先开发了USB 2.0的音频体系结构,使得大部分USB2的
音频设备无需驱动,直接可以在Linux下使用。 MAC OSX得益于传统音频工作站的市场份额,一直占据着专业领域阵营。 MS为了与其抗衡,开发WSAPI。

Linux对火线音频支持也是基于开放体系,多数标准实现的音频接口都能顺利免驱动接入Linux。

Linux缺点在于,毕竟它是非主流系统,而且音频制作商并非像IT企业般压缩成本。因此多数音频设备厂商的专有驱动,都是基于MAC和Windows。
Linux多数情况下只能使用音频通用驱动。举个例子,Lynx的AES16声卡,厂方并未提供Linux驱动,而且甚至没有提供芯片手册给Linux社区。导致
Linxu无法支持Lynx AES16。 Lynx满不在乎,倒是OSS, Linux的最有悠久历史音频驱动框架开发组织,看准了这些机会,为这些封闭的厂商提供
私有的闭源驱动,放在零售版的OSS框架中售卖盈利。OSS的零售版要价50欧元,亦是不菲的费用。

由于目前大部分操作系统都是多任务系统,由最上层的进程调度,到底层的中断调度,最后才能送达硬件。多数操作系统的中断以100Hz左右作为一个时钟
滴答。也就说至少每10 ms应用程序才能得到调度,而且由于系统有大量的应用,音频应用的优先权并不是最高的。而底层方面,则有各种中断需要处理,其中
网络中断,视频中断都需要大量的数据处理,音频处理优先级一般都会较前两者低。因而产生大量的Jitter,这也是PCHIFI无法和CDP相比的关键原因。

[ 本帖最后由 kyokyo 于 2012-5-21 23:09 编辑 ]
回复 支持 反对

使用道具 举报

156

主题

3083

帖子

24

积分

中级会员

Rank: 3Rank: 3Rank: 3

积分
24
注册时间
2010-3-15
发表于 2012-5-21 23:12:37 | 显示全部楼层
回复 支持 反对

使用道具 举报

7

主题

406

帖子

4

积分

初级会员

Rank: 2Rank: 2

积分
4
注册时间
2011-2-20
发表于 2012-5-21 23:42:52 | 显示全部楼层

标题

ls专业。像简听这类播放器应该能够独占任务,克服中断的问题吧?
回复 支持 反对

使用道具 举报

30

主题

1012

帖子

7

积分

初级会员

Rank: 2Rank: 2

积分
7
注册时间
2012-4-20
QQ
发表于 2012-5-22 08:20:28 | 显示全部楼层
学习了
音乐伴我一生
回复 支持 反对

使用道具 举报

129

主题

2422

帖子

54

积分

高级会员

Rank: 4Rank: 4Rank: 4Rank: 4

积分
54
注册时间
2001-11-21
 楼主| 发表于 2012-5-22 20:37:02 | 显示全部楼层
再接一个,

下面Windows相关的内容只是猜测,因为不了解Windows的具体实现。音频应用(播放器)是应用层的程序,它每隔一段时间会将一段音频数据发送到操作系统中。
而应用层还有许多其它的应用,也会间歇占用CPU等系统资源。播放器必须等待CPU等资源空闲才能将音频数据发送到操作系统中。 所以,如果系统中各种应用
越多,音频应用就会不能得到及时调度,无法及时发送数据到操作系统中。

Windows内核中还提供了混音服务,就是多个播放器都可以发送数据到内核中,而Windows内核用软件将它们进行合成(使用CPU合成,当然是数字合成)。因此,
在这个地方会破坏原来的数字音频,失去了bitperfect。 所谓的独占模式,应该就是指Windows内核只接受一个音频应用发送的数据,跳过数字混音部分,保证数字
音频的完整性,达到bitperfect。

再往下,就是内核发送数据到硬件,内核是通过调用音频设备的驱动程序和硬件进行交互的。而这一切的动力来源,便是系统的中断。每次硬件发出中断,CPU会进行
响应,查看是哪个设备的中断,然后调用中断程序进行处理,或者从硬件读入数据,或者又是写入数据到中断。这里可以看到,系统中有各种各样的中断,低优先级中断
处理到一半,如果有高优先级中断发生,就会暂停下来,处理高优先级中断。 网络设备和显示设备都是优先级很高的中断,PCI中断比USB中断优先级高。可见USB连接
的设备在操作系统中可能会得不到及时处理,这样会导致jitter的产生。虽然设备上的缓存能够中和部分jitter,但是毕竟不能完全去除所有影响。

因为未深入研究,许多都是估计。下面对于一些软件技术的分析也只是基于猜测,献丑博大家一笑而已。
对声音有很大影响的是使用哪种接口,如Windows音频/ASIO/KS/DS/WSAPI, 这几种驱动接口,每种声音都有许多不同。因为这些提供了绕开内核软件混音,独占模式等
不同的特性。加上嵌入操作系统的方式也不一样,结果是数据从系统应用到内核的路径千差万别,因此声音影响会比较大。反倒是更换不同播放器影响不如更改接口影响来的
大。 不过有时候不同播放器使用不同的接口,因此似乎是应用的声音差别很大。不过应用也有一些不同的优化手段,例如提高进程高优先级,将音频文件锁定到内存中等等。

Foobar支持各种接口,大家可以试试不同的驱动声音,是否有差别。PlayPCM和Foobar使用WSAPI的声音,差别也不太大。

Jplay的hibernate模式比较厉害,估计是关闭大部分的中断,只响应少数关键的中断和音频中断。因此Jplay进入HIbernate后,无法响应任何输入,知道音频播放模式。如果
做激进的设计,甚至有可能完全关闭所有中断,只是不停的轮询单个音频设备,保证整个CPU资源用於处理音频播放。这样的后果就如JPLAY一般,音频播放完成前无法处理
任何输入,计算机没有任何响应。

其实也可能有折中的方案,在多核CPU系统中,留出一个核心用於轮询或中断处理单个音频设备,忽略其他影响。不过系统总线是共享的,有时候依然需要等待总线空闲。
在Windows下基本无法做到这个方案,因为MS似乎没有公开任何细节和让大家修改中断和CPU绑定关系的接口。希望将来有朋友能够试试实现这个方案。又或者Thinkspace
和pkshan正在设计类似的方案。

无论如何,他们的精神值得大家学习和敬佩。任何作品都是有缺点和局限的,只要我们能够发现其闪光的地方,足以。要是能让人赏心悦目,我们就应该击节赞赏了。
我们应该对这些作品多给宽容,多提善意的意见,不喜勿骂。
回复 支持 反对

使用道具 举报

143

主题

3018

帖子

31

积分

中级会员

Rank: 3Rank: 3Rank: 3

积分
31
注册时间
2010-12-26
发表于 2012-5-23 13:57:24 | 显示全部楼层
LZ能推荐几种Linux下的拨放软体?

感谢!
找你可以负担的,然后尽全力去喜欢它...
回复 支持 反对

使用道具 举报

124

主题

2840

帖子

36

积分

中级会员

Rank: 3Rank: 3Rank: 3

积分
36
注册时间
2011-11-17
发表于 2012-5-23 18:26:10 | 显示全部楼层
lz太专业了!学习,再学习!
回复 支持 反对

使用道具 举报

13

主题

242

帖子

1

积分

初级会员

Rank: 2Rank: 2

积分
1
注册时间
2007-2-24
发表于 2012-5-23 20:38:58 | 显示全部楼层
呃。。。这样的话是不是说ms系统无法做到避免一切由于中断引入的Jitter?
这样的话,外接解码不能避开这个问题吗?电脑只是输出数字信号,在解码中才生成模拟信号,这就和电脑中断没有关系了吧?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

耳机俱乐部微信
耳机俱乐部微信

联系我们|有害信息举报:010-60152166 邮箱:zx@jd-bbs.com|手机版|Archiver|黑名单|中国耳机爱好者俱乐部 ( 京ICP备09075138号 )

GMT+8, 2024-11-26 11:39 , Processed in 0.102780 second(s), 38 queries , Gzip On.

快速回复 返回顶部 返回列表