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

直播流??內(nèi)存優(yōu)化?案

開發(fā) 架構(gòu)
通?降低分辨率?式為采用圖片云開發(fā)系統(tǒng)提供的服務(wù)。在圖片 url 中加入分辨率的參數(shù), 直接下載相應(yīng)分辨率的圖?。分辨率的設(shè)置,以圖片清晰為標(biāo)準(zhǔn),?般設(shè)置為展 示 ImageView 的大小。這樣不消耗客戶端的資源,不會(huì)給 CPU 帶來額外的工作。

01項(xiàng)目背景介紹

項(xiàng)目中直播流每場直播由一張直播圖片作為展示入口,用于提示用戶此直播的概要。如下圖: 

圖片圖片

然而直播圖片和容器的寬高比例出現(xiàn)不一致的情況。針對此情況,采取背景圖 contentmode展示為 aspectFill 且高斯模糊,上層高清圖為 aspectfit,給用戶一種圖片填滿且能清除獲取信息的視覺體驗(yàn)。如下圖:

圖片圖片

然而服務(wù)端下發(fā)直播的圖片分辨率在1000 * 2000byte左右,占用內(nèi)存大小為1000 * 2000 * 4,約為 2M 大小。資深直播用戶最多有一千場直播。使用 sd_webImage 下載圖片并緩存在內(nèi)存中,查看足夠多的直播封面時(shí),在iPhone 13機(jī)型,iOS15的手機(jī),滑動(dòng)到400場直播時(shí),就會(huì)產(chǎn)生內(nèi)存不足崩潰。且崩潰堆棧展示在進(jìn)行高斯模糊的方法中。

02分析問題

經(jīng)過初步分析,得出影響內(nèi)存的原因有以下幾方面。

  • 圖片分辨率高,高斯模糊占用的內(nèi)存越高。因?yàn)樾枰獙M(jìn)行大量模糊計(jì)算;
  • 用戶快速滑動(dòng)直播流,正常的下載圖片速度會(huì)展示所有劃過的圖片,高斯模糊在圖片下載完成 block 中執(zhí)行,即使劃過的直播圖,也會(huì)繼續(xù)高斯模糊直至返回。這樣會(huì)導(dǎo)致用戶大量無意義圖片占用大量內(nèi)存;
  • 兩張 ImageView 需要在內(nèi)存中加載兩張一樣的圖片,是一種內(nèi)存浪費(fèi);
  • 為了用戶查看圖片的及時(shí)性和流暢性,項(xiàng)目中沒有設(shè)置存儲(chǔ)高斯模糊圖片最大占用內(nèi)存。這會(huì)導(dǎo)致圖片內(nèi)存只會(huì)在內(nèi)存警告時(shí)被清除。導(dǎo)致高斯模糊不能獲取足夠的內(nèi)存而崩潰;
  • 高斯模糊采用 vImage 方案,占用 CPU 進(jìn)行高斯模糊計(jì)算,CPU 繁忙不能及時(shí)釋放內(nèi)存,進(jìn)一步加劇內(nèi)存緊張。

03針對問題,采取措施

降低圖片分辨率

  • 通?降低分辨率?式為采用圖片云開發(fā)系統(tǒng)提供的服務(wù)。在圖片 url 中加入分辨率的參數(shù), 直接下載相應(yīng)分辨率的圖?。分辨率的設(shè)置,以圖片清晰為標(biāo)準(zhǔn),?般設(shè)置為展 示 ImageView 的大小。這樣不消耗客戶端的資源,不會(huì)給 CPU 帶來額外的工作。

避免下載快速劃過的圖片


  • 判斷用戶是否快速劃過,無需下載圖片。scrollViewDidScroll 的回調(diào)頻率是小于 CADisplayLink 回調(diào)頻率的,在滾動(dòng)緩慢的狀態(tài)下,離散取整可能導(dǎo)致 contentOffset 在某次刷新中不發(fā)生變化,也就是說 didScroll 的兩次打點(diǎn)間隔有一定可能大于0.0167s,是2個(gè)或者3個(gè)刷新周期。低速狀態(tài)下本身差值的差別就不大,所以使用 didScroll 打點(diǎn),默認(rèn)間隔是0.0167s即可。在 scrollviewDidScroll 中記錄兩次 scrollview 移動(dòng)的差值,經(jīng)實(shí)驗(yàn)證明,速速大于60pt,流視圖圖片視覺上呈模糊狀態(tài),故以60pt作為暴力滑動(dòng)的臨界點(diǎn);

  • 下一步,暴力滾動(dòng)停止劃過圖片的下載。創(chuàng)建全局變量標(biāo)記是否暴力滾動(dòng),在系統(tǒng)調(diào)用 cellForItem 方法時(shí),判斷標(biāo)記為是則不進(jìn)行下載。非暴力滾動(dòng)下,標(biāo)記為否, cell 根據(jù)標(biāo)記開啟下載當(dāng)前的圖片;

  • 以上適用于自然減速停止的滑動(dòng)。然而暴力滾動(dòng)之后用戶手動(dòng)突然停止,此時(shí)標(biāo)記雖已及時(shí)改為否,但展示在屏幕上的圖片都處于不下載的狀態(tài)。我們在 scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate: 代理表示停止拖拽,在此時(shí)機(jī),將展示在屏幕上的 cell 重新下載圖片。具體代碼如下:

    [self.collectionView.visibleCells  enumerateObjectsUsingBlock:^(__kindof UICollectionViewCell * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
              SVPGCLiveCollectionViewCell *cell = obj;
              if (!cell.yesToLoad) {
                  cell.yesToLoad = YES;
              }
      }];

    自定義 cell ,setYesToLoad方法中下載圖片,設(shè)置 yesToLoad為 Yes ,即可開啟下載當(dāng)屏的圖片這種情況;

  • 其他的滑動(dòng)情況:滾動(dòng)到流頂部,手動(dòng)設(shè)置 contenOffset:animated:經(jīng)測試,滾動(dòng)的速度屬于暴力滾動(dòng)。需要在 scrollViewDidScrollToTop 和 scrollViewDidEndScrollingAnimation 中設(shè)置當(dāng)屏圖片重新下載;

  • 內(nèi)存存儲(chǔ)高斯模糊的容器為 NSCache ,NSCache 提供最大儲(chǔ)存值。根據(jù)直播 tab 業(yè)務(wù)需要,每屏展示的數(shù)量大約為15張左右。存儲(chǔ)的數(shù)值需比15張略大,保證頁面的流暢度。初設(shè)值為20,每張占用的內(nèi)存在5M左右,20張存儲(chǔ)在100M,可接收范圍內(nèi);

  • 高斯模糊由 vImage 方式修改為 GPUImage 方式,使用 CPU 處理圖像, GPUImage 在 GPU 上處理 filter ,經(jīng)統(tǒng)計(jì),在 iOS13 上,處理圖片濾鏡時(shí)間比快約2倍。GPU 處理 filter 圖片需要運(yùn)行大量 openGL 代碼,GPUImage 封裝了 openGL,只需要調(diào)用接口就可以實(shí)現(xiàn) filter 。GPUImage 沒有現(xiàn)成的合成一張底部高斯,上層高清的圖片濾鏡。GPUImage 支持自定義頂點(diǎn)著色器和片元著色器實(shí)現(xiàn)濾鏡。整體思路為,使用混合濾鏡將高斯濾鏡的紋理和原圖紋理按照坐標(biāo)計(jì)算生成新的輸出。紋理鏈條如圖:


a. 初始化高斯濾鏡,并設(shè)置參數(shù)。

GPUImageGaussianBlurFilter *gaussionfilter =     [[GPUImageGaussianBlurFilter alloc] init];
        gaussionfilter.blurRadiusInPixels = 9;//數(shù)值越高,越糊。
        [gaussionfilter forceProcessingAtSize:highDefiniImage.size];

說明:blurRadiusInPixels 決定高斯的卷積數(shù)。卷積數(shù)越高,模糊效果越明顯。forceProcessingAtSize:設(shè)置高斯過濾器的目標(biāo)輸出分辨率

b. 初始始化原始圖?。GPUImage中靜態(tài)圖?的源對象為 GPUImagePicture類

GPUImagePicture *highImage = [[GPUImagePicture alloc] initWithImage:highDefiniImage];

通過傳?原圖的 image 對象?成 GPUImagePicture 。

c. 自定義頂點(diǎn)著色器和片元著色器創(chuàng)建自定義混合濾鏡。頂點(diǎn)著色器,是對頂點(diǎn)進(jìn)行一系列操作的著色器,頂點(diǎn)除了有最基本的位置屬性,還包含其他屬性,比如紋理,法線等。通過頂點(diǎn)著色器,顯卡就知道頂點(diǎn)應(yīng)該繪制在具體什么位置。針對每個(gè)頂點(diǎn),頂點(diǎn)著色器都會(huì)執(zhí)行一次。首先收到系統(tǒng)傳給他的數(shù)據(jù)(位置坐標(biāo)),將數(shù)據(jù)處理成后續(xù)我們需要的數(shù)據(jù)。系統(tǒng)對頂點(diǎn)著色器輸出的頂點(diǎn)數(shù)據(jù)進(jìn)行插值,并將插值結(jié)果傳遞給片段著色器。片段著色器根據(jù)插值結(jié)果計(jì)算最后屏幕上的像素顏色。 GPUImageTwoInputFilter 提供頂點(diǎn)著色器的代碼滿足需求,直接使用即可。頂點(diǎn)著色器的代碼如下所示:

NSString *const kGPUImageTwoInputTextureVertexShaderString = SHADER_STRING
(
 attribute vec4 position;
 attribute vec4 inputTextureCoordinate; //attribute  標(biāo)注屬性為輸入變量,inputTextureCoordinate為第一個(gè)輸入對象的坐標(biāo)
 attribute vec4 inputTextureCoordinate2; //inputTextureCoordinate2 為第二個(gè)輸入變量的坐標(biāo)
 varying vec2 textureCoordinate; // varying 標(biāo)注屬性為在vertex shader和fragment shader之間傳遞數(shù)據(jù),表示將第一個(gè)輸入對象的坐標(biāo)傳遞給片段著色器
 varying vec2 textureCoordinate2; //表示將第二個(gè)輸入對象的坐標(biāo)傳遞給片段著色器
 void main()
 {
     gl_Position = position;
     textureCoordinate = inputTextureCoordinate.xy;
     textureCoordinate2 = inputTextureCoordinate2.xy;
 }
);

GPUImage 包裝頂點(diǎn)著色器為 string,便于加載。每一行代碼的作用標(biāo)注在注釋里。片元著色器,是接收頂點(diǎn)著色器傳過來的數(shù)據(jù),進(jìn)行像素顏色計(jì)算。首先,需要傳入畫布和原圖的大小,用于計(jì)算畫布從原圖采點(diǎn)的坐標(biāo)。其次,計(jì)算變量,我們需要確定上層高清圖在畫布上的leftX 和 rightX ,topY 和 bottomY,高度 targetH,寬度 targetW 。以及底部高斯背景圖片設(shè)置為 aspectFill 的高度和寬度。以上數(shù)值的計(jì)算涉及高清圖橫圖和豎圖。見下圖,左圖為豎圖,右圖為橫圖:

圖片圖片

相應(yīng)代碼如下:

if (drawableW/drawableH > imageW/imageH ){//豎版
          targetW = imageW * (drawableH/imageH);

          lowp  float  left = (drawableW - targetW)/float(2);

          leftX = left/drawableW;

          rightX = (left+targetW)/drawableW;

          targetH = drawableH;

          bottomY = 1.0;

          targetHFill = imageHFill * drawableW / imageWFill;

          targetWFill = drawableW;
      }else{//橫版
          targetH = imageH * (drawableW/imageW);

          lowp float top = (drawableH - targetH)/float(2);

          topY = top/drawableH;

          bottomY = (top+targetH)/drawableH;

          targetW  = drawableW;

          rightX = 1.0;

          targetWFill = imageWFill * drawableH / imageHFill;

          targetHFill = drawableH;
      }

片元著色器通過 gl_FragColor = texture2D ( 參數(shù)1:輸?對象的紋理,參數(shù)2:輸入對象的坐標(biāo)) 得到當(dāng)前坐標(biāo)的紋理。參數(shù)1由直接取值,參數(shù)2需要計(jì)算。坐標(biāo)的計(jì)算分2種情況,?清圖和?斯背景,當(dāng)畫布坐標(biāo)處于 leftX 和 rightX , topY 和 bottomY 之間,則繪制?清圖,應(yīng)取?清圖的相應(yīng)坐標(biāo)。相應(yīng)坐標(biāo)的計(jì)算為繪制的 點(diǎn)從畫布坐標(biāo)換算到在?清圖上的坐標(biāo)(坐標(biāo)都為0-1區(qū)間值)如圖:

圖片圖片

目標(biāo)為計(jì)算出高清圖的0.2,0.1。換算代碼如下:

if (textureCoordinate2.x >= leftX   && textureCoordinate2.x <= rightX && textureCoordinate2.y >= topY && textureCoordinate2.y <= bottomY) {
lowp  float offsetX = textureCoordinate2.x - leftX; //offsetx為圖中X的間距在畫布的占比。
lowp  float x = (offsetX * drawableW)/targetW; //X的距離在深灰高清圖中距離。
lowp  float offsetY = textureCoordinate2.y - topY;
lowp  float y = (offsetY * drawableH)/targetH;
}

由公式 offX* drawableW = x *targetW 左右兩邊都是 X 線段的實(shí)際距離,從而得出 x 的值。同理得出 Y 的值。當(dāng)畫布的坐標(biāo)落在上圖淺灰色區(qū)域,采點(diǎn)高斯。高斯展示方式為 aspectFill. 如下圖:

圖片圖片

粉色部分為高斯圖片的布局。高寬都會(huì)溢出被剪切一部分。圖中三角形為畫布中要繪制的點(diǎn),此點(diǎn)在高斯圖中的位置為 targetY/targetHfill。targetY = (textureCoordinate2.y * drawableH + (targetHFill - drawableH )/float(2)) 為高斯圖被剪裁的上高度+畫布繪制點(diǎn)據(jù)畫布頂部的距離。具體代碼如下:

lowp   float  y = (textureCoordinate2.y * drawableH + (targetHFill - drawableH )/float(2))/ targetHFill;
lowp  float x = (textureCoordinate2.x * drawableW + (targetWFill - drawableW )/float(2))/ targetWFill;
gl_FragColor = texture2D(inputImageTexture, vec2(x, y));

x 的計(jì)算方式和 y 值相同。到此,片元著色器的工作完成。

d. GPUImage加載著色器,并返回 UIImage 對象。自此,一張高斯背景疊加高清的圖片生成了。在直播流中,不止有一張需要合成,且合成是較耗時(shí)操作,需將合成操作放在子線程異步執(zhí)行。執(zhí)行完成后同步回到主線程展示。

e. 在使用 GPUImage 時(shí),有?個(gè)需要注意的地?。GPUImage 底層使?的 是 openGL , openGL 在后臺(tái)進(jìn)行渲染會(huì)導(dǎo)致 app 崩潰。所以需要我們退出后臺(tái)時(shí),停止 openGl 渲染。采取的方式有三種,第?種,將合成隊(duì)列在退出后臺(tái)前設(shè) 置 suspend = yes ,還未開始的合成任務(wù)將不再執(zhí)行,直至進(jìn)入前臺(tái)后設(shè) 置 suspend = no 。然而,這種方式不能規(guī)避還在進(jìn)行中的任務(wù)。于是第?種,?定 義 NSOperation ,執(zhí)? operation 時(shí)。系統(tǒng)會(huì)調(diào)用 NSOperation 的 main 函數(shù), 在 main 函數(shù)中,寫實(shí)現(xiàn)代碼。在每?句實(shí)現(xiàn)代碼前都判斷是否 cancled 。如果 cancled ,直接 return 。在系統(tǒng)即將進(jìn)?后臺(tái)時(shí),將在運(yùn)行的任務(wù) cancle 掉, operation 繼續(xù)執(zhí)行,監(jiān)測到已經(jīng) cancle 了,就會(huì) return 。然而,粒度還是不夠細(xì)。如果任務(wù)執(zhí)行到最后一行,且最后一行有 openGL 操作,那么就會(huì)攔截不到。第三種, GPUImage 的渲染都是放在??的?個(gè)隊(duì)列同步執(zhí)?,在接收到系統(tǒng)將進(jìn)入后臺(tái)的通知中,加入渲染隊(duì)列?個(gè)同步空任務(wù),則系統(tǒng)會(huì)執(zhí)行完空任務(wù)前的所有 任務(wù)之后,再進(jìn)入后臺(tái)。從而避免后臺(tái)渲染。

自此,多張合成圖片的方案就結(jié)束了,結(jié)合線上數(shù)據(jù),本頁內(nèi)存消耗節(jié)約10M左右,每張合成圖片時(shí)間節(jié)約8ms左右。

責(zé)任編輯:武曉燕 來源: 搜狐技術(shù)產(chǎn)品
相關(guān)推薦

2018-07-23 09:26:08

iOS內(nèi)存優(yōu)化

2017-02-14 17:00:39

iOSApp內(nèi)存優(yōu)化

2010-05-21 13:48:36

MySQL數(shù)據(jù)庫

2010-05-13 10:47:44

MySQL數(shù)據(jù)庫查詢

2022-07-20 22:55:39

直播OOM抖動(dòng)

2010-08-10 10:00:57

Flex內(nèi)存

2010-08-10 10:17:44

Flex內(nèi)存

2011-07-28 10:01:19

IOS 內(nèi)存優(yōu)化

2011-08-10 09:06:44

內(nèi)存內(nèi)存優(yōu)化

2010-06-17 09:15:02

MySQL數(shù)據(jù)庫查詢

2010-06-11 12:32:57

MySQL數(shù)據(jù)庫查詢

2025-10-24 10:00:00

2023-11-03 17:02:18

抖音直播畫質(zhì)優(yōu)化

2013-09-16 16:56:09

AndroidBitmap內(nèi)存優(yōu)化

2017-03-14 18:48:06

Android性能優(yōu)化內(nèi)存優(yōu)化

2022-07-05 08:41:03

Redis保存大數(shù)據(jù)

2021-11-23 16:00:56

DevOps價(jià)值流價(jià)值流優(yōu)化

2015-09-16 15:21:23

Android性能優(yōu)化內(nèi)存

2016-12-22 17:21:11

Android性能優(yōu)化內(nèi)存泄漏

2017-12-14 14:32:30

.Net內(nèi)存代碼
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

污污的网站18| 国产精品99蜜臀久久不卡二区| 免费黄色av网址| a一区二区三区| 国产精品每日更新在线播放网址| 99精品国产高清在线观看| 国产小视频在线免费观看| 狠狠色狠狠色综合婷婷tag| 欧美日韩成人综合| 欧美成人高潮一二区在线看| 9色在线观看| 懂色av一区二区夜夜嗨| 国产成人免费av| 国产精品白浆一区二小说| 精品国产aⅴ| 亚洲韩国日本中文字幕| 一个色综合久久| 在线看的毛片| 亚洲精品视频在线观看免费| 欧美三级网色| 黄色a在线观看| 麻豆91精品91久久久的内涵| 97成人在线视频| 久久免费看少妇高潮v片特黄| 欧美高清视频看片在线观看| 538prom精品视频线放| 欧美日韩在线视频一区二区三区| а√天堂官网中文在线| 国产精品人妖ts系列视频| 激情伦成人综合小说| www.色婷婷.com| dy888午夜| 免费一区二区三区在线观看 | 久久av最新网址| 日韩中文在线中文网在线观看 | 97免费观看视频| 六月天综合网| 91精品国产沙发| 免费视频网站www| 婷婷综合网站| 中文字幕精品av| 一区二区伦理片| 女人抽搐喷水高潮国产精品| 精品对白一区国产伦| 在线观看av免费观看| 婷婷激情成人| 欧美日韩精品一区二区三区四区 | 看片一区二区| 欧美中文字幕不卡| 99视频在线免费| 日韩免费电影| 色琪琪一区二区三区亚洲区| 东京热加勒比无码少妇| 成人在线爆射| 欧美亚洲动漫精品| 尤蜜粉嫩av国产一区二区三区| 美女扒开腿让男人桶爽久久软| 亚洲图片欧美一区| 日韩精品综合在线| heyzo中文字幕在线| 香蕉成人啪国产精品视频综合网 | 久久99伊人| 国产91av在线| 日本视频网站在线观看| 天堂在线一区二区| 国产精品入口福利| 一区二区视频网站| 精品在线免费观看| 亚洲综合色激情五月| 成人免费视频国产免费麻豆| 99r精品视频| 免费电影一区| 成人在线观看免费| 亚洲欧美日韩国产中文在线| 性一交一乱一伧国产女士spa| 成人h视频在线| 日本美女xxx| 日韩精品一卡| 久久天天躁夜夜躁狠狠躁2022| 日韩丝袜视频| 欧美激情中文不卡| 精品国产无码在线| 在线观看三级视频| 亚洲高清视频在线| 亚洲午夜无码av毛片久久| 日本不卡一二三| 欧美亚洲丝袜传媒另类| 亚洲五月激情网| 女人抽搐喷水高潮国产精品| 一区二区三区四区在线观看视频| av成人免费网站| 亚洲精品韩国| 成人性生交大片免费看小说 | 激情图片在线观看高清国产| 黑人与娇小精品av专区| 污污的网站免费| 欧美wwwsss9999| 久久精品人人爽| 黄色免费av网站| 国产一区啦啦啦在线观看| 久久精品一区二区三区不卡免费视频| 香蕉视频免费在线播放| 亚洲午夜久久久久中文字幕久| 天天影视综合色| 大陆精大陆国产国语精品| 中文字幕不卡av| 日韩伦理在线视频| 国内精品在线播放| 欧美精品一区在线| 丝袜中文在线| 欧美日韩二区三区| 9.1成人看片免费版| 欧美日韩一区二区三区四区在线观看| 国产精品久久久久久网站| 91麻豆视频在线观看| 26uuu精品一区二区| 波多野结衣 作品| 久久亚洲国产精品尤物| 亚洲欧洲xxxx| 亚洲国产成人精品激情在线| 狠狠色综合播放一区二区| 2014亚洲精品| 中文字幕在线免费| 天天操天天干天天综合网| 奇米视频7777| 欧美日韩水蜜桃| 2019中文字幕全在线观看| 亚洲经典一区二区三区| 中文字幕一区二区三区不卡| 亚洲成人福利在线观看| 国内精品麻豆美女在线播放视频 | 日韩一二在线观看| 精品欧美一区二区久久久| 99精品视频免费观看| 91青草视频久久| 亚洲欧美激情另类| 国产精品入口麻豆九色| 国产综合免费视频| 欧美一级色片| 久久久天堂国产精品女人| 91久久国语露脸精品国产高跟| 国产亚洲一区二区三区四区| av之家在线观看| 日韩在线网址| 久久综合免费视频| 亚洲无码精品在线观看| 久久久无码精品亚洲日韩按摩| 农民人伦一区二区三区| 免费欧美网站| 欧美xxxx做受欧美| 亚洲综合一区中| 中日韩av电影| 天天干天天操天天做| 欧洲乱码伦视频免费| 国产91在线播放九色快色| 亚洲日本香蕉视频| 色又黄又爽网站www久久| japanese中文字幕| 日韩高清在线一区| 亚洲高清资源综合久久精品| 99蜜月精品久久91| 久久精品久久久久| 国产男男gay网站| 最新日韩在线视频| 国产精品久久久久久久99| 国产精品久久久久久麻豆一区软件| 91嫩草免费看| sm在线观看| 日韩国产激情在线| 91丝袜一区二区三区| 久久中文字幕电影| 欧美三级午夜理伦三级| 国产精品99视频| 91久久久一线二线三线品牌| 啦啦啦中文在线观看日本| 亚洲国产精品va在线看黑人动漫 | 色妞www精品视频| 亚洲理论片在线观看| 国产在线视视频有精品| 高清无码一区二区在线观看吞精| 91嫩草精品| 欧美综合在线观看| 国产视频第一区| 欧美午夜一区二区三区免费大片| 91视频免费在线看| 成人午夜在线播放| 国产淫片免费看| 色综合咪咪久久网| 99国产精品久久久久老师| 成人爽a毛片免费啪啪| 一区二区亚洲精品国产| 国产伦理一区二区| 亚洲成人动漫一区| 国产又粗又猛又爽又黄av| 日本成人在线电影网| 成人一区二区av| 综合色就爱涩涩涩综合婷婷| 国产一区私人高清影院| 牛牛精品视频在线| 亚洲欧美自拍一区| 国产成人三级在线播放 | 亚洲天堂第二页| 一级片视频播放| 亚洲超丰满肉感bbw| 国产欧美一区二区三区在线观看视频| 成人深夜福利app| 五月婷婷丁香综合网| 黄色在线一区| 亚洲国产精品视频一区| 国产精品一区二区中文字幕| 国产综合香蕉五月婷在线| zzzwww在线看片免费| 久久久91精品国产| 欧美新色视频| 精品福利一区二区三区| 国产特级黄色片| 色婷婷国产精品| 麻豆国产尤物av尤物在线观看| 久久久国产精华| 国产日韩视频一区| 国产精品综合久久| 波多野结衣作品集| 亚洲国产一区二区三区a毛片| 亚洲欧美99| 66精品视频在线观看| 国产一区香蕉久久| av综合电影网站| 欧美第一页在线| 日本www在线观看| 色偷偷亚洲男人天堂| 深夜影院在线观看| 欧美变态tickle挠乳网站| 国产一区二区自拍视频| 91国产成人在线| 亚洲熟女综合色一区二区三区| 亚洲国产色一区| 无码黑人精品一区二区| 欧美激情一区在线| 色欲av无码一区二区三区| 久久人人爽人人爽| 国产人妻黑人一区二区三区| 国产精品一区二区三区99| 在线免费观看视频黄| 亚洲免费在线| 男女午夜激情视频| 亚洲欧美日韩在线观看a三区| 黄色特一级视频| 伊人久久大香线| 日本福利视频网站| 欧美精选在线| 日韩小视频在线播放| 91丨九色丨国产| 亚洲欧美高清视频| 日韩天堂在线观看| 亚洲天堂中文在线| 制服丝袜日韩国产| 国产又粗又长又黄| 欧美日韩激情在线| 在线播放精品视频| 黄色成人在线免费| 国产视频1区2区| 日本精品视频一区二区| 亚洲视屏在线观看| 亚洲无人区码一码二码三码的含义| 国产欧美91| 毛片av免费在线观看| 免费亚洲一区| 国产精品一区二区小说| 美日韩一区二区三区| 最近中文字幕一区二区| 午夜亚洲一区| 欧美wwwwwww| 国产一区二区电影| aaaaa黄色片| 成人高清免费观看| 成人免费无码大片a毛片| 久久综合色播五月| 免费看黄色三级| 一区二区三区免费观看| 日本中文字幕免费| 色94色欧美sute亚洲线路二| 又骚又黄的视频| 亚洲国产精品悠悠久久琪琪| 国产日本在线| www.午夜精品| 波多野结衣中文字幕久久| 国产精品免费电影| 黄页免费欧美| av一区二区三区免费| 窝窝社区一区二区| 可以在线看黄的网站| 国产亚洲福利| 日本在线一二三区| 粉嫩绯色av一区二区在线观看| 亚洲黄色网址大全| 亚洲自拍偷拍麻豆| 亚洲精品成人在线视频| 欧美精品vⅰdeose4hd| 你懂的视频在线| 另类色图亚洲色图| 国产在线一区二区三区欧美 | 欧美精品久久久久久久多人混战| 99国产精品一区二区三区| 欧美精品一区二区不卡 | 成人视屏免费看| 国产又粗又长又黄的视频| 亚洲国产精品久久一线不卡| 伊人久久久久久久久久久久| 91精品国产综合久久福利软件 | 国产91精品久久久久久久网曝门| 久久精品视频18| 亚洲一区二区欧美日韩| 亚洲视屏在线观看| 亚洲精品97久久| 日本性爱视频在线观看| 国产精品免费久久久久久| 999在线精品| 蜜桃成人在线| 亚洲激情av| 精品人妻一区二区三| 国产欧美精品一区二区三区四区 | 亚洲欧洲综合在线| 欧美日本啪啪无遮挡网站| 在线日本欧美| 精品日本一区二区三区在线观看| 一区二区三区国产精华| 亚洲欧美日韩精品一区| 久久久久国产免费免费| 国产中文字幕免费| 欧美一区三区二区| 天堂地址在线www| 日产精品久久久一区二区福利| 都市激情亚洲欧美| 精品一区二区三区毛片| 国产一区啦啦啦在线观看| 日韩av片在线免费观看| 日本高清视频一区二区| 亚洲AV无码成人片在线观看 | 久久国产精品毛片| 日批视频免费看| 亚洲精品综合在线| 一区二区国产欧美| 日韩性xxxx爱| 亚洲高清国产拍精品26u| 亚洲国产精品一区二区第一页| 夜夜夜久久久| 成人影视免费观看| 天涯成人国产亚洲精品一区av| www.五月激情| 欧美激情一级欧美精品| 秋霞一区二区三区| 看全色黄大色大片| 国产又粗又猛又爽又黄91精品| 久久免费看少妇高潮v片特黄| 91精品国产综合久久久蜜臀粉嫩 | 老熟妇仑乱一区二区av| 久久综合色一综合色88| 国产一级久久久| 91麻豆精品国产91久久久久| 日本高清在线观看wwwww色| 成人激情视频网| 97精品中文字幕| 亚洲精品永久视频| 亚洲天堂中文字幕| 亚洲精品综合网| 97激碰免费视频| 亚洲另类春色校园小说| 国产h视频在线播放| 久久精品一级爱片| 艳妇乳肉豪妇荡乳av无码福利| 一区二区中文字幕| 精品国模一区二区三区| 欧美少妇一级片| 粉嫩aⅴ一区二区三区四区| 日韩久久精品视频| 中文字幕在线日韩| 欧美电影院免费观看| 久艹在线免费观看| 国产综合色精品一区二区三区| 精品少妇久久久| 亚洲精品视频在线观看视频| 日韩视频网站在线观看| 精品久久免费观看| 国产一区二区调教| 欧美日韩三级在线观看 | 貂蝉被到爽流白浆在线观看| 欧美久久一二区| 色婷婷在线播放| 欧美日韩在线观看一区| 免费在线观看视频一区| 日韩在线中文字幕视频| 亚洲国产精品热久久| 九色成人搞黄网站| 国产精品一二三在线观看| 99热精品一区二区| 国产精品高潮呻吟AV无码| 国语自产偷拍精品视频偷 | 三区精品视频观看| 粉嫩嫩av羞羞动漫久久久| 色婷婷粉嫩av|