精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

使用OpenHarmonyNDK移植三方庫Speexdsp

系統 OpenHarmony
筆者最近為Speexdsp編寫了CMakeLists.txt,使用OpenHarmony的NDK工具編譯出來so動態庫和可執行文件,并且成功在開發板上運行,現將經驗分享如下。

??想了解更多關于開源的內容,請訪問:??

??51CTO 開源基礎軟件社區??

??https://ost.51cto.com??

NDK (原生開發套件) 是一套工具,使開發者能夠在 OpenHarmony hap應用中使用 C/C++ 代碼。它提供了一系列的工具可以幫助開發者快速的開發C/C++的動態庫、靜態庫和可執行文件。

OpenHarmony 應用開發的Native C++開發方式就要依賴NDK。NDK被包含在OpenHarmony SDK中。可以在DevEco Studio使用 NDK 將 C/C ++ 代碼編譯到so庫中,然后使用 DevEco Studio 的構建插件hvigor-ohos-plugin將so庫打包到 Hap 中。ArkTS代碼隨后可以通過NAPI框架調用SO庫中的函數。

深開鴻郭岳峰老師開發的OCRDemo就通過NAPI調用了C++的三方庫Tesseract的能力,而這個庫本身還依賴leptonica、libjpeg、libpng、libtiff等C/C ++ 等四方庫。如果重新編寫build.gn移植到OpenHarmony,工作量巨大。

Tesseract (Apache 2.0 License)是一個可以進行圖像OCR識別的C ++ 庫

OpenHarmony集成OCR三方庫實現文字提取

一、編寫build.gn與編寫CMakeLists.txt移植到OpenHarmony兩者的區別

1、編譯環境不同,編譯工具

編寫build.gn方式,編譯環境是在OpenHarmony源碼中,編譯時使用到的是源碼中的編譯工具。

編寫CMakeLists.txt的移植方式實際上是Native C++應用開發方式的一種,并且NDK是SDK的一部分,編譯so時候實際上使用的是NDK的編譯工具。

2、so安裝的地方不一樣

編寫build.gn方式,三方庫編譯出來的so和測試用例可以打包進入OpenHarmony固件中。

編寫CMakeLists.txt方式,編譯出來的實際上會被打包進入hap應用中,hap再安裝到OpenHarmony操作系統上完成三方庫so能力的調用。

3、編寫CMakeLists.txt比編寫build.gn更容易

build.gn總有各種各樣的編譯器標志要加入以消除編譯報錯,開發者學習成本比較高

CMakeLists.txt方式開發者則相對熟悉,對于原生庫就是camke構建的三方庫,只需要對原生庫已有的CMakeLists.txt做少量修改,比如刪除與其他操作系統有關的部分(筆者說的就是AOSP)。

二、使用OpenHarmony的NDK工具移植Speexdsp到Speexdsp

在windows端的IDE上調用NDK。

創建Native C++工程,但是先不寫NAPI和ArkTS的部分,先為C/C ++的三方庫編寫CMakeLists.txt(如果三方庫本身就是cmake構建的,但也要對CMakeLists.txt進行少量的修改,詳細請參考該樣例 https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/FA/OCRDemo)。 然后編譯hap應用來調用SDK中的NDK工具。

三、創建Native C++工程使用SDK中的NDK工具

創建Native C++工程參考:三方庫移植之NAPI開發[3]通過IDE開發NAPI工程

1、打開IDE Deveco Studio,創建一個Native C++工程。

#創作者激勵#使用OpenHarmonyNDK移植三方庫Speexdsp-開源基礎軟件社區

2、SDK選擇API9,model選擇Stage。新建的Native C++工程有一個默認的hello world教程。

#創作者激勵#使用OpenHarmonyNDK移植三方庫Speexdsp-開源基礎軟件社區

將Speexdsp加入Native C++工程,在庫中編寫頂層CMakeLists.txt生成動態庫。

將speexdsp源碼移動到Native C++工程entry\src\main\cpp目錄,cpp目錄專門用于存放C/C ++代碼。

#創作者激勵#使用OpenHarmonyNDK移植三方庫Speexdsp-開源基礎軟件社區

刪除Speexdsp中無關的代碼讓代碼結構簡潔。Speexdsp中有一些無關的代碼,例如和win32、macO上運行的有關代碼,甚至還有塞班系統symbian上的代碼。(不管了先刪除,不知道Speexdsp的開源協議允不允許筆者這樣做,但是看著亂亂的目錄結構,筆者希望這樣讓自身的思路清晰一些。)

#創作者激勵#使用OpenHarmonyNDK移植三方庫Speexdsp-開源基礎軟件社區

# 目錄結構說明
cpp
├─include # .h文件
├─libspeexdsp # .c文件
└─CMakeLists.txt # 筆者編寫的用來生成可執行文件庫的CMakeLists.txt
├─BUILD.gn # 筆者之前寫的BUILD.gn,現在拿來參考寫CMakeLists.txt
├─CMakeLists.txt # 筆者編寫的用來生成動態庫的CMakeLists.txt
├─config.h # Speexdsp原生庫在linux下編譯構建生成的配置文件
├─speexdsp_api.txt # Speexdsp的api列表
└─speedsp_tested_api.txt

編寫頂層在CMakeLists.txt生成動態庫。

#創作者激勵#使用OpenHarmonyNDK移植三方庫Speexdsp-開源基礎軟件社區

############################################
# 創建so動態庫

# 源文件
# CMAKE_CURRENT_SOURCE_DIR指的CMakeLists.txt當前所在的目錄
set(SHARED_LIB_SRC "${CMAKE_CURRENT_SOURCE_DIR}/libspeexdsp/preprocess.c"
"${CMAKE_CURRENT_SOURCE_DIR}/libspeexdsp/jitter.c"
"${CMAKE_CURRENT_SOURCE_DIR}/libspeexdsp/mdf.c"
"${CMAKE_CURRENT_SOURCE_DIR}/libspeexdsp/fftwrap.c"
"${CMAKE_CURRENT_SOURCE_DIR}/libspeexdsp/filterbank.c"
"${CMAKE_CURRENT_SOURCE_DIR}/libspeexdsp/resample.c"
"${CMAKE_CURRENT_SOURCE_DIR}/libspeexdsp/buffer.c"
"${CMAKE_CURRENT_SOURCE_DIR}/libspeexdsp/scal.c"
"${CMAKE_CURRENT_SOURCE_DIR}/libspeexdsp/smallft.c")

add_library(speexdsp SHARED ${SHARED_LIB_SRC})
target_include_directories(speexdsp PRIVATE ${INCLUDE_DIR})

############################################################

# 鏈接數學庫-lm
# 如果為所有target統一指定編譯時要鏈接的庫用LINK_LIBRARIES
# 為每個target單獨指定編譯時要鏈接的庫用TARGET_LINK_LIBRARIES
link_libraries(-lm)
target_link_libraries(speexdsp PUBLIC m)

# 使用add_subdirectory()將子目錄添加到構建
add_subdirectory(libspeexdsp)

在庫中編寫底層CMakeLists.txt生成可執行文件,用來驗證so庫是否運行正常。

在.c源文件目錄添加CMakeLists.txt用來編譯出可執行文件,用來驗證使用NDK移植三方庫到OpenHarmony標準系統是否成功。如下:

#創作者激勵#使用OpenHarmonyNDK移植三方庫Speexdsp-開源基礎軟件社區

cmake_minimum_required(VERSION 3.4.1)
project(test)

#生成執行二進制文件,生成testdenoise測試用例
ADD_EXECUTABLE(testdenoise testdenoise.c)
# 將二進制文件鏈接到生成的動態庫
TARGET_LINK_LIBRARIES(testdenoise PUBLIC speexdsp)
# 將二進制文件鏈接的庫文件
link_libraries(-lm)
# 添加編譯器標志
add_compile_options(-g -O2 -fvisibility=hidden)

# 生成testecho測試用例
ADD_EXECUTABLE(testecho testecho.c)
TARGET_LINK_LIBRARIES(testecho PUBLIC speexdsp)
link_libraries(-lm)
add_compile_options(-g -O2 -fvisibility=hidden)

# 生成testjitter測試用例
ADD_EXECUTABLE(testjitter testjitter.c)
TARGET_LINK_LIBRARIES(testjitter PUBLIC speexdsp)
link_libraries(-lm)
add_compile_options(-g -O2 -fvisibility=hidden)

# 生成testresample測試用例
ADD_EXECUTABLE(testresample testresample.c)
TARGET_LINK_LIBRARIES(testresample PUBLIC speexdsp)
link_libraries(-lm)
add_compile_options(-g -O2 -fvisibility=hidden)

# 生成testresample2測試用例
ADD_EXECUTABLE(testresample2 testresample2.c)
TARGET_LINK_LIBRARIES(testresample2 PUBLIC speexdsp)
link_libraries(-lm)
add_compile_options(-g -O2 -fvisibility=hidden)

在庫外的CMakeLists.txt中添加代碼使能speexdsp編譯。

新建的Native C++工程是有一個默認的Hello World模板的,在entry\src\main\cpp目錄下有一個CMakeLists.txt,需要在其中添加代碼使能speexdsp編譯。

#創作者激勵#使用OpenHarmonyNDK移植三方庫Speexdsp-開源基礎軟件社區

在entry\src\main\cpp\CMakeLists.txt中主要做兩件事情

# 添加子目錄speexdsp
add_subdirectory(speexdsp)

# 添加鏈接libspeexdsp.so動態庫
# 把動態庫libentry.so鏈接到動態庫libspeexdsp.so
target_link_libraries(entry PUBLIC libace_napi.z.so speexdsp)

如果不添加代碼,則speexdsp的動態庫和可執行用例編譯不出來。

執行編譯命令編譯動態庫和測試用例。

在IDE上方工具欄選擇編譯hap進行so和測試用例的編譯。

#創作者激勵#使用OpenHarmonyNDK移植三方庫Speexdsp-開源基礎軟件社區

編譯結果在entry\build\default\intermediates\cmake\default\obj目錄下。

#創作者激勵#使用OpenHarmonyNDK移植三方庫Speexdsp-開源基礎軟件社區

├─arm64-v8a  
libc++_shared.so
libentry.so
libspeexdsp.so
testdenoise
testecho
testjitter
testresample
testresample2

└─armeabi-v7a
libc++_shared.so
libentry.so
libspeexdsp.so
testdenoise
testecho
testjitter
testresample
testresample2

為什么會IDE中的NDK會編譯出64位和32位的動態庫和可執行文件呢?因為OpenHarmony操作系統有32位和64位,這樣是為了hap能在不同位數的OpenHarmony版本上運行。

根據32位和64位的OpenHarmony版本推送相應的so和可執行文件到開發板上。

如何分辨開發板上OpenHarmony版本是64位還是32位?和linux的方式是一樣。用getconf WORD_BIT和getconf LONG_BIT獲得word和long的位數。64位系統中分別得到32和64。32位系統中分別得到32和32。

筆者開發板上燒錄的是32位的OpenHarmony Beta5版本。

#創作者激勵#使用OpenHarmonyNDK移植三方庫Speexdsp-開源基礎軟件社區

因此需要將Native C++工程目錄下的entry\build\default\intermediates\cmake\default\obj\armeabi-v7a中的libspeexdsp.so和testdenoise、testecho、testjitter、testresample、testresample2推送到設備端的data目錄。

#創作者激勵#使用OpenHarmonyNDK移植三方庫Speexdsp-開源基礎軟件社區

通過與ohos版本匹配的hdc_std工具,將編譯生成的庫以及測試用的可執行文件推送到開發板的data目錄。

#創作者激勵#使用OpenHarmonyNDK移植三方庫Speexdsp-開源基礎軟件社區

hdc_std shell mount -o remount,rw /      ## 重新加載系統為可讀寫
hdc_std file send testdenoise /data ## 推送可執行文件testdenoise到data目錄
hdc_std file send libspeexdsp /data ## 推送libspeexsdp.so到data目錄

執行testdenoise可執行文件(其它測試用例的執行請參考 移植speexdsp到OpenHarmony標準系統⑤)。

通過分析testdenoise.c源碼,執行測試程序時需要指定一份輸入的不為空的8000Hz的input.pcm音頻,并且需要指定一份空的輸出的output.pcm音頻。rk3568上運行,執行語句如下:

./testdenoise < input.pcm > output.pcm 

#創作者激勵#使用OpenHarmonyNDK移植三方庫Speexdsp-開源基礎軟件社區

測試結果:對比輸入的input.pcm和輸出的outpu.pcm的波形圖和聲譜圖,噪聲已經被消除。pc端和rk3568開發板運行testdenoise可執行程序效果一致。可執行文件運行成功,使用OpenHarmonyNDK移植三方庫Speexdsp成功。

#創作者激勵#使用OpenHarmonyNDK移植三方庫Speexdsp-開源基礎軟件社區

知識點附送

AIP8的應用如何更改為API9支持64位版本。

API8只支持32位,API9支持32位和64位。

以該PR https://gitee.com/openharmony/applications_app_samples/pulls/759 學習將api8應用適配適配Arm64。

修改build-profile.json5 ,將compileSdkVersion和compatibleSdkVersion屬性由8改為9。

compileSdkVersion指定OpenHarmony應用/服務編譯時的SDK版本。

compatibleSdkVersion指定OpenHarmony應用/服務兼容的最低SDK版本。

#創作者激勵#使用OpenHarmonyNDK移植三方庫Speexdsp-開源基礎軟件社區

修改entry/build-profile.json5,abi添加64位arm64-v8a。

abiFilters用于設置本機的ABI編譯環境。

#創作者激勵#使用OpenHarmonyNDK移植三方庫Speexdsp-開源基礎軟件社區

修改entry/src/main/config.json,設備類型改為默認。

#創作者激勵#使用OpenHarmonyNDK移植三方庫Speexdsp-開源基礎軟件社區

這個pr改動了XComponent/entry/src/main/cpp/common/plugin_common.h文件,plugin_common.h文件和hilog調試的功能有關。

編譯構建子系統如何增加編譯構建arm64選擇。

以該issue https://gitee.com/openharmony/build/issues/I53E9I 來學習。

分別在hb工具和build.sh腳本添加–target-cpu選項。

電源服務子系統支持64位。

https://gitee.com/openharmony/powermgr_power_manager/issues/I55094。

graphic子系統適配64位編譯。

https://gitee.com/openharmony/graphic_graphic_2d/issues/I53720。

??想了解更多關于開源的內容,請訪問:??

??51CTO 開源基礎軟件社區??

??https://ost.51cto.com??

責任編輯:jianghua 來源: 51CTO 開源基礎軟件社區
相關推薦

2022-10-11 15:04:28

NAPI開發鴻蒙

2022-10-25 15:05:17

NAPI開發鴻蒙

2014-07-22 10:56:45

Android Stu第三方類庫

2023-02-07 15:43:13

三方庫適配鴻蒙

2020-10-29 09:56:23

Linux靜態庫動態庫

2022-11-03 15:37:52

NAPI開發三方庫移植

2013-08-14 09:50:32

iOS類庫

2022-09-13 16:10:15

鴻蒙操作系統

2019-07-30 11:35:54

AndroidRetrofit

2022-09-15 15:21:22

操作系統鴻蒙

2022-11-21 16:15:41

ArkUI鴻蒙

2022-11-16 14:05:06

Tesseract應用調用

2015-11-05 16:44:37

第三方登陸android源碼

2014-04-08 15:16:00

2012-04-19 14:16:22

TitaniumTiMVC

2010-05-25 11:09:31

SVN工具

2023-11-29 09:19:00

WebhookURL

2022-10-20 16:18:37

JS類型C/C++數據類型

2011-07-25 14:14:49

iPhone SQLITE Pldatabase

2010-03-03 15:10:49

第三方Python庫
點贊
收藏

51CTO技術棧公眾號

亚洲伦理影院| 爽爽视频在线观看| 天天综合亚洲| 精品久久久久久亚洲综合网| 成人在线播放网址| 神马久久高清| 久国产精品韩国三级视频| 欧美老女人性视频| 99久久久久久久久久| 成人国产精品一区二区免费麻豆| 亚洲欧美另类久久久精品2019| 99在线高清视频在线播放| 天天干天天干天天| 91综合网人人| 亚洲国产精品视频在线观看| 蜜臀av免费观看| 日本大片在线播放| 亚洲日产av中文字幕| 一本一道综合狠狠老| 91手机视频在线| 婷婷在线观看视频| 久色婷婷小香蕉久久| 国内揄拍国内精品| 欧美a级片免费看| 日韩高清一级| 日韩一级片在线播放| 乱子伦视频在线看| caoporn97在线视频| 久久久久久久国产精品影院| 91免费在线观看网站| 国产亚洲欧美日韩高清| 一区在线观看| 美日韩丰满少妇在线观看| 精品人伦一区二区三电影| 18国产精品| 91超碰这里只有精品国产| 六月丁香婷婷在线| 波多野结依一区| 亚洲欧美日韩在线| 欧美一区二视频在线免费观看| 亚洲精品国产片| 琪琪一区二区三区| 欧美亚洲另类在线| 日本三级理论片| 夜间精品视频| 日韩亚洲欧美成人| 美国黄色特级片| 国产精品免费不| 日韩大陆欧美高清视频区| 精品国产乱码久久久久夜深人妻| 成人影院网站ww555久久精品| 91久久精品日日躁夜夜躁欧美| 少妇人妻在线视频| www.综合| 欧美日韩亚洲一区二区| 日韩欧美一区三区| 欧美gv在线观看| 欧美色videos| 日韩网址在线观看| 亚洲欧洲高清| 色综合久久久久久久| 91传媒久久久| 欧美18—19sex性hd| 欧美日韩亚洲91| 69堂免费视频| 波多野结衣久久精品| 福利微拍一区二区| 国产精品人人妻人人爽人人牛| 欧美日韩美女| 欧美调教femdomvk| 一二三av在线| 综合中文字幕| 精品呦交小u女在线| 波多野结衣 在线| 国产亚洲一卡2卡3卡4卡新区 | 亚洲综合清纯丝袜自拍| www.在线观看av| 98色花堂精品视频在线观看| 午夜免费久久看| 久久人妻精品白浆国产 | 激情丁香综合| 91产国在线观看动作片喷水| 久久国产视频精品| 日本一不卡视频| 91久久精品国产91久久| 精品国产999久久久免费| 成人国产电影网| 欧美精品亚洲| 国产秀色在线www免费观看| 夜夜嗨av一区二区三区| 丰满爆乳一区二区三区| 亚洲国产尤物| 日韩一级视频免费观看在线| 好吊一区二区三区视频| 青青草综合网| 欧美激情亚洲精品| 一级特黄免费视频| 国产又粗又猛又爽又黄91精品| 亚洲一区二区三区视频| 性感美女视频一二三| 欧美激情在线观看视频免费| 久久久成人精品一区二区三区| av2020不卡| 精品视频1区2区| 动漫av在线免费观看| 国产一区二区三区四区五区| 蜜月aⅴ免费一区二区三区 | 麻豆av免费在线观看| 亚洲一二三四区不卡| 白嫩少妇丰满一区二区| 亚洲91网站| 在线观看国产精品91| 看片网站在线观看| 天堂成人国产精品一区| 波多野结衣久草一区| 免费在线毛片| 亚洲国产色一区| 午夜剧场在线免费观看| 欧美重口另类| 九九热这里只有在线精品视| 久久久久在线视频| 成人免费av资源| 一区二区三区四区免费视频| 亚洲小少妇裸体bbw| 欧美一区二区三区免费视频| 三年中国中文观看免费播放| 亚洲日本成人| 999精品在线观看| 日韩伦理在线观看| 色天天综合久久久久综合片| 国产香蕉精品视频| 91精品在线观看国产| 国产精品久久久久aaaa九色| 天堂影院在线| 香蕉久久一区二区不卡无毒影院| 99九九99九九九99九他书对| 欧美极品中文字幕| 欧美一区二区三区免费视| 精品久久久无码中文字幕| 国产精品毛片久久久久久久| 熟女性饥渴一区二区三区| 国产精品丝袜在线播放| 九九热这里只有在线精品视| 国产美女裸体无遮挡免费视频| 国产欧美一区二区精品忘忧草 | 久久99久久99小草精品免视看| 欧美日韩天天操| 天堂中文av在线资源库| 亚洲精品动漫100p| 国产成人无码一区二区三区在线| 福利一区二区在线| 大胆欧美熟妇xx| 亚洲精选av| 欧美国产在线电影| 午夜精品一二三区| 一区二区三区四区激情| 人妻精油按摩bd高清中文字幕| 永久亚洲成a人片777777| 91亚洲va在线va天堂va国| 黄a在线观看| 日韩一卡二卡三卡| 国产乡下妇女做爰| 99精品视频一区二区三区| 国产中文字幕视频在线观看| 婷婷五月色综合香五月| 国产成人精品网站| 在线观看国产原创自拍视频| 欧美精品一二三| 日本青青草视频| 成人久久18免费网站麻豆| 国产青青在线视频| 国产99久久精品一区二区300| 国产精品678| 在线免费av网站| 欧美一区欧美二区| 国产一级特黄aaa大片| 91丨porny丨户外露出| 日韩在线第三页| 久久精品国产大片免费观看| 亚洲www永久成人夜色| 女子免费在线观看视频www| 亚洲精品美女在线观看播放| 日本熟妇一区二区三区| 中文字幕一区二区三区在线观看 | 欧美经典一区| 91禁外国网站| 91社区在线观看| 欧美v国产在线一区二区三区| 国产精品100| 国产精品家庭影院| 69xxx免费视频| 日韩有码一区二区三区| 99精品一级欧美片免费播放| 精品福利一区| 国产精品流白浆视频| 欧美韩日亚洲| 伊人伊成久久人综合网小说| 精品人妻无码一区二区色欲产成人| 无码av中文一区二区三区桃花岛| 成人综合视频在线| 成人精品电影| 国产精品一区二区三区观看| 校园春色亚洲色图| 久99久在线视频| 蜜桃免费在线| 欧美tk丨vk视频| 国产伦精品一区二区三区视频我| 亚洲人成在线播放网站岛国| 国产国语性生话播放| 久久99在线观看| 国产精品50p| 夜间精品视频| 亚洲巨乳在线观看| 久久香蕉精品香蕉| 91在线免费看网站| 日韩福利一区| 午夜免费久久久久| 在线午夜影院| 日日噜噜噜夜夜爽亚洲精品| 天堂а√在线8种子蜜桃视频| 欧美一区二区三区免费视频| 这里只有久久精品视频| 污片在线观看一区二区| 欧美第一页在线观看| 欧美韩日一区二区三区四区| 亚洲国产第一区| 福利电影一区二区三区| 波多野结衣免费观看| 视频一区二区不卡| 国产网站免费在线观看| 激情丁香综合| www插插插无码免费视频网站| 久久中文字幕二区| 日本在线免费观看一区| 外国成人在线视频| 国产在线精品日韩| 91午夜精品| 91精品黄色| 日本精品在线观看| 96国产粉嫩美女| 91精品视频一区二区| 国产精品专区一| 成人黄色毛片| 国产精品女主播| 主播大秀视频在线观看一区二区| 日本成人在线视频网址| 中文字幕在线官网| 欧美一区亚洲一区| 芒果视频成人app| 国产成+人+综合+亚洲欧美丁香花| 免费高潮视频95在线观看网站| 久久久久久com| 国产乱码精品一区二三赶尸艳谈| 国产综合在线视频| 欧亚av在线| 日韩av第一页| 男人亚洲天堂| 91网在线免费观看| 亚洲国产欧美在线观看| 97久久人人超碰caoprom欧美| 综合久久成人| 精品久久蜜桃| 性人久久久久| 日韩精品资源| 欧美亚洲国产精品久久| 亚洲欧洲日韩综合二区| 91精品国产91久久综合| 免费cad大片在线观看| 亚洲天堂男人| 国产淫片免费看| 免费在线视频一区| 最新av免费在线观看| 国产成人午夜电影网| 亚洲精品乱码久久久久久蜜桃图片| av成人免费在线| 干b视频在线观看| 国产精品蜜臀在线观看| 美国黄色小视频| 亚洲成av人片www| 一级黄色av片| 91精品国产综合久久婷婷香蕉| 性欧美一区二区三区| 日韩精品极品视频免费观看| 成人高清网站| 欧美黄色成人网| 极品美女一区| 亚洲va久久久噜噜噜| 欧美自拍视频| 一本久道久久综合| 亚洲国产清纯| 日韩av在线中文| 成人福利视频在线| a资源在线观看| 亚洲主播在线播放| 伊人久久中文字幕| 欧美成人精品1314www| 国产小视频免费在线网址| 久久中文精品视频| 中文一区一区三区高中清不卡免费| 成人激情视频小说免费下载| 青青草这里只有精品| 精品一区二区成人免费视频| 99成人精品| 国内av免费观看| 国产亚洲精品福利| 久久精品美女视频| 欧美日韩一二区| 清纯唯美亚洲色图| 久久99精品久久久久久琪琪| 亚洲电影有码| 久久久久久99| 综合一区二区三区| 欧美性猛交xxx乱久交| 国产91丝袜在线播放九色| 少妇太紧太爽又黄又硬又爽小说| 亚洲成av人影院| 国产伦精品一区二区三区四区| 精品视频中文字幕| 在线电影福利片| 国产精品专区第二| 精品国产一区二区三区久久久樱花 | 黄色片一级视频| 国产精品一二三| 久久精品在线观看视频| 一本色道久久综合亚洲aⅴ蜜桃| 国产黄色一级大片| 久久精品99久久久香蕉| 日本在线视频一区二区| 久久精品中文字幕一区二区三区| 欧美88av| 久久婷婷中文字幕| 18成人在线观看| 中文字幕资源网| 亚洲偷熟乱区亚洲香蕉av| 日本不良网站在线观看| 精品久久久久久亚洲| 亚洲精品欧洲| 国产伦精品一区二区免费| 一区二区三区中文免费| 国产男女无套免费网站| 久久伊人精品一区二区三区| 久久免费影院| 亚洲一区二区三区四区中文| 男人操女人的视频在线观看欧美| 大又大又粗又硬又爽少妇毛片| 亚洲v精品v日韩v欧美v专区| 老牛影视av牛牛影视av| 欧美韩日一区二区| 国产成人精品亚洲线观看| 蜜臀精品一区二区| 成人动漫一区二区在线| 亚洲精品77777| 亚洲国产精品久久久| 爱搞国产精品| 蜜桃狠狠色伊人亚洲综合网站| 99这里有精品| 精品夜夜澡人妻无码av| 欧美性猛交xxxx黑人猛交| 免费人成黄页在线观看忧物| 欧美最猛性xxxx| 菠萝蜜一区二区| 日韩在线一区视频| 亚洲精品乱码久久久久久| 亚洲精品无码专区| 性欧美xxxx| 国产一区日韩| 午夜视频在线网站| 一区二区不卡在线播放| 欧美一级淫片免费视频魅影视频| 97涩涩爰在线观看亚洲| 国产一区二区三区网| 久久久久久久久久一区| 一区二区三区中文在线| 婷婷五月综合激情| 国产精品久久久久久久久借妻| 999久久久免费精品国产| 国产精品中文久久久久久| 亚洲国产精品人人做人人爽| 男女视频在线观看免费| 91精品久久久久久久久久入口 | 2017欧美狠狠色| 亚洲av人无码激艳猛片服务器| 久久亚洲精品一区二区| 久久精品福利| 99热这里只有精品在线播放| 亚洲另类在线制服丝袜| 性感美女福利视频| 成人xxxxx| 亚洲神马久久| 2017亚洲天堂| 亚洲国产日韩欧美在线图片| 免费高清视频在线一区| 777久久精品一区二区三区无码 | 欧美一区二区三区视频免费 | 三级av在线| 国产日韩精品电影| 国产欧美日韩一级| 黑人狂躁日本娇小| 日韩精品在线免费| 国产激情精品一区二区三区|