日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > windows >内容正文

windows

DirectShow系统初级指南

發(fā)布時(shí)間:2023/12/18 windows 68 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DirectShow系统初级指南 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

流媒體的處理,以其復(fù)雜性和技術(shù)性,一向廣受工業(yè)界的關(guān)注。特別伴隨著因特網(wǎng)的普及,流媒體在網(wǎng)絡(luò)上的廣泛應(yīng)用,怎樣使流媒體的處理變得簡(jiǎn)單而富有成效逐漸成為了焦點(diǎn)問(wèn)題。選擇一種合適的應(yīng)用方案,事半功倍。此時(shí),微軟的DirectShow,給了我們一個(gè)不錯(cuò)的選擇。

  DirectShow是微軟公司提供的一套在Windows平臺(tái)上進(jìn)行流媒體處理的開(kāi)發(fā)包,與DirectX開(kāi)發(fā)包一起發(fā)布。目前,DirectX最新版本為8.1。

  那么,DirectShow能夠做些什么呢?且看,DirectShow為多媒體流的捕捉和回放提供了強(qiáng)有力的支持。運(yùn)用DirectShow,我們可以很方便地從支持WDM驅(qū)動(dòng)模型的采集卡上捕獲數(shù)據(jù),并且進(jìn)行相應(yīng)的后期處理乃至存儲(chǔ)到文件中。它廣泛地支持各種媒體格式,包括Asf、Mpeg、Avi、Dv、Mp3、Wave等等,使得多媒體數(shù)據(jù)的回放變得輕而易舉。另外,DirectShow還集成了DirectX其它部分(比如DirectDraw、DirectSound)的技術(shù),直接支持DVD的播放,視頻的非線性編輯,以及與數(shù)字?jǐn)z像機(jī)的數(shù)據(jù)交換。更值得一提的是,DirectShow提供的是一種開(kāi)放式的開(kāi)發(fā)環(huán)境,我們可以根據(jù)自己的需要定制自己的組件。

?

  DirectShow使用一種叫Filter Graph的模型來(lái)管理整個(gè)數(shù)據(jù)流的處理過(guò)程;參與數(shù)據(jù)處理的各個(gè)功能模塊叫做Filter;各個(gè)Filter在Filter Graph中按一定的順序連接成一條“流水線”協(xié)同工作。大家可以看到,按照功能來(lái)分,Filter大致分為三類:Source Filters、Transform Filters和Rendering Filters。Source Filters主要負(fù)責(zé)取得數(shù)據(jù),數(shù)據(jù)源可以是文件、因特網(wǎng)、或者計(jì)算機(jī)里的采集卡、數(shù)字?jǐn)z像機(jī)等,然后將數(shù)據(jù)往下傳輸;Transform Fitlers主要負(fù)責(zé)數(shù)據(jù)的格式轉(zhuǎn)換、傳輸;Rendering Filtes主要負(fù)責(zé)數(shù)據(jù)的最終去向,我們可以將數(shù)據(jù)送給聲卡、顯卡進(jìn)行多媒體的演示,也可以輸出到文件進(jìn)行存儲(chǔ)。值得注意的是,三個(gè)部分并不是都只有一個(gè)Filter去完成功能。恰恰相反,每個(gè)部分往往是有幾個(gè)Fitler協(xié)同工作的。比如,Transform Filters可能包含了一個(gè)Mpeg的解碼Filter、以及視頻色彩空間的轉(zhuǎn)換Filter、音頻采樣頻率轉(zhuǎn)換Filter等等。除了系統(tǒng)提供的大量Filter外,我們可以定制自己的Filter,以完成我們需要的功能。下圖是一條典型的Avi文件回放Filter Graph鏈路:

  在DirectShow系統(tǒng)之上,我們看到的,即是我們的應(yīng)用程序(Application)。應(yīng)用程序要按照一定的意圖建立起相應(yīng)的Filter Graph,然后通過(guò)Filter Graph Manager來(lái)控制整個(gè)的數(shù)據(jù)處理過(guò)程。DirectShow能在Filter Graph運(yùn)行的時(shí)候接收到各種事件,并通過(guò)消息的方式發(fā)送到我們的應(yīng)用程序。這樣,就實(shí)現(xiàn)了應(yīng)用程序與DirectShow系統(tǒng)之間的交互。下圖給出了DirectShow應(yīng)用程序開(kāi)發(fā)的一般過(guò)程:

  以上簡(jiǎn)單介紹了DirectShow的系統(tǒng)結(jié)構(gòu),希望大家對(duì)這個(gè)強(qiáng)勁的應(yīng)用框架已經(jīng)有了大概的認(rèn)識(shí)。如果你有興趣,可以詳細(xì)研究DirectX的幫助文檔。DirectShow是一個(gè)強(qiáng)大的開(kāi)發(fā)包;另外,它是基于COM的,因此要求程序員具有COM編程的一些基本知識(shí)。關(guān)于如何深入學(xué)習(xí)DirectShow應(yīng)用結(jié)構(gòu)以及開(kāi)發(fā)自己的Filter,請(qǐng)參閱筆者的后續(xù)文章。筆者將從編程的角度,詳細(xì)講述來(lái)源于實(shí)際工作中的經(jīng)驗(yàn)之談。

  從下面開(kāi)始,我們要從程序員的角度,進(jìn)一步深入探討一下DirectShow的應(yīng)用以及Filter的開(kāi)發(fā)。

  在這之前,筆者首先要特別提一下微軟提供的一個(gè)Filter測(cè)試工具——GraphEdit,它的路徑在DXSDK/bin/DXUtils/GraphEdit.exe。(如果您還沒(méi)有安裝DirectX SDK,請(qǐng)到微軟的網(wǎng)站上去下載。)通過(guò)這個(gè)工具,我們可以很直觀地看到Filter Graph的運(yùn)行及處理流程,方便我們進(jìn)行程序調(diào)試。(如果您手邊就有電腦,還等什么,馬上體驗(yàn)一下吧:運(yùn)行GraphEdit,執(zhí)行File->Render Media File…選擇一個(gè)媒體文件;當(dāng)Filter Graph構(gòu)建成功后,按下工具欄的運(yùn)行按鈕;您就能看到剛才選擇的媒體文件被回放出來(lái)了!看到了吧,寫(xiě)一個(gè)媒體播放器也就這么回事!)

  接下去,我們開(kāi)講Filter的開(kāi)發(fā)。

  學(xué)習(xí)DirectShow Filter的開(kāi)發(fā),不外乎以下幾種方法:看幫助文檔、看示例代碼和看SDK基類源代碼。看幫助文檔,應(yīng)著重于總體概念上的理解;看示例代碼應(yīng)與基類源代碼的研究同步進(jìn)行,因?yàn)樽约簩?xiě)Filter,關(guān)鍵的第一步是選擇一個(gè)合適的Filter基類和Pin的基類。對(duì)于Filter的把握,一般認(rèn)為要掌握以下三方面的內(nèi)容:Filter之間Pin的連接、Filter之間的數(shù)據(jù)傳輸以及流媒體的隨機(jī)訪問(wèn)(或者說(shuō)流的定位)。下面就開(kāi)始分別進(jìn)行闡述。

  所謂的Filter Pin之間的連接,實(shí)際上是Pin之間Media Type(媒體類型)的一個(gè)協(xié)商過(guò)程。連接總是從輸出Pin指向輸入Pin的。要想深入了解具體的連接過(guò)程,就必須認(rèn)真研讀SDK的基類源代碼(位于DXSDK/samples/Multimedia/DirectShow/BaseClasses/amfilter.cpp,類CBasePin的Connect方法)。連接的大致過(guò)程為,枚舉欲連接的輸入Pin上所有的媒體類型,逐一用這些媒體類型與輸出Pin進(jìn)行連接,如果輸出Pin也接受這種媒體類型,則Pin之間的連接宣告成功;如果所有輸入Pin上枚舉的媒體類型輸出Pin都不支持,則枚舉輸出Pin上的所有媒體類型,并逐一用這些媒體類型與輸入Pin進(jìn)行連接。如果輸入Pin接受其中的一種媒體類型,則Pin之間的連接到此也宣告成功;如果輸出Pin上的所有媒體類型,輸入Pin都不支持,則這兩個(gè)Pin之間的連接過(guò)程宣告失敗。

  有一點(diǎn)需要注意的是,上述的輸入Pin與輸出Pin一般不屬于同一個(gè)Filter,典型的是上一級(jí)Filter(也叫Upstream Filter)的輸出Pin連向下一級(jí)Filter(也叫Downstream Filter)的輸入Pin。

  當(dāng)Filter的Pin之間連接完成,也就是說(shuō),連接雙方通過(guò)協(xié)商取得了一種大家都支持的媒體類型之后,即開(kāi)始為數(shù)據(jù)傳輸做準(zhǔn)備。這些準(zhǔn)備工作中,最重要的是Pin上的內(nèi)存分配器的協(xié)商,一般也是由輸出Pin發(fā)起。在DirectShow Filter之間,數(shù)據(jù)是通過(guò)一個(gè)一個(gè)數(shù)據(jù)包傳送的,這個(gè)數(shù)據(jù)包叫做Sample。Sample本身是一個(gè)COM對(duì)象,擁有一段內(nèi)存用以裝載數(shù)據(jù),Sample就由內(nèi)存分配器(Allocator)來(lái)統(tǒng)一管理。已成功連接的一對(duì)輸出、輸入Pin使用同一個(gè)內(nèi)存分配器,所以數(shù)據(jù)從輸出Pin傳送到輸入Pin上是無(wú)需內(nèi)存拷貝的。而典型的數(shù)據(jù)拷貝,一般發(fā)生在Filter內(nèi)部,從Filter的輸入Pin上讀取數(shù)據(jù)后,進(jìn)行一定意圖的處理,然后在Filter的輸出Pin上填充數(shù)據(jù),然后繼續(xù)往下傳輸。下面,我們就具體闡述一下Filter之間的數(shù)據(jù)傳送。
首先,大家要區(qū)分一下Filter的兩種主要的數(shù)據(jù)傳輸模式:推模式(Push Model)和拉模式(Pull Model)。

  所謂推模式,即源Filter(Source Filter)自己能夠產(chǎn)生數(shù)據(jù),并且一般在它的輸出Pin上有獨(dú)立的子線程負(fù)責(zé)將數(shù)據(jù)發(fā)送出去,常見(jiàn)的情況如代表WDM模型的采集卡的Live Source Filter;而所謂拉模式,即源Filter不具有把自己的數(shù)據(jù)送出去的能力,這種情況下,一般源Filter后緊跟著接一個(gè)Parser Filter或Splitter Filter,這種Filter一般在輸入Pin上有個(gè)獨(dú)立的子線程,負(fù)責(zé)不斷地從源Filter索取數(shù)據(jù),然后經(jīng)過(guò)處理后將數(shù)據(jù)傳送下去,常見(jiàn)的情況如文件源。推模式下,源Filter是主動(dòng)的;拉模式下,源Filter是被動(dòng)的。而事實(shí)上,如果將上圖拉模式中的源Filter和Splitter Filter看成另一個(gè)虛擬的源Filter,則后面的Filter之間的數(shù)據(jù)傳輸也與推模式完全相同。

  那么,數(shù)據(jù)到底是怎么通過(guò)連接著的Pin傳輸?shù)哪?#xff1f;首先來(lái)看推模式。在源Filter后面的Filter輸入Pin上,一定實(shí)現(xiàn)了一個(gè)IMemInputPin接口,數(shù)據(jù)正是通過(guò)上一級(jí)Filter調(diào)用這個(gè)接口的Receive方法進(jìn)行傳輸?shù)摹V档米⒁獾氖?#xff08;上面已經(jīng)提到過(guò)),數(shù)據(jù)從輸出Pin通過(guò)Receive方法調(diào)用傳輸?shù)捷斎隤in上,并沒(méi)有進(jìn)行內(nèi)存拷貝,它只是一個(gè)相當(dāng)于數(shù)據(jù)到達(dá)的“通知”。再看一下拉模式。拉模式下的源Filter的輸出Pin上,一定實(shí)現(xiàn)了一個(gè)IAsyncReader接口;其后面的Splitter Filter,就是通過(guò)調(diào)用這個(gè)接口的Request方法或者SyncRead方法來(lái)獲得數(shù)據(jù)。Splitter Filter然后像推模式一樣,調(diào)用下一級(jí)Filter輸入Pin上的IMemInputPin接口Receive方法實(shí)現(xiàn)數(shù)據(jù)的往下傳送。深入了解這部分內(nèi)容,請(qǐng)認(rèn)真研讀SDK的基類源代碼(位于DXSDK/samples/Multimedia/DirectShow/BaseClasses/source.cpp和pullpin.cpp)。

  下面,我們來(lái)講一下流的定位(Media Seeking)。在GraphEdit中,當(dāng)我們成功構(gòu)建了一個(gè)Filter Graph之后,我們就可以播放它。在播放中,我們可以看到進(jìn)度條也在相應(yīng)地前進(jìn)。當(dāng)然,我們也可以通過(guò)拖動(dòng)進(jìn)度條,實(shí)現(xiàn)隨機(jī)訪問(wèn)。要做到這一點(diǎn),在應(yīng)用程序級(jí)別應(yīng)該可以知道Filter Graph總共要播放多長(zhǎng)時(shí)間,當(dāng)前播放到什么位置等等。那么,在Filter級(jí)別,這一點(diǎn)是怎么實(shí)現(xiàn)的呢?

  我們知道,若干個(gè)Filter通過(guò)Pin的相互連接組成了Filter Graph。而這個(gè)Filter Graph是由另一個(gè)COM對(duì)象Filter Graph Manager來(lái)管理的。通過(guò)Filter Graph Manager,我們就可以得到一個(gè)IMediaSeeking的接口來(lái)實(shí)現(xiàn)對(duì)流媒體的定位。在Filter級(jí)別,我們可以看到,Filter Graph Manager首先從最后一個(gè)Filter(Renderer Filter)開(kāi)始,詢問(wèn)上一級(jí)Filter的輸出Pin是否支持IMediaSeeking接口。如果支持,則返回這個(gè)接口;如果不支持,則繼續(xù)往上一級(jí)Filter詢問(wèn),直到源Filter。一般在源Filter的輸出Pin上實(shí)現(xiàn)IMediaSeeking接口,它告訴調(diào)用者總共有多長(zhǎng)時(shí)間的媒體內(nèi)容,當(dāng)前播放位置等信息。(如果是文件源,一般在Parser Filter或Splitter Filter實(shí)現(xiàn)這個(gè)接口。)對(duì)于Filter開(kāi)發(fā)者來(lái)說(shuō),如果我們寫(xiě)的是源Filter,我們就要在Filter的輸出Pin上實(shí)現(xiàn)IMediaSeeking這個(gè)接口;如果寫(xiě)的是中間的傳輸Filter,只需要在輸出Pin上將用戶的獲得接口請(qǐng)求往上傳遞給上一級(jí)Filter的輸出Pin;如果寫(xiě)的是Renderer Filter,需要在Filter上將用戶的獲得接口請(qǐng)求往上傳遞給上一級(jí)Filter的輸出Pin。進(jìn)一步的了解,請(qǐng)認(rèn)真研讀SDK的基類源代碼(位于DXSDK/samples/Multimedia/DirectShow/BaseClasses/transfrm.cpp的類方法CTransformOutputPin::NonDelegatingQueryInterface實(shí)現(xiàn)和ctlutil.cpp中類CPosPassThru的實(shí)現(xiàn))。
以上我們介紹了一下如何學(xué)習(xí)DirectShow Filter開(kāi)發(fā),以及一些開(kāi)始寫(xiě)自己的Filter之前的預(yù)備知識(shí)。下一講,筆者將根據(jù)自己開(kāi)發(fā)Filter的經(jīng)驗(yàn),手把手教你如何寫(xiě)自己的Filter。
如何寫(xiě)自己的Filter

  首先,從VC++的項(xiàng)目開(kāi)始(請(qǐng)確認(rèn)你已經(jīng)給VC++配置好了DirectX的開(kāi)發(fā)環(huán)境)。寫(xiě)自己的Filter,第一步是使用VC++建立一個(gè)Filter的項(xiàng)目。由于DirectX SDK提供了很多Filter的例子項(xiàng)目(位于DXSDK/samples/Multimedia/DirectShow/ Filters目錄下),最簡(jiǎn)單的方法就是拷貝一個(gè),然后再在此基礎(chǔ)上修改。但如果你是Filter開(kāi)發(fā)的初學(xué)者,筆者并不贊成這么做。

  自己新建一個(gè)Filter項(xiàng)目也很簡(jiǎn)單。使用VC++的向?qū)?#xff0c;建立一個(gè)空的”Win32 Dynamic-link Library”項(xiàng)目。注意,幾個(gè)文件是必須有的:.def文件,定義四個(gè)導(dǎo)出函數(shù);定義Filter類的.cpp文件和.h文件,并在.cpp文件中定義Filter的注冊(cè)信息以及兩個(gè)Filter的注冊(cè)函數(shù):DllRegisterServer和DllUnregisterServer。(注:Filter的注冊(cè)信息是Filter在注冊(cè)時(shí)寫(xiě)到注冊(cè)表里的內(nèi)容,格式可以參考SDK的示例代碼,Filter相關(guān)的GUID務(wù)必使用GuidGen.exe產(chǎn)生。)接下去進(jìn)行項(xiàng)目的設(shè)置(Project->Settings…)。此時(shí),你可以打開(kāi)一個(gè)SDK的例子項(xiàng)目進(jìn)行對(duì)比,有些宏定義完全可以照抄,最后注意將輸出文件的擴(kuò)展名改為.ax。

  上一講曾經(jīng)提到過(guò),在寫(xiě)Filter之前,選擇一個(gè)合適的Filter基類是至關(guān)重要的。為此,你必須對(duì)幾個(gè)Filter的基類有相當(dāng)?shù)牧私狻T趯?shí)際應(yīng)用中,Filter的基類并不總是選擇CBaseFilter的。相反,因?yàn)槲覀兘^大部分寫(xiě)的都是中間的傳輸Filter(Transform Filter),所以基類選擇CTransformFilter和CTransInPlaceFilter的居多。如果我們寫(xiě)的是源Filter,我們可以選擇CSource作為基類;如果是Renderer Filter,可以選擇CBaseRenderer或CBaseVideoRenderer等。

  總之,選擇好Filter的基類是很重要的。當(dāng)然,選擇Filter的基類也是很靈活的,沒(méi)有絕對(duì)的標(biāo)準(zhǔn)。能夠通過(guò)CTransformFilter實(shí)現(xiàn)的Filter當(dāng)然也能從CBaseFilter一步一步實(shí)現(xiàn)。下面,筆者就從本人的實(shí)際經(jīng)驗(yàn)出發(fā),對(duì)Filter基類的選擇提出幾點(diǎn)建議供大家參考。

  首先,你必須明確這個(gè)Filter要完成什么樣的功能,即要對(duì)Filter項(xiàng)目進(jìn)行需求分析。請(qǐng)盡量保持Filter實(shí)現(xiàn)的功能的單一性。如果必要的話,你可以將需求分解,由兩個(gè)(或者更多的)功能單一的Filter去實(shí)現(xiàn)總的功能需求。

  其次,你應(yīng)該明確這個(gè)Filter大致在整個(gè)Filter Graph的位置,這個(gè)Filter的輸入是什么數(shù)據(jù),輸出是什么數(shù)據(jù),有幾個(gè)輸入Pin、幾個(gè)輸出Pin等等。你可以畫(huà)出這個(gè)Filter的草圖。弄清這一點(diǎn)十分重要,這將直接決定你使用哪種“模型”的Filter。比如,如果Filter僅有一個(gè)輸入Pin和一個(gè)輸出Pin,而且一進(jìn)一處的媒體類型相同,則一般采用CTransInPlaceFilter作為Filter的基類;如果媒體類型不一樣,則一般選擇CTransformFilter作為基類。

  再者,考慮一些數(shù)據(jù)傳輸、處理的特殊性要求。比如Filter的輸入和輸出的Sample并不是一一對(duì)應(yīng)的,這就一般要在輸入Pin上進(jìn)行數(shù)據(jù)的緩存,而在輸出Pin上使用專門的線程進(jìn)行數(shù)據(jù)處理。這種情況下,Filter的基類選擇CSource為宜(雖然這個(gè)Filter并不是源Filter)。

  當(dāng)Filter的基類選定了之后,Pin的基類也就相應(yīng)選定了。接下去,就是Filter和Pin上的代碼實(shí)現(xiàn)了。有一點(diǎn)需要注意的是,從軟件設(shè)計(jì)的角度上來(lái)說(shuō),應(yīng)該將你的邏輯類代碼同F(xiàn)ilter的代碼分開(kāi)。下面,我們一起來(lái)看一下輸入Pin的實(shí)現(xiàn)。你需要實(shí)現(xiàn)基類所有的純虛函數(shù),比如CheckMediaType等。在CheckMediaType內(nèi),你可以對(duì)媒體類型進(jìn)行檢驗(yàn),看是否是你期望的那種。因?yàn)榇蟛糠諪ilter采用的是推模式傳輸數(shù)據(jù),所以在輸入Pin上一般都實(shí)現(xiàn)了Receive方法。有的基類里面已經(jīng)實(shí)現(xiàn)了Receive,而在Filter類上留一個(gè)純虛函數(shù)供用戶重載進(jìn)行數(shù)據(jù)處理。這種情況下一般是無(wú)需重載Receive方法的,除非基類的實(shí)現(xiàn)不符合你的實(shí)際要求。而如果你重載了Receive方法,一般會(huì)同時(shí)重載以下三個(gè)函數(shù)EndOfStream、BeginFlush和EndFlush。我們?cè)賮?lái)看一下輸出Pin的實(shí)現(xiàn)。一般情況下,你要實(shí)現(xiàn)基類所有的純虛函數(shù),除了CheckMediaType進(jìn)行媒體類型檢查外,一般還有DecideBufferSize以決定Sample使用內(nèi)存的大小,GetMediaType提供支持的媒體類型。最后,我們看一下Filter類的實(shí)現(xiàn)。首先當(dāng)然也要實(shí)現(xiàn)基類的所有純虛函數(shù)。除此之外,Filter還要實(shí)現(xiàn)CreateInstance以提供COM的入口,實(shí)現(xiàn)NonDelegatingQueryInterface以暴露支持的接口。如果我們創(chuàng)建了自定義的輸入、輸出Pin,一般我們還要重載GetPinCount和GetPin兩個(gè)函數(shù)。

  Filter框架的實(shí)現(xiàn)大致就是這樣。你或許還想知道怎樣在Filter上實(shí)現(xiàn)一個(gè)自定義的接口,以及怎么實(shí)現(xiàn)Filter的屬性頁(yè)等等。限于篇幅,筆者就不展開(kāi)闡述了。其實(shí),這些問(wèn)題都能在SDK的示例項(xiàng)目中找到答案。其他的,關(guān)于在實(shí)際編程中應(yīng)該注意的一些問(wèn)題,筆者整理了一下,供大家參考。

  1. 鎖(Lock)問(wèn)題

  DirectShow應(yīng)用程序至少包含有兩條線程:一條主線程和一條數(shù)據(jù)傳輸線程。既然是多線程,肯定會(huì)碰到線程同步的問(wèn)題。Filter有兩種鎖:Filter對(duì)象鎖和數(shù)據(jù)流鎖。Filter對(duì)象鎖用于Filter級(jí)別的如Filter狀態(tài)轉(zhuǎn)換、BeginFlush、EndFlush等;數(shù)據(jù)流鎖用于數(shù)據(jù)處理線程內(nèi),比如Receive、EndOfStream等。如果這兩種鎖沒(méi)有搞清楚,很容易產(chǎn)生程序的死鎖,這一點(diǎn)特別需要提醒。

  2. EndOfStream問(wèn)題

  當(dāng)Filter接收到這個(gè)“消息”,意味著上一級(jí)Filter的數(shù)據(jù)都已經(jīng)發(fā)送完畢。在這之后,如果Receive再有數(shù)據(jù)接收,也不應(yīng)該去理睬它。如果Filter對(duì)輸入Pin上的數(shù)據(jù)進(jìn)行了緩存,在接收到EndOfStream后應(yīng)確保所有緩存的數(shù)據(jù)都已經(jīng)處理過(guò)了才能返回。

  3. Media Seeking問(wèn)題

  一般情況下,你只需要在Filter的輸出Pin上實(shí)現(xiàn)NonDelegatingQueryInterface方法,當(dāng)用戶申請(qǐng)得到IID_ImediaPosition接口或IID_IMediaSeeking接口時(shí)將請(qǐng)求往上一級(jí)Filter的輸出Pin上傳遞。當(dāng)Filter Graph進(jìn)行Mediaseeking的時(shí)候,一般會(huì)調(diào)用Filter上的BeginFlush、EndFlush和NewSegment。如果你的Filter對(duì)數(shù)據(jù)進(jìn)行了緩存,你就要重載它們,并做出相應(yīng)的處理。如果你的Filter負(fù)責(zé)給發(fā)送出去的Sample打時(shí)間戳,那么,在Mediaseeking之后應(yīng)該重新從零開(kāi)始打起。

  4. 關(guān)于使用專門的線程

  如果你使用了專門的線程進(jìn)行數(shù)據(jù)的處理和發(fā)送,你需要特別小心,不要讓線程進(jìn)行死循環(huán),并且要讓線程處理函數(shù)能夠去時(shí)時(shí)檢查線程命令。應(yīng)該確保在Filter結(jié)束工作的時(shí)候,線程也能正常地結(jié)束。有時(shí)候,你把GraphEdit程序關(guān)掉,但GraphEdit進(jìn)程仍在內(nèi)存中,往往就是因?yàn)閿?shù)據(jù)線程沒(méi)有安全關(guān)閉這個(gè)原因。

  5. 如何從媒體類型中獲取信息

  比如,你想在輸入Pin連接的媒體類型中,獲取視頻圖像的寬、高等信息,你應(yīng)該在輸入Pin的CompleteConnect方法中實(shí)現(xiàn),而不要在SetMediaType中。

  DirectX媒體對(duì)象(DirectX Media Objects,簡(jiǎn)稱DMOs),是微軟提供的另一種流數(shù)據(jù)處理COM組件。與DirectShow filter相比,DMO有很多相似之處。對(duì)filter原理的熟悉,將會(huì)大大幫助你對(duì)DMO的學(xué)習(xí)。另外,DMO也因其結(jié)構(gòu)簡(jiǎn)單、易于創(chuàng)建和使用而倍受微軟推崇。


DMO與filter的對(duì)比

  1. DMO比f(wàn)ilter實(shí)現(xiàn)的功能要少很多,這使得DMO“體積”很小;

  2. DMO使用起來(lái)比f(wàn)ilter更有靈活性。DMO的使用不需要filter graph,應(yīng)用程序可以直接與DMO交互。而DMO也可以通過(guò)一個(gè)DMO wrapper filter工作于DirectShow環(huán)境;

  3. DMO總是同步處理數(shù)據(jù),不像filter有獨(dú)立的數(shù)據(jù)傳送線程,需要考慮多線程編程問(wèn)題;

  4. 與傳統(tǒng)的編解碼管理器ACM、VCM相比,用DMO開(kāi)發(fā)的編解碼器是基于COM的,更易于擴(kuò)展。并且DMO支持多個(gè)輸入和多個(gè)輸出;

  5. DMO不需要像filter一樣分配數(shù)據(jù)傳送的內(nèi)存,而有DMO的使用者負(fù)責(zé);

  6. DMO是一個(gè)獨(dú)立功能模塊,不需要像filter一樣連接成一條鏈路;

  7. DMO不需要像filter一樣將數(shù)據(jù)“推”下去,數(shù)據(jù)的輸入輸出都是由DMO的使用者完成的;

  所有這些優(yōu)點(diǎn),使得DMO成為微軟對(duì)于Encoder和Decoder開(kāi)發(fā)的重點(diǎn)推薦模式。DirectX 9.0 SDK中,微軟更是把DMO從DirectShow中分離出來(lái),而對(duì)于一些transform filter,微軟也推薦用DMO的方式來(lái)替換。

  關(guān)于DMO的使用方式,目前大概有兩種:一種是應(yīng)用程序直接使用DMO,另一種就是在DirectShow filter中的應(yīng)用。后者比較簡(jiǎn)單,只是使用了一個(gè)DMO wrapper filter。在DirectShow應(yīng)用程序中,DMO是對(duì)用戶透明的,所有使用DMO的工作均由DMO wrapper filter來(lái)完成。參見(jiàn)下面的代碼。

?

// Create the DMO Wrapper filter.
IBaseFilter *pFilter;
HRESULT hr = CoCreateInstance(CLSID_DMOWrapperFilter, NULL,
CLSCTX_INPROC_SERVER, IID_IBaseFilter,
reinterpret_cast<void**>(&pFilter));

if (SUCCEEDED(hr))
{
// Query for IDMOWrapperFilter.
IDMOWrapperFilter *pDmoWrapper;
hr = pFilter->QueryInterface(IID_IDMOWrapperFilter,
reinterpret_cast<void**>(&pDmoWrapper));

if (SUCCEEDED(hr))
{
// Initialize the filter.
hr = pDmoWrapper->Init(CLSID_MyDMO, DMOCATEGORY_VIDEO_EFFECT);
pDmoWrapper->Release();

if (SUCCEEDED(hr))
{
// Add the filter to the graph.
hr = pGraph->AddFilter(pFilter, L"My DMO");
}
}
pFilter->Release();
}

  而對(duì)于DMO的直接使用,以下幾點(diǎn)是要特別注意的。

  1. 在處理數(shù)據(jù)之前,必須為每條輸入輸出stream設(shè)置media type(Optional stream除外);

  2. 從DMO從獲取的media type未必包含format塊,但是在給DMO設(shè)置media type時(shí),務(wù)必帶上這部分信息(MIDI除外);

  3. 應(yīng)用程序必須自己負(fù)責(zé)分配數(shù)據(jù)緩存。緩存的大小可以通過(guò)調(diào)用DMO的IMediaObject::GetInputSizeInfo或IMediaObject::GetOutputSizeInfo得到。DMO使用的數(shù)據(jù)緩存也是一個(gè)COM對(duì)象,支持ImediaBuffer接口,與DirectShow filter的Media Sample類似。

  4. 一般的DMO依次調(diào)用IMediaObject::ProcessInput和IMediaObject::ProcessOutput處理數(shù)據(jù),In-Place的DMO調(diào)用IMediaObjectInPlace::Process處理數(shù)據(jù)。兩套方法不能混用。

  5. 在調(diào)用ProcessOutput時(shí),如果返回的標(biāo)記是DMO_OUTPUT_DATA_BUFFERF_INCOMPLETE,說(shuō)明數(shù)據(jù)的數(shù)據(jù)還沒(méi)有完全取出,需要再次調(diào)用ProcessOutput。

  6. 所有輸入數(shù)據(jù)都已輸入完成,應(yīng)該調(diào)用DMO的IMediaObject::Discontinuity方法。

  7. 如果你想中斷數(shù)據(jù)處理流程,調(diào)用DMO的IMediaObject::Flush。

  8. 區(qū)別兩種不同的可丟棄stream,標(biāo)記分別為DMO_OUTPUT_STREAMF_OPTIONAL和DMO_OUTPUT_STREAMF_DISCARDABLE。注意,后者是要設(shè)置media type的。

總結(jié)

以上是生活随笔為你收集整理的DirectShow系统初级指南的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

日韩精品最新在线观看 | 99色在线| 五月综合激情婷婷 | 国内精品久久久久久久久 | 美女视频黄,久久 | 色综合天天综合 | 黄色av电影在线观看 | 欧美二区视频 | 亚洲精品动漫成人3d无尽在线 | 中文字幕乱视频 | 国产日产高清dvd碟片 | 免费人成在线观看 | 永久免费在线 | 一级一级一片免费 | 四虎国产精品免费观看视频优播 | 不卡日韩av| 国产精品一区二区精品视频免费看 | 日本中文字幕免费观看 | 91亚洲精品久久久中文字幕 | 中文久草| 久久久久五月天 | 久久成年人视频 | 欧美午夜久久 | 91毛片在线 | 97精品免费视频 | 国产精品对白一区二区三区 | 国产精品久久久久久久久久久久午夜 | 久久9999久久 | 欧美一级片在线免费观看 | 97成人在线观看 | 国产原创av在线 | 久要激情网 | 国产色在线 | 992tv在线观看网站 | 欧美综合干 | 久久九九久久精品 | 1024久久| 免费在线观看视频a | 国产视频在线看 | 久久艹艹 | 九热精品| 国产日韩欧美综合在线 | www.一区二区三区 | 婷婷激情5月天 | 日本黄色免费看 | 在线免费高清 | 久久久亚洲麻豆日韩精品一区三区 | 青草视频在线播放 | 国产专区视频在线观看 | 欧美一级专区免费大片 | 2018好看的中文在线观看 | 色a网 | 97av免费视频 | 亚洲激情在线播放 | 亚洲激情在线观看 | 97自拍超碰 | 久久夜色精品国产欧美一区麻豆 | 亚洲va在线va天堂va偷拍 | 久久艹国产视频 | 不卡的av中文字幕 | 久久精品99国产精品酒店日本 | 最近最新中文字幕 | 97精品国产手机 | 日本久久久久久 | 在线观看黄| 午夜精品一区二区三区视频免费看 | 99精品系列| 黄色一级动作片 | 亚洲视频免费在线看 | 日本电影久久 | 91福利视频久久久久 | 91看片淫黄大片一级在线观看 | 激情五月婷婷激情 | 91麻豆精品国产自产在线游戏 | 人人爽人人干 | 天天色天天综合 | 国产亚洲精品av | 激情小说网站亚洲综合网 | 中文字幕 在线 一 二 | 九九亚洲精品 | 日韩视频一区二区在线 | 不卡av电影在线观看 | 91在线www | 国产精品视频永久免费播放 | 黄网站污 | 国产精品mm| 免费看特级毛片 | 色婷婷中文 | 区一区二区三在线观看 | 9999在线 | 久久久国产一区二区 | 日韩av在线不卡 | 成人a在线观看 | 日日夜夜天天操 | 日韩精品久久久久久中文字幕8 | 91久久爱热色涩涩 | 日日爽天天操 | 国产又黄又爽又猛视频日本 | 国产免费精彩视频 | 成年人黄色大全 | 亚一亚二国产专区 | 久久毛片高清国产 | 欧美成人基地 | 国产成人精品不卡 | 成年人视频免费在线播放 | 免费看污网站 | 国产成人亚洲在线观看 | 在线你懂的视频 | 国产视频1区2区3区 久久夜视频 | 国产精品久久久久久久久久久久午夜片 | 亚洲免费成人 | 波多野结衣一区二区三区中文字幕 | 波多野结衣一区二区三区中文字幕 | 欧美性色黄 | 在线观看视频在线观看 | 国精产品满18岁在线 | 久久无码av一区二区三区电影网 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 欧美黑吊大战白妞欧美 | 亚洲人人精品 | 91av视频导航 | 又色又爽的网站 | 亚洲三级在线免费观看 | 夜夜夜影院 | 日本公妇在线观看 | 91片黄在线观看动漫 | 97人人澡人人添人人爽超碰 | 麻豆传媒电影在线观看 | 亚洲视频观看 | 亚洲精品国产精品国自产 | 色丁香综合 | 国产精品二区在线观看 | 久久精选 | 综合色婷婷 | 精品视频在线看 | 日日夜夜天天久久 | 色综合天天色 | 香蕉视频国产在线 | 成人一级免费视频 | 深爱五月网 | 91成人网在线播放 | 成人97视频 | 天天色天天上天天操 | 免费视频久久久久久久 | 日日夜夜添 | caobi视频| 青青草国产在线 | 91视频在线观看大全 | 999久久久久 | 91中文字幕永久在线 | 99九九热只有国产精品 | 91丨九色丨国产丨porny精品 | 人人干干人人 | 国产一级性生活视频 | 日韩精品一区二区三区丰满 | 久av在线 | 亚洲一级片在线看 | 日韩精品一区二区免费 | 手机成人免费视频 | 午夜精品麻豆 | 日本中文字幕一二区观 | 色播五月激情五月 | 色天天久久| av高清免费在线 | 在线之家免费在线观看电影 | 观看免费av| 中文字幕观看在线 | 97电影手机| 在线观看黄 | 国产91探花 | 日韩欧美高清一区二区三区 | 97色资源| 亚洲首页| 天天综合中文 | 视频国产精品 | 婷婷国产视频 | 国产精品综合av一区二区国产馆 | 亚洲精品黄色 | japanesexxxhd奶水| 成人三级黄色 | 777xxx欧美| 中文在线www| av电影一区 | 精品美女国产在线 | 免费成人黄色 | 91精品入口 | 久久精品首页 | 国产视频1| 国模一二三区 | 国产精品久久久久aaaa | 免费视频久久 | avwww在线观看 | 麻豆91在线 | 人成午夜视频 | 99视频免费播放 | 国产999| 亚洲一区欧美激情 | 丁香视频全集免费观看 | 亚洲成年人av | 午夜视频亚洲 | 久久久久中文字幕 | 免费观看一级特黄欧美大片 | 中文在线中文资源 | 国产一区在线视频播放 | 久久情爱| 久久精品综合 | 日韩一区二区三区高清在线观看 | 日韩高清国产精品 | 久久激情电影 | 99综合影院在线 | 国产一级大片在线观看 | 亚洲va男人天堂 | 日产乱码一二三区别在线 | 国产在线色视频 | caobi视频 | 色综合久久悠悠 | 久久视频在线免费观看 | 日韩成人不卡 | 超级碰碰免费视频 | 亚洲国产丝袜在线观看 | 久久国内免费视频 | 国产精品日韩在线播放 | 91亚洲精品久久久蜜桃借种 | 美女视频又黄又免费 | 亚洲永久精品国产 | 亚洲午夜久久久久久久久电影网 | 99热最新网址 | 99超碰在线观看 | 国产美女网站在线观看 | 日精品在线观看 | japanesexxxxfreehd乱熟 | 一区二区三区韩国免费中文网站 | 国产视频一区在线 | 成人一级黄色片 | 中文av网站 | 欧美色888 | 91视频在线免费 | 国产精品国产三级在线专区 | 蜜臀久久99精品久久久无需会员 | 中文字幕高清av | 伊人导航| 视频在线观看入口黄最新永久免费国产 | 国产丝袜一区二区三区 | 日韩免费av在线 | 国产一区二区在线免费播放 | 国产中文字幕一区二区 | 免费看黄色91 | 国产精品videoxxxx | 国产中文字幕大全 | 日韩系列在线观看 | 国产最新福利 | 日韩精品一区二区三区电影 | 国产中文字幕视频 | 91漂亮少妇露脸在线播放 | 天天操天天综合网 | 视频在线99 | 丁香六月欧美 | 91欧美视频网站 | 深夜免费网站 | 国产精品毛片久久久久久久久久99999999 | 欧美日韩视频在线 | 中文字幕永久免费 | 久久久久五月天 | 欧美一二三四在线 | 国产粉嫩在线 | 免费大片av | 日韩在线观看中文 | 国产色网| 日韩久久激情 | 福利一区二区 | 日韩草比| 亚洲黄色大片 | 在线 视频 一区二区 | 成人在线视频免费观看 | 色综合天天狠狠 | 久草在线在线精品观看 | www色综合 | 亚洲国产精品成人va在线观看 | 国产精品麻豆99久久久久久 | 国产成人三级一区二区在线观看一 | 久久亚洲综合国产精品99麻豆的功能介绍 | 久久久久激情视频 | 亚洲国产精品成人综合 | 国产首页| 999久久久国产精品 高清av免费观看 | 日韩四虎 | 亚洲成人在线免费 | 中文字幕国语官网在线视频 | 国产xxxx做受性欧美88 | 亚洲精品高清视频在线观看 | 一区二区视频播放 | 狠狠干.com | 日韩在线观看影院 | 日韩专区一区二区 | 香蕉视频免费在线播放 | 超黄视频网站 | 欧美一级淫片videoshd | 手机av在线网站 | 黄色免费在线视频 | 主播av在线| 91字幕 | 日韩中文字幕免费在线播放 | 久久视频在线视频 | 黄色一级性片 | av在线永久免费观看 | 天天性天天草 | av在线免费在线观看 | 日韩xxxx视频 | 日韩视频在线一区 | 久草在线免费色站 | 91中文字幕永久在线 | 99在线高清视频在线播放 | 久久伊人精品天天 | 五月婷社区 | 中文在线免费看视频 | 欧美日韩一区二区三区不卡 | 久久久久久久久网站 | 国产精品18久久久久白浆 | 国产午夜三级一区二区三桃花影视 | 中文字幕色综合网 | 91精品毛片| 色福利网站 | 在线一区二区三区 | 91人人揉日日捏人人看 | 婷婷亚洲五月色综合 | 波多野结衣在线观看视频 | 婷婷色中文网 | 国产精品2019 | 玖玖色在线观看 | 久久久久久久免费观看 | 日韩av中文| 久久久午夜电影 | 久草在线久草在线2 | 久久精品欧美一区二区三区麻豆 | 免费在线观看黄 | 99久久精品国产一区二区成人 | 久久久久国产a免费观看rela | 亚洲精品黄色 | 免费看黄网站在线 | 日韩字幕 | 久久久久久久免费看 | 婷婷夜夜 | 精品一区二区亚洲 | 911国产在线观看 | 久久这里只有精品视频首页 | 精品黄色在线观看 | 日韩一区视频在线 | 久影院| 最近中文字幕在线播放 | 成人av动漫在线 | 国产 日韩 在线 亚洲 字幕 中文 | 国产高清在线 | 亚洲精品小视频在线观看 | 国产精品精品国产 | 久久久久久久久久久精 | 久草在线视频在线观看 | 久久在线免费视频 | 色婷婷丁香 | 精品一区二区三区电影 | 美女网站免费福利视频 | 婷婷久月 | 国内综合精品午夜久久资源 | 国产五月色婷婷六月丁香视频 | 中文字幕在线观 | 精品国产乱码久久久久久三级人 | 国产又粗又硬又爽的视频 | 五月天婷婷视频 | 中文字幕刺激在线 | 一区二区三区av在线 | 热99在线 | 最新日本中文字幕 | 激情五月婷婷综合网 | 久久亚洲免费视频 | 中文在线a√在线 | 国内99视频 | 国产精品毛片久久久久久久久久99999999 | 成人网页在线免费观看 | 国产网红在线观看 | 国产日产精品一区二区三区四区的观看方式 | 午夜精品久久久久久 | 夜夜摸夜夜爽 | 国产高清视频网 | 色综合咪咪久久网 | 日韩免费视频 | 一级黄色毛片 | www国产精品com | 美女国内精品自产拍在线播放 | 在线观看色网 | 欧美日韩不卡在线视频 | 久草成人在线 | 国产 一区二区三区 在线 | 中文在线天堂资源 | 久久精品一区二区三区四区 | 久久成人综合视频 | 久久黄视频 | 国产麻豆剧果冻传媒视频播放量 | 国产精品视频在线看 | 三级av在线免费观看 | 久久久久精| a在线免费观看视频 | 91九色在线视频 | 色欲综合视频天天天 | 丝袜美女在线 | 国产高清网站 | 国产99在线| 久久综合影院 | 国产又黄又猛又粗 | 亚洲精品动漫在线 | 久久综合99 | 国产一区二区在线看 | 午夜精品久久久久久99热明星 | 99精品视频一区二区 | 国产精品18久久久久久不卡孕妇 | 国产香蕉视频在线播放 | 美女视频黄是免费的 | 在线观看资源 | 综合久久精品 | 四虎成人精品永久免费av | 天天干视频在线 | 91成年人网站 | 伊人婷婷综合 | a在线播放 | 国产精品成久久久久 | 日日日日日 | 99久久婷婷国产精品综合 | 2023国产精品自产拍在线观看 | se视频网址| 懂色av懂色av粉嫩av分享吧 | 国产精品国产三级在线专区 | 亚洲精品国产综合久久 | 欧美大香线蕉线伊人久久 | 狠狠色噜噜狠狠 | av网站免费看 | 精品久久久久久国产偷窥 | 波多野结衣电影久久 | 午夜a区| 一区二区三区免费在线观看视频 | 久久精品韩国 | 在线观看日韩视频 | 激情视频免费在线观看 | 久久这里有精品 | 特级毛片网 | 亚洲免费精品一区二区 | 国产一区二区免费 | 亚洲成人精品 | 四虎国产精品成人免费4hu | 国产精品免费成人 | 97国产超碰在线 | 日韩电影中文,亚洲精品乱码 | 国产精品美女在线观看 | 四虎在线视频免费观看 | 亚洲精品国产精品国自产观看 | 久久手机免费视频 | 亚洲黄色免费 | 精品一区二区免费在线观看 | 国产精品高潮呻吟久久av无 | 久久久久久国产一区二区三区 | 六月丁香在线视频 | 在线日韩中文 | 亚洲不卡av一区二区三区 | 日韩欧美在线免费观看 | 亚洲午夜久久久久久久久久久 | 91精品久久久久久久久久入口 | 中文字幕在线观看免费高清电影 | 99视频在线免费 | 亚洲精品黄色 | 欧美欧美 | 国产91免费观看 | 欧美福利网站 | 天天插夜夜操 | 中文字幕视频 | 亚洲免费在线观看视频 | 久久精品a | 国产日韩精品一区二区在线观看播放 | 成人免费看片98欧美 | 久草爱 | 国产日韩精品在线观看 | 91av福利视频 | 成人a视频片观看免费 | 香蕉蜜桃视频 | 在线观看岛国 | 国产精品入口66mio女同 | 欧美性做爰猛烈叫床潮 | 男女精品久久 | 国产精品一区二区久久精品爱微奶 | 国产成人精品亚洲精品 | 成人性生交大片免费观看网站 | 国产明星视频三级a三级点| 国产精品久久一区二区三区, | 中文区中文字幕免费看 | 人人看人人爱 | 国产视频网站在线观看 | av在线com | 国产成人精品一区二区三区网站观看 | 六月色婷婷 | 欧美一级小视频 | 国产福利免费在线观看 | 午夜久久成人 | 高清精品在线 | 久久久久久草 | 99久久精品国产亚洲 | 激情一区二区三区欧美 | 手机看片久久 | 婷婷六月色| 韩国av永久免费 | 国产精品专区一 | 豆豆色资源网xfplay | 欧美a级片免费看 | 99热这里只有精品在线观看 | 99视频精品在线 | 91片在线观看 | 色悠悠久久综合 | 精品视频久久 | av黄色在线观看 | 911国产在线观看 | 在线观看的av网站 | 久久久国产精品亚洲一区 | 特级西西www44高清大胆图片 | 久久久久久福利 | 国产一区视频免费在线观看 | 国产精品毛片一区二区 | 日本中文字幕一二区观 | 国产一级精品视频 | 免费视频久久久久 | 国产成人一区二区三区在线观看 | 日本激情视频中文字幕 | 中文字幕最新精品 | 在线播放 亚洲 | av免费在线看网站 | 在线亚洲小视频 | 婷婷在线免费视频 | 2023亚洲精品国偷拍自产在线 | 国产98色在线 | 日韩 | 国产精品美女久久久久久久久 | 国产视频99 | 亚洲激情视频在线观看 | 五月婷婷久 | 99久久精品费精品 | 最近在线中文字幕 | 91视频国产高清 | 97超碰免费在线 | 久久免费观看少妇a级毛片 久久久久成人免费 | 久久精国产 | 色婷婷成人网 | 99色视频在线 | 国产精品免费看久久久8精臀av | 久久这里只有精品1 | 超碰在线中文字幕 | 亚洲欧美日韩精品一区二区 | 天天操天天操天天操 | 国产一级黄色免费看 | 日韩欧美在线免费观看 | 国产99免费视频 | 国产一级二级三级在线观看 | 亚洲性视频 | 中文字幕在线播放日韩 | 99热.com | 六月丁香婷婷久久 | 一区二区不卡视频在线观看 | 色综合欧洲 | 精品亚洲免费视频 | 日韩在线视频国产 | 网站在线观看日韩 | 国产又黄又爽又猛视频日本 | 欧美a级在线 | 免费在线观看日韩视频 | 天天干com | 欧美另类成人 | 日韩欧美有码在线 | 伊人国产在线观看 | 国产色综合 | 黄色a大片 | 日韩中文久久 | 狠狠色丁香久久婷婷综合五月 | 中文字幕av全部资源www中文字幕在线观看 | 玖草影院 | 日本女人b | 日韩a在线观看 | 高清免费在线视频 | 超碰免费成人 | 色视频国产直接看 | 日韩黄视频| 久久经典国产视频 | 欧美精品久| 久久激情电影 | 黄色aaaaa| 九九热视频在线免费观看 | 丁香婷婷综合五月 | 久久手机看片 | 黄色小说免费观看 | 国产正在播放 | 蜜臀一区二区三区精品免费视频 | 18做爰免费视频网站 | 日本一区二区三区视频在线播放 | 欧美日韩一区二区视频在线观看 | 99免费在线观看视频 | 最近中文字幕免费视频 | 欧美精品亚洲二区 | 婷婷激情综合网 | 久草在线免费在线观看 | 美女免费网站 | 婷婷视频在线播放 | 国产成人免费观看久久久 | 欧美日韩精品在线观看 | 久久新视频 | 久久久精品网 | 免费亚洲精品 | 狠狠狠色 | 天天综合天天综合 | 99久久99热这里只有精品 | 99热精品国产一区二区在线观看 | 国产精品久久久久久69 | 免费看污在线观看 | av中文在线观看 | 人人干网 | 精品在线视频观看 | 免费在线一区二区 | 久久精品久久国产 | 国产一级免费观看视频 | 亚洲欧美日韩国产一区二区三区 | 国产人成看黄久久久久久久久 | 人人插人人费 | 国产精品久久网 | 免费观看丰满少妇做爰 | 不卡精品视频 | 99久视频| 999在线视频| 欧美精选一区二区三区 | 在线a人片免费观看视频 | 日韩特黄一级欧美毛片特黄 | 欧美性生活久久 | 亚洲成a人片在线www | 久久99视频| 99色资源 | 国产午夜精品理论片在线 | 日韩一区二区三区免费视频 | 人人爽人人舔 | 四虎影视精品永久在线观看 | 综合久久婷婷 | 日韩有码中文字幕在线 | 五月激情久久 | 国产黑丝袜在线 | 九九热精品在线 | 狠狠干,狠狠操 | 国产 字幕 制服 中文 在线 | 人人精久| 国产综合精品一区二区三区 | 国产精品国产三级国产不产一地 | 一本一本久久a久久精品综合小说 | 国产精品原创 | 麻豆成人在线观看 | 97小视频| 国产高清视频 | 91九色在线观看视频 | 日本精品一二区 | 国产999精品久久久久久 | 国产黄色片网站 | 国产999久久久 | 四虎在线免费视频 | 午夜电影 电影 | 色婷婷亚洲精品 | 激情开心站 | 日韩电影在线视频 | 中文字幕在线观看视频一区二区三区 | 国产一二三四在线观看视频 | 91av福利视频| 久久av免费观看 | 一区二区三区动漫 | 欧美日韩观看 | 免费看一级特黄a大片 | 毛片美女网站 | 中文字幕在线久一本久 | 在线观看视频中文字幕 | 国产亚洲精品久久久久动 | 国产在线观看,日本 | 天天射天天操天天 | 国产91aaa| 视频在线观看亚洲 | 黄色av免费| 91香蕉嫩草| 999国内精品永久免费视频 | 在线天堂亚洲 | 精品国产欧美一区二区 | 日韩精品中文字幕久久臀 | 日韩免费看的电影 | 精品美女在线视频 | 国产成人三级在线 | 九九免费观看视频 | 福利一区二区 | 99久久激情| 国产精品美女久久久久久久 | 国内外成人在线 | 精品视频在线免费 | 狠狠干夜夜操天天爽 | 干 操 插 | 99久久日韩精品免费热麻豆美女 | 中文资源在线官网 | 免费网站污 | 国产精品一区二区免费视频 | 日韩a欧美 | 波多野结衣在线中文字幕 | 久久久午夜精品理论片中文字幕 | 欧美精品乱码99久久影院 | 久久久久久综合 | 日韩精品电影在线播放 | 国产成人精品一区二区三区福利 | 亚洲精品字幕 | 久久免费视频在线观看30 | 国产黄色一级片 | 国产第一页福利影院 | 久久天天躁夜夜躁狠狠85麻豆 | 青青草国产精品视频 | 久久久999免费视频 日韩网站在线 | 久久精品久久精品久久精品 | 日本中文在线观看 | 亚洲色影爱久久精品 | 菠萝菠萝在线精品视频 | 欧美a视频| 亚洲欧美国内爽妇网 | 韩国av一区二区三区 | 综合网五月天 | 日韩中文字幕免费视频 | 天天拍天天爽 | 日本精品一区二区三区在线播放视频 | a久久免费视频 | 国产欧美在线一区 | 色妞色视频一区二区三区四区 | 制服丝袜一区二区 | 在线播放你懂 | 精品国产伦一区二区三区免费 | 国产精品久久久久久久久久久久午夜 | 91视频-88av| 十八岁以下禁止观看的1000个网站 | 中文字幕亚洲精品在线观看 | 日韩免费在线视频 | 成人免费视频播放 | 婷婷亚洲五月色综合 | 91成年人视频| 少妇精品久久久一区二区免费 | 久久国产精品一二三区 | 综合久久网站 | 蜜臀av性久久久久蜜臀av | 色综合a| 99视频导航| 国产成人一区三区 | 色噜噜日韩精品欧美一区二区 | 日韩动漫免费观看高清完整版在线观看 | 久久综合狠狠综合久久综合88 | 欧美日韩性 | 在线免费观看的av | 啪啪午夜免费 | 一本之道乱码区 | 亚州精品天堂中文字幕 | 欧美日韩在线精品 | 人人揉人人揉人人揉人人揉97 | 国内精品国产三级国产aⅴ久 | 欧美乱熟臀69xxxxxx | 免费在线国产 | 99免费看片| 国内精品久久久久久久久久久久 | 日免费视频| 亚洲国产视频直播 | 日韩精品一区二区在线观看 | 99色网站 | 色久综合 | 草久久久久久 | 亚洲国产精品免费 | 激情婷婷六月 | 国产传媒一区在线 | 日韩一区在线播放 | 亚洲天天综合网 | 天天干,天天射,天天操,天天摸 | www.色com| 国产91av视频在线观看 | 国产精品色视频 | 91久久国产露脸精品国产闺蜜 | 天天操天天怕 | 午夜12点 | 成人小视频在线播放 | 精品国产欧美一区二区 | 久草久草在线观看 | 丰满少妇麻豆av | 国产 日韩 在线 亚洲 字幕 中文 | 日韩aⅴ视频 | 国产精品视频一二三 | 久久国产成人午夜av影院潦草 | 五月天激情在线 | 狠狠夜夜| 二区三区毛片 | av丝袜在线 | 久久成视频 | 国产成人精品综合久久久久99 | 精品视频久久久久久 | 丁香婷婷综合五月 | 在线观看亚洲国产精品 | 国产超碰在线观看 | 日韩a级黄色 | 国内外成人在线 | 91av观看| 黄色网址在线播放 | 伊人成人久久 | 日韩视频中文 | 中文字幕一区二区三区在线播放 | 中文字幕电影一区 | 天天操操操操操 | 日韩黄色免费在线观看 | 日本精品小视频 | 天天射天天干天天爽 | 日韩电影在线看 | 97中文字幕| 欧美在线观看视频免费 | 天天干天天怕 | 亚洲精品国产综合久久 | 亚洲经典中文字幕 | 亚洲精品女 | 免费在线观看视频一区 | 黄色av电影 | 天天射天天射 | 日本中文字幕在线免费观看 | 免费a级观看 | 国产区久久| 国产69精品久久久久99尤 | 欧美精选一区二区三区 | 国产区av在线 | 在线观看黄网站 | av电影免费 | 国产一级片免费观看 | 日韩精品网址 | 日韩视频在线不卡 | av专区在线 | 国产无遮挡又黄又爽在线观看 | 成人教育av | 99看视频在线观看 | 久久综合一本 | 国产在线黄色 | 中文字幕一区2区3区 | 久久婷婷国产色一区二区三区 | 日本中文字幕免费观看 | 久久国产剧场电影 | 亚洲欧美成人 | 国产精品美女免费看 | 五月天激情开心 | 久久久久久久久久网 | 91尤物在线播放 | 91九色视频| 成人av教育| 午夜色场 | 高清不卡免费视频 | 国产做aⅴ在线视频播放 | 欧美日韩免费观看一区=区三区 | 国产精品一区二区三区四 | av在线短片 | 欧美五月婷婷 | 美女视频a美女大全免费下载蜜臀 | 日韩专区视频 | 国产精品久久久久久一区二区三区 | 色婷婷国产在线 | 国产亚洲人 | 成人精品视频 | 久青草国产在线 | 日韩精品欧美专区 | 国产精品久久久网站 | av丝袜美腿| 四虎在线观看精品视频 | 免费视频一区 | 亚洲精品乱码久久 | 99久久99久久综合 | 免费电影一区二区三区 | 欧美日韩在线观看一区二区 | 国产精品aⅴ | 国产一级一片免费播放放 | 91精彩在线视频 | 激情伊人五月天 | 国产成人av在线 | 超级碰99| 免费黄a | 国产一级特黄电影 | 伊人狠狠色 | av在线亚洲天堂 | 国产二区电影 | 韩国三级av在线 | 亚洲国产精品一区二区久久,亚洲午夜 | 九色在线视频 | 午夜在线免费视频 | 日韩xxx视频| 亚洲在线视频免费 | 狠狠操操操 | 69国产精品视频免费观看 | 国产伦精品一区二区三区照片91 | 成人免费视频视频在线观看 免费 | 不卡视频一区二区三区 | 日本久久久久久 | 久草视频中文 | 超碰在线免费97 | 精品福利在线视频 | 日本不卡视频 | 中文字幕观看在线 | 日本不卡123区 | 色狠狠综合 | 国产成人av在线影院 | 日日摸日日添夜夜爽97 | 亚洲日本一区二区在线 | 美女国产 | 色综合咪咪久久网 | 中文字幕久久精品亚洲乱码 | 麻豆视频一区 | 探花视频在线版播放免费观看 | 久久深夜 | 中文字幕日本在线 | 91av在线播放视频 | 国产区精品区 | 久9在线 | 久久久久久中文字幕 | 狠狠做深爱婷婷综合一区 | 精品一二区 | 日本三级全黄少妇三2023 | 国内视频在线 | 久久精品三 | 精品国产区在线 | 成人av在线影视 | 精品一区二区日韩 | 天天操综合网站 | 网站免费黄 | 99热这里只有精品免费 | a天堂一码二码专区 | 99国产一区二区三精品乱码 | 国产三级午夜理伦三级 | 亚洲国产日韩在线 | 深爱激情站| 中文字幕亚洲精品在线观看 | 久久你懂得 | 亚洲午夜精品一区 | av在线一级 | 亚洲黄网站 | 久久久久久久久久福利 | 色99网| 国产一卡在线 | 亚洲精品国偷拍自产在线观看蜜桃 | 久久精品99视频 | 亚洲国产中文在线观看 | 国产精品手机在线观看 | 亚洲精品美女 | 亚洲综合在线一区二区三区 | 91视频88av | 色黄久久久久久 | 麻豆传媒在线视频 | 在线91色 | 91污视频在线观看 | 日韩高清在线一区 | 国产精品毛片一区视频播 | 中文字幕av在线 | 日韩欧美在线一区二区 | 91视频在线播放视频 | 四虎影视成人永久免费观看亚洲欧美 | 黄色大片网 | 国内精品久久久久影院男同志 | 91精品视频在线 | 97精品在线观看 | 午夜av一区二区三区 | 亚洲一级片在线看 | jizz18欧美18 | 久久久久久久久艹 | 精品a在线 | 在线va视频| 91看片看淫黄大片 | 成 人 免费 黄 色 视频 | 欧美乱大交| 天天操伊人 | 中文字幕在线视频一区二区 | 国产一区二区三区免费观看视频 | 中文字幕资源网在线观看 | 91香蕉视频在线下载 | 成年人黄色大片在线 | 免费观看黄| 日韩高清免费在线 | 97精品视频在线播放 | 久久再线视频 | 亚洲精品成人av在线 | 人人干干人人 | 久久久久高清毛片一级 | 久久久久国产一区二区三区四区 | 国产精品理论片在线播放 | 日韩美女免费线视频 | 免费视频黄 | 成人中心免费视频 | 91av网址| 探花视频在线观看免费 | 97成人精品视频在线播放 | 国产xx视频 | 一区二区三区免费在线观看视频 | 久久99亚洲精品久久 | 国产精品日韩在线观看 | 一区二区av | 免费国产在线精品 | 麻豆精品传媒视频 | 久亚洲| 欧美日韩国语 | 在线播放亚洲激情 |