欧美第一页在线_久久在线观看视频_成人激情视频在线观看_亚洲一区二区久久久_亚洲欧美一区二区三区四区_国产精品美女主播在线观看纯欲_日本精品久久电影_亚洲自拍偷拍网址_www.久久草.com_欧美精品免费在线_国产精品久久久久久久美男_国产一区二区三区在线视频_欧美日韩精品中文字幕_欧美老女人在线视频_欧美日韩中文字幕日韩欧美_色噜噜国产精品视频一区二区

內(nèi)容字號(hào):默認(rèn)大號(hào)超大號(hào)

段落設(shè)置:段首縮進(jìn)取消段首縮進(jìn)

字體設(shè)置:切換到微軟雅黑切換到宋體






介紹一個(gè)開源的SIP(VOIP)協(xié)議庫PJSIP

時(shí)間:2016-06-12 來源:中國集群通信網(wǎng) 作者:本站整理 點(diǎn)擊:

 如果你對(duì)SIP/VoIP技術(shù)感興趣,哪希望你不要錯(cuò)過:),如果你對(duì)寫出堪稱優(yōu)美的Code感興趣
,那么你也不可錯(cuò)過:)

這期間我想分析一下一個(gè)實(shí)際的協(xié)議棧的設(shè)計(jì)到實(shí)現(xiàn)的相關(guān)技術(shù),算是自己的一個(gè)學(xué)習(xí)經(jīng)
歷記錄.

最初選擇這個(gè)庫做分析的原因很簡(jiǎn)單,文檔齊全:),其它良好的特征則是慢慢發(fā)現(xiàn)的:)

www.pjsip.org

1. PJSIP簡(jiǎn)介

PJSIP的實(shí)現(xiàn)是為了能在嵌入式設(shè)備上高效實(shí)現(xiàn)SIP/VOIP.其主要特征包括:
1).極具移植性.(Extremely portable)
當(dāng)前可支持平臺(tái)包括:
* Win32/x86 (Win95/98/ME, NT/2000/XP/2003, mingw).
    * arm, WinCE and Windows Mobile.
    * Linux/x86, (user mode and as kernel module(!)).
    * Linux/alpha
    * Solaris/ultra.
    * MacOS X/powerpc
    * RTEMS (x86 and powerpc).

正移植到:
    * Symbian OS 
    
    2).非常小的足印.(Very small footprint)
    官方宣稱編譯后的庫<150Kb,我在PC上編譯后加上strip后大概173Kb,這對(duì)于嵌入
    式設(shè)備,是個(gè)好消息:)
    
    3).高性能.(High performance)
    這點(diǎn)我們后面可以看看是否如作者宣稱的:)
    
    4).支持眾多的特征.(Many features)
    這點(diǎn)可以從http://www.pjsip.org/sip_media_features.htm#sip_features看出.


    
    5).充足的SIP文檔.(Extensive SIP documentation)
    這是我最初選擇該庫的原因,當(dāng)然不是最終的原因,最終的原因是它的code:)
    
2. PJSIP的組成.

其實(shí)說是PJSIP不是特別貼切,這個(gè)庫實(shí)際上是幾個(gè)部分組成的.
1).PJSIP - Open Source SIP Stack[開源的SIP協(xié)議棧]

2).PJMEDIA - Open Source Media Stack[開源的媒體棧]

3).PJNATH - Open Source NAT Traversal Helper Library[開源的NAT-T輔助庫]

4).PJLIB-UTIL - Auxiliary Library[輔助工具庫]

5).PJLIB - Ultra Portable Base Framework Library[基礎(chǔ)框架庫]

而在最上層庫的目錄分為:(可以使用tree -d -L 1 查看)

$TOP/build [包含Makefile]
$TOP/build.symbian [針對(duì)symbian的Makefile]
$TOP/pjlib [參考上面]
$TOP/pjlib-util [參考上面]
$TOP/pjnath [參考上面]
$TOP/pjmedia [參考上面]
$TOP/pjsip [參考上面]
$TOP/pjsip-apps
$TOP/third_party

而在每個(gè)子目錄,可以看到分為:
bin [編譯后產(chǎn)生的二進(jìn)制文件]
build [Makefile]
build/output
build/wince-evc4
docs [doxygen的文檔,用doxygen docs/doxygen.cfg產(chǎn)生]
include [頭文件]
lib [編譯后產(chǎn)生的庫]
src [源代碼]

3. PJLIB簡(jiǎn)介

要理解好PJSIP,就不得不先說說PJLIB,PJLIB算的上是這個(gè)庫中最基礎(chǔ)的庫,正是這個(gè)
庫的優(yōu)美實(shí)現(xiàn),才讓PJSIP變得如此優(yōu)越。

PJLIB提供了一系列特征,這是我們下面分析的重點(diǎn),涉及到:
1).非動(dòng)態(tài)內(nèi)存分配[No Dynamic Memory Allocations]
實(shí)現(xiàn)了內(nèi)存池,獲取內(nèi)存是從與分配的內(nèi)存池中獲取,高性能程序多會(huì)自己構(gòu)造內(nèi)存池
,后面我們會(huì)解釋該內(nèi)存池的使用以及基本的原理。根據(jù)作者的比較,是常規(guī)的 malloc(
)/free()函數(shù)的30倍。

2).OS抽象[Operating System Abstraction]
實(shí)現(xiàn)OS抽象的根本原因在與可移植性,毋庸置疑:).
涉及到:
a).線程[Threads.]
b).線程本地存儲(chǔ)[Thread Local Storage.]
c).互斥[Mutexes.]
d).信號(hào)燈[Semaphores.]
e).原子變量[Atomic Variables.]
f).臨屆區(qū)[Critical sections.]
g).鎖對(duì)象[Lock Objects.]
h).事件對(duì)象[Event Object.]
i).時(shí)間管理[Time Data Type and Manipulation.]
j).高解析的時(shí)間戳[High Resolution Timestamp.]
等等,這些我們后面分析代碼時(shí)一一看來:)

3).低層的網(wǎng)絡(luò)相關(guān)IO[Low-Level Network I/O]
    這涉及到:
    a).Socket抽象[Socket Abstraction.]
    b).網(wǎng)絡(luò)地址解析[Network Address Resolution.]
    c).實(shí)現(xiàn)針對(duì)Socket的select API[Socket select() API.]
    
4).時(shí)間管理[Timer Management]
這主要涉及到兩個(gè)部分,一個(gè)時(shí)定時(shí)器的管理,還有就是時(shí)間解析的精度(舉例說來,就
是能精確到哪個(gè)時(shí)間等級(jí),比如 POSIX sleep(),就只能以秒為單位,而使用select()則可
以實(shí)現(xiàn)毫秒級(jí)別的計(jì)時(shí)) 

5).各種數(shù)據(jù)結(jié)構(gòu)[Various Data Structures]
主要有:
a).針對(duì)字符串的操作[String Operations]
b).數(shù)組輔助[Array helper]
c).Hash表[Hash Tabl]
d).鏈表[Linked List]
e).紅黑平衡樹[Red/Black Balanced Tree]

6).異常處理[Exception Construct]
使用的是TRY/CATCH,知道C++/JAVA之類面向?qū)ο笳Z言的人看過會(huì)宛而一笑:)

7).LOG機(jī)制[Logging Facility]
很顯然,一個(gè)良好的程序,好的LOG機(jī)制不可少。這能很方便的讓你去調(diào)試程序,對(duì)此我
是深有體會(huì),任何時(shí)候,不要忘記“好的程序,是架構(gòu)出來的;而能跑的程序,是調(diào)試出
來的:)”

8).隨機(jī)數(shù)以及GUID的產(chǎn)生[Random and GUID Generation]
GUID指的是"globally unique identifier",只是一個(gè)標(biāo)識(shí)而已,比如說你的省份證,
算的上是一個(gè)GUID,當(dāng)然,準(zhǔn)確說來是“china unique identifier”:).

看了這么多的特征列舉,是不是很完備,的確。

總算是初步列舉完了PJLIB的基本特征了,后面我們來說說它的使用與實(shí)現(xiàn):

4. PJLIB的使用

有了上述介紹,是不是很想知道這個(gè)庫的使用,沒關(guān)系,我們慢慢說來:)

首先是頭文件和編譯出來的庫的位置,這就不必多說了,除非你沒有使用過手動(dòng)編譯的庫
,如果不太了解步驟,google一下,啊:)

1).為了使用這個(gè)庫,需要使用:
#include 
當(dāng)然,也可以選擇:
#include 
    #include 
    這種分離的方式,不過,簡(jiǎn)介其間,還是使用第一種吧:),畢竟,你不需要確認(rèn)到你所
需的函數(shù)或者數(shù)據(jù)結(jié)構(gòu)具體到哪個(gè)具體的頭文件:)
    
    2).確保在使用PJLIB之前調(diào)用 pj_init()來完成PJLIB庫使用前說必須的一些初始化.

    這是一個(gè)必不可少的步驟.
    ~~~~~~~~~~~~~~~~~~~~~~~
    
    3).使用PJLIB的一些建議
    作者對(duì)使用PJLIB的程序提出了一些建議,包括如下 :
    a).不要使用ANSI C[Do NOT Use ANSI C]
    觀點(diǎn)很明確,ANSI C并不會(huì)讓程序具有最大的移植性,應(yīng)該使用PJSIP庫所提供的響
應(yīng)機(jī)制來實(shí)現(xiàn)你所需要的功能.
    
    b).使用pj_str_t取代C風(fēng)格的字符串[Use pj_str_t instead of C Strings]
    原因之一是移植性,之二則是PJLIB內(nèi)置的pj_str_t相關(guān)操作會(huì)更快(性能).
    
    c).從內(nèi)存池分配內(nèi)存[Use Pool for Memory Allocations]
    這很明顯,如果你知道為什么會(huì)使用內(nèi)存池的話(提示一下,性能以及易用性:))
    
    d).使用PJLIB的LOG機(jī)制做文字顯示[Use Logging for Text Display]
    很明顯:)
    
     還有些關(guān)于移植的一些問題,不在我們的討論范圍,如果你需要移植到其它平臺(tái)或者
環(huán)境,請(qǐng)參考http://www.pjsip.org/pjlib/docs/html/porting_pjlib_pg.htm

5. PJLIB的使用以及原理
終于開始提及實(shí)現(xiàn)原理以及具體的編碼了:),前面的列舉還真是個(gè)瑣碎的事情,還是奔主題
來:).

5.1快速內(nèi)存池[Fast Memory Pool]
前面說過,使用內(nèi)存池的原因在于性能的考慮,原因是C風(fēng)格的malloc()以及C++風(fēng)格的new
操作在高性能或?qū)崟r(shí)條件下表現(xiàn)并不太好,原因在于性能的瓶頸在于內(nèi)存碎片問題.

下面列舉其優(yōu)點(diǎn)與需要主要的問題:
優(yōu)點(diǎn):
a).不像其它內(nèi)存池,允許分配不同尺寸的chunks.
b).快速.
內(nèi)存chunks擁有O(1)的復(fù)雜度,并且操作僅僅是指針的算術(shù)運(yùn)算,其間不需要使用鎖住任
何互斥量.
c).有效使用內(nèi)存.
除了可能因?yàn)閮?nèi)存對(duì)齊的原因會(huì)浪費(fèi)很少的內(nèi)存外,內(nèi)存的使用效率非常高.
d).可預(yù)防內(nèi)存泄漏.
在C/C++程序中如果出現(xiàn)內(nèi)存泄漏問題,其查找過程哪個(gè)艱辛,不足為外人道也:(
[曾經(jīng)有次用別人的Code,出現(xiàn)了內(nèi)存泄漏,在開發(fā)板上查找N天,又沒工具可在開發(fā)板上使
用,哪個(gè)痛苦,想自殺:(]
原因很簡(jiǎn)單,你的內(nèi)存都是從內(nèi)存池中獲取的,就算你沒有釋放你獲取的內(nèi)存,只要你記得
把內(nèi)存池destroy,那么內(nèi)存還是會(huì)還給系統(tǒng).

還有設(shè)計(jì)帶來的一些其它益處,比如可用性和靈活性:
e).內(nèi)存泄漏更容易被跟蹤.
這是因?yàn)槟愕膬?nèi)存是在指定的內(nèi)存池中分配的,只要能很快定位到內(nèi)存池,內(nèi)存泄漏的偵
測(cè)就方便多了.
f).設(shè)計(jì)上從內(nèi)存池中獲取內(nèi)存這一操作是非線程安全的.
原因是設(shè)計(jì)者認(rèn)為內(nèi)存池被上層對(duì)象所擁有,線程安全應(yīng)該由上層對(duì)象去保證,這樣的話
,沒有鎖的問題會(huì)讓內(nèi)存分配變得非常的快.
g).內(nèi)存池的行為像C++中的new的行為,當(dāng)內(nèi)存池獲取內(nèi)存chunks會(huì)拋出PJ_NO_MEMORY_EX
CEPTION異常,當(dāng)然,因?yàn)橹С之惓L幚?也可以使用其它方式讓上層程序靈活的定義異常的
處理.
[這是異常處理的基本出發(fā)點(diǎn),但是這有大量的爭(zhēng)論,原因是這改變了程序的正常流程,誰能
去保證這種流程是用戶所需要的呢,因此C++中的異常處理飽受爭(zhēng)議,請(qǐng)酌情使用]
h). 可以在后端使用任何的內(nèi)存分配器.默認(rèn)情況下是使用malloc/free管理內(nèi)存池的塊,
但是應(yīng)用程序也可以指定自己的策略(strategy),例如從一個(gè)全局存儲(chǔ)空間分配內(nèi)存.

恩,要知道,任何事務(wù)都是兩面的(頗為佩服創(chuàng)造出“雙贏”這個(gè)詞的語言天才, 不過,文
字游戲?qū)τ诩夹g(shù)人員不能說是件好事情:(),好了,使用時(shí),不要認(rèn)為這個(gè)內(nèi)存池是哪種"per
fect"的技術(shù),要記得"任何設(shè)計(jì),都是在各種限制條件中的一個(gè)折中,對(duì)于'戴著鐐銬的舞蹈
',除了'舞蹈',也不要忘記'鐐銬'哦",不要忘了告誡:):
告誡[Caveats]:
a).使用合適的大小來初始化內(nèi)存池.
使用內(nèi)存池時(shí),需要指定一個(gè)初始內(nèi)存池大小, 這個(gè)值是內(nèi)存池的初始值,如果你想要高
性能,要謹(jǐn)慎選擇這個(gè)值哦,太大的化會(huì)浪費(fèi)內(nèi)存,過小又會(huì)讓內(nèi)存池自身頻繁的去增加內(nèi)存
,顯然這兩種情況都不可取.
b). 注意,內(nèi)存池只能增加,而不能被縮小(shrink),因?yàn)閮?nèi)存池沒有函數(shù)把內(nèi)存chunks釋
放還給系統(tǒng),這就要去內(nèi)存池的構(gòu)造者和使用者明確使用內(nèi)存.

恩,基本的原理都差不多了,后面我們來看看如何使用這個(gè)內(nèi)存池.

5.2內(nèi)存池的使用[Using Memory Pool]
內(nèi)存池的使用相當(dāng)?shù)暮?jiǎn)單,扳個(gè)手指頭就搞定了,如果你看明白了上面的原理和特征:)

a).創(chuàng)建內(nèi)存池工廠[Create Pool Factory]
上面不是提及內(nèi)存池的內(nèi)部分配策略以及異常處理方式么, 其實(shí)這就是指定這個(gè)的:)

當(dāng)然,不需要你每個(gè)內(nèi)存池都自己取指定策略和異常處理方式,PJLIB已經(jīng)有了一個(gè)默認(rèn)的
實(shí)現(xiàn):Caching Pool Factory,這個(gè)內(nèi)存池工廠的初始化使用函數(shù)pj_caching_pool_init()


b).創(chuàng)建內(nèi)存池[Create The Pool]
使用pj_pool_create(),其參數(shù)分別為內(nèi)存工廠(Pool Factory),內(nèi)存池的名字(name),初
始時(shí)的大小以及增長時(shí)的大小.

c).根據(jù)需要分配內(nèi)存[Allocate Memory as Required]
然后,你就可以使用pj_pool_alloc(), pj_pool_calloc(), 或pj_pool_zalloc()從指定
的內(nèi)存池根據(jù)需要去獲取內(nèi)存了:)

d).Destroy內(nèi)存池[Destroy the Pool]
這實(shí)際上是把預(yù)分配的內(nèi)存還給系統(tǒng).

e).Destroy內(nèi)存池工廠[Destroy the Pool Factory]
這沒什么好說的.

很簡(jiǎn)單吧:)
作者在文檔中給出了一個(gè)例子:
如下:
#include 

   #define THIS_FILE    "pool_sample.c"

   static void my_perror(const char *title, pj_status_t status)
   {
        char errmsg[PJ_ERR_MSG_SIZE];

        pj_strerror(status, errmsg, sizeof(errmsg));
        PJ_LOG(1,(THIS_FILE, "%s: %s [status=%d]", title, errmsg, status));
   }

   static void pool_demo_1(pj_pool_factory *pfactory)
   {
        unsigned i;
        pj_pool_t *pool;

        // Must create pool before we can allocate anything
        pool = pj_pool_create(pfactory,  // the factory
                              "pool1",   // pool's name
                              4000,      // initial size
                              4000,      // increment size
                              NULL);     // use default callback.
        if (pool == NULL) {
            my_perror("Error creating pool", PJ_ENOMEM);
            return;
        }

        // Demo: allocate some memory chunks
        for (i=0; i<1000; ++i) {
            void *p;

            p = pj_pool_alloc(pool, (pj_rand()+1) % 512);

            // Do something with p
            ...

            // Look! No need to free p!!
        }

        // Done with silly demo, must free pool to release all memory.
        pj_pool_release(pool);
   }

   int main()
   {
        pj_caching_pool cp;
        pj_status_t status;

        // Must init PJLIB before anything else
        status = pj_init();
        if (status != PJ_SUCCESS) {
            my_perror("Error initializing PJLIB", status);
            return 1;
        }

        // Create the pool factory, in this case, a caching pool,
        // using default pool policy.
        pj_caching_pool_init(&cp, NULL, 1024*1024 );

        // Do a demo
        pool_demo_1(&cp.factory);

        // Done with demos, destroy caching pool before exiting app.
        pj_caching_pool_destroy(&cp);

        return 0;
   }
   
   我就不解釋了:)

 


(中國集群通信網(wǎng) | 責(zé)任編輯:李俊勇)

中國集群通信網(wǎng),國內(nèi)首家集群通信專業(yè)網(wǎng)站。

Copyright © PttCn.Net, All Rights Reserved.   

聯(lián)系我們 聯(lián)系我們 中國集群通信網(wǎng) 對(duì)講機(jī)學(xué)堂 對(duì)講機(jī)世界

国产精品成熟老女人| 夜夜春很很躁夜夜躁| 色网站在线视频| 91麻豆国产精品| 新天堂中文资源官网在线观看| 日韩欧美亚洲天堂| 男的插女的下面视频| 精品黑人一区二区三区| 免费精品国产的网站免费观看| 青青草国产精品亚洲专区无| 亚洲精品国产精品国自产网站| 性欧美超级视频| 亚洲日本色图| 欧美国产欧美综合| 青青青免费在线| 天天色图综合网| 日本一卡二卡在线| 欧美资源在线| 国产欧美日韩精品一区二区三区| 精品国产乱码一区二区| 深夜福利一区二区| 国产三级午夜理伦三级| 无码无遮挡又大又爽又黄的视频| 欧美精品一级二级三级| 成人私拍视频| wwwww在线观看免费视频| 一区二区三区精品| 国产精品一区二区三区免费视频| 亚洲精品网址| 日本天堂免费a| 日韩av影院| 丁香六月久久综合狠狠色| 国产一区二区精品免费| 国产精品久久久久久久久妇女| 蜜桃精品视频在线观看| 亚洲区一区二| 亚洲一区二区三区日韩| 亚洲日本中文字幕| 亚洲超碰精品一区二区| 午夜视频在线免费播放| 国产精选久久| 成人久久18免费网站麻豆| 亚洲精品午夜久久久久久久| 欧美洲成人男女午夜视频| 日韩av手机版| 美腿丝袜亚洲图片| 免费看欧美女人艹b| jizz亚洲少妇| 天堂网一区二区三区| 丰满人妻一区二区三区53号| 老司机免费视频一区二区三区| 国产精一品亚洲二区在线视频| 超碰在线94| 亚洲日本护士毛茸茸| 色姑娘综合天天| 中文字幕亚洲欧美一区二区三区| 欧美超强性xxxxx| 国产麻豆成人精品| 欧美性猛交xxxx乱| 91插插插插插插插插| 国产精品久久久久9999小说| 欧美日韩的一区二区| 亚洲精品日产精品乱码不卡| 97色伦图片97综合影院| 夜夜精品浪潮av一区二区三区| 91丨九色丨蝌蚪丨老版| 欧美怡红院在线| 日本特黄在线观看| 欧美电影免费提供在线观看| 久久免费区一区二区三波多野| 久久精品国产v日韩v亚洲| 男人的天堂av网站| 免费看日韩毛片| 日本天堂在线视频| 国产伦视频一区二区三区| 色一情一交一乱一区二区三区| 精品国产成人亚洲午夜福利| 国产精品毛片久久久久久久久久99999999| 国产美女黄色| 2020国产在线视频| 一区二区三区无码高清视频| 国产乱人乱偷精品视频a人人澡| 中文字幕中文乱码欧美一区二区| 亚洲三级在线免费观看| 久久精品人人做人人爽人人| 最新版天堂资源在线| 欧美性受xxxx狂喷水| 91欧美日韩在线| 欧美xxxxxbbbbb| 日韩高清不卡一区二区| 国产性一乱一性一伧一色| 人妻精品久久久久中文字幕| 2023国产精品| 狠狠操第一页| 免费一级淫片| 在线观看视频网站你懂得| 欧美日韩免费观看视频| 91超碰国产在线| 国产精品自产拍在线观看| 在线观看欧美激情| 欧美日本韩国一区二区三区视频| 亚洲专区中文字幕| 蜜桃精品视频| 亚洲国产高清一区二区三区| 国产三级视频在线播放| 天天躁日日躁成人字幕aⅴ| 天天做天天干天天操| 高清毛片在线观看| 国产精品女人久久久久久| 一区二区三区不卡视频在线观看| 欧美日韩一区二区三区四区不卡| www.午夜色| 日韩欧美一级二级三级久久久| 男人添女人下部高潮视频在观看| 欧美成人小视频| 在线观看中文| 免费人成福利播放| 成人天堂资源www在线| 久久青草国产手机看片福利盒子| 成人www视频网站免费观看| 婷婷丁香久久| 欧美激情xxxx| 日韩电影在线一区二区三区| 日韩av中文字幕在线免费观看| 92裸体在线视频网站| 日韩精品一区中文字幕| 性xxxxfreexxxxx欧美丶| 全部孕妇毛片丰满孕妇孕交| 精品这里只有精品| 2017欧美狠狠色| 午夜久久久久久久久久影院| 欧美日韩精品免费看| 欧美色网一区| 久久精品视频网| 国产精品亲子伦对白| 激情综合色丁香一区二区| 亚洲国产小视频在线观看| 美女极度色诱视频www免费观看| 外国成人直播| 日本熟妇人妻中出| 日本天堂在线视频| 中文字幕免费高清电视剧网站在线观看| 自拍另类欧美| 娇小11一12╳yⅹ╳毛片| 欧美一区视久久| 亚洲国产精品yw在线观看| 国产精品国产三级国产三级人妇| 国产精品videossex撒尿| 欧美一区三区二区| 国产精品扒开做爽爽爽的视频| 国产又猛又粗| 国产精品电影网站| 日韩大片b站免费观看直播| 国产亚洲精久久久久久无码77777| 99re这里都是精品| 91精品国产综合久久香蕉最新版| 亚洲va中文在线播放免费| 欧美1区3d| 欧美一级特黄高清视频| 久久久久国产精品视频| 亚洲精品一区二三区| 亚洲国产色一区| 日本不卡高清视频一区| 欧美在线不卡区| 奇米888一区二区三区| 日韩欧美一区二区三区四区| 久久婷婷成人综合色| 成人免费福利| 国产一区二三区好的| 天天干天天操天天干天天操| 亚洲视频一区二区| 爱情岛亚洲播放路线| 欧美激情亚洲| аⅴ成人天堂中文在线| 9999精品成人免费毛片在线看| 国产精品入口免费视| 国产日韩欧美不卡在线| av在线亚洲男人的天堂| 国产在线精品一区二区| 亚洲精品久久久久久久久久久久久| 精品国产乱码久久久久久郑州公司| 国产乱人视频免费播放| 色妞在线综合亚洲欧美| 成人在线免费看视频| 欧美人与性动交a欧美精品| 欧美一级裸体视频| 校园春色欧美| 欧美天堂亚洲电影院在线播放| 国产精品入口麻豆免费看| 成人影视亚洲图片在线| 亚洲国产视频在线| 日韩av电影免费在线观看| 久久久www免费人成黑人精品| 白丝美女让我捅| 亚洲精品国产久| 国产精品扒开腿做爽爽爽男男| 国产91精品露脸国语对白| 亚洲免费观看在线视频| 激情五月五月婷婷| 久久久久久久美女| 台湾佬中文娱乐网欧美电影| 国产九九九视频| 亚洲欧美日韩国产| 欧洲美女7788成人免费视频| 亚洲欧美精品中文字幕在线| 国产综合内射日韩久| 中文字幕免费在线观看| 一区二区中文字幕在线观看| 国产精品久久三| 神马影院午夜我不卡影院| 国产欧美日韩亚洲一区二区三区| 日本免费一区二区三区最新| 日韩视频网站在线观看| 亚洲一级在线观看| 精品久久久久久无码人妻| 国精一区二区| 国产在线精品91| 色青青草原桃花久久综合| 在线观看亚洲免费视频| 日韩污视频在线观看| 亚洲欧洲无码一区二区三区| 国产在线视频欧美一区二区三区| 国产一卡二卡三卡| 亚洲涩涩在线| 国产理论视频在线观看| 中文永久免费观看| 亚洲精品久久久久久久蜜桃臀| 国产精品一区二区三区99| 漂亮人妻被中出中文字幕| 台湾色综合娱乐中文网| a∨色狠狠一区二区三区| 欧美日韩一区二区不卡| 亚洲国产中文字幕在线观看| 精品激情国产视频| 精品欧美一区二区三区久久久| 狠狠躁夜夜躁av无码中文幕| 国产黄大片在线观看| 精品国产乱码久久久久久久软件| 2021av在线| 亚洲图片在线播放| 日本高清视频网站www| 日韩中文字幕第一页| 制服丝袜影音先锋| 免费xxxx性欧美18vr| av 一区二区三区| 欧美日本一区二区高清播放视频| 成年人网站免费视频| 国产欧美久久久久久| 久久亚洲春色中文字幕久久久| 日本五十肥熟交尾| 91嫩草国产在线观看| 青娱乐精品视频| 哥也色在线视频| 99久久精品免费看国产四区| 亚洲自拍偷拍麻豆| 加勒比av一区二区| 日韩精品一区二区三区视频在线观看| 亚洲色图第一区| 日韩一区二区视频在线| 秋霞综合在线视频| 国产1区在线观看| 在线观看岛国片| 免费在线黄色影片| 一区二区国产精品精华液| 国产成人aa精品一区在线播放| 杨钰莹一级淫片aaaaaa播放| 亚洲欧洲在线看| 九九国产精品视频| 久青草视频在线播放| 一区二区三区在线视频免费观看| 热re99久久精品国99热蜜月| 久久精品三级视频| 国产精品区一区二| 3d动漫一区二区三区在线观看| 福利在线导航136| 国产在线观看成人| 国产精品久久国产精麻豆99网站| 欧美一区二区免费| 男女羞羞在线观看| 男人j桶女人的网站| 老司机aⅴ在线精品导航| 乱子伦一区二区三区| 97在线视频免费观看完整版| 欧美一级二级三级乱码| 日日摸夜夜添夜夜添国产精品| 26uuu精品一区二区三区四区在线| 9.1人成人免费视频网站| 四虎精品在线| 91三级在线| wwwav91com| 国产激情在线看| 91午夜视频| 丝袜 亚洲 另类 欧美 重口| 欧美日韩亚洲一区二区三区在线| 伊人亚洲精品| 成人免费视频在线观看超级碰| 亚洲精品福利电影| 日韩av三级在线观看| 欧美色综合天天久久综合精品| 久久久久久久久久久久久国产| 美日韩在线视频| 91porny九色| 日美av在线| 好看的日韩av电影| 一级片免费在线观看| 视频在线91| 成人激情视频在线播放| 一本色道精品久久一区二区三区| 麻豆国产在线| 草草在线视频| 国产精品免费av一区二区| 另类图片亚洲色图| 亚洲图片欧洲图片av| 国产精品一区二| 欧美在线观看视频一区二区三区| h片在线免费看| 狠狠操夜夜操| 国产精品亚洲欧美日韩一区在线| 日本ー区在线视频| 国产伊人久久| 丰满诱人av在线播放| 欧美激情久久久久| 无码人妻一区二区三区在线| 高潮久久久久久久久久久久久久| 日韩欧美一中文字暮专区| 欧美成人片在线观看| 欧美体内谢she精2性欧美| 青青青草视频在线|