《多媒体处理技术相关知识》由会员分享,可在线阅读,更多相关《多媒体处理技术相关知识(38页珍藏版)》请在金锄头文库上搜索。
1、筏蓖绑揍厦赛钒位竣恶棕襄膝瑟用笑贷三昧卜廊握富辉夕破绷芍壕它刽亚多媒体处理技术相关知识多媒体处理技术相关知识多媒体处理技术相关知识多媒体处理技术相关知识旁业脐悉狰磷业男为碱先拌激贪湿耙橇斑括注阂卢鸳胎胁脯恰拳弄砸槽筐多媒体处理技术相关知识多媒体处理技术相关知识多媒体通信技术:附录多媒体通信技术:附录-多媒体处理技术相关知识多媒体处理技术相关知识信息科学与工程学院信息科学与工程学院宁波大学宁波大学宁波大学宁波大学 Ningbo UniversityNingbo University主要内容主要内容数字图像的原始文件格式数字图像的原始文件格式图像浏览工具图像浏览工具YUVView文件读取文件读取视
2、频解码流程视频解码流程基于基于DirectShow的多媒体编程的多媒体编程憎紫葛翅椿乒拄腋洁咎郁罩腆稻短州帝俘膊漾匆敖旅份罐放瑚栅灼欣涕倪多媒体处理技术相关知识多媒体处理技术相关知识多媒体通信技术:附录多媒体通信技术:附录-多媒体处理技术相关知识多媒体处理技术相关知识信息科学与工程学院信息科学与工程学院宁波大学宁波大学宁波大学宁波大学 Ningbo UniversityNingbo University数字图像的原始文件格式数字图像的原始文件格式RGB格式格式bmp文件文件图像处理图像处理YUV格式格式yuv文件文件视频处理视频处理仅蠢梭懂讶久虞绰涛逞赫康石稗啃估傲钟桂致氓起谱独妓啥塔块捧视友
3、卫多媒体处理技术相关知识多媒体处理技术相关知识多媒体通信技术:附录多媒体通信技术:附录-多媒体处理技术相关知识多媒体处理技术相关知识信息科学与工程学院信息科学与工程学院宁波大学宁波大学宁波大学宁波大学 Ningbo UniversityNingbo Universitybmp文件文件位图文件头位图文件头BITMAPFILEHEADER位图信息头位图信息头BITMAPINFOHEADER调色板调色板Palette实际的位图数据实际的位图数据ImageData龚针赢遗棕仟监抽沥篡庸咸挝掉安敦簇舔果敞睡冈孤愉侯庇丧过惶逼包卷多媒体处理技术相关知识多媒体处理技术相关知识多媒体通信技术:附录多媒体通信技
4、术:附录-多媒体处理技术相关知识多媒体处理技术相关知识信息科学与工程学院信息科学与工程学院宁波大学宁波大学宁波大学宁波大学 Ningbo UniversityNingbo University/14bytestypedefstructtagBITMAPFILEHEADERWORDbfType;DWORDbfSize;WORDbfReserved1;WORDbfReserved2;DWORDbfOffBits; BITMAPFILEHEADER;隆奏沾奈栅斟狈蛊惹沙钝枝芥脐糟蹭锨车景违荚琴囱咋馆馅桨曙铲敬涉贫多媒体处理技术相关知识多媒体处理技术相关知识多媒体通信技术:附录多媒体通信技术:附录-多
5、媒体处理技术相关知识多媒体处理技术相关知识信息科学与工程学院信息科学与工程学院宁波大学宁波大学宁波大学宁波大学 Ningbo UniversityNingbo University/40bytestypedef struct tagBITMAPINFOHEADERDWORDbiSize;LONGbiWidth;LONGbiHeight;WORDbiPlanes;WORDbiBitCountDWORDbiCompression;DWORDbiSizeImage;LONGbiXPelsPerMeter;LONGbiYPelsPerMeter;DWORDbiClrUsed;DWORDbiClrImp
6、ortant; BITMAPINFOHEADER;执哲盯彼韶于甭诊闲苹运扣畏度险勒琢慎蔷缘壤足亥秀坝拉芳家丫姻眼失多媒体处理技术相关知识多媒体处理技术相关知识多媒体通信技术:附录多媒体通信技术:附录-多媒体处理技术相关知识多媒体处理技术相关知识信息科学与工程学院信息科学与工程学院宁波大学宁波大学宁波大学宁波大学 Ningbo UniversityNingbo Universitytypedef struct tagRGBQUADBYTErgbBlue;/该颜色的蓝色分量该颜色的蓝色分量BYTErgbGreen; /该颜色的绿色分量该颜色的绿色分量BYTErgbRed;/该颜色的红色分量该颜色的
7、红色分量BYTErgbReserved;/保留值保留值 RGBQUAD;调色板调色板PalettePalette是对那些需要调色板的位图文是对那些需要调色板的位图文件而言的。件而言的。2424位和位和3232位是不需要调色板的。位是不需要调色板的。防蛇汀和壤守论俱撂拦岛锯勃澈窿君述气蜡住机篷儒渤职门钙征著熔札壁多媒体处理技术相关知识多媒体处理技术相关知识多媒体通信技术:附录多媒体通信技术:附录-多媒体处理技术相关知识多媒体处理技术相关知识信息科学与工程学院信息科学与工程学院宁波大学宁波大学宁波大学宁波大学 Ningbo UniversityNingbo Universityyuv文件文件亮度亮
8、度Y数据数据色度色度U数据数据色度色度V数据数据浏览工具浏览工具YUVviewerYUVviewer:完成:完成YUVYUVRGBRGB转换转换轴哉采换闷撞脱晨濒蓟凝魏宗治怕臣憎峪邢狄页灶梨肥一牵绥袋暂乔蚂铜多媒体处理技术相关知识多媒体处理技术相关知识多媒体通信技术:附录多媒体通信技术:附录-多媒体处理技术相关知识多媒体处理技术相关知识信息科学与工程学院信息科学与工程学院宁波大学宁波大学宁波大学宁波大学 Ningbo UniversityNingbo Universityyuv文件读取文件读取fileId = fopen(fileName, r);subSampleMat = 1, 1; 1,
9、 1;% read Y componentbuf = fread(fileId, width * height, uchar);imgYuv(:, :, 1) = reshape(buf, width, height).; % reshape% read U componentbuf = fread(fileId, width / 2 * height / 2, uchar);imgYuv(:, :, 2) = kron(reshape(buf, width / 2, height / 2)., subSampleMat); % read V componentbuf = fread(file
10、Id, width / 2 * height / 2, uchar);imgYuv(:, :, 3) = kron(reshape(buf, width / 2, height / 2)., subSampleMat); % reshape and upsample% convert YUV to RGBimgRgb = reshape(convertYuvToRgb(reshape(imgYuv, height * width, 3), height, width, 3);fclose(fileId);imshow(imgRgb);尖侯僧脑侮澜锄曳卵晒桅缺绪氨藻拨麻腻侣秀危呼诫欲狭争段靖唱般
11、戳桑多媒体处理技术相关知识多媒体处理技术相关知识多媒体通信技术:附录多媒体通信技术:附录-多媒体处理技术相关知识多媒体处理技术相关知识信息科学与工程学院信息科学与工程学院宁波大学宁波大学宁波大学宁波大学 Ningbo UniversityNingbo UniversitydmdmdmdmNM位移矢量位移矢量前一帧中的前一帧中的最佳匹配子块最佳匹配子块前一帧中的前一帧中的搜索区域搜索区域当前帧中当前帧中的子块的子块运动估计中的块匹配方法运动估计中的块匹配方法搜索范围搜索范围SR:SR=(M+2dm)(N+2dm)两个重要问题:两个重要问题:1. 匹配准则匹配准则2. 搜索方法搜索方法溅接篷菜佩做
12、虞诅霞绰裂每柏末柿繁草曾壶星斩诺不祟荧坎磺额洽披近铣多媒体处理技术相关知识多媒体处理技术相关知识多媒体通信技术:附录多媒体通信技术:附录-多媒体处理技术相关知识多媒体处理技术相关知识信息科学与工程学院信息科学与工程学院宁波大学宁波大学宁波大学宁波大学 Ningbo UniversityNingbo University块匹配准则块匹配准则(1)归一化相关函数)归一化相关函数NCCF (Normalized Cross-Correction Function) (1)(2)平均均方误差函数)平均均方误差函数MSD (Mean Square Difference) (2)(3)平均绝对差函数)平均
13、绝对差函数MAD (Mean Absolute Difference) (3)通常使用求和绝对差通常使用求和绝对差SAD(Sum of Absolut Difference)代替代替MAD,即,即祁痈庭尿免脸追哄俞冈铸舆猫礁鲤产晾矢克愁且藤做芽戊厕畏怪斩无坦萝多媒体处理技术相关知识多媒体处理技术相关知识多媒体通信技术:附录多媒体通信技术:附录-多媒体处理技术相关知识多媒体处理技术相关知识信息科学与工程学院信息科学与工程学院宁波大学宁波大学宁波大学宁波大学 Ningbo UniversityNingbo University搜索方法:搜索方法:1. 全搜索全搜索2. 二维对数法二维对数法3. 三
14、步法三步法4. 共轭方向法共轭方向法5. 正交搜索法正交搜索法韧芜洽绞悄稚缓搜海觅锨烦畅槐耸道波淄赴顽密财豁秽鸥类悟掖恢窍摊委多媒体处理技术相关知识多媒体处理技术相关知识多媒体通信技术:附录多媒体通信技术:附录-多媒体处理技术相关知识多媒体处理技术相关知识信息科学与工程学院信息科学与工程学院宁波大学宁波大学宁波大学宁波大学 Ningbo UniversityNingbo Universityi-6 i-5 i-4 i-3 i-2 i-1 i i+1 i+2 i+3 i+4 i+5 i+6j+6j+5 j+4 j+3j+2 j+1 jj-1j-2 j-3j-4j-5 j-6 三步法(三步法(TS
15、S)痕境徊缉荤串疥院羡缮笔瞥归杠欠笨喻掂陋柯站浚豌倚示酞目挫舶盅粥氓多媒体处理技术相关知识多媒体处理技术相关知识多媒体通信技术:附录多媒体通信技术:附录-多媒体处理技术相关知识多媒体处理技术相关知识信息科学与工程学院信息科学与工程学院宁波大学宁波大学宁波大学宁波大学 Ningbo UniversityNingbo UniversitydmdmdmdmNM当前帧中当前帧中的子块的子块位移矢量位移矢量前一帧中的前一帧中的搜索区域搜索区域(i,j)前一帧中的最前一帧中的最佳匹配子块佳匹配子块搪丫镰潍跳面箱癣宝恐檄育拦擅精巧扛洱种霓祁垢棕侣湖帅支关买圆闷呜多媒体处理技术相关知识多媒体处理技术相关知识多
16、媒体通信技术:附录多媒体通信技术:附录-多媒体处理技术相关知识多媒体处理技术相关知识信息科学与工程学院信息科学与工程学院宁波大学宁波大学宁波大学宁波大学 Ningbo UniversityNingbo University视频解码流程视频解码流程视频文件视频文件(mpg/mov)相应解码器相应解码器YUV-RGB电视编码电视编码显显示示器器电电视视机机筏居首瘩配钡霸施斑进摇桑粘傲非名坏恃岗叔介厅毡锡怪诺额卤坷峭畦诗多媒体处理技术相关知识多媒体处理技术相关知识多媒体通信技术:附录多媒体通信技术:附录-多媒体处理技术相关知识多媒体处理技术相关知识信息科学与工程学院信息科学与工程学院宁波大学宁波大学
17、宁波大学宁波大学 Ningbo UniversityNingbo University DirectShow是微软公司提供的一套在是微软公司提供的一套在Windows平台上进行流媒体处理的开发包,平台上进行流媒体处理的开发包,与与DirectX开发包一起发布。为多媒体流的开发包一起发布。为多媒体流的捕捉和回放提供了强有力的支持。捕捉和回放提供了强有力的支持。DirectShow的设计初衷就是尽量让多媒体的设计初衷就是尽量让多媒体的应用开发得到简化,使程序员从复杂的数的应用开发得到简化,使程序员从复杂的数据传输、硬件差异、流同步等工作中解放出据传输、硬件差异、流同步等工作中解放出来。来。基于基于
18、DirectShow的多媒体编程的多媒体编程天荷啥锈够娩灿卵糟只砒姓狭燃凋抗辛贱辽沂谩曳哑我趟群痰年走山纫泼多媒体处理技术相关知识多媒体处理技术相关知识多媒体通信技术:附录多媒体通信技术:附录-多媒体处理技术相关知识多媒体处理技术相关知识信息科学与工程学院信息科学与工程学院宁波大学宁波大学宁波大学宁波大学 Ningbo UniversityNingbo UniversityDirectShow系统框图系统框图佣鱼感参蜒嫌舱推仟青韩炮杏昼现腰列截膜即楷链笼躺址绦挣酬嘶俞瓶斯多媒体处理技术相关知识多媒体处理技术相关知识多媒体通信技术:附录多媒体通信技术:附录-多媒体处理技术相关知识多媒体处理技术相
19、关知识信息科学与工程学院信息科学与工程学院宁波大学宁波大学宁波大学宁波大学 Ningbo UniversityNingbo UniversityDirectShow原理原理Filter概述概述Filter Graph媒体类型媒体类型数据传送数据传送状态转换状态转换速率调整速率调整事件通知事件通知音视频同步音视频同步对硬件的支持对硬件的支持薯粗府釉夏划死佛醒险依币乐佣囤骚涟袍赢割景陶鳃陈触窑怒懒献掇惯坎多媒体处理技术相关知识多媒体处理技术相关知识多媒体通信技术:附录多媒体通信技术:附录-多媒体处理技术相关知识多媒体处理技术相关知识信息科学与工程学院信息科学与工程学院宁波大学宁波大学宁波大学宁波大
20、学 Ningbo UniversityNingbo UniversityFilter概述概述Directshow是基于模块化的,每个功能是基于模块化的,每个功能模块都采取模块都采取COM组件方式,称为组件方式,称为Filter。Directshow提供了一系列的标准的模块可提供了一系列的标准的模块可用于应用开发,开发者也可以开发自己的用于应用开发,开发者也可以开发自己的功能功能Filter来扩展来扩展Directshow的应用。的应用。Filter一般是有一个或多个一般是有一个或多个Pin组成,组成,Filter之间通过之间通过Pin相互连接。相互连接。DirectShow使用使用Filter
21、 Grpah来管理来管理Filter。偷萄姓轴畸糕韧运掠传唾偶尾呀子轻我哑棺普巢妥浙探抒枫呕连松乌剔体多媒体处理技术相关知识多媒体处理技术相关知识多媒体通信技术:附录多媒体通信技术:附录-多媒体处理技术相关知识多媒体处理技术相关知识信息科学与工程学院信息科学与工程学院宁波大学宁波大学宁波大学宁波大学 Ningbo UniversityNingbo UniversityFilter的类型的类型源过滤器(源过滤器(Source Filter)分割过滤器(分割过滤器(Splitter Filter)解码过滤器(解码过滤器(Decoder Filter)渲染过滤器(渲染过滤器(Renderer Fil
22、ter)过滤器的这些分类并不是绝对的,例如过滤器的这些分类并不是绝对的,例如一个一个ASF读过滤器(读过滤器(ASF Reader Filter)既)既是一个源过滤器又是一个分割过滤器。是一个源过滤器又是一个分割过滤器。垦摘裳贵子爸寅睛掠珊框滴炽天样焉芒非羡石媒听后哄测挡吧窖臼傍仙饱多媒体处理技术相关知识多媒体处理技术相关知识多媒体通信技术:附录多媒体通信技术:附录-多媒体处理技术相关知识多媒体处理技术相关知识信息科学与工程学院信息科学与工程学院宁波大学宁波大学宁波大学宁波大学 Ningbo UniversityNingbo University下面我们用一个例子来说明如何采取下面我们用一个例
23、子来说明如何采取Filter来播放一个来播放一个AVI的视频文件。的视频文件。1) 首先从一个文件中读取首先从一个文件中读取AVI数据,形成字节流。数据,形成字节流。(这个工作由源(这个工作由源Filter完成)完成)2) 检查检查AVI数据流的头格式,然后通过数据流的头格式,然后通过AVI分割分割Filter将视频流和音频流分开。将视频流和音频流分开。3) 解码视频流,根据压缩格式的不同,选取不同的解码视频流,根据压缩格式的不同,选取不同的decoder filters 。4) 通过通过Renderer Filter重画视频图像。重画视频图像。5) 音频流送到声卡进行播放,一般采用缺省的音频
24、流送到声卡进行播放,一般采用缺省的 DirectSound DeviceFilter。特仇晰火蚁熄栋沟笼彤限坤枢崩儒茎亨哼锨肢兰佳珊敬鸽渺琐恭顶珐扎弓多媒体处理技术相关知识多媒体处理技术相关知识多媒体通信技术:附录多媒体通信技术:附录-多媒体处理技术相关知识多媒体处理技术相关知识信息科学与工程学院信息科学与工程学院宁波大学宁波大学宁波大学宁波大学 Ningbo UniversityNingbo UniversityFilter GraphAVI格式媒体的格式媒体的Filter Graph垫型哉粒佰拖锦颗硷搭乖韭敛面贵柑膊况卖嫁咎熄剁秃呻惜亚迂刻变册挟多媒体处理技术相关知识多媒体处理技术相关知识
25、多媒体通信技术:附录多媒体通信技术:附录-多媒体处理技术相关知识多媒体处理技术相关知识信息科学与工程学院信息科学与工程学院宁波大学宁波大学宁波大学宁波大学 Ningbo UniversityNingbo UniversityFilter Graph建立建立在在DirectShow中,中,Filter Graph是由是由接口对象接口对象IGraphBuilder实现的,可以调实现的,可以调用用Win32 API函数函数CoCreateInstance()建立一个实体。建立一个实体。Filter Graph实体建立之实体建立之后不包含任何的后不包含任何的Filter,因此不具有任何,因此不具有任何
26、实际用途。需要连接合适的实际用途。需要连接合适的Filter来完成来完成FilterGraph的构建。的构建。篮怜奈杖盘麻位粪碌成钞绒浑琵沿青瘦术甲桶衣拍脂血荒厚敲惫书义蛀曲多媒体处理技术相关知识多媒体处理技术相关知识多媒体通信技术:附录多媒体通信技术:附录-多媒体处理技术相关知识多媒体处理技术相关知识信息科学与工程学院信息科学与工程学院宁波大学宁波大学宁波大学宁波大学 Ningbo UniversityNingbo University1)RenderFileIGraphBuilder提供了多种智能完成提供了多种智能完成FilterGraph构建的方法。构建的方法。最简单的是使用接口方法最简
27、单的是使用接口方法IGraphBuilder:RenderFile。HRESULT RenderFile(LPCWSTR lpwstrFile, LPCWSTR lpwstrPlayList);2)Render这个接口方法从一个输出这个接口方法从一个输出Pin开始,自动构建剩余的开始,自动构建剩余的FilterGraph。这个方法自动添加必要的。这个方法自动添加必要的Filter,直到添加到一,直到添加到一个个Render Filter为止。为止。3)ConnectDriect这个方法尝试将两个这个方法尝试将两个Filter直接相连,如果不成功,直接返回。直接相连,如果不成功,直接返回。不作其
28、他处理。这个接口方法一般用作两个不作其他处理。这个接口方法一般用作两个Pin之间的协商检查,之间的协商检查,而不直接用于两个而不直接用于两个Filter的连接。的连接。雨船然爵馒擎雀贪秩颂藉臣乔乖蹋肤巫帽般谩懊哭暇汕测斡韩犬隧懦表妒多媒体处理技术相关知识多媒体处理技术相关知识多媒体通信技术:附录多媒体通信技术:附录-多媒体处理技术相关知识多媒体处理技术相关知识信息科学与工程学院信息科学与工程学院宁波大学宁波大学宁波大学宁波大学 Ningbo UniversityNingbo University4)Connect这个接口方法是这个接口方法是ConnectDirect接口方法的延伸和扩展。同接口
29、方法的延伸和扩展。同样是连接两个样是连接两个Filter,但是与,但是与ConnectDirect方法不同的是,方法不同的是,这个接口方法首先尝试这个接口方法首先尝试ConnectDirect方法连接两个方法连接两个Filter,如果不能直接连接,则尝试使用中间如果不能直接连接,则尝试使用中间Filter连接。连接。5)AddFilter这个接口方法将指定的这个接口方法将指定的Filter加入到加入到Filter Graph中,但这中,但这个新加入的个新加入的Filter并不会和并不会和Filter Graph中的其他中的其他Filter形成连形成连接。接。6) 手动构建手动构建Filter
30、Graph手工构建手工构建Filter Graph的基础在于对于媒体文件所需要的的基础在于对于媒体文件所需要的Filter有着相当深入清晰地了解的基础上。否则,手工构架的有着相当深入清晰地了解的基础上。否则,手工构架的FilterGraph将存在可靠性、健壮性等问题。将存在可靠性、健壮性等问题。外芝陀逗蔗蔓旧幕物谩恨赊至贸督殖辐冤截室盼戎兽瞎几莱桨法步称阐耻多媒体处理技术相关知识多媒体处理技术相关知识多媒体通信技术:附录多媒体通信技术:附录-多媒体处理技术相关知识多媒体处理技术相关知识信息科学与工程学院信息科学与工程学院宁波大学宁波大学宁波大学宁波大学 Ningbo UniversityNin
31、gbo University智能连接智能连接RenderFile、Render与与Connect这三种方法这三种方法都有自动的功能。在都有自动的功能。在DirectShow中,这种自动中,这种自动机制称为智能连接。机制称为智能连接。为什么在智能连接中不同类型的为什么在智能连接中不同类型的Filter会连在各自的位置上呢?会连在各自的位置上呢?这是因为这些这是因为这些Filter能接受的媒体类型不同。一般来讲,从源能接受的媒体类型不同。一般来讲,从源Filter出来的数据流,只简单的带有属于哪种编码格式信息,其它信息都出来的数据流,只简单的带有属于哪种编码格式信息,其它信息都是未知的,所以音是未
32、知的,所以音/视频解码视频解码Filter不能用,音不能用,音/视频渲染视频渲染Filter也不也不能用,只有分离能用,只有分离Filter可能匹配这种媒体类型,所以只会试连分离可能匹配这种媒体类型,所以只会试连分离Filter。而从分离。而从分离Filter出来的数据分为音、视频两路,每路的数据出来的数据分为音、视频两路,每路的数据流都加上了是音频还是视频的信息,但没有标明这是何种音频或何流都加上了是音频还是视频的信息,但没有标明这是何种音频或何种视频的信息,所以可以被音种视频的信息,所以可以被音/视频解码器视频解码器Filter接受,但不会被音接受,但不会被音/视频渲染视频渲染Filter
33、接受。而从解码接受。而从解码Filter出来的数据流带上了是何种格出来的数据流带上了是何种格式的音式的音/视频媒体类型的信息,所以能被音视频媒体类型的信息,所以能被音/视频渲染视频渲染Filter接受。接受。谈稳娜毡幅玛宝准贫喻雨遥物堡墓秘魁仪幽汪挤捌唐薄奸扬脖矽挎枢旷树多媒体处理技术相关知识多媒体处理技术相关知识多媒体通信技术:附录多媒体通信技术:附录-多媒体处理技术相关知识多媒体处理技术相关知识信息科学与工程学院信息科学与工程学院宁波大学宁波大学宁波大学宁波大学 Ningbo UniversityNingbo University媒体类型媒体类型Filter总是要处理一定格式的数据流。总是
34、要处理一定格式的数据流。DirectShow便是用媒体类型来描述特定的便是用媒体类型来描述特定的数据流。媒体类型实际上是数据流。媒体类型实际上是DirectShow定定义的一个数据结构。当两个义的一个数据结构。当两个Filter连接的时连接的时候,他们会就采用哪一种媒体类型达成一候,他们会就采用哪一种媒体类型达成一致的协议。媒体类型主要用三部分来描述:致的协议。媒体类型主要用三部分来描述:majortype、subtype和和formattype。这。这三部分各自用一个三部分各自用一个GUID来标示。来标示。买咖缸辣摸溶翁悸校替垒牡滚隘苔那篇诊胞襄具建偏拂澜颐辐妙景鸭坪律多媒体处理技术相关知识
35、多媒体处理技术相关知识多媒体通信技术:附录多媒体通信技术:附录-多媒体处理技术相关知识多媒体处理技术相关知识信息科学与工程学院信息科学与工程学院宁波大学宁波大学宁波大学宁波大学 Ningbo UniversityNingbo Universitymajortype:定性地描述媒体类型,如指定这是一个视频:定性地描述媒体类型,如指定这是一个视频(MEDIATYPE_Video)、音频、音频(MEDIATYPE_Audio)或者字节流或者字节流(MEDIATYPE_Stream)等。等。subtype:辅助说明:辅助说明majortype,指明具体是哪种格式,指明具体是哪种格式,例如例如major
36、type是视频,是视频,subtype可以进一步指明是可以进一步指明是UYVY、YUY2、RGB24或或RGB32等;若等;若majortype是音频,是音频,subtype可以进一步指明是可以进一步指明是PCM格式还是格式还是AC3格式等。格式等。formattype:指定了一种进一步描述格式细节的数据结构:指定了一种进一步描述格式细节的数据结构类型,格式细节描述的内容主要包括视频图像的大小、帧率,类型,格式细节描述的内容主要包括视频图像的大小、帧率,或音频的采样频率、量化精度等参数。或音频的采样频率、量化精度等参数。贸策盼斤哈跨忌诗酮颓樊馆全灭敌订各敲残盔郑挡奇镊匿铺钮孤灼采跋啼多媒体处理
37、技术相关知识多媒体处理技术相关知识多媒体通信技术:附录多媒体通信技术:附录-多媒体处理技术相关知识多媒体处理技术相关知识信息科学与工程学院信息科学与工程学院宁波大学宁波大学宁波大学宁波大学 Ningbo UniversityNingbo University数据传送数据传送谢排鸭捕添炉挨绸钦饺浙瓢朔寇龙仗饺竞腑车世弯迁均酱咽都潍棠藤陨乡多媒体处理技术相关知识多媒体处理技术相关知识多媒体通信技术:附录多媒体通信技术:附录-多媒体处理技术相关知识多媒体处理技术相关知识信息科学与工程学院信息科学与工程学院宁波大学宁波大学宁波大学宁波大学 Ningbo UniversityNingbo Univers
38、ity Filter通过通过pin的连接来传递数据,数据流是从一个的连接来传递数据,数据流是从一个Filter的输出的输出pin流向相连的流向相连的Filter的输入的输入pin。输出。输出pin常用的传递数据的方式是调用常用的传递数据的方式是调用输入输入pin上的上的IMemInputPin:Receive方法。方法。 在在Directshow中用来进行内存分配任务的是内存分配器中用来进行内存分配任务的是内存分配器(allocator),这是一个,这是一个COM对象。当两个对象。当两个pin连接的时候,必须有一个连接的时候,必须有一个pin提供一个提供一个allocator。Directsh
39、ow定义了一系列函数来确定由哪个定义了一系列函数来确定由哪个pin提供提供allocator,以及,以及buffer的数量和大小。的数量和大小。 在数据流开始之前,在数据流开始之前,allocator会创建一个内存池,在开始发送数会创建一个内存池,在开始发送数据流以后,源据流以后,源Filter就会将数据填充到内存池中一个空闲的就会将数据填充到内存池中一个空闲的buffer中,然中,然后传递给下面的后传递给下面的Filter。但是,源。但是,源Filter并不是直接将内存并不是直接将内存buffer的指针直的指针直接传递给下游的接传递给下游的Filter,而是通过一个,而是通过一个media
40、samples的的COM对象,这对象,这个个sample是是allocator创建的用来管理内存创建的用来管理内存buffer。 当一个当一个Filter正在使用正在使用buffer,它就会保持一个,它就会保持一个sample的引用计数,的引用计数,allocator通过通过sample的引用计数用来确定是否可以重新使用一个的引用计数用来确定是否可以重新使用一个buffer。这样就防止了这样就防止了buffer的使用冲突,当所有的的使用冲突,当所有的Filter都释放了对都释放了对sample的引的引用,用,sample才返回到才返回到allocator的内存池,供重新使用。的内存池,供重新使
41、用。育炎暑侍毛乌逐曝铀环次激晒蓬劳嫉掐掩洪谎拍芝寞扼犀趟涤善穗涨活雹多媒体处理技术相关知识多媒体处理技术相关知识多媒体通信技术:附录多媒体通信技术:附录-多媒体处理技术相关知识多媒体处理技术相关知识信息科学与工程学院信息科学与工程学院宁波大学宁波大学宁波大学宁波大学 Ningbo UniversityNingbo University状态转换状态转换 Filter Graph在任何时候只有三种状态:运行、暂停、在任何时候只有三种状态:运行、暂停、停止。其中暂停可以理解为数据就绪状态,是为了快速切换停止。其中暂停可以理解为数据就绪状态,是为了快速切换到运行状态而设计的。作为一种中间状态,暂停也是
42、停止与到运行状态而设计的。作为一种中间状态,暂停也是停止与运行之间切换所必经的一种状态。运行之间切换所必经的一种状态。 对对Filter Graph状态的控制也就集中在三种状态之间状态的控制也就集中在三种状态之间的切换。在的切换。在IGraphBuilder上申请上申请IMediaControl接口。获得接口。获得这个接口后,就可以使用其接口方法:这个接口后,就可以使用其接口方法:IMediaControl:Run();IMediaControl:Pause();IMediaControl:Stop();IMediaControl: GetState( LONG msTimeout, OAFi
43、lterState *pfs);显阐胞浆蛾隋鸥南催苯务尝臼运羊逛靳狐巢绎钨宦仰疑皇稼墟葫楼戎濒唤多媒体处理技术相关知识多媒体处理技术相关知识多媒体通信技术:附录多媒体通信技术:附录-多媒体处理技术相关知识多媒体处理技术相关知识信息科学与工程学院信息科学与工程学院宁波大学宁波大学宁波大学宁波大学 Ningbo UniversityNingbo University速率调整速率调整 媒体文件播放时的当前位置和停止位置相对于开始位置媒体文件播放时的当前位置和停止位置相对于开始位置都是不变的。调用都是不变的。调用IMediaSeeking接口的接口的SetRate方法可以改变方法可以改变播放的速率。当
44、应用程序执行了播放的速率。当应用程序执行了IMediaSeeking:SetRate后,后,Filter Graph Manager的内部响应如下:的内部响应如下:1)调用)调用IMediaSeeking:GetCurrentPosition得到当前播放得到当前播放位置位置2)如果当前)如果当前Filter Graph处于暂停或运行状态,则调用处于暂停或运行状态,则调用Stop3)调用)调用IMediaSeeking:SetPosition将步骤将步骤(1)中取得的当中取得的当前位置重新设置一下前位置重新设置一下4)调用)调用IMediaSeeking:SetRate设置新的播放速率设置新的播
45、放速率5)如果先前)如果先前Filter Graph的状态为暂停或运行,则恢复这个的状态为暂停或运行,则恢复这个暂停暂停 利用利用IMediaSeeking接口的接口的GetCurrentPosition和和SetPosition可以实现媒体的随机定位。可以实现媒体的随机定位。劈抠坝亏谐暖卿端葡放栖再司膜羌萧箭畜暮羚迸匈釜剧影籽条亡搽葬甭叫多媒体处理技术相关知识多媒体处理技术相关知识多媒体通信技术:附录多媒体通信技术:附录-多媒体处理技术相关知识多媒体处理技术相关知识信息科学与工程学院信息科学与工程学院宁波大学宁波大学宁波大学宁波大学 Ningbo UniversityNingbo Unive
46、rsity事件通知事件通知 DirectShow有一种机制,能够让应用程序与有一种机制,能够让应用程序与Filter Graph Manager之间实现交互控制。这个机制就是事件之间实现交互控制。这个机制就是事件通知通知(Event Notification),即当,即当Filter状态转换、运行时状态转换、运行时遇到错误或要求重绘视频窗口时,都会发出一个特定的事遇到错误或要求重绘视频窗口时,都会发出一个特定的事件,由件,由Filter Graph Manager处理或者转发给应用程序,处理或者转发给应用程序,应用程序可以接受事件,并根据事件类型作出相应的处理。应用程序可以接受事件,并根据事件
47、类型作出相应的处理。 应用程序调用应用程序调用IMediaEvent:GetEvent方法来接收方法来接收数据。这个方法会被阻断直到从一个队列中得到一个事件数据。这个方法会被阻断直到从一个队列中得到一个事件或者超过时限。因为事件通知和消息循环都是异步的,所或者超过时限。因为事件通知和消息循环都是异步的,所以在应用程序对消息作出响应时,队列中有可能包含多个以在应用程序对消息作出响应时,队列中有可能包含多个事件消息。因此,在事件处理代码中,应不停地的调用事件消息。因此,在事件处理代码中,应不停地的调用GetEvent方法,直至返回失败码,即消息队列已为空。方法,直至返回失败码,即消息队列已为空。垒
48、奄约站采奖芯孔昼度环肚辊绣芥题奔缸鸿屹贯没普虫懒突拂赴率尽麓挚多媒体处理技术相关知识多媒体处理技术相关知识多媒体通信技术:附录多媒体通信技术:附录-多媒体处理技术相关知识多媒体处理技术相关知识信息科学与工程学院信息科学与工程学院宁波大学宁波大学宁波大学宁波大学 Ningbo UniversityNingbo University音视频同步音视频同步 DirectShow的解决方案就是为的解决方案就是为Filter Graph选择一个公共的参考时钟,并且要求传送到选择一个公共的参考时钟,并且要求传送到Render Filter的每个的每个Sample打上时间戳;打上时间戳;Video Rende
49、r和和Audio Render根据根据Sample的时间戳以的时间戳以及参考时钟当前的参考时间,来正确安排及参考时钟当前的参考时间,来正确安排Sample的播放时机。如果的播放时机。如果Sample到底的时间晚了,则马到底的时间晚了,则马上播放这个上播放这个Sample或丢弃该或丢弃该Sample,然后发生消,然后发生消息要求加快息要求加快Sample的传送;如果的传送;如果Sample到达的时到达的时间早了,则间早了,则Render Filter等待,直到等待,直到Sample时间时间戳的开始时间再开始播放,并发生消息要求减慢戳的开始时间再开始播放,并发生消息要求减慢Sample的发送。的发
50、送。梯狄错讲哉焚昔裔楔肌笆矛长错鲤担桶砌林韶霸据挖乐青菲欲蓟丁璃萄膝多媒体处理技术相关知识多媒体处理技术相关知识多媒体通信技术:附录多媒体通信技术:附录-多媒体处理技术相关知识多媒体处理技术相关知识信息科学与工程学院信息科学与工程学院宁波大学宁波大学宁波大学宁波大学 Ningbo UniversityNingbo University硬件支持硬件支持 为了提高系统的稳定性,为了提高系统的稳定性,Windows操作系统对硬件操作系统对硬件操作进行了隔离;应用程序一般不能直接访问硬件。操作进行了隔离;应用程序一般不能直接访问硬件。DirectShow?Filter工作在用户模式(工作在用户模式(U
51、ser mode,操作,操作系统特权级别为系统特权级别为Ring 3),而硬件工作在内核模式),而硬件工作在内核模式(Kernel mode,操作系统特权级别为,操作系统特权级别为Ring 0),那么它),那么它们之间怎么协同工作呢?们之间怎么协同工作呢? DirectShow解决的方法是,为这些硬件设计包装解决的方法是,为这些硬件设计包装Filter。这种。这种Filter能够工作在用户模式下,外观、控制方能够工作在用户模式下,外观、控制方法跟普通法跟普通Filter一样,而包装一样,而包装Filter内部完成与硬件驱动程内部完成与硬件驱动程序的交互。这样的设计,使得编写序的交互。这样的设计
52、,使得编写DirectShow应用程序应用程序的开发人员,从为支持硬件而需做出的特殊处理中解脱出的开发人员,从为支持硬件而需做出的特殊处理中解脱出来。来。涟邑靳焊铃资拆刻捎瑰叔甸壹稳凑有慰缸皖馆砾织嘴附三涟互库矮亭凤掉多媒体处理技术相关知识多媒体处理技术相关知识多媒体通信技术:附录多媒体通信技术:附录-多媒体处理技术相关知识多媒体处理技术相关知识信息科学与工程学院信息科学与工程学院宁波大学宁波大学宁波大学宁波大学 Ningbo UniversityNingbo University 硬件的包装硬件的包装Filter淹随身添回笺淆稀蔡檄村镐找栖炒伦效夹锻熟很意歪预兼皱炳为糊蝎憨桐多媒体处理技术相
53、关知识多媒体处理技术相关知识多媒体通信技术:附录多媒体通信技术:附录-多媒体处理技术相关知识多媒体处理技术相关知识信息科学与工程学院信息科学与工程学院宁波大学宁波大学宁波大学宁波大学 Ningbo UniversityNingbo University#include #include #pragma comment(lib, strmbasd.lib)/ 包含库文件和头文件包含库文件和头文件.IGraphBuilder *pGraph = NULL;IMediaControl *pControl = NULL;IMediaEvent *pEvent = NULL;/ 接口变量初始化接口变量初
54、始化HRESULT hr = CoInitialize(NULL); / 初始化初始化COM库库.hr = CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, IID_IGraphBuilder, (void*)&pGraph); / 创建创建Filter Graph Manage实例实例.hr = pGraph-QueryInterface(IID_IMediaControl, (void*)&pControl);hr = pGraph-QueryInterface(IID_IMediaEvent, (void*)&
55、pEvent);hr = pGraph-RenderFile(L“xxxxxxxx.avi, NULL); / 构建构建Filter Graph.hr = pControl-Run(); / 播放媒体文件播放媒体文件.long evCode;pEvent-WaitForCompletion(INFINITE, &evCode);/ 等待播放结束等待播放结束pControl-Release();pEvent-Release();pControl-Release();CoUninitialize(); / 释放接口指针并关闭释放接口指针并关闭COM库库靛愉始奄晓椅乙锥妊剂瑰彭坏拱收疟蚤啤铣荆用榨导
56、瑰爸溺夏仪法浪贬辗多媒体处理技术相关知识多媒体处理技术相关知识多媒体通信技术:附录多媒体通信技术:附录-多媒体处理技术相关知识多媒体处理技术相关知识信息科学与工程学院信息科学与工程学院宁波大学宁波大学宁波大学宁波大学 Ningbo UniversityNingbo UniversityDirectShow提供高质量的多媒体数据提供高质量的多媒体数据流的捕获和回放功能,广泛支持多种媒体格流的捕获和回放功能,广泛支持多种媒体格式,同时式,同时DirectShow对对VFW 具有良好的兼具有良好的兼容性,并具有其无法比拟的优势,支持视频容性,并具有其无法比拟的优势,支持视频与音频在捕获和播放中的完全同步。与音频在捕获和播放中的完全同步。DirectShow的设计初衷就是尽量让多媒体的设计初衷就是尽量让多媒体的应用开发得到简化,使程序员从复杂的数的应用开发得到简化,使程序员从复杂的数据传输、硬件差异、流同步等工作中解放出据传输、硬件差异、流同步等工作中解放出来。来。骡签贮虑祷买闲恕紫订搽恳辕秀硒壮菱巧坍韦穿认札柔咳卵酿忿鸡额剁傻多媒体处理技术相关知识多媒体处理技术相关知识