(电路与系统专业论文)非线性编辑中的数据音频处理━用软件实现音频特技.pdf_第1页
(电路与系统专业论文)非线性编辑中的数据音频处理━用软件实现音频特技.pdf_第2页
(电路与系统专业论文)非线性编辑中的数据音频处理━用软件实现音频特技.pdf_第3页
(电路与系统专业论文)非线性编辑中的数据音频处理━用软件实现音频特技.pdf_第4页
(电路与系统专业论文)非线性编辑中的数据音频处理━用软件实现音频特技.pdf_第5页
已阅读5页,还剩55页未读 继续免费阅读

(电路与系统专业论文)非线性编辑中的数据音频处理━用软件实现音频特技.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一 摘要: 用软件实现音频特技 本文对非线性编辑系统,数字音频工作站,计算机中音频文件的播放和处理进 行了简单介绍,讲述了如何用d i r e c ts o u n d 来实现对后缀为w a y 的声音文件进行 混音如何利用数字信号处理中的算法对计算机中后缀为w a v 的声音文件进行处 理,以产生各种特殊效果( 例如混响、回响、均衡、变调、拉伸、相移等) 。其中介 绍了课题背景、意义。数字处理理论及各种效果的基本概念、作用、所用的算法及 编程实现,从而达到用软件实现音频特技的目的。并补充介绍了d s p 芯片在音频 数字信号处理的特点及意义以及计算机内各声音文件不同格式间的转换。最后结合 自身程序设计,介绍了当今音频数字信号处理中的新发展。 a b s t r a c t t h i sp a p e r sg i v eat o t a l l yi n t r o d u c et on o n 一1 i n e a re d i t i n gs y s t e m ,a u d i o w o r k s t a t i o n t h ep l a y i n ga n dp r o c e s s i n go fa u d j of i l e si nc o m p u t e r ,s p e c i f y h o wt om i x i n ga u d i ow a v ef i l e sb y u s i n gd i r e c ts o u n d ,b yu s i n gt h ed s p ( d i g i t a ls i g n a lp r o c e s s i n g ) a l g o r i t h m sh o wt op r o c e s st h ew a v ef i l et og e t t h es p e c i a la u d j oe f f e c t s ,s u c ha s :e c h o ,r e v e r b ,e q u a l i z e ,s c a ee t c i ta l s oi n t r o d u c e st h em e a i n ga n de f f e c t so ft h i sp r o j e c t i na d d i t i o n i t i n t r o d u c e st h ed s pc h i t ,w a v ef o r m a tc h a n g ea n dn e wd e v e l o p m e n ti na u d i o d a t ap r o c e s s i n g 关键词: 音频特矿w 。文社j 混响回声回响均衡变调拉伸,非线性编矿 k e y w o r d s : a u d i os p e c i a le f f e c t sw a v ef i l ec h o r u se c h o r e v e r b e q u a l i z c ) j t c h s h i f ts c a l e 皇王型茎查兰璺主丝皇 一 一课题的来源及背景 在近几年国内外大规模广播电视设备展览会上,数字非线性采、编、播设备扮 演着越来越重要的角色。国内电影电视界逐渐开始认识了解并采用了数字非线性设 备。非线性编辑技术,融入了计算机和多媒体这两个先进领域的前端技术,集录像, 编辑,特技,动画等多功能于一身。而数字音频的处理在非线性编辑中也起蓿相当 重要的作用,不过相对于起步较早的视频处理,它的难度更大。索贝数码科技股份 有限公司,是国内最大的专业电视多媒体设备制造商之一,它们在国内首先推出数 字音频方面的处理。而我课题的主要工作则是利用数字信号处理中的算法,用软件 完成音频特技处理模块。索贝公司的非线性编辑系统“创意2 1 ”版与“数字音频 工作站”初版均加入了数字音频特技处理模块。现结合我的主要工作对这两个系统 进行粗略介绍。 一) 视频信息存储的样式是线性与非线性区别的本质。 线性编辑系统:( l i n e a re d i l i n gs y s t e m ) 信息存储的样式与接受信息的顺序密切相关,因此将磁带编辑系统称之为 l i n e a re d i t i n gs y s t e m 。而数字硬盘存储数字视频由于它可以唯一的从硬盘 的任何位置直接进行读写,而不受存储信息顺序的限制,所以称为非线性。它 可以快速地找到任意一帧画面审看编辑的效果,完全省去卷带时间,从而获得 更高的工作效率和更强的灵活性。 二)非线性编辑系统可以实现以下传统设备的功能: 硬盘数字录像机非线性编辑控制器切换台特技机字幕和图形创作 动画制作数字录音机、音源和调音台 课题任务:非线性编辑系统中都包含音频输出单元,用d i r e c ts o u n d 同时播 放八轨声音文件以实现软件混音。 编写对声音文件进行音频特技处理的程序,以实现用软件进行特技处 理的功能。软件实现成本低廉,并可不断升级。 能针对多种格式的声音文件进行处理。 三) 数字音频工作站 音频工作站提供了许多数字信号处理手段,对声音进行时域和频域的处 理。其中某些处理在传统设备上是无法实现的。数字音频工作站系统可以记 录、编辑、处理和回放多达1 6 2 4 轨的数字音频和集成的同步锁定的数字 图像。并具有丰富而有效的音效资料库与数字信号处理模块,对声音进行时域 和频域处理以产生声音特技。它可以广泛应用与影视制作、音乐录音、广告制 作中。它方便快捷的操作,友好的用户界面和强大的音频制作功能会吸引更多 的用户,而声音的后期制作主流也将是数字音频工作站。 课题任务:用d i r e c ts o u n d 播放8 1 6 轨声音文件。 用数字信号处理实现音频特技。 电f 科技大学聊! 论文 二数字音频处理发展的现状与意义 数字化和非线性编辑是广播电视节目编辑的必然发展趋势,对它的研究和开 发已在国内外引起重视,用户也已经认识到它的优越性。数字音频工作站可以广泛 地应用于影视制作,音乐录音与广告制作过程中。而软件混音与音频特技处理更是 数字音频工作站中的一个核心组件,它直接关系产品的性能。在国外的音视频制作 领域,新产品层出不穷,各种主流与非主流的数字音频工作站在影视后期制作以及 音乐制作领域中各领风骚。而在国内,非线性编辑起步较晚,尤其是音频特技方面 的处理。索贝公司作为全国最大的国内最大的专业电视多媒体设备制造商,首先进 行了音频处理方面的研究,进行了零的突破。因此我的课题在国内是非常新的,所 有的资料均是从i n t e m e t 网上查找到的英文资料,课题的难度相当大。由于音频特 技模块的加入,索贝公司的“创意2 l ”深受用户好评。 三数字信号处理基本理论 - - ) d f t 变换及算法改进 1 基本概念 i ) f t 和卷积是信号处理中两个壤基本也是最常用的运算,它们涉及到信号与系统的分析 与综合这一广泛的信号处理领域。下面重点讨论o f t 的快速计算方法。 对n 点序列x ( n ) 其d f t 变换对定义为: 2 e - 1,t z ( q = x ( h ) 时七= 0 3 ,n - 1 ,= 目1 i ,n - - i 5 钾。面i 荟- - z ( 七) 陈“ m = o ,1 ,一1 显然,求出n 点x ( k ) 需要n 2 次复数乘法,n ( n 一】) 次复数加法。众所周知,实现一次复数乘 需要四次实数乘两次实数加,实现次复数加则需要两次实数加。当n 很大时其计算量是相 当可观的。 2 进一步减少运算量的措施 多数蝶形单元运算 电f 科技大学聊! 论文 二数字音频处理发展的现状与意义 数字化和非线性编辑是广播电视节目编辑的必然发展趋势,对它的研究和开 发已在国内外引起重视,用户也已经认识到它的优越性。数字音频工作站可以广泛 地应用于影视制作,音乐录音与广告制作过程中。而软件混音与音频特技处理更是 数字音频工作站中的一个核心组件,它直接关系产品的性能。在国外的音视频制作 领域,新产品层出不穷,各种主流与非主流的数字音频工作站在影视后期制作以及 音乐制作领域中各领风骚。而在国内,非线性编辑起步较晚,尤其是音频特技方面 的处理。索贝公司作为全国最大的国内最大的专业电视多媒体设备制造商,首先进 行了音频处理方面的研究,进行了零的突破。因此我的课题在国内是非常新的,所 有的资料均是从i n t e m e t 网上查找到的英文资料,课题的难度相当大。由于音频特 技模块的加入,索贝公司的“创意2 l ”深受用户好评。 三数字信号处理基本理论 - - ) d f t 变换及算法改进 1 基本概念 i ) f t 和卷积是信号处理中两个壤基本也是最常用的运算,它们涉及到信号与系统的分析 与综合这一广泛的信号处理领域。下面重点讨论o f t 的快速计算方法。 对n 点序列x ( n ) 其d f t 变换对定义为: 2 e - 1,t z ( q = x ( h ) 时七= 0 3 ,n - 1 ,= 目1 i ,n - - i 5 钾。面i 荟- - z ( 七) 陈“ m = o ,1 ,一1 显然,求出n 点x ( k ) 需要n 2 次复数乘法,n ( n 一】) 次复数加法。众所周知,实现一次复数乘 需要四次实数乘两次实数加,实现次复数加则需要两次实数加。当n 很大时其计算量是相 当可观的。 2 进一步减少运算量的措施 多数蝶形单元运算 皇王型丝苎堂雯主堡塞 对n = 2 。,共需进行m 级运算,每级n 2 个蝶形单元,每个蝶形单元需要一次复数乘法, 所以共需要m n 2 次复数乘法。当m = 0 时,即对第零级,所有的w 因子的指数全为零所以w = 1 t 这级不需要乘法。对m = l 级,w = 1 或w 。一j 。我们知道,两个复数相乘时,若一个为纯虚数, 则也不需要做乘法。在i ) f t 中,w 又称“旋转因子( t v i d d e f a c t o r ) ”,像9 o ,w i z ,w 这样的旋 转因子又称为无关紧要的旋转因子( t r i v j a 】t v i d d l ef a c l o r ) 。去掉前两级后所需的复数乘 法应是 m 。= ( m 一2 ) n 2 进一步分析,在m = 2 级,每一组含有w o 一,w 2 s 这两个无关紧要的旋转因子,这一级共有 ( n 2 2 “) = n 8 组,故这一级无关紧要的旋转因子数为n 4 个。依次类推,所需的复数加法量是 a 。= n ( m 1 ) 3 2 + 2 一个旋转因子对应一个蝶形单元。若在程序中包含了所有的旋转因子,则称该算法为含 类蝶形单元,若去掉w = 1 ,则说含二类蝶形单元,若去掉w r :j 则说含三类,如果再特殊 处理w 7 = ( 1 一j ) 2 1 - 。2 这样的蝶形单元,我们则称该算法含有四类蝶形单元。 w 因子的生成 在f f t 中,乘法主要来自旋转因子,因为w r = c o s ( 2 r n ) 一j s i n ( 2nr n ) ,所以在w 相乘时必须生成相应的正、余弦函数。在编程时,正、余弦函数的产生一般有两个办法,一 是在每一步直接产生,二是在程序开始时预先计算出w ,将r = 0 ,1 ,n l 这n 个独立的值存 于数组中,等效于建立了一个正、余弦函数”表。在程序执行时可直接查表得到。这样提高 了运算速度,但要占较多的内存。 3 分裂基算法 分裂基( s p l i t - r a d i x ) 算法又称基2 4 算法,或混合基算法。该算法的基本思路是对偶序列输 出使用基2 算法,对奇序列输出使用基4 算法。它被认为是最好的快速傅立叶算法。 t 算法推导 对n = 2 。点d f t ,对 = 孙mx ( 耙t 帖j y x ( 2 r ) 。 = l 石o ) + x 卜+ “i 咖2 h of 式的d i f 的偶序号输出项,即 皇王! ! 垫查竺望! 主垒兰 雅,= 蛩咖m 苦k : r ( 扫) = l 。( ) + x ( 月+ 号瞄2 柚l j ,:o h 冬一1 z 对k 的奇序号项用基4 算法,即 咿肛甄叫。十狲怕+ 争( 梢鲁咖 鼬掏:瓢州。+ 甜搏+ 争( 棚书肛嘴 式中r = o ,l ,n 4 1 。上式三式构成了分裂基算法的l 型算法结构。 2 分裂基算法的计算量 观察上面三式,可以得递推公式 q 。= 如、1 + 2 q n2 + 2 2 ”一1 2 式中n = 3 ,4 ,m ,m = l o g 。n ,瓯代表n = 2 “时所需的乘法量,初始条件是q 产o ,q 2 = o 。 由此可得到在四类蝶形单元情况下所需的实数乘法次数的计算公式 m r = 4 m n 3 3 8 n 9 + 6 + ( 一1 ) u 2 9 所需实数加法的计算公式 a t = s m n 3 1 6 n 9 + 2 一( 一1 ) 1 2 9 3 分裂基算法的特点 综上所述,分裂基算法有以下的优点 ( 1 ) 在已知的n = 2 。的各种算法中,所需的乘法数为最少,并接近理论上最小值。 其i ) f t 所需的理论上的最小实数乘法次数是 m = 2 n m 一m 一2 ( 2 ) 分裂基算法有着和基2 、基4 算法一样的规则结构,司以j 列址运算- 返 王用j c 心片 来实现这些算法时是特别重要的; ( 3 ) 若把基2 、基4 和分裂基算法中无关紧要的旋转因子都考虑在内,那么三者所需的计 算量是一样的。分裂基算法的特点是合理安排了算法结构,使无关紧要的旋转因子最 大程度地减小。 二) 滤波器的基本概念 滤波原理 滤波器,其作用是对输入信号起到滤波的作用。l s i 系统其时域输入输出关系是 若x ( 1 3 ) ,y ( n ) 的傅立叶变换存在,则输入输出的频域关系是 这样,x ( n ) 通过系统h ( 1 3 ) 的结果是使输出y ( n ) 中不再含有iu1 u c 的频率成 分,而使fui u c 的成分“不失真”的给以通过。因此,设计出不同形状的h ( e ”) 可以得到不同的滤波结果。 若滤波器的输入、输出都是离散时间信号那么,该滤波器的冲激响应也必然是离散 的,即单位抽样响应h ( n ) 。我们称这样的滤波器为数字滤波器。 滤波嚣的分类 滤波器的种类很多,分类方法也不同,如可以从功能上分,也可以从实现方法上 分,或从设计方法上来分等等。但总的来说,滤波器可分为两大类,即经典滤波器和 现代滤波器经典滤波器是假定输入信号x ( n ) 中的有用成分和希望去除的成分各占 有不同的频带这样,当x ( n ) 通过一个线形系统( 即滤波带) 后可将欲去除的成分 有效地去除如果信号和噪声的频谱相互重叠,那么经典滤波器将无能为力。现代滤 波器理论研究的主要内容是从含有噪声的数据记录( 又称时间序列) 中估计出信号的 某些特征或信号本身。一旦信号被估计出,那么估计出的信号将比原信号会有高的信 噪比。现代滤波器把信号和噪声都视为随机信号,利用它们的统计特征( 如自相关函 数、功率谱等) 导出一套最佳的估值算法,然后用硬件或软件予以实现。经典滤波器 从功能上总的可分为四种,即低通( l p ) 、高通( h p ) 、带通( b p ) 、带阻( b s ) 滤波器,当 然,每一种又有模拟滤波器( a f ) 和数字滤波器( d f ) 两种型式。 滤波器的技术要求 一 皇至型垫查兰婴主笙兰 滤波器的具体技术指标往往由通过允许的最大衰减ap 及阻带应达到的最小衰减as 给出。通带及阻带的衰减np ,os 分别定义为 铲z 魄蹦卅。逸iq 0 1 8 嗣一2 0 逸f 瓯= 2 0 式中均假定i h ( e ”) i 己被归一化为i 。 = 一2 0 1 9 l h ( e j ) 不论是i i r 滤波器还是f i r 滤波器的设计都包括三个步骤 1 ) 给出所需的滤波器的技术指标; 2 ) 设计一个h ( z ) 使其逼近所需要的技术指标 3 ) 实现所设计的h ( z ) 。 目前i i r 数字滤波器设计最通用的方法是借助于模拟滤波器的设计方法。 模拟低通滤波嚣的设计 概述 给定模拟低通滤波器的技术指标op ,op ,as ,qs 。其中op 为通带允许的最大衰 减,as 为阻带应达到的晟小衰减,op ,os 的单位为d b ,qp 为通带上限角频率, o s 为阻带下限角频率。现希望设计一个低通滤波器g ( s ) 为 g ( s ) = i d o + i d l s i + 瓦+ d 。7 _ 1 s r 吒- i + d 7 r s a cc 0 十c l 占十十f 一l 占十c r , 使其对数幅频响应l o l ge g ( j q ) c2 在q p ,qs 处分别达到op ,qs 的要求。 ap ,as 都是。的函数,它们的大小取决于f g ( j q ) l 的形状,为此,我们定义一个衰 减函数a ( 0 ) ,即 a ( o ) = i o 8 :1 魄赢矿 堕妒 显然,op = q ( op ) = 一1 0 1 9 1 g ( j q p ) 一a s 2o ( qs ) 一l o l g j gl j 8 ) l 。堪件上a 化 低通模拟滤波器的四个技术指标滤波器的幅平方特性联系了起来。我们所设计的滤波 器的冲激响应一般都为实数,所以又有 g ( s ) g ( s ) = g ( s ) g ( 一s ) l ,。= j g ( jo ) i 2 这样,如果我们能由op ,( 2 p ,os ,qs 求出i g ( jq ) 2 ,那么由i g ( jq ) 1 :就很容易 得到所需的g ( s ) 。 巴特沃思( b u t t e r n o r t h ) 模拟低通滤波器设计 巴特沃思模拟低通滤波器的设计可按以下三个步骤进行。 1 ) 将实际频率。归一化 得归一化幅平方特性 i o ( 圳2 = 瓣1 由此可以看出,在i g ( j ) j2 ( 或i g ( j q ) i2 ) 中只有两个参数c 和n ,n 是滤波器的阶次。 2 ) c 和n 由前可得 = 1 9 c 2 = 1 0 。p ,l o t ,1 9 毛 这样c 和n 可求。若令np = 3 d b ,则c = i ,这样巴特沃思模拟低通滤波器的设计孰 只剩下一个参数n ,这时 3 ) 确定g ( s ) 阳刮2 2 静12 南 9 电子科技大学硕士论文 因为p = j ,由上式有 由 解的 g ) g ( 例= 赤= 南 】h * l p = 口。1 广。七= 1 “2 ,2 n 这样,我t f a t 得到归一化的转移函数g ( p ) 卜寿罂瓯 1c j ) ,2 上式中,n 为奇数。因为p = j = j o 7 0p = s o p ,所以,在求得g ( p ) 后,用 s o p 代替变量p ,即得实际需要的g ( s ) 。 模拟商通、带通及带阻滤波嚣的设计 目前t 模拟高通、带通及带阻滤波器的设计方法都是先将要设计的滤波器的技术指标( 主要是 o p ,q s ) 通过某种频率转换关系转换成模拟低通滤波器的技术指标,并依据这些技术指标设 计出低通滤波器的转移函数,然后再依据频率转换关系变换成所要设计的滤波器的转移函数。 模拟高通澹波器的设计 我们根据低通滤波器g ( j ) 和高通滤波器h ( jn ) 的幅频特性曲线可得下式 n = 1 因此通过上式可将高通滤波器的频率n 转换成低通滤波器的频率 ,通带和阻带衰 减ap ,as 保持不变。所以。可得模拟高通滤波器的转移函数 月( 0 = o o ) ,m ,“ j o 皇王型塾查兰堕主堡主 一一 模拟带通滤波器的设计 模拟带通滤波器的四个频率参数是q 。o - ,q 。,o “。0 ,o a 分别是通带的下限与 上限频率,q ,是下阻带的上限频率,q - 是上阻带的下限频率,首先要将它做归一化 处理。 定义q 萨o 。一o ,为通带的带宽,并以此为参考频率对。轴作归化处理,即 n 。】:q 。1 q 啊,n = q 女q 肼, r t i :q q 胂,r t f q3 q 聃 再定义o :o 。q 。为通带的中心频率,归一化的前:n 。n 。,其归一化的幅频特性为 h ( jn ) 1 ,归化的低通幅频特性为 g ( j ) 。我们可找到n 与 的转换关系为 由于ns n 产1 , 。= 1 ,所以有 2 二窭尘:旦 r j 一仉姐, 丑:立蔓 玎 从而实现了频率转换。可得其转移函数为 日( s ) = g ( 力i , l l + i l 仃。 。h n i _ n i ) 模拟带阻滤波器的设计 模拟带阻滤波器四个频率参数分别是q ,o mq ,os 。q ”o ,分别是两个通带截 止频率o n ,o 是阻带的下限、上限频率,同带通滤波器的情况样,定义q _ :q r o , 为通带的带宽,阻带的中心频率为0 2 = o ,os ,并用。一作为参考频率将频率归一化, 得: n 产q i q 确,n3 :q3 q 啊,n 1 - l i , l q 计,n 矿o o 砰,嚼:n in3 同带通滤波器的情况一样,我们可找到n 与 的转换关系为 电子科技大学硕士论文 由于n3 一n 。= 1 ,x 。= 1 ,所以有 ! = 运生:2 l p 叩,一r h 2 五 ,矸 肛再哥 从而实现了频率转换。可得其转移函数h ( s ) 为 = f ,粼 用冲激响应不变发设计i i r 敷字低通滤波器 设模拟滤波器g ( s ) 的单位冲激响应为g ( t ) ,令所对应的数字系统的单位抽样响应 h ( n t 。) = g ( t ) i t 。= g ( t ) 6 ( t n t 。)( n = 0 o o ) 那么h ( n t 。) 所对应的数字系统的转移函数及频率响应分别是 ( n = o 一) h ( e ”) = i t 。g ( jo j kq 。)( n 一一一) 例如,若g ( s ) = a ( s + a ) ,则g ( t ) = a e ,h ( n t 。) = a e “,那么 若g ( s ) :1 3 ( s a ) 3 + 1 3 2 ,这时g ( s ) 为一二阶系统,g ( t ) = e ”s i n ( b t ) u ( t ) 则 = 五毒器诲 上述由g ( s ) 到h ( z ) 的转换方法都是令h ( n ) 等于g ( t ) 的抽样,因此该转换方法被称为 “冲激响应不变法”,由此方法可得到一阶系统最基本的转换关系是 1 2 冲激响应不变法保证了把稳定的g ( s ) 转化为稳定的h ( z ) ,其步骤是 1 利用u = o t 。将。p ,s 转化为o p ,o s ,op ,as 不变 2 设计低通模拟滤波器g ( s ) 。 3 利用上面两式转换关系将g ( s ) 转化为h ( z ) 。 四软件工具简介与编程实现 一) 操作系统与编程平台的特点 ( 一) w i n d o w sn t4 0w o r k s t a t i o n 简介 在w i n d o w sn t4 0w o r k s t a t i o n 平台上用v i s u a lc + + 5 0 编写了程序,对 w i n d o w sn t 与v c + 十进行粗略介绍。 w i n d o w sn t4 0 是微软公司的一个非常成功的操作系统。 一个真3 2 位抢先式可重入的虚拟内存操作系统。 能够在多种硬件体系结构和平台上运行 能够在对称多处理系统上运行并具有良好的可伸缩性 优秀的分布式计算平台,既可作为网络客户,又可作为网络服务器 可运行多数现有1 6 位8 s - d o s 和m i c r o s o f tw i n d o w s3 1 应用程序 符合政府和企业对操作系统安全性的要求 支持u n i c o d e ,适合全球市场的需要 索贝公司各项目的开发均基于w i n d o w sn t ,它具有以下优点: 1 对称多处理性: 多任务是在多个执行线和中共享单个处理器的操作系统技术。然而,当一台 计算机具有多个处理器时就能同时执行两个线程。因此,多任务操作系统只是在 表面上表现为同时执行多个线程,而多处理操作系统则可以真正做到在每个处理 器上执行一个线程。 w i n d o w sn t 支持“对称多处理”( s m p ) 。这里不存在主处理器,操作系统和 用户线程能被安排在任一处理器上运行,且所有处理器共享一个内存空间。 w i n d o w sn t 合并了许多至关重要的特性,使这成为一个成功的多处理器操 作系统。 2 可靠性及坚固性: 因为使用我们公司设备的客户均为非计算机专业人员,而是电视台的采、编、 13 电子科技大学硕士论文 播人员。因此操作系统的稳定性尤为重要,这样才不会造成系统经常死机。 w i n d o w sn t 成为既坚固又稳定的应用程序服务器的原因之一:它融合了分 层操作系统和客户朋务器或微内核操作系统的特点。对性能影响很大的操作系 统在核心态下运行。在核心态下,组件可以和硬件交互,也可以在组件之间交互, 并且不会引起描述表切换和模式转换。所有组件均受到保护,以避免被锗误的应 用程序侵扰,因为应用程序不能直接访问操作系统核心部分的代码和数据。 能在任何可用的处理器上以及同时在多个处理器上运行操作系统代码。 执行一个进程中的多个线程。在不同处理器中,每一个线程都基本上可同 时执行。 内核内部,以及设备驱动程序和服务进程内部的精确同步允许更多的组件 在多处理器上同时运行。 服务器进程可以使用多个线程同时处理来自多个客户的请求。 在进程间共享对象的良好机制及灵活的进程间的通信能力,包括共享内存 和优化的消息传送工具。 致力于亚洲语言软件市场的开发者正转移到u n i c o d e 字符集,它包括 6 5 5 3 6 个字符,每一个字符包括两个字节。u n i c o d e 版程序在w j n d o w sn t 平台上可良好运行。 - ) v i s u a lc + + 与m f c 主要介绍在n f c 库应用程序框架范围内的c + + 编程。 v i s u a l s t u d i o 是开发工具的套件,其中包含了v i s u a lc + + 6 0 。用应用程 序框架编写的应用程序不仅小,而且运行速度快。v i s u a lc + + 提供一个工具 c l a s s w i z a r d ,它自动对大多数消息映射函数编写代码,实现面向对象的编程。 1 基本概念 面向对象程序设计:是一种围绕真实世界的概念来组织模型的程序设计方法, 它采用对象来描述问题空间的实体。面向对象的程序设计主要有四个特点: 抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分 地注意与当前目标有关的方面。 继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供 了一种明确表述共性的方法。 封装:封装是面向对象的特征之一,是对象和类概念的主要特性。封装是 把过程和数据包围起来,对数据的访问只能通过已定义的界面。将对象的 使用和对象的实现分开,将实现隐藏在外部界面后。 多态性:多态性是指允许不同类的对象对同一消息作出响应。比如同样的 加法,把两个时间加在一起和把两个整数加在一起肯定完全不同。 面向对象的主要符号是类,基本想法就是要把构造的系统表示为对象的集合。 与它交互的能力。它是一些属性及服务的一个封装体,在程序设计领域,, - 7 p a 用“对 象= 数据+ 作用于这些数据上的操作”这一公式来表达。 类:类是具有相同操作功能和相同的数据格式( 属性) 的对象的集合。类可 以看作抽象数据类型的具体实现。 派生类;派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或 增加新的方法使之更适合特殊的需要。 类库:可在应用程序中使用的有关c + + 类的集合。 2 v i s u a lc + + 与m f c m f c :m i c r o s o f tf o u n d a t i o nc l a s s 为主要的w i n d o w s 类库。m f c 库大多是 通过调用虚函数协调文档、视图、框架窗口和应用程序对象之间的相互关系。 消息:消息是向某对象请求服务的一种表达方式。对象内有方法和数据,外部 的用户或对象对该对象提出的服务请求,可以称为向该对象发送消息。 基本事件处理消息映射函数:当用户动作时,w i n d o w s 发送一个消息,若程序 需要对这个消息进行响应,则视图类必须有一个成员函数。 v i s u a lc + + 为开发人员提供了一个更为灵活,高集成的软件开发环境,它包含 了一系列具有丰富功能的编程工具,使编写w i n d o w s 应用程序变得十分直观。同时 基于类库的设计方法又使编写面向对象的程序变得十分简单。且它具有很高的代码 效率,与w i n d o w s 系统有非常完美的接口,易于进行硬件访问。非常适合开发大型 应用程序,因而可以说是一种万能高级语言。 a p p w i z a r d :一个代码生成器,创建一个带有特性、类名和通过对话框定义的 源代码文件名的w i n d o w s 应用程序的框架。 c l a s s w i z a r d :编写原型、函数体和把w i n d o w s 消息连接到函数的代码。 应用程序框架提供了结构,程序员则只需要根据框架编写应用程序的具体代 码。 应用程序框架:提供一般应用程序需要的全部面向对象软件组件的集成集合。 m f c 库应用程序框架有丰富的特性,其中常用类有: 视图类( 单文档界面,多文档界面) 、设备环境类、对话框类( 模态与非模态) 、 位图类、w i n d o w s 各种通用控件类( 按钮c b u t t i o n ,滑块c s l i d e r c t r l ,进度指示 器c p r o g r e s s c t r l ) 等。 3 多线程编程: 进程是拥有自己的内存、文件句柄和其它系统资源的运行程序。 单个进程可以包含独立的执行路径,叫作线程。 w i n d o w s 提供了两种线程,工作者( w o r k e r ) 线程和用户晃面线程,均为m f c 库所支持。工作者线程比较易于编程,而且通常更加有用。 在启动一个工作者线程之前,必须为线程的主程序编写个全局函数,它应返 回一个u n i t 且以一个单个3 2 位值为参数。在启动线程的时候,可以用这个参数来 传递任何东西。 主线程与工作者线程通信最简单的方法是通过全局变量,因为进程中的所有线 ( 二) v i s u a lc + + 与m f c 主要介绍在m f c 库应用程序框架范围内的c + + 编程。 v i s u a ls t u d i o 是开发工具的套件,其中包含了v is u a c + + 6 0 。用应用程 序框架编写的应用程序不仅小,而且运行速度快。v i s u a lc + + 提供一个工具 c l a s s w i z a r d ,它自动对大多数消息映射函数编写代码,实现面向对象的编程。 1 基本概念 面向对象程序设计:是一种围绕真实世界的概念来组织模型的程序设计方法, 它采用对象来描述问题空间的实体。面向对象的程序设计主要有四个特点: 抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分 地注意与当前目标有关的方面。 继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供 了种明确表述共性的方法。 封装:封装是面向对象的特征之一,是对象和类概念的主要特性。封装是 把过程和数据包围起来,对数据的访问只能通过己定义的界面。将对象的 使用和对象的实现分开,将实现隐藏在外部界面后。 多态性:多态性是指允许不同类的对象对同一消息作出响应。比如同样的 加法,把两个时间加在一起和把两个整数加在一起肯定完全不同。 面向对象的主要符号是类,基本想法就是要把构造的系统表示为对象的集合。 对象:包含现实世界物体特征的抽象实体,它反映了系统为之保存信息和( 或) 与它交互的能力。它是一些属性及服务的一个封装体,在程序设计领域,可以用“对 象= 数据+ 作用于这些数据上的操作”这一公式来表达。 类:类是具有相同操作功能和相同的数据格式( 属性) 的对象的集合。类可 以看作抽象数据类型的具体实现。 派生类:派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或 增加新的方法使之更适合特殊的需要。 类库:可在应用程序中使用的有关c + + 类的集合。 2 v i s u a l 甜+ 与m f c m f c :m i c r o s o f tf o u n d a t i o i lc l a s s 为主要的w i n d o w s 类库。m f c 库大多是 通过调用虚函数协调文档、视图、框架窗口和应用程序对象之间的相互关系。 消息:消息是向某对象请求服务的一种表达方式。对象内有方法和数据,外部 的用户或对象对该对象提出的服务请求,可以称为向该对象发送消息。 基本事件处理消息映射函数:当用户动作时,w i n d o w s 发送一个消息,若程序 需要对这个消息进行响应,则视图类必须有一个成员函数。 v i s u a c + + 为开发人员提供了一个更为灵活,高集成的软件开发环境,它包含 了一系列具有丰富功能的编程工具,使编写w i n d o w s 应用程序变得十分直观。同时 基于类库的设计方法又使编写面向对象的程序变得十分简单。且它具有很高的代码 效率,与w i n d o w s 系统有非常完美的接口,易于进行硬件访问。非常适合开发大型 应用程序,因而可以说是一种万能高级语言。 a p p w iz a r d :一个代码生成器,创建一个带有特性、类名和通过对话框定义的 源代码文件名的w i n d o w s 应用程序的框架。 c l a s s _ i z a r d :编写原型、函数体和把w i n d o w s 消息连接到函数的代码。 应用程序框架提供了结构。程序员则只需要根据框架编写应用程序的具体代 码。 应用程序框架:提供一般应用程序需要的全部面向对象软件组件的集成集合。 m f c 库应用程序框架有丰富的特性,其中常用类有: 视图类( 单文档界面,多文档界面) 、设备环境类、对话框类( 模态与非模态) 、 位图类、w i n d o w s 各种通用控件类( 按钮c b u t t i o n ,滑块c s l i d e r c t r ,进度指示 器c p r o g r e s s c t r l ) 等。 3 多线程编程: 进程是拥有自己的内存、文件句柄和其它系统资源的运行程序。 单个进程可以包含独立的执行路径,叫作线程。 w i n d o w s 提供了两种线程,工作者( _ o r k e r ) 线程和用户界面线程,均为婶c 库所支持。工作者线程比较易于编程,而且通常更加有用。 在启动一个工作者线程之前,必须为线程的主程序编写一个全局函数,它应返 回一个u n i t 且以一个单个3 2 位值为参数。在启动线程的时候,可以用这个参数来 传递任何东西。 主线程与工作者线程通信最简单的方法是通过全局变量,因为进程中的所有线 程均可以访问所有的全局变量。主线程有一个窗口( 可见或不可见) ,而工作者线 程有一个指向该窗口的句柄( 3 2 位线程函数参数) 。 启动线程时,程序应进行如下调用: c w i n t h r e a d 幸p t h r e a d = a f x b e g i n t h r e a d ( c o m p u t e l 、h r e a d p r o c ,g e t s a f e h w a n ( ) , t h r e a d _ p r i o r i t y _ n o r m a l ) 而计算线程代码应为: u i n t c o m p u t e t h r e a d p r o c ( l p v o i dp p a r a m ) d ot h r e a dp r o c e s s in g r e t u r n0 : ) 4 动态链接库 d l l ( d y n a m i cl i n kl i b r a r y ) :在编写模块程序时,动态链接库d l l 尤为重 要。 类是“创建时”模块,d l l 是运行时模块。在编写大的e x e 程序时或多人开 发项目时,每人编写自己的一个d l l 模块以实现某种功能,在成功测试后,再将其 加入到总项目中。这样不会影响总程序也便于修改与测试,符合模块化编程思想。 d l l 是一个在磁盘上的文件( 通常带有d l l 扩展) ,由全局数据、编辑函数及资 源组成。成为进程的一个部分。w i n 3 2d l l 允许导出全局变量及函数。 a p p - i z a r d 允许你建立两种带有m f c 库支持的d l l :扩展d l l 与常规d l l 。扩 展d l l 支持c + + 接口,即能导出整个类,客户能够建立这些类或由其派生的类的对 象。动态链接:它被加载到首选的基址上,如果与其它d l l 之间没有冲突,该文件 映射到进程的同一虚拟地址上。d l l 有各种导出函数,客户程序( 将d l l 加载在第 一位置) 导出这些函数。w i n d o w s 在加载d l l 时输入与导出匹配。若扩展d l l 只包 含导出c + + 类,那么在创建和使用它时就很容易了,只需将自己的c + + 类加入到该 项目中即可,即将a f x e x t c l a s s 加入到类声明中。 ( 三) d i r e c ts o u n d 与w a v e 文件 d i r e c tx 是由微软针对w i n 9 5 、w i n 9 8 推出的一组驱动程序,它包括d i r e c t 3 d 、 d i r e c t d r a w 、d i r e c t i n p u t 、d i r e c t p l a y 、d i r e c t s o u n d 、d i r e c t s o u n d c a p t u r e 。它 向程序开发者提供了一个健全并有良好支持的开发平台,使他们能够方便地开发出 高性能的游戏或多媒体应用软件。它具有速度快与可控制性强两个特点。 d i r e c tx 中的d i r e c ts o u n d 组件主要用于播放声音文件,提供了立体声和3 d 声音效果,同时管理声卡的使用。它具有如下优点: 当硬件空闲时,自动启动硬件加速。 不受数量限制的声源混音。 声音合成延迟时间短暂。 自动将输入的w a v e 数据转换成与输出匹配的格式。 但是,它只支持w a v e 格式的声音文件。 d j r e c ts o u n d 中的术语 从缓冲区:是指用来执行波形数据的应用程序缓冲区。每个执行的波形文件都有一 个从缓冲区,每个样的缓冲区都有自己特定的格式。 主缓冲区:是d i r e c t s o u n d 的输出缓冲区。般说来,应用程序并非将波形数据直 接写入主缓冲区。相反,d i r e c t s o u n d 首先在从缓冲区中将波形数据加以合成,然 后输入主缓冲区中。注意:仅有一个主缓冲区并且其格式决定了其输出格式。 静态缓冲区:包含了内存中的一个完整的声音。因为,通过一次简单操作,你能 在缓冲区中写入一个完整的声音。所以,他们对于用户十分方便。静态缓冲区通过 声卡的合成加速执行。 动态缓冲区:仅仅为声音的一部分,利用它,我们并不需要大量的内存就能运行较 长的声音文件。利用流缓冲区时,用户必须周期性的在声音缓冲区中写入数据。 但是流缓冲区不能在硬件中进行声音台成。 使用d i r e c ts o u n d 步骤 1 为声音设备获一个“全局唯一标志符”( g u i d ) 。( 可选) 2 生成d i r e c ts o u n d 对象。 3 设置协作优先级。 4 设置主缓冲区对象格式( 可选) 。 主缓冲区:只有一个,真正播放区,自动将从缓冲区中的数据取出混合播放,实现 混音。 从缓冲区:可以有无数个,填充不同声音文件的数据。( 生成n 个从缓冲区,则可 同时播放n 个文件) 播放步骤: 1 初始化一个描述声音格式的w a v e f o r 砒t e x 。 2 缓冲区参数( 包括w a v e f o r m a t e x 结构指针,初始化d s b u f f e r d e s c 结构) 。 3 调用c r e a t e s o u n d b u f f e r 方法生成缓冲区对象。 4 锁定缓冲区的全部或部分。 5 复制数据到已锁定的缓冲区部分。 6 解锁。 7 设置播放位置。 8 播放缓冲区对象。 9 若为动态缓冲区对象,重复4 5 6 步,不断填充数据,不断播放以实现播放 长文件。 用多线程,用主线程负责播放,而工作者线程负责装填新数据( 4 5 6 步) 。 而要实现多个文件混音,则需要执行多个3 步,以产生多个从缓冲区对象,并各自 重复4 5 6 ,何时启动工作者线程可利用d i r e c t s o u n d n o t i f y 在播放特殊位置时, 发出通告,提示工作者线程更新数据。 w a v e 文件主要包括两部分:w a v e f o r 姒t e x 与数据流。w a v e f o r m a t e x 为格式头 表明后述声音数据流的记录格式。w a v e f o r m a t e x 由以下几部分组成: w f o r m a t t a g 表示为何种编码格式,一般为w a v e f o r m a t _ p c m 。 n c h a n n e ls 表示声道数,有单声道和双声道。 w b

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论