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

OH-v3.0-LTS Camera相機驅動框架(L2)解析之創建流

原創
系統 OpenHarmony
本篇接著上章的代碼繼續往下看,將創建好的StreamInfo作為參數丟給StreamOperator進行流的創建

??想了解更多內容,請訪問:??

??51CTO和華為官方合作共建的鴻蒙技術社區??

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

接著上章的代碼繼續往下看,將創建好的StreamInfo作為參數丟給StreamOperator進行流的創建

程序調用流程圖

1. StreamOperator::CreateStreams()

創建過程

  • 實例化一個stream對象,用stremInfos中的參數信息對相關成員進行賦值。
  • 創建一個StreamTunnel對象,把StreamTunnel和stream進行綁定。
  • 把創建好的每一個stream 對應它的stremId 放在 streamMap_里。
//drivers\peripheral\camera\hal\hdi_impl\src\stream_operator\stream_operator.cpp
CamRetCode StreamOperator::CreateStreams(const std::vector<std::shared_ptr<StreamInfo>>& streamInfos)
{
...
for (auto it : streamInfos) {
...

std::shared_ptr<IStream> stream = StreamFactory::Instance().CreateShared(
IStream::g_avaliableStreamType[it->intent_], it->streamId_, it->intent_, pipelineCore_, messenger_);

...

StreamConfiguration scg;
scg.id = it->streamId_;
scg.type = it->intent_;
scg.width = it->width_;
scg.height = it->height_;
PixelFormat pf = static_cast<PixelFormat>(it->format_);
scg.format = BufferAdapter::PixelFormatToCameraFormat(pf);
scg.dataspace = it->datasapce_; // fix misspell
scg.tunnelMode = it->tunneledMode_;
scg.minFrameDuration = it->minFrameDuration_;
scg.encodeType = it->encodeType_;

RetCode rc = stream->ConfigStream(scg);

...

if (it->bufferQueue_ != nullptr) {
auto tunnel = std::make_shared<StreamTunnel>();
CHECK_IF_PTR_NULL_RETURN_VALUE(tunnel, INSUFFICIENT_RESOURCES);
RetCode rc = tunnel->AttachBufferQueue(it->bufferQueue_);
CHECK_IF_NOT_EQUAL_RETURN_VALUE(rc, RC_OK, INVALID_ARGUMENT);
if (stream->AttachStreamTunnel(tunnel) != RC_OK) {
CAMERA_LOGE("attach buffer queue to stream [id = %{public}d] failed", it->streamId_);
return INVALID_ARGUMENT;
}
}
{
std::lock_guard<std::mutex> l(streamLock_);
streamMap_[stream->GetStreamId()] = stream;
}
}
return NO_ERROR;
}

這里需要注意的一個地方RetCode rc = tunnel->AttachBufferQueue(it->bufferQueue_);單獨把這個代碼帖出來看下

//drivers\peripheral\camera\hal\hdi_impl\src\stream_operator\stream_tunnel.cpp
RetCode StreamTunnel::AttachBufferQueue(OHOS::sptr<OHOS::IBufferProducer>& producer)
{
CHECK_IF_PTR_NULL_RETURN_VALUE(producer, RC_ERROR);
bufferQueue_ = OHOS::Surface::CreateSurfaceAsProducer(producer); //Buffer的生產者使用該函數創建一個Surface,只能使用與生產相關的接口
CHECK_IF_PTR_NULL_RETURN_VALUE(bufferQueue_, RC_ERROR);
return RC_OK;
}

這個成員函數的作用就是把應用層中的StreamCustomer::CreateProducer()獲取的producer作為參數創建與“消費者”對應的“生成型”Surface。 而StreamTunnel類就是對這個生成型Surface的一個功能封裝。

2. StreamOperator::CommitStreams()

源碼有點長 去掉一些參數的校驗和準備相關的代碼

一共調用 StreamBase::CommitStream() 、StreamPipelineCore::PreConfig()、StreamPipelineCore::CreatePipeline()三個函數

下面一個個來看

//drivers\peripheral\camera\hal\hdi_impl\src\stream_operator\stream_operator.cpp
CamRetCode StreamOperator::CommitStreams(OperationMode mode,
const std::shared_ptr<CameraStandard::CameraMetadata>& modeSetting)
{
...
{
std::lock_guard<std::mutex> l(streamLock_);
for (auto it : streamMap_) {
if (it.second->CommitStream() != RC_OK) {
CAMERA_LOGE("commit stream [id = %{public}d] failed.", it.first);
return DEVICE_ERROR;
}
}
}
RetCode rc = streamPipeline_->PreConfig(modeSetting);
if (rc != RC_OK) {
CAMERA_LOGE("prepare mode settings failed");
return DEVICE_ERROR;
}
rc = streamPipeline_->CreatePipeline(mode);
if (rc != RC_OK) {
CAMERA_LOGE("create pipeline failed.");
return INVALID_ARGUMENT;
}

DFX_LOCAL_HITRACE_END;
return NO_ERROR;
}

2.1 StreamBase::CommitStream()

按照代碼LOG中的說明commit a stream to pipeline。大家可以自行理解,本人的理解是

  • 通過BufferManager創建并初始化BufferPool 數據緩存池
  • 給這個Stream對應的pipeline 創建一個StreamMgr,讓pipeline可以通過StreamMgr對Stream進行對應的控制。
//drivers\peripheral\camera\hal\hdi_impl\src\stream_operator\stream_base.cpp
RetCode StreamBase::CommitStream()
{
...

HostStreamInfo info;
info.type_ = static_cast<StreamIntent>(streamType_);
info.streamId_ = streamId_;
info.width_ = streamConfig_.width;
info.height_ = streamConfig_.height;
info.format_ = streamConfig_.format;
info.usage_ = streamConfig_.usage;
info.encodeType_ = streamConfig_.encodeType;

if (streamConfig_.tunnelMode) {
BufferManager* mgr = BufferManager::GetInstance();
CHECK_IF_PTR_NULL_RETURN_VALUE(mgr, RC_ERROR);

if (bufferPool_ == nullptr) {
poolId_ = mgr->GenerateBufferPoolId();
CHECK_IF_EQUAL_RETURN_VALUE(poolId_, 0, RC_ERROR);

bufferPool_ = mgr->GetBufferPool(poolId_);
if (bufferPool_ == nullptr) {
CAMERA_LOGE("stream [id:%{public}d] get buffer pool failed.", streamId_);
return RC_ERROR;
}
}

info.bufferPoolId_ = poolId_;
info.bufferCount_ = GetBufferCount();
RetCode rc = bufferPool_->Init(streamConfig_.width, streamConfig_.height, streamConfig_.usage,
streamConfig_.format, GetBufferCount(), CAMERA_BUFFER_SOURCE_TYPE_EXTERNAL);
if (rc != RC_OK) {
CAMERA_LOGE("stream [id:%{public}d] initialize buffer pool failed.", streamId_);
return RC_ERROR;
}
}

RetCode rc = hostStreamMgr_->CreateHostStream(info, [this](std::shared_ptr<IBuffer> buffer) {
HandleResult(buffer);
return;
});

...

return RC_OK;
}

2.2 StreamPipelineCore::PreConfig()

這里的代碼比較簡單,根據參數信息,調用deviceManager的PreConfig接口從來配置下面的硬件設備。

deviceManager在前面PowerUp的解析已經說明了,Hi3516實際上是將硬件適配層相關的代碼都封閉在了so里面,

所以這里實際調用就一行代碼sysObject_->PreConfig(meta, settings);

//drivers\peripheral\camera\hal\pipeline_core\pipeline_impl\src\stream_pipeline_core.cpp
RetCode StreamPipelineCore::PreConfig(const ModeMeta& meta)
{
auto deviceManager = IDeviceManager::GetInstance();
CHECK_IF_PTR_NULL_RETURN_VALUE(deviceManager, RC_ERROR);

std::vector<DeviceStreamSetting> settings = {};
std::vector<int32_t> ids = {};
context_->streamMgr_->GetStreamIds(ids);
for (auto i : ids) {
auto info = context_->streamMgr_->GetStreamInfo(i);
DeviceStreamSetting setting = {info.streamId_, info.bufferCount_, info.width_, info.height_,
info.format_, info.usage_, static_cast<CameraEncodeType>(info.encodeType_)};
settings.emplace_back(setting);
}
return deviceManager->PreConfig(meta, settings);
}

2.3 StreamPipelineCore::CreatePipeline()

有關stategy、builder、dispatcher實現的函數代碼比較多,大家感興趣自行閱讀。總的說一下整體功能:

  • StreamPipelineStrategy 負責根據mode從對應的配置文件中創建pipeline。
  • StreamPipelineBuilder 負責創建Node并鏈接
  • StreamPipelineDispatcher 負責管理創建好的pipeline
  • 最終建立的StreamPipeline是由Node(節點)組成,Node(節點)由Port(端口)組成。Port(端口)分為in端口和out端口(可以有多個)。out鏈接in最終構建出整個StreamPipeline

Demo案例建立了兩個streamPipeline

//drivers\peripheral\camera\hal\pipeline_core\pipeline_impl\src\stream_pipeline_core.cpp
RetCode StreamPipelineCore::CreatePipeline(const int32_t& mode)
{
std::lock_guard<std::mutex> l(mutex_);
std::shared_ptr<PipelineSpec> spec = strategy_->GeneratePipelineSpec(mode);
if (spec == nullptr) {
return RC_ERROR;
}
std::shared_ptr<Pipeline> pipeline = builder_->Build(spec);
if (pipeline == nullptr) {
return RC_ERROR;
}
return dispatcher_->Update(pipeline);
}

需要注意幾個問題

  1. pipeline的配置文件在drivers\peripheral\camera\hal\pipeline_core\pipeline_impl\src\strategy\config目錄下的config.c和params.c
  2. 這兩個文件是由BUILD.gn 腳本生成的。
//drivers\peripheral\camera\hal\adapter\chipset\hispark_taurus\BUILD.gn
source =
"$camera_path/pipeline_core/pipeline_impl/src/strategy/config/config.c"
exec_script(
"http://drivers/framework/tools/hc-gen/build_hcs.py",
[
"-o",
rebase_path(
"$camera_path/pipeline_core/pipeline_impl/src/strategy/config/config.c"),
"-t",
rebase_path(
"http://vendor/hisilicon/Hi3516DV300/hdf_config/uhdf/camera/hal/mpp/hispark_taurus/pipeline_core/config.hcs"),
],
"")
}

ohos_prebuilt_etc("params.c") {
source =
"$camera_path/pipeline_core/pipeline_impl/src/strategy/config/params.c"
exec_script(
"http://drivers/framework/tools/hc-gen/build_hcs.py",
[
"-o",
rebase_path(
"$camera_path/pipeline_core/pipeline_impl/src/strategy/config/params.c"),
"-t",
rebase_path(
"http://vendor/hisilicon/Hi3516DV300/hdf_config/uhdf/camera/hal/mpp/hispark_taurus/pipeline_core/params.hcs"),
],
"")
}

3. 小結

到此流的創建也完成了,最后一章節會把圖像采集的代碼講解完。

??想了解更多內容,請訪問:??

??51CTO和華為官方合作共建的鴻蒙技術社區??

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

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2022-02-25 15:33:45

圖像采集鴻蒙Camera相機

2022-02-08 15:07:45

OpenHarmor鴻蒙操作系統

2022-01-06 16:16:21

鴻蒙HarmonyOS應用

2022-02-21 15:38:57

Openharmon操作系統鴻蒙

2022-02-17 16:47:40

OpenharmonIPC通信鴻蒙

2014-11-25 13:28:17

openstackneutronDVR

2022-06-22 09:14:23

事件打點HiSysEvent

2021-10-20 19:14:30

緩存CacheCPU

2022-04-21 11:26:31

鴻蒙操作系統

2015-01-20 13:19:52

OpenStack網絡層數據鏈路層

2023-11-27 08:21:49

Camera2API,

2023-02-13 15:54:49

2022-07-04 16:41:16

IPC通信HiTrace

2021-11-01 17:31:21

Camera2 相機開發

2022-07-14 19:03:33

IPC服務鴻蒙

2023-01-31 09:12:16

CPU芯片緩存

2021-10-27 11:29:49

Linux框架內核

2023-02-20 08:00:00

2023-10-10 15:33:55

機器學習相似性度量

2022-08-26 14:58:43

區塊鏈比特幣架構
點贊
收藏

51CTO技術棧公眾號

激情综合网av| 国产一区二区三区不卡av| 中文字幕国产一区二区| 国产一区二区色| 国产一级一片免费播放放a| 久久99青青| 日韩一二三区不卡| 妞干网在线免费视频| 国产在线看片| 99精品久久99久久久久| 成人网欧美在线视频| 97久久久久久久| 影视一区二区| 成人在线日韩| 先锋亚洲精品| 大胆人体色综合| 免费看黄色aaaaaa 片| 欧美久久久网站| 亚洲sss视频在线视频| 五月天亚洲综合情| 少妇人妻精品一区二区三区| 久久国产夜色精品鲁鲁99| 国外成人免费在线播放| 激情高潮到大叫狂喷水| 亚洲动漫精品| 精品少妇一区二区三区日产乱码| 无码人妻丰满熟妇区五十路百度| 色图在线观看| 成人欧美一区二区三区| 日本一区视频在线播放| 色噜噜在线播放| 国产米奇在线777精品观看| 国产成人精品一区| 国产视频91在线| 国内自拍视频一区二区三区 | 狠狠热免费视频| av人人综合网| 亚洲网友自拍偷拍| 日韩精品一区二区三区电影| 亚洲s色大片| 久久精品一区二区三区不卡| 久久66热这里只有精品| 国产 欧美 精品| 国产成人一区在线| 51午夜精品| a天堂中文在线观看| 国产综合一区二区| 91精品久久久久久久久久久久久久| 精品人妻无码一区二区性色| 国产精品综合色区在线观看| 7777精品视频| 国产成人精品一区二三区| 激情婷婷久久| 性视频1819p久久| 国产无遮无挡120秒| 亚洲夜间福利| 91精品国产色综合久久不卡98口 | 91国偷自产一区二区开放时间 | 欧美精品videosex牲欧美| 国产精品三区在线观看| 亚洲精品tv久久久久久久久久| 久久久精品久久久| 国产suv一区二区三区| 综合国产精品| 亚洲91精品在线| 五月婷婷色丁香| 日产欧产美韩系列久久99| 国产精品视频久久久| 亚洲图片小说视频| 国产一区视频在线看| 亚洲自拍偷拍区| 免费激情视频网站| 91麻豆国产在线观看| 欧美一区2区三区4区公司二百| 黄色片在线免费观看| 中文一区二区完整视频在线观看 | 日韩av一二区| 欧美日中文字幕| 久久亚洲影音av资源网| 国产在线观看你懂的| 午夜一区二区三区不卡视频| 国产日产欧美精品| 91tv国产成人福利| 成人动漫一区二区| 欧美日韩最好看的视频| 欧美三级理伦电影| 亚洲成人在线免费| 午夜在线观看av| 亚洲成人黄色| 亚洲人成77777在线观看网| 亚洲色图27p| 亚洲三级色网| 国产精品中文字幕在线观看| 国产喷水福利在线视频| 99riav一区二区三区| 亚洲精品一区二区三| www.8ⅹ8ⅹ羞羞漫画在线看| 色视频成人在线观看免| japan高清日本乱xxxxx| 一区三区在线欧| 久久国产加勒比精品无码| 国产成人精品一区二三区| 狠狠色丁香久久婷婷综| 精品视频一区在线| 黄色片网站在线观看| 色悠久久久久综合欧美99| 日本55丰满熟妇厨房伦| 欧美人与拘性视交免费看| 欧美老女人在线视频| 精产国品一区二区| 成人av在线影院| 一区二区三区在线观看www| 亚洲伊人av| 日韩精品一区二区三区在线观看| 国产1区2区在线观看| 99在线精品视频在线观看| 国产欧美日韩精品丝袜高跟鞋| 五月婷中文字幕| 有坂深雪av一区二区精品| 天堂网在线免费观看| 欧美五码在线| 欧美国产精品日韩| 国产又大又黄又爽| 欧美极品aⅴ影院| 能在线观看的av| 99精品在免费线中文字幕网站一区 | 欧美freesex交免费视频| 国产精品狼人色视频一区| 午夜在线视频观看| 亚洲资源中文字幕| 夜夜爽久久精品91| 91精品一区国产高清在线gif| 国产精品96久久久久久| 欧美精品a∨在线观看不卡| 亚洲成人在线观看视频| 韩国三级视频在线观看| 欧美成人中文| 91嫩草在线| 怡红院红怡院欧美aⅴ怡春院| 欧美日韩国产天堂| 国产福利在线导航| 蜜臀av国产精品久久久久| 日韩影院一区| 123成人网| 在线精品高清中文字幕| 免费在线不卡av| 欧美国产精品v| 精品久久久久久中文字幕2017| 九九热精品视频在线观看| 日本精品va在线观看| 亚洲av片在线观看| 色综合久久久久综合| 精品少妇一区二区三区免费观| 西西人体一区二区| 手机在线观看国产精品| 欧美日韩尤物久久| 深夜福利一区二区| 国产精品无码专区av免费播放| 亚洲欧美视频一区| 中文字幕在线播放一区二区| 欧美区一区二| 国产一区二区三区免费不卡| 日韩伦理在线一区| 亚洲石原莉奈一区二区在线观看| 国产免费一区二区三区四区五区| 亚洲国产精品成人综合色在线婷婷 | 久久精品国产成人一区二区三区| 久久免费看毛片| 日韩欧洲国产| 茄子视频成人在线| 午夜小视频在线| 日韩欧美中文一区二区| 久久精品久久国产| 337p粉嫩大胆色噜噜噜噜亚洲| 爱情岛论坛亚洲首页入口章节| 色综合天天爱| 国产精品theporn88| 亚洲人成在线网站| 色青青草原桃花久久综合| 精品欧美一区二区精品少妇| 欧美日韩国产黄| 青青草自拍偷拍| 国产精品18久久久久久久久| 日本福利视频在线| 日韩精品dvd| 国产精品一区二区欧美| 欧美123区| 欧美另类精品xxxx孕妇| 日韩一二三四| 91精品国产日韩91久久久久久| 日本亚洲色大成网站www久久| 国产婷婷色一区二区三区四区 | 国产精品女同一区二区三区| 精品人妻无码中文字幕18禁| 午夜在线精品| 亚洲天堂第一区| 亚州精品视频| 91网站在线免费观看| 自拍偷拍亚洲视频| 久久av.com| 国产在线观看黄| 日韩精品在线网站| 一个人看的www日本高清视频| 亚洲一区二区三区在线播放| 欧美激情久久久久久久| 成人黄色网址在线观看| 久久久久久久高清| 日韩中文字幕区一区有砖一区 | 亚洲v.com| 欧美成人精品xxx| av网站在线播放| 日韩电影中文字幕| 99久久免费国产精精品| 欧美羞羞免费网站| 欧美日韩乱国产| 亚洲网友自拍偷拍| 欧美 日韩 国产 一区二区三区| 国产亚洲短视频| 亚洲观看黄色网| 国产丶欧美丶日本不卡视频| 亚洲36d大奶网| 日韩精品一级二级| 国产性xxxx18免费观看视频| 黄页网站一区| 日本中文字幕一级片| 国产精品不卡| 一区二区视频在线免费| 日韩精品一区二区久久| 日韩高清dvd| 亚洲图片久久| 久久亚裔精品欧美| 精品欧美午夜寂寞影院| 成人av资源| 亚洲天堂av资源在线观看| 7777精品久久久大香线蕉小说| 91另类视频| 国产精品久久久久久久久粉嫩av| 天堂av在线网| 97av视频在线| 免费成人在线电影| 国产91成人video| 色在线中文字幕| 欧美在线视频免费| 中文字幕在线官网| 日韩av手机在线看| 二区三区不卡| 国产精品扒开腿做爽爽爽的视频| 中文字幕乱码中文乱码51精品| 98精品在线视频| 中文字幕在线看片| 国产福利成人在线| yiren22亚洲综合| 国产在线精品播放| 成人久久精品| 粉嫩精品一区二区三区在线观看 | 韩国av免费观看| 精品欧美激情精品一区| 亚洲天堂一区在线观看| 日本黄色一区二区| 黄色一区二区视频| 欧美一区二区三区啪啪| 国产 日韩 欧美 精品| 日韩国产在线看| 国产在线网站| 免费成人高清视频| www.51av欧美视频| 国产精品999999| 国产成人免费av一区二区午夜 | 亚洲一区二区三区| 日韩美女爱爱视频| 久久青草久久| 婷婷激情5月天| 丁香激情综合国产| 成都免费高清电影| 国产精品传媒视频| 黄网站免费在线| 日本电影亚洲天堂一区| 国产一区二区在线播放视频| 欧美不卡在线视频| 加勒比一区二区三区在线| 久久中文字幕一区| 2020av在线| 国产欧美一区二区白浆黑人| 99亚洲乱人伦aⅴ精品| 欧美日韩亚洲综合一区二区三区激情在线 | 国产精品9191| 欧美综合在线视频| 亚洲精品一区二区三区蜜桃| 国产婷婷成人久久av免费高清 | 亚洲成人av免费观看| 97久久超碰国产精品| 亚洲女人毛茸茸高潮| 午夜视频久久久久久| 中文字幕人妻丝袜乱一区三区| 日韩美女主播在线视频一区二区三区| 精品视频一二三| 欧美极品少妇xxxxⅹ喷水| 日韩在线观看不卡| 国产精品一区免费观看| 欧美高清在线| 欧美性大战久久久久xxx| 国产尤物一区二区| 欧美黄色一级生活片| 亚洲第一在线综合网站| 11024精品一区二区三区日韩| 亚洲精品第一页| av官网在线播放| 国产精品极品美女在线观看免费| 99香蕉久久| 四虎精品欧美一区二区免费| 日韩精品91亚洲二区在线观看 | 亚洲天堂2018av| 久久这里只精品最新地址| 欧美成人精品欧美一级私黄| 欧美巨大另类极品videosbest | 激情综合闲人网| 国内精品小视频在线观看| 9999在线精品视频| 亚洲精品一品区二品区三品区| 裸体素人女欧美日韩| 少妇一级淫片免费放播放| 亚洲激情自拍偷拍| 国产一区二区麻豆| 最近2019年好看中文字幕视频 | 性色av一区二区怡红| 免费黄色a级片| 亚洲精品免费播放| 国产精品高潮呻吟AV无码| 一区二区欧美亚洲| 欧美日韩成人影院| 欧美高清性xxxxhd| 久久蜜桃精品| 国产三级视频网站| 欧美日韩精品在线观看| 少妇荡乳情欲办公室456视频| 欧美黑人xxxx| 91精品入口| 国产一区二区三区小说| 国产凹凸在线观看一区二区| 免费三级在线观看| 91精品国产一区二区三区香蕉| 秋霞午夜理伦电影在线观看| 国产精品直播网红| 希岛爱理一区二区三区| 国产乱码一区二区三区四区| 亚洲婷婷综合色高清在线| 国产又粗又猛视频| 久久的精品视频| 国产成人免费视频网站视频社区 | 国产第一页第二页| 精品处破学生在线二十三| 丰满诱人av在线播放| 国产伦精品一区二区三区视频孕妇 | 中文字幕在线视频一区二区三区| 国产精品电影一区二区| 国产精品一区二区黑人巨大| 欧美日韩国产123| 精品国产乱子伦一区二区| 午夜精品久久久久久久无码| 久久久蜜桃精品| 亚洲一级特黄毛片| 欧美精品日韩三级| 欧美电影在线观看免费| 国模杨依粉嫩蝴蝶150p| 国产精品伦理在线| av免费观看网址| 韩日精品中文字幕| 国产一区日韩| 国产5g成人5g天天爽| 亚洲一区二区欧美| 欧美理论在线观看| 91精品久久久久久久久久另类 | 亚洲国产综合av| 欧美日韩久久久久| jizz日韩| 成人自拍网站| 可以免费看不卡的av网站| 看黄色录像一级片| 精品国产亚洲一区二区三区在线观看| 涩涩视频在线| 亚洲欧洲日夜超级视频| 国产 日韩 欧美大片| 欧美超碰在线观看| 欧美成人在线网站| blacked蜜桃精品一区| 中文字幕第三区| 色哟哟日韩精品| 欧洲黄色一区| 日韩福利视频| 成人久久久精品乱码一区二区三区| 欧美一区二区三区不卡视频| 欧美老肥婆性猛交视频| 免费久久久久久久久| 日韩精品在线播放视频| 日本精品一级二级| 国产精品蜜臀| 自拍偷拍视频在线| 国产女主播一区| 婷婷色在线视频| 91免费电影网站|