亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        MPEG-2視頻解碼器在DirectShow中的實(shí)現(xiàn)

        2007-01-01 00:00:00侯春明趙英男

        摘 要:MPEG-2是目前應(yīng)用最為廣泛的數(shù)字音視頻編碼國(guó)際標(biāo)準(zhǔn),大部分?jǐn)?shù)字音視頻節(jié)目是以MPEG-2的形式存在。DirectShow是目前windows操作系統(tǒng)上的優(yōu)秀的多媒體開(kāi)發(fā)編程接口。提出一個(gè)MPEG-2視頻解碼器在DirectShow中的實(shí)現(xiàn)方案。這一實(shí)現(xiàn)在多媒體應(yīng)用中具有廣泛的參考價(jià)值。

        關(guān)鍵詞:DirectShow;filter;MPEG-2;解碼器

        中圖分類號(hào):TP316.5 文獻(xiàn)標(biāo)識(shí)碼:A

        1 引言

        微軟公司提供的DirectX是用于創(chuàng)建PC游戲和多媒體應(yīng)用程序的優(yōu)秀工具。DirectX是一個(gè)用于開(kāi)發(fā)游戲以及其它各類多媒體應(yīng)用程序的底層API函數(shù)集,可以用來(lái)在windows操作平臺(tái)上開(kāi)發(fā)高性能圖形、聲音、輸入、輸出和網(wǎng)絡(luò)游戲;它是一種基于COM的系統(tǒng),既不屬于驅(qū)動(dòng)程序?qū)?,也不屬于?yīng)用程序?qū)?。DirectX的主要設(shè)計(jì)目標(biāo)是在提供某種設(shè)備獨(dú)立性的同時(shí)獲取高速度。作為Di-rectX的一個(gè)COM組成元素,DirectShow應(yīng)用程序編程接口是一個(gè)windows平臺(tái)上的流媒體架構(gòu),提供各種格式的高品質(zhì)多媒體流的捕獲、處理、傳送和回放,如AVI,ASF,MPEG,MP3,MOV等。DirectShow集成了DirectX其他組件中的先進(jìn)技術(shù),能做到自動(dòng)檢測(cè)、使用視頻和音頻硬件加速設(shè)備;它不僅支持基于WDM驅(qū)動(dòng)程序的硬件設(shè)備,也向上兼容Video for WindOWS(VFW)驅(qū)動(dòng)程序的硬件設(shè)備。

        MPEG-2是MPEG專家組于1994年公布的視、音頻壓縮和傳送標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)分成9個(gè)部分,分別是系統(tǒng)、視頻、音頻、一致性測(cè)試、參考軟件、數(shù)字存儲(chǔ)媒介命令和控制(DSM-CC:DigitalStoraRe Media Command and Contr01)、高級(jí)音頻編碼(ACC:Advanced Audio Coding)、實(shí)時(shí)接口(RTI:Real-Time Interface)和DSM-CC的一致性測(cè)試。其中系統(tǒng)部分規(guī)定了如何把壓縮的視頻、音頻及其它數(shù)據(jù)流復(fù)用成一個(gè)統(tǒng)一的數(shù)據(jù)流,以便于傳送。視頻部分和音頻部分分別規(guī)定了壓縮的視頻、音頻數(shù)據(jù)流格式及其解碼含義,即標(biāo)準(zhǔn)的解碼器。MPEG-2沒(méi)有規(guī)定標(biāo)準(zhǔn)的解碼器,只是規(guī)定了編碼器產(chǎn)生的數(shù)據(jù)流格式。這樣做的目的是在保證互連的同時(shí),允許開(kāi)發(fā)者有一定的開(kāi)發(fā)自由度,以鼓勵(lì)競(jìng)爭(zhēng)。微軟公司推出的DirectShow僅提供了MPEG-2 Splitter,用于將MPEG流的音頻、視頻分離,但是沒(méi)有提供MPEG-2的視頻解碼器,用于解碼MPEG-2格式的壓縮視頻。由于目前MPEG-2壓縮標(biāo)準(zhǔn)在多媒體領(lǐng)域得到了廣泛的應(yīng)用,大部分?jǐn)?shù)字音視頻節(jié)目是以MPEG-2的形式存在。因此,本文研究如何在Direct-Show環(huán)境中實(shí)現(xiàn)MPEG-2視頻解碼器。

        2 DirectShow Filter組件技術(shù)

        DirectShow在系統(tǒng)中所處的層次及其內(nèi)部數(shù)據(jù)處理流程如圖1所示。圖中央即是DirectShow系統(tǒng),下半部分是Ring 0特權(quán)級(jí)別的硬件設(shè)備,上半部分是Ring 3特權(quán)級(jí)別的應(yīng)用層。DirectShow系統(tǒng)位于應(yīng)用層中。它使用Filter Graph來(lái)管理整個(gè)數(shù)據(jù)流的處理過(guò)程;參與數(shù)據(jù)處理的各個(gè)功能模塊叫做過(guò)濾器(Filter);各個(gè)Filter在Filter Graph中按一定的順序連接成一條流水線協(xié)同工作。

        過(guò)濾器(Filter)是參與數(shù)據(jù)處理的各個(gè)功能模塊,并配置在過(guò)濾器圖表中,過(guò)濾器圖表管理器組件負(fù)責(zé)檢查這些過(guò)濾器的連接和控制過(guò)濾器間的數(shù)據(jù)流動(dòng)。從功能上來(lái)看,F(xiàn)ilter分為3類:SourceFilters、Transform Filters和Rendering Filters。Source Filters主要負(fù)責(zé)獲取數(shù)據(jù),數(shù)據(jù)源可以是文件、因特網(wǎng)、計(jì)算機(jī)中的采集卡(WDM驅(qū)動(dòng)或VFW驅(qū)動(dòng))和攝像頭、數(shù)字?jǐn)z像機(jī)等,然后將數(shù)據(jù)往下傳輸;Transform Filters主要負(fù)責(zé)數(shù)據(jù)的格式轉(zhuǎn)換,例如數(shù)據(jù)流分離/合成,編碼/解碼等,然后將數(shù)據(jù)繼續(xù)往下傳輸;Rendering Filters主要負(fù)責(zé)數(shù)據(jù)的最終去向一將數(shù)據(jù)送給顯卡、聲卡進(jìn)行多媒體的顯示,或者輸出到文件進(jìn)行存儲(chǔ)等。

        3 MPEG-2視頻解碼器的設(shè)計(jì)

        在DirectShow環(huán)境中播放一個(gè)MPEG-2格式的文件,需要一個(gè)MPEG-2 Splitter將MPEG流的音視頻分離;一個(gè)MPEG2的視頻解碼器,用于解碼MPEG-2格式的壓縮視頻;一個(gè)相關(guān)的音頻解碼器如ffdshow audio Decoder,用于解碼音頻。在DirectShow提供了MPEG-2 Splitter,而MPEG-2視頻解碼器需要自行開(kāi)發(fā)。

        為了實(shí)現(xiàn)MPEG-2視頻解碼器,可設(shè)計(jì)一個(gè)名為MPEG2 Decoder的Transform Filter,包含一個(gè)輸入pin、一個(gè)輸出pin,用于接收MPEG-2的視頻流輸入,解碼后輸出YUY2格式的圖像幀序列。在微軟提供的Filter測(cè)試工具GraphEdit中使用MPEG-2視頻解碼器構(gòu)建的Filter Graph如圖2所示:

        圖中xyys.vob文件為一個(gè)MPEG-2壓縮的文件,其輸出的數(shù)據(jù)流被MPEG-2 Splitter接收,并實(shí)現(xiàn)音視頻分離;視頻流由MPEG2 Decoder實(shí)現(xiàn)MPEG-2的視頻解碼,并送顯示,音頻流由ffdshow audio Decoder實(shí)現(xiàn)解碼并送播放。

        4 MPEG一2視頻解碼器的實(shí)現(xiàn)

        4.1 filter的設(shè)計(jì)

        設(shè)計(jì)一個(gè)MPEG-2視頻解碼器實(shí)際上就是在DirectShow中設(shè)計(jì)出一個(gè)能實(shí)現(xiàn)MPEG-2視頻解碼功能的filter,即圖2中的MPEG2 Decoderfilter。

        從Filter Graph的設(shè)計(jì)和功能定義上分析,MPEG2 Decoder filter是一個(gè)Transform filter。有一個(gè)輸入pin(input)和一個(gè)輸出pin(output)。由于Transform Filter是DirectShow中的一個(gè)應(yīng)用框架,實(shí)現(xiàn)“輸入->內(nèi)部處理->輸出”的功能;其中應(yīng)用邏輯,即MPEG-2的視頻解碼部分可以與應(yīng)用框架分離,以設(shè)計(jì)一個(gè)結(jié)構(gòu)清晰、擴(kuò)展性良好的Filter項(xiàng)目。

        Filter框架是完成Filter功能的一個(gè)操作函數(shù)集,以完成輸入和輸出pin上的媒體類型檢查,決定Sample內(nèi)存大小的相關(guān)功能。數(shù)據(jù)的輸入和處理完成后的輸出由Filter框架實(shí)現(xiàn),而實(shí)現(xiàn)MPEG一2的解壓縮由應(yīng)用邏輯實(shí)現(xiàn)。

        4.2 filter的編碼實(shí)現(xiàn)

        4.2.1 Filter框架的實(shí)現(xiàn)

        從DirectShow的基類CSource類繼承得到filter,以實(shí)現(xiàn)一個(gè)獨(dú)立的線程專門用于MPEG2的解碼輸出。同時(shí)可設(shè)計(jì)輸入pin類(CMpeg2InputPin)和輸出pin類(CMpeg20utPin)。在輸入pin上需要實(shí)現(xiàn)媒體類型檢查(CheekMediaType)、媒體數(shù)據(jù)的接收(Re-ceive)等相關(guān)功能。以媒體類型的檢查為例:

        4.2.2 MPEG-2解碼的實(shí)現(xiàn)

        MPEG-2源代碼可以從開(kāi)源網(wǎng)站下載(如:MPEG的官方網(wǎng)站,www.mpeg.org),下載后得到的MPEG2解碼內(nèi)核是C代碼,而Filter的開(kāi)發(fā)采用C++,為了高效實(shí)現(xiàn)C與C++的混合編程,可設(shè)計(jì)一個(gè)C++風(fēng)格的應(yīng)用程序控制類CM-pegDecode,將解碼內(nèi)核上可能被調(diào)用的C函數(shù)在這個(gè)類中封裝。Filter框架就只需調(diào)用這個(gè)控制類,從而保持較為清晰的結(jié)構(gòu)。

        5 結(jié)論

        MPEG壓縮一直是多媒體應(yīng)用領(lǐng)域中的熱點(diǎn)研究問(wèn)題,微軟公司推出的DirectShow應(yīng)用程序編程接口是一個(gè)基于windows平臺(tái)的優(yōu)秀流媒體架構(gòu)。本文設(shè)計(jì)了一個(gè)實(shí)現(xiàn)MPEG-2解壓縮的Transform filter,并在GraphEdit中得到了實(shí)現(xiàn)。同理還可以在DirectShow中實(shí)現(xiàn)其它解碼器。這一實(shí)現(xiàn)在多媒體應(yīng)用中具有廣泛的參考價(jià)值。

        亚洲一线二线三线写真| 国产激情一区二区三区不卡av | 久久精品免视看国产成人| 日韩一区二区肥| 亚洲国产综合性感三级自拍| 亚洲综合自拍偷拍一区| 久久无码av一区二区三区| 国产99视频精品免费视频免里| 亚洲熟女国产熟女二区三区| 中文字幕一区久久精品| 亚洲欧美乱综合图片区小说区| 欧美一级欧美一级在线播放| 亚洲天堂av社区久久| 亚洲麻豆视频免费观看| 久久er99热精品一区二区| 久久精品国产99精品国偷| 久久蜜桃一区二区三区| 日本亲近相奷中文字幕| 久久中文字幕无码专区| 国产视频在线一区二区三区四区| 国产一区二区三区精品毛片| 朋友的丰满人妻中文字幕| 国产色诱视频在线观看| 成人av天堂一区二区| 国产精品国产三级国产av18 | 亚洲精品无码不卡av| 99久久精品久久久| 亚洲av熟女中文字幕| 无码丰满熟妇一区二区| 国产女人18一级毛片视频| 国产av黄色一区二区| 国产精品久久久久久av| √天堂中文官网8在线| 蜜桃av观看亚洲一区二区| 五月天中文字幕日韩在线| 国产精品无圣光一区二区| 国产亚洲精品综合一区| 国产黄色一区二区在线看 | 99日本亚洲黄色三级高清网站| 日韩人妻精品视频一区二区三区 | 伊人久久无码中文字幕|