国产成人欧美一区二区三区vr_久久国产精品人人爽人人爽_国产精品永久免费播放_肉欲啪啪a∨无码精品一区二区_国产超短裙jk丝袜在线_亚洲AV片高清资源在线观看_国模无码一区二区三区久久_国产成年人未进视频_中文字幕无码精品夜_一区二区三区在线视频免费看_亚洲成AV人片在线观看网址_日本激情视频高清综合久久_亚洲午夜视频福利_国内大量揄拍人妻精品視_久久国产精品福利二区三区

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

Android OpenGL ES:將GL_TEXTURE_2D紋理渲染到ImageReader Surface的完整指南

Android OpenGL ES:將GL_TEXTURE_2D紋理渲染到ImageReader Surface的完整指南 簡介針對 Android 平臺上將 OpenGLES3 紋理 ID 渲染到 ImageReader Surface 的需求這份資源以完整可運(yùn)行的 Android 工程形式提供了從紋理加載、EGLDisplay 虛擬屏幕綁定、eglSwapBuffers 緩沖交換到 ImageReader 回調(diào)讀取數(shù)據(jù)并生成 Bitmap 的端到端參考實(shí)現(xiàn)。源碼按功能拆分結(jié)構(gòu)清晰適合需要對接相機(jī)/視頻幀數(shù)據(jù)或做離屏渲染的 Android 中高級開發(fā)者參考。包含 89 個(gè)文件壓縮包僅 879KB。工程采用 Android Gradle 標(biāo)準(zhǔn)結(jié)構(gòu)java 文件承載渲染線程與回調(diào)核心邏輯xml 完成界面布局及清單配置gradle 與 properties 管理依賴和構(gòu)建參數(shù)webp 等用于界面輔助展示bin、lock 等則屬于工程編譯緩存。代碼中對 EGL 環(huán)境搭建、紋理加載、Surface 數(shù)據(jù)通路和 onImageAvailable 取幀等關(guān)鍵節(jié)點(diǎn)均有直接體現(xiàn)便于對照項(xiàng)目進(jìn)行流程梳理、移植或性能調(diào)優(yōu)。目前已有 731 人學(xué)習(xí)/下載適合正在鉆研 Android 圖形管線、希望打通 OpenGLES 與 Surface 之間數(shù)據(jù)鏈路的開發(fā)者。1. 為什么要把 GL_TEXTURE_2D 紋理 ID 渲染到 ImageReader 的 Surface 上在 Android 圖形鏈路里紋理 ID 往往是離屏渲染鏈尾部的產(chǎn)物FBO 完成特效合成、第三方 SDK 輸出一幀經(jīng)過 GL_TEXTURE_2D 的紋理下一步要么送編碼器要么給系統(tǒng)拍下來。但紋理 ID 只是 GPU 里的一個(gè)“名字”MediaCodec、ImageReader 不認(rèn)識它它們認(rèn)識的是 Surface——或者說得更準(zhǔn)確一點(diǎn)認(rèn)識一塊 BufferQueue 的生產(chǎn)端。把 GL_TEXTURE_2D 紋理 ID 畫到 ImageReader 提供的 Surface 上本質(zhì)是在 GPU 里把一張紋理完整搬一次家完成一次低成本的顏色緩沖交換而不是把圖像數(shù)據(jù)讀回 CPU 再寫出去。這個(gè)需求常見于視頻編輯、老照片修復(fù)、平臺美顏抽幀和低延遲串流。它比 glReadPixels 高效得多比使用 SurfaceTexture 多一層可讀性也比直接向 MediaCodec 編碼器 Surface 輸出更能兼容后續(xù)的 CPU 讀幀邏輯。適合兩類人一類是想把 OpenGL ES 3.0 離屏渲染結(jié)果交給系統(tǒng)編碼、錄屏、拍照的工程師另一類是手頭有一個(gè)來自第三方庫的 GL_TEXTURE_2D 紋理 ID不知道如何不碰像素就轉(zhuǎn)型成 Android 可消費(fèi)幀的人。這篇文章按我的慣用方案把 EGL 環(huán)境、ImageReader Surface 初始化、渲染代碼、同步柵欄和編碼器接入全部拆開。2. 用 EGL 把 ImageReader 的 Surface 接進(jìn) OpenGL ES 3.0先解決“畫到哪”幾乎所有 Android 開發(fā)者看到 ImageReader 的第一反應(yīng)都是調(diào)onImageAvailable后拿Image對象逐一讀 Plane。這個(gè)思路只覆蓋了消費(fèi)端忽略了 ImageReader 另一個(gè)更重要的身份它的getSurface()返回值是一個(gè)標(biāo)準(zhǔn) Surface而 Surface 背后是 BufferQueue 的生產(chǎn)端。換句話說GPU 可以把它當(dāng)作一塊可繪制的緩沖區(qū)域只要 EGL 愿意認(rèn)領(lǐng)這塊 Surface。2.1 ImageReader 的 Surface 不是 View渲染路徑完全不同TextureView、SurfaceView 的 Surface 與 ImageReader 的 Surface 在底層都關(guān)聯(lián) BufferQueue但在 API 表現(xiàn)上差異很大。SurfaceView 上可以用 OpenGL 繪制TextureView 本身是 View 層級里的一個(gè)圖層而 ImageReader 的 Surface 只能作為 ImageReader 的消費(fèi)緩沖入口。它沒有窗口句柄也不能被 attach 到窗口系統(tǒng)唯一的接入方式就是通過 EGL 的eglCreateWindowSurface。很多人在這一步選錯(cuò) API把 ImageReader 的 Surface 當(dāng) SurfaceTexture 傳進(jìn)setPreviewTexture或者嘗試Canvas.lockCanvas后手動編解碼都繞了遠(yuǎn)路。常規(guī)做法是創(chuàng)建 ImageReader取出其 Surface然后在 EGL 層創(chuàng)建 EGLSurface之后所有 GL 繪制命令都會落到這塊 Surface 上eglSwapBuffers之后 ImageReader 就能異步收到一張全新 Image。下面是四種常見 Surface 消費(fèi)者的對比對象可被 GL 繪制能否 CPU 讀像素典型用途SurfaceView 的 Surface可以需要額外處理游戲、視頻播放TextureView 的 SurfaceTexture可以需要額外處理相機(jī)預(yù)覽、UI 合成MediaCodec 的 input Surface可以不可以直接讀硬編碼輸入ImageReader 的 Surface可以通過 EGL 接入可以且是設(shè)計(jì)目標(biāo)拍幀、讀紋理、YUV 轉(zhuǎn)換2.2 EGL Surface 與 ImageReader 的像素格式必須匹配EGL 是 OpenGL ES 和窗口系統(tǒng)之間的橋梁。把 ImageReader 的 Surface 接進(jìn)來核心是eglGetDisplay、eglInitialize、eglChooseConfig、eglCreateWindowSurface這條鏈路。其中最容易出問題的是 EGLConfig 的選擇ImageReader 的緩沖格式由構(gòu)造時(shí)的 pixelFormat 決定而 EGLWindowSurface 創(chuàng)建時(shí)不能直接指定格式它必須從 EGLConfig 中推導(dǎo)。如果 EGLConfig 的 RGBA 位數(shù)與 ImageReader 不一致輕則色彩偏移重則eglCreateWindowSurface直接返回EGL_BAD_MATCH。以下是我在實(shí)際項(xiàng)目里穩(wěn)定使用的 EGL 初始化片段EGLDisplay display EGL14.eglGetDisplay(EGL14.EGL_DEFAULT_DISPLAY); int[] version new int[2]; EGL14.eglInitialize(display, version, 0, version, 1); int[] configAttrs { EGL14.EGL_RENDERABLE_TYPE, EGL14.EGL_OPENGL_ES2_BIT | 0x0040, // 0x0040 對應(yīng) EGL_OPENGL_ES3_BIT EGL14.EGL_RED_SIZE, 8, EGL14.EGL_GREEN_SIZE, 8, EGL14.EGL_BLUE_SIZE, 8, EGL14.EGL_ALPHA_SIZE, 8, EGL14.EGL_NONE }; EGLConfig[] configs new EGLConfig[1]; int[] numConfigs new int[1]; EGL14.eglChooseConfig(display, configAttrs, 0, configs, 0, 1, numConfigs, 0); int[] surfaceAttrs { EGL14.EGL_NONE }; EGLSurface eglSurface EGL14.eglCreateWindowSurface(display, configs[0], imageReaderSurface, surfaceAttrs, 0);這段代碼里第二行的0x0040很關(guān)鍵。Android 的 EGL 頭文件對EGL_OPENGL_ES3_BIT_KHR的定義是 0x0040而EGL14.EGL_OPENGL_ES2_BIT的值是 0x0004兩者并不相同。如果只寫入 ES2 bit某些機(jī)型上依然能創(chuàng)建成功但后續(xù)eglCreateContext請求的 OpenGL ES 3.0 context 與 EGLConfig 的 renderable type 不匹配會得到EGL_BAD_MATCH或EGL_BAD_CONFIG。2.3 共享上下文紋理 ID 在新 EGLContext 里“仍然有效”EGLSurface 創(chuàng)建完成后下一步是創(chuàng)建 EGLContext。如果你已經(jīng)有另一個(gè)線程在渲染紋理比如相機(jī)模塊或第三方濾鏡庫在某個(gè) GL 線程上生成了紋理 ID那么新的渲染線程必須創(chuàng)建共享上下文。EGLContext 默認(rèn)擁有獨(dú)立的資源命名空間紋理 ID 只是一個(gè)小整數(shù)在不同 context 里如果不同步它在 GL 側(cè)會被當(dāng)作“不存在的對象”即使調(diào)用glBindTexture也不會報(bào)錯(cuò)繪制結(jié)果只會是黑色。創(chuàng)建共享上下文的方法是先拿到當(dāng)前線程的活躍 contextEGL14.eglGetCurrentContext()然后把它傳給eglCreateContext的第二個(gè)參數(shù)。這樣兩個(gè) context 共享紋理、FBO 等對象紋理 ID 才能跨線程使用。但如果原紋理所在線程根本沒有 EGLContext而是通過其他方式生成的那問題就不一樣了——那種情況通常要用擴(kuò)展接口導(dǎo)出內(nèi)存句柄這里不展開。3. 渲染 GL_TEXTURE_2D 到 ImageReader Surface 的完整實(shí)現(xiàn)有了 EGL Surface 和共享上下文渲染核心就只剩三件事創(chuàng)建 Shader 程序、綁定紋理、提交繪制。這一章給出可以直接抄進(jìn)工程的 Java 實(shí)現(xiàn)用的是 OpenGL ES 3.0 API沒有引入任何第三方依賴Android Studio 里新建工程即可運(yùn)行。3.1 初始化 EGL 環(huán)境與創(chuàng)建 EGLSurface 的代碼把上一章的邏輯收攏成一個(gè)初始化方法注意imageReader必須提前創(chuàng)建并且寬高要與紋理一致public void init(ImageReader imageReader, EGLContext sharedContext, int textureId) { mImageReader imageReader; mTextureId textureId; mWidth imageReader.getWidth(); mHeight imageReader.getHeight(); mDisplay EGL14.eglGetDisplay(EGL14.EGL_DEFAULT_DISPLAY); int[] version new int[2]; EGL14.eglInitialize(mDisplay, version, 0, version, 1); int[] configAttrs { EGL14.EGL_RENDERABLE_TYPE, EGL14.EGL_OPENGL_ES2_BIT | 0x0040, EGL14.EGL_RED_SIZE, 8, EGL14.EGL_GREEN_SIZE, 8, EGL14.EGL_BLUE_SIZE, 8, EGL14.EGL_ALPHA_SIZE, 8, EGL14.EGL_NONE }; EGLConfig[] configs new EGLConfig[1]; int[] numConfigs new int[1]; EGL14.eglChooseConfig(mDisplay, configAttrs, 0, configs, 0, 1, numConfigs, 0); mSurface EGL14.eglCreateWindowSurface(mDisplay, configs[0], imageReader.getSurface(), new int[]{EGL14.EGL_NONE}, 0); int[] contextAttrs { EGL14.EGL_CONTEXT_CLIENT_VERSION, 3, EGL14.EGL_NONE }; mContext EGL14.eglCreateContext(mDisplay, configs[0], sharedContext, contextAttrs, 0); EGL14.eglMakeCurrent(mDisplay, mSurface, mSurface, mContext); setupShaders(); }參數(shù)說明sharedContext是紋理來源線程的 EGLContext如果傳入的 textureId 就在當(dāng)前線程創(chuàng)建這里可以直接傳EGL14.EGL_NO_CONTEXT。EGL_CONTEXT_CLIENT_VERSION, 3決定創(chuàng)建的是 OpenGL ES 3.0 context注意 EGLConfig 里必須帶上 ES3 bit否則這里報(bào)錯(cuò)。eglMakeCurrent的作用是把 EGLSurface 綁定到當(dāng)前線程的渲染目標(biāo)之后所有 GLES3 指令都作用于這塊 ImageReader Surface。3.2 Shader 與繪制命令如何用三角形覆蓋紋理ImageReader 的 Surface 是一塊矩形緩沖渲染時(shí)最常見的方式是畫兩個(gè)三角形拼成一個(gè)全屏四邊形。頂點(diǎn)著色器負(fù)責(zé)接收頂點(diǎn)坐標(biāo)和紋理坐標(biāo)片段著色器負(fù)責(zé)從 GL_TEXTURE_2D 上采樣顏色。頂點(diǎn)著色器#version 300 es layout(location 0) in vec4 aPosition; layout(location 1) in vec2 aTexCoord; out vec2 vTexCoord; void main() { gl_Position aPosition; vTexCoord aTexCoord; }片段著色器#version 300 es precision mediump float; uniform sampler2D uTexture; in vec2 vTexCoord; out vec4 fragColor; void main() { fragColor texture(uTexture, vTexCoord); }這個(gè)著色器沒有做任何顏色變換和矩陣運(yùn)算保留紋理原始顏色。sampler2D默認(rèn)綁定紋理單元 0所以繪制前不需要顯式glActiveTexture只要把紋理 ID bind 到GL_TEXTURE_2D上即可。如果將來要接入 OES 外部紋理需要將采樣器類型換成samplerExternalOES同時(shí)把紋理目標(biāo)改成GL_TEXTURE_EXTERNAL_OES與本文標(biāo)題鎖定的 GL_TEXTURE_2D 場景不是同一套配置。3.3 draw 幀的調(diào)用時(shí)機(jī)與紋理參數(shù)頂點(diǎn)數(shù)據(jù)和繪制代碼private void drawFrame() { EGL14.eglMakeCurrent(mDisplay, mSurface, mSurface, mContext); GLES30.glViewport(0, 0, mWidth, mHeight); GLES30.glUseProgram(mProgram); GLES30.glBindBuffer(GLES30.GL_ARRAY_BUFFER, mVbo); GLES30.glEnableVertexAttribArray(0); GLES30.glVertexAttribPointer(0, 3, GLES30.GL_FLOAT, false, 5 * 4, 0); GLES30.glEnableVertexAttribArray(1); GLES30.glVertexAttribPointer(1, 2, GLES30.GL_FLOAT, false, 5 * 4, 3 * 4); // 關(guān)鍵綁定紋理 ID 到 GL_TEXTURE_2D 目標(biāo) GLES30.glBindTexture(GLES30.GL_TEXTURE_2D, mTextureId); GLES30.glDrawArrays(GLES30.GL_TRIANGLE_STRIP, 0, 4); EGL14.eglSwapBuffers(mDisplay, mSurface); }glVertexAttribPointer(1, 2, ..., 5 * 4, 3 * 4)表示頂點(diǎn)數(shù)據(jù)每 5 個(gè) float 為一組前 3 個(gè)是位置后 2 個(gè)是紋理坐標(biāo)stride 為 20 字節(jié)。繪制的 4 個(gè)頂點(diǎn)可以用(-1,-1,0,0,0)到(1,1, ..., 1,1)的三角形帶覆蓋全屏。紋理綁定后建議檢查紋理對象的過濾參數(shù)。外部庫生成的紋理 ID 不一定設(shè)置了GL_TEXTURE_MIN_FILTER如果默認(rèn)值是GL_NEAREST_MIPMAP_LINEAR而紋理沒有生成 mipmap畫面會出現(xiàn)模糊接縫或黑邊??稍赿rawFrame里每次綁定時(shí)執(zhí)行一次glTexParameteriGLES30.glTexParameteri(GLES30.GL_TEXTURE_2D, GLES30.GL_TEXTURE_MIN_FILTER, GLES30.GL_LINEAR); GLES30.glTexParameteri(GLES30.GL_TEXTURE_2D, GLES30.GL_TEXTURE_MAG_FILTER, GLES30.GL_LINEAR); GLES30.glTexParameteri(GLES30.GL_TEXTURE_2D, GLES30.GL_TEXTURE_WRAP_S, GLES30.GL_CLAMP_TO_EDGE); GLES30.glTexParameteri(GLES30.GL_TEXTURE_2D, GLES30.GL_TEXTURE_WRAP_T, GLES30.GL_CLAMP_TO_EDGE);GL_CLAMP_TO_EDGE可以避免紋理邊緣采樣到透明或黑色區(qū)域。如果紋理 ID 來源是最新一幀相機(jī) YUV 轉(zhuǎn)成的 GL_TEXTURE_2D換幀時(shí) GPU 和 CPU 之間可能還有未完成寫入需要在 draw 之前插入glFinish()或使用同步柵欄否則第一幀可能出現(xiàn)紋素錯(cuò)亂。4. 共享上下文、同步與格式最常出問題的 3 個(gè)位置EGL 初始化完成后渲染邏輯本身很短真正消耗時(shí)間的是排錯(cuò)。這一章只討論最常導(dǎo)致黑屏、花屏、綠屏的三個(gè)因素上下文共享失效、GPU 繪制與 ImageReader 消費(fèi)之間的時(shí)序、像素格式不匹配。4.1 紋理 ID 不是“全局身份證”必須用共享上下文許多人拿到外部傳入的 textureId 后既不詢問它的 EGLContext也不做共享直接在新線程里glBindTexture后繪制得到的結(jié)果是黑屏但不報(bào)錯(cuò)。原因是 GL 紋理 ID 在 context 的資源表里只是一個(gè)索引新 context 里沒有這張表的注冊信息。共享上下文的創(chuàng)建方法在 2.3 節(jié)已經(jīng)說明這里補(bǔ)充一個(gè)常見誤用只共享 EGLDisplay卻不共享 EGLContext這種代碼在開發(fā)機(jī)上偶爾能跑因?yàn)槟承?qū)動廠商把資源表做成了全局的但壓測和真機(jī)更換設(shè)備后立刻崩潰。推薦的做法是在紋理生產(chǎn)方初始化時(shí)記錄一個(gè)全局變量sSharedContext EGL14.eglGetCurrentContext();然后在渲染線程 init 時(shí)把它作為創(chuàng)建參數(shù)傳進(jìn)去。如果紋理生產(chǎn)方?jīng)]有 EGLContext直接傳EGL_NO_CONTEXT。注意共享 context 只共享對象不共享 GL 狀態(tài)機(jī)所以紋理參數(shù)、Shader、VBO 都要在新 context 里重新設(shè)置。4.2 EGL 渲染先行ImageReader 異步消費(fèi)同步在哪做ImageReader 的 Image 是異步到達(dá)的onImageAvailable觸發(fā)時(shí)并不代表 GPU 繪制已經(jīng)完成。eglSwapBuffers只表示緩沖被送交 BufferQueue不保證 GPU 已結(jié)束渲染。在部分設(shè)備上ImageReader 拿到幀時(shí)紋理內(nèi)容還處于可寫狀態(tài)后面消費(fèi)線程讀取時(shí)會出現(xiàn)半幀或內(nèi)容撕裂。如果追求穩(wěn)妥最直接的做法是在eglSwapBuffers后插入 GPU 等待EGL14.eglSwapBuffers(mDisplay, mSurface); // 等待 GPU 完成所有繪制指令確保 ImageReader 能拿到已完成的幀 GLES30.glFinish();glFinish會讓 CPU 阻塞直到 buffer 可復(fù)用。對于 30fps 的抽幀需求影響不大但如果要跑 60fps建議換成 fenceEGLSyncKHR fence EGLExt.eglCreateSyncKHR(mDisplay, EGLExt.EGL_SYNC_NATIVE_FENCE_ANDROID, new int[]{ EGLExt.EGL_SYNC_NATIVE_FENCE_ANDROID, 0, EGL14.EGL_NONE }, 0); // 從 fence 里取出 native fence fd傳給消費(fèi)端等待完成后 close這是 Android 推薦的低延遲方案把 fence fd 一并傳給消費(fèi)者而不是讓 CPU 在 GPU 完成后才繼續(xù)跑。如果當(dāng)前只做總結(jié)輸出glFinish簡單不易錯(cuò)。4.3 像素格式與 Size 對齊ImageReader 不是隨便創(chuàng)建的ImageReader 的構(gòu)造參數(shù)pixelFormat必須與 EGLConfig 的 RGBA 位數(shù)一致否則畫面顏色會偏移或者完全失真。RGB_565、RGBA_8888、YUV_420_888 在 BufferQueue 里是不同格式EGL 無法對一個(gè) YUV 格式的 Surface 直接執(zhí)行 RGBA 的渲染操作。標(biāo)題鎖定的場景是 OpenGL ES 3.0 輸出所以 ImageReader 通常這樣創(chuàng)建mImageReader ImageReader.newInstance(width, height, PixelFormat.RGBA_8888, 2);注意最后那個(gè)maxImages參數(shù)。如果設(shè)成 1渲染頻率高時(shí)消費(fèi)者來不及 closeImageReader 會停止向 BufferQueue 請求新緩沖eglSwapBuffers會卡死設(shè)成 4 又會成倍占用內(nèi)存。2 是絕大多數(shù)抽幀和編碼場景下的默認(rèn)值。寬度和高度也需要對齊。給 ImageReader 傳奇數(shù)尺寸部分設(shè)備在eglCreateWindowSurface階段就失敗部分在ImageReader.getPlanes()階段因?yàn)?stride 和 width 不一致返回錯(cuò)誤的 Buffer 布局。常規(guī)做法是先對尺寸做對齊再創(chuàng)建int alignedWidth (width 15) / 16 * 16; int alignedHeight (height 15) / 16 * 16;紋理渲染到對齊后的 Surface 上如果 UVC 相機(jī)原始尺寸是 640x480對齊后依然是這兩個(gè)數(shù)字因?yàn)?16 的倍數(shù)對齊不會改變這兩個(gè)值。5. 接入 MediaCodec 編碼器與 30fps 幀率控制一個(gè)可收尾的技巧渲染到 ImageReader 的最終目的大多離不開編碼。一個(gè)更高效的做法是讓 OpenGL ES 3.0 直接繪制到 MediaCodec 編碼器的輸入 Surface省掉 ImageReader 這個(gè)中間層。但有時(shí)業(yè)務(wù)需要同時(shí)保留 CPU 讀幀能力那就必須雙 Surface 并行。5.1 如果你要編碼別讓 ImageReader 成為中間跳板常見錯(cuò)誤寫法是先渲染到 ImageReader再在onImageAvailable里把Image的 buffer 拷貝出來通過MediaCodec.queueInputBuffer喂給編碼器。這不叫 GPU 渲染等于把 GPU 畫的幀又回到了 CPU再交給編碼器性能損耗巨大。如果不需要 CPU 讀幀直接創(chuàng)建編碼器輸入 SurfacemEncoder MediaCodec.createEncoderByType(video/avc); MediaFormat format MediaFormat.createVideoFormat(video/avc, alignedWidth, alignedHeight); format.setInteger(MediaFormat.KEY_COLOR_FORMAT, MediaCodecInfo.CodecCapabilities.COLOR_FormatSurface); format.setInteger(MediaFormat.KEY_BIT_RATE, 4_000_000); format.setInteger(MediaFormat.KEY_FRAME_RATE, 30); format.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, 1); mEncoder.configure(format, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE); Surface encoderSurface mEncoder.createInputSurface(); mEncoder.start();然后把encoderSurface傳給第 3 章的init方法ImageReader 那條路徑留作旁路抽幀。5.2 兩個(gè) EGLSurface 交替渲染同時(shí)保留讀像素能力為了同時(shí)滿足編碼和讀幀可以創(chuàng)建兩個(gè) EGLSurface一個(gè)綁定 ImageReader一個(gè)綁定編碼器輸入 Surface。每次drawFrame時(shí)按當(dāng)前消費(fèi)者選擇目標(biāo)EGL14.eglMakeCurrent(mDisplay, chooseSurface(), chooseSurface(), mContext); GLES30.glFinish(); EGL14.eglSwapBuffers(mDisplay, chooseSurface());chooseSurface()根據(jù)當(dāng)前是否處于檢測階段返回對應(yīng) EGLSurface。這樣編碼鏈路的每一幀都是 GPU 直接寫入不經(jīng)過 CPUImageReader 路徑只在真正需要抽幀的瞬間才切換過去。幀率控制可以用Choreographer在 VSYNC 信號上回調(diào)或者用循環(huán)控制long startTime System.nanoTime(); long frameInterval 33_000_000L; // 30fps單位納秒 while (running) { drawFrame(); long elapsed System.nanoTime() - startTime; if (elapsed frameInterval) { SystemClock.sleep((frameInterval - elapsed) / 1_000_000L); } startTime System.nanoTime(); }SystemClock.sleep比Thread.sleep更精確它不受 Java 層時(shí)間調(diào)整影響適合在 GL 線程里做節(jié)奏控制。5.3 用 adb 驗(yàn)證 ImageReader 是否真的在刷新接入完成后如果無法確定 ImageReader 是否收到幀可以用 adb 查看 SurfaceFlinger 的圖層狀態(tài)。先列出所有 Surface 名稱找到 ImageReader 對應(yīng)的項(xiàng)adb shell dumpsys SurfaceFlinger --list對比渲染前后同一 Surface 的z-order或visible region變化可以確認(rèn)是否提交了緩沖。但要注意一點(diǎn)ImageReader 表面在eglSwapBuffers后不會永遠(yuǎn)可見如果消費(fèi)者沒有及時(shí) close 圖像Surface 圖層可能被 SurfaceFlinger 判定為無內(nèi)容而在--list中消失。遇到這種情況優(yōu)先檢查onImageAvailable是否執(zhí)行以及Image.close()是否及時(shí)調(diào)用。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
懂色中文一区二区三区| 精品人妻一区二区三区视频| 99亚洲精品| 色香伊人| 精品国产久热在线观看| 91熟女丨老女人| 嗯啊不要啊在线 | 91热色| 欧美人妻久久精品二区三区| 久久6热精品99视频| 无码黑人精品一区二区三区三| 色超碰综合| 99久久精品无码一区二区| 国产精品粉嫩福利在线| 天天α片| 高潮内射在线| 国产人伦a片信息免费片| 校园春色中文字幕AV| 五月婷婷基地| 91福利网在线观看| 美女极品一区二区三区| 国产精品免费久久久久久久久久| 另类欧美| 天天射,天天操,天天爽-国内精品一区二区三区-成人AV | 蜜臀久久久国产| 色哟哟国产精品免费网址| 欧亚乱色熟女一区二区| 中国少妇XXXX做受| 三级日本一区二区三区| 粉嫩av一区二区三区天美传媒 | 狠狠操,使劲操| 果冻传媒A片麻豆熟妇人妻| 久久久精品一区二区| 九九色图| 日韩欧美成人综合在线| 四虎国产精品永久地址入口| 国产无码久久高清| 亚洲伊人久久综合97| 97Ai亚洲| 久久久无码精品人妻二区| 亚洲 欧美 91| 久久人人舔人人爽舔人人av片| 91人妻精华帖| 国产二区三区免费视频| 亚洲精品一区二区精华| 国产精品人妻免费精品| 亚洲 日本 不卡| 九九九九免费高| 欧美青青草视频| 日韩一级二级三级免费看完整版国语版 | 九九精品美女高溯喷水| 亚洲爱爱视频一区二区| 久久久精品视频欧州站| 欧美日韩青操| 超碰91在线| 青青草国产一区二区三区| 天天情欲宗合网| 加勒比性爱成人在线| 白丝少妇一区二区| 日韩啪啪啪视频| 操逼精品视频| 超碰97极品9| 亚洲欧美setu| 日日97| 67914在线兔费成人视频| 99蜜桃臀久久久欧美精品网站| 精品久久久久久久久久久久| 国产噜噜噜噜噜久久久久久久久| 99精品丰满人妻无码| 99999亚洲另类| 九九操久久国产免费视频| 麻豆视频一区二区| 亚洲AV噜噜狠狠网址蜜桃动漫| 亚洲美女自拍偷拍视频| 亚洲导航深夜福利| 韩国一区二区精品亚洲| 久久久久日本视| 日韩一区二区熟女| 裸体美女久久久| 色阁阁AV综合网| 老熟女天天操| 国产亚洲精品无码三区| 国产理论视频在线播放| 欧美国产日韩清纯唯美| 天天淫人人妻日日色| 欧色综合| 少妇精品久久久八区九区| 99无码| 少妇综合网| 亚洲AV成人精品网站在AV| 91网九色蝌蚪操熟女| 国产家庭乱伦网址| 2019AV天堂| 在线97在线| 日韩BBN| 婷婷在线视频在线观看| 天天做日日做天天欢。| 夜夜操天天肏| 日本潮催一卡操| www.av在线观看| 大香蕉综合| 国产精品69久久久久久久| 国产自啪精品视频网站黑丝| 岛国毛片手机在线观看| 日韩成人性爱电影在线播放| 玖玖97综合 | 午夜天堂精品久久| 日本高清一本二本免费不卡| 精品久久久av无码免费| 日韩人妻一区二区| 五月婷婷六月色| 91天天爱| 日韩国产欧美伦理在线| 欲射影视| 五月婷亚洲精品天堂| 黄色av一区二区在线| 激情网五月天| 综合97久久| 2019精品国产无码成人| 粉嫩AV一区夜夜嗨| 激情五月综合开心五月| 亚洲日韩青青草色月| 欧美,日韩,中文,另类| 乱欲一区二区| 丰满熟妇大乳做爰| 性饥渴少妇av无码毛片| 亚州综合电影| 欧美一二三级精品在线| 神马久久久久久久久久久久| 亚州欧美色图| 污到发麻的视频 国产| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 中文字幕免费观看| 欧美五十路熟| 超碰超碰95| 婷婷爽人人婷婷爽视频| 国产在线强奸视频| 美日韩在线不卡人妻| 一级@啪啪视频| 9999九九九久久久| 熟妇xxxxx性春色| 日日骚 av| 国产日韩区| 屌妞视频久久久久久久| 国产无码高清操逼视频| 色色97爱| 蜜乳av首页| 日本二区不卡| 91亚洲人电影| 性在久久久久久| 精品无码产区一区二| 亚洲精品人妻吞精av| 99日视频在线免费| 伊人网av| 国产精品网站免费| 亚洲 一区二区 自拍| 欧美色图99| 综合久草| 91精品久久久久五月天精品| 亚洲狠狠入| 黑丝少妇| 制度丝袜99| 久久9免费视频| 丁香五月色情| 日韩欧美女求操每天更新| 久久不卡一区二区| 国产高清成人传媒影视| 精品天堂| 黑人精品久久97| 五月丁香久久| 日韩激情小说一区二区| 粉嫩av平台| 天天爽入口| 999久久久九| 色在线综合| 精品少妇一区二区| 久久久久9999妇女| 亚洲、日韩、综合、另类| 中文字幕成人理论在线| 欧美亚洲天堂| 色九久| 97超碰资源网| 97香蕉人人乳| 嗯嗯啊啊操死我| 国产久久久久久久久一区二区| 国产性爱强奸乱伦大全| 色约约一区=区三区| 密臀AV在线| 无码一区二区三区四区五区六区七区八区九区十区视频 | 超碰免费人人| 亚洲欧美国产中文视频| 91bbb| 久久久女人| 日韩欧美天天爽爽爽天天爽爽 | 国产精品网址| 日韩精品一区二区日韩| 一级片视频啪啪| 性猛交| 美女黄色91| 99re综合伊人| 91色人| AV色五月天| 超碰天天操| 97日视频| 欧洲大香蕉| 蜜桃久久久久久久久久久久| 大香网伊人久久综合网eew| 亚洲色欲一区二区三区| 亚洲国成人情色好看电影| 综合干干干av久久久综合网| 91夜夜蜜桃臀1区2区3区| 熟妇最新先锋一二三区| 伦在线97| 久久精品99久久久久久| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 激情久久av一区av二区av| 国产欧美一级在线观看| 激情久久久| 天天干天天狼在线视频| 不卡在线一区,精品一区二区三区中| 白嫩国模丰满一二三区| 久热免费视频| 天天色怡春院| 肥佬影院91| 超碰色97| 东京热男人的天堂精品| 日本在线视频导航| 欧美男女午夜啪啪| 天天热精品| 久久久96精品| 欧美性爱第一页久久| 老子午夜伦不卡影院| 黄片qw| 国产精品欧美日韩久久| 26uuu国产| 久九干| 国产亚洲色婷婷99精品91| 1024手机看片欧美日韩| 精品人妻15区| a片 xxxx受爽视频| www..com操老师| 国产久久av| 色爱综合网| 一区二区三区网站日日骚| 伊人久久大香蕉线AV五月天| 麻豆天美AV传媒第一页| 国产乱子伦久久精品综合一区二区三| 国产精品久久久久久久电影渣男| www.人人cao| 精品国产网站| 一本大道久| 青娱乐老司机视频| 国产精品大香蕉| 欧美永久激情一区二区| 欧美色图91| 日逼逼免费看| 色爽爽文学| 欧美亚洲AN| 丝袜美腿91| 成人精品久久久午夜福利| 丁香婷婷九月| 曰本道人妻久久久在线不卡色视频| 嗯嗯不要视频| 激情六月婷婷| 少妇人妻激情四射| 人妻二区| 青草草免费网站av| 久99久视频精选| 色97综合中文字幕| 国产日韩欧美操逼视频| 大香蕉AV丝袜| 夜夜爽夜夜操| 97人人夜夜精品视频| 亚洲色五月| 久草老司机| 高清在线不卡一区二区 视频| 欧亚在线视频| 欧美淫乱视频| 377p欧洲日本亚洲大胆| caopeng97人妻| 色五月AV| 天堂资源欧美| 国产精品 视频| 五月综合久久| 九九九久久久W精品| 日韩无码黄色片| 330Dv国产女人终合视频极品人与兽| 久久久久成人网| 91粉嫩萝控精品福利网站_精品影音先锋国 | 国产综合操逼高清| 欧美一区二区三区黄色影视| 乱伦av麻豆| 亚洲大胆人体av| 成人性爱AV在线免费观看| 91人人爽人人爽人人人,gav福利视频导航,日韩欧美亚洲国产字幕四区 | 色诱avtt| 做爱A级亚欧| 欧美乱妇狂野欧美在线视频| 精品亚洲国产成人av网站| 免费看污网址| 天天看,天天做| 精品国产乱码久久久影院| 人人摸人人叼| 欧亚三区动漫| 久久久久久夜夜夜夜夜| 久久久久久一日韩字幕无码| 91丝袜熟女| 亚洲精品啪视频| 伊人四虎综合| 亚洲少妇色| 精品免费一区| 韩国女主播青草在线| 日韩中文字幕精品一区在线| 欧美激色| 婷婷尹人大香蕉免费| 日韩一级二级三级| 老熟女熟妇| 岛国毛片手机在线观看| 欧美色干| 密臀AV在线| 日韩不卡在线一区二区| 男女一进一出视频久久| 欧美激情色婷婷花野真衣一区二区| 日本免费专区| 久久香蕉国产线看观看亚洲女人 | 亚州乱码中文字幕综合久久久| 欧州一区二区三区四区| 九九九九九用不成了| 人人人人插| 深夜激情| 97天天操天天干| 欧美日韩国内不卡| 91香蕉国产尤物视频| 麻豆 亚洲 97| 日韩精品国产精品五码一区二区| 人人操人人舒服| 后入式999| Av色五月| 精品国产www久久| 精品国产一区探花在线观看| 日本一久是| 天堂精品在线| 国语精品内射在线观看| 婷婷在线视频在线观看| 久久伊人影院| 日本熟妇精品九九| 欧美亚洲激情小说| 狠狠干狠狠色| 欧美日韩性爱视屏免费看了| 素人一区二区三区日韩| 欧美日韩中文字幕人妻| 丝袜色综合| 香蕉一区二区三区在线视频| 国产尹人在线视频免费| 国产自产自拍| www.久久制服糖| 91爱剪切久久| 竹菊一区二区三区AV线| 污电影在线观看| av在线人气| 99免费视频| 三级网色| 伦伦成年午夜免费视频| 91被操| 啊啊嗯嗯好爽| 欧洲精品一级二级精品综合视频综合 | 久久精品国产亚洲av水密被窝| 内射卯月麻衣| 欧美韩国你懂得在线| 日韩AV一区二区三区四四| 欧美日韩精品一区二区三区高清| 91久久久亚洲| 亚洲在线欧美| 亚洲啪啪综合?v一区综合精品区| 欧美色图亚洲色,麻豆| 久久久久久久久久久久久久久久9| 综合网,亚洲,欧美| 99超碰色| 欧美人妻精品| ss久久| 美女黄页| 91在线免费观看处女| 在线只有精品| 素人播放一区| 校园春色综合色| 顶级少妇BT天堂| 国产日本熟女顶级一区二区三区视频 | 久久久99999久网站| 国产乱弄免费在线视频。| 国产天天骚| 国产精品一区二区在钱播放| 欧美色图亚州激情| 另类av天堂| 青青草精玖玖69精品| 夜夜操av亚洲一区二区| 久久中出在线| 超碰伊人在线| 美女诱惑一区| 国产探花日韩援交| 思思热在线cao| 欧美一区二区观看在线| 天天躁日日躁AAAXX| 99久久9| 亚洲人妻一区二区三区| 大香蕉十区| 自拍欧美| 日本黄色精品| 国产肏逼网站| 国产熟女免费观看久久| 超碰久热| 欧州激情视频在线一区二区| 大香蕉手机在线| 夜夜爽夜夜爽| 欧美日本中字另类在线| 丁香五月性爱| 亚洲精品欧洲精品| 偷偷人人精品女女久久| 成人性爱AV在线免费观看| 国产精品视频一区二区三区八戒| 四虎AV在线观看| 亚洲综合在线高清| 蜜臀99久久精品| 天天综合97| 波多野结衣先锋影音| 丁香婷婷啪啪| 精品乱码久久久久| 久久超碰com| 四虎国产精品永久地址入口| 大香蕉啪啪啪| 超碰综合色| 极品少妇久久久| 狠狠操官网| 超碰av在线| 国产福利夜| 午夜噜噜噜| 日韩一级性爱无码| 亚洲情色电影网| 久9爱经典视频| 亚洲视频中文一区| 天天插天天插| 国产蜜臀精品一区二区尤物| 国产精品麻豆免费视频| 日韩AV一区二区三区四四| 爱妻综合网| 婷婷伊人五月| 玖玖视频在线资源一区二区三区| 丰满少妇精品一区二区| 五月婷婷丁香六月丁香| 四虎永久在线精品免费网址 | 精品久久久久久中文字幕三区| 骚逼高潮久久精品| 欧美三级偷拍| 亚洲一区二区三区四区视频| 大香蕉色网| 久久99九九九九6666免费观看软件| 久久成人午夜精品影院| 亚洲人妻熟妇三十三区| 91狠狠综| 天天91~综合入口| 久草电影网| 色婷婷激一区二区三区| 久久久99999久网站| 草草电影院| 日本有码影片下载| 亚洲久9| 成人看片网站| 久久精品国产亚洲粉嫩| 五月婷婷六月丁香| 蜜臀久久久99久久久久 | 国产亲戚伦亲在线| 啊啊啊啊啊,啊啊啊啊好舒服,操我舒服啊啊啊| 97资源视频| 亚洲 图片 综合91| 永久电影三级在线观看| 欧美男人一区| 欧美日韩传媒| 偷拍亚洲高清图片| 三级特黄60分钟播放| 久草精品国产蜜臀| 岛国免费黄色网址| AV中文字幕剧情1区2区3| 亚洲小电影免费涩涩成人在线高清| 九九久久首页| 在线观看亚洲成人精品| 884t在线| 操逼网站视频漫画国产| 国产嫩草精品A88AV| 五月丁香婷婷色| 91丝袜视频在线观看| 熟妇在线视频一区二区| a片在线播放| 日韩在线人妻网站| 97最新在线播放视频| 欧美性色欧美| 天堂国产AV| 91在线视频免费播放| 日本好吊色视频| 国产精品久久久久久久久AV大片| 麻豆av一区二区| 人人妻人人操人人乐| 亚洲欧洲无码bt精品合集| 60秒免费小视频| 亚洲欧美国产其他二区| 亚洲天天操| 欧美性爱一区二区三区四区| 日韩不卡毛片Av免费高清| 肥臀熟女一区二区三区视频| 操我啊啊啊啊啊| 一区二区三区免费岛国片| 亚洲猛交| A啊啊在线观看| 大地资源在线观看中文第二页| 九九久久久| 超碰97色色| 免费综合亚洲中文| 性色AV网站| 精品欧美日韩在线观看| 精品人妻1237| 干婷婷综合网| 一本色道综合久久欧美| 东京热综合久久一区二区| 亚洲自拍欧美国产首页网曝 | 婷婷精品久久av影视| 亭亭丁香激情| 97人人草| 丝袜熟女一区二区三区| 久久久久婷婷| 伊人在线大香蕉视频久久| 老熟女乱伦片| 男人的天堂日韩| 精品久久青青草| 一个人免费HD91视频| 亚洲综合伊人| 亚洲欧美另类少妇精品| 色伊人91| 亚洲国产丝袜熟女av| 另类专区加勒比| 中文字幕国产精品1区| 久久人人舔人人爽舔人人av片| 国产999精品久久久| 中国小夫妻勾搭露脸淫荡对白 | 丰满少妇高潮无码| 91狠狠色丁香婷婷综合久久| 欧美日本中字另类在线| 1769一区| 亚洲无 码A片在线观看麻豆| 精品少妇99| 欧美玖玖爱免费玖玖| 97超碰天天爱天天爱| 欧美色图天堂在线| 久操热| 岛国视频免费在线观看| 操逼免费视频无码国产| WWW操逼| 欧美日韩在线视频网站| 干少妇视频| 一区二区三区一亚洲中文字幕、综合区灬 | 97国产精品国| 东北夫妻性偷拍| 婷婷久久五月天| 国模精品娜娜一二三区| 国产精点久久久成人| 香蕉热人人精品| 亚洲阿v天堂无码z2018| 被男人吃奶很爽的毛片| 蜜乳av一区二区| 欧美天天干| 中国一级操逼视频| 欧美日韩国产高清在线一二三区 | 人人操av| 欧美日韩m| 精品无码一区二区| 97中文字幕色| 校园春色宗合网| 欧美日韩另类字幕中文| 欧美啪啪天堂| 亚洲图片另类| 国产又猛又粗又爽又黄| 无码黑人精品一区二区三区三| 中文精品一区二去| 久久‘黄片视频| 久久人人看| 天天舔天天 | 色九九九九| 中文字幕一区二区三四五区日日骚| 蜜臀亚洲综合一二三四区| 劲爆欧美人妖三区91| 久久精品噜噜噜成人看免欧美大片| 大香蕉日亚洲日本亚大| 久久久偷拍| 日韩无码一级黄色av片| 精品亚洲国产成人av网站| 在线观看精品国产免费| 五月丁香六月| 欧美情色男人的天堂| 久久久久久久久久久久欧美日| 91网站18+| 九九亚洲| 在线岛| 开心激情婷婷| 四虎国产成人精品免费一女五男| 精品9999| 激情黄色片在线观看| 国产精品激情久久久久久久| 91麻豆天美国产欧美| 亚洲免费97免费| 欧美热图99| 操逼日批| 欧美九9 9 9| 97超视频在线观看| 夜夜嗨视频| 天天干天天狼在线视频| 亚洲国产综合久久久性感熟妇| 男人的天堂无码| 一二三区操逼国产91| 国产人妻天天干精品| 日本午夜福利视频| 国产成人五月天丁香花| 日韩欧美综合激情| 久久久久久91香蕉国产| 亚洲无码日韩电影| 国产吞精a级片激情电影| 麻豆黄四叶草网站| 青青草国产欧美非洲黑人| 婷婷丁香五月天综合东京热| 欧美 传媒 麻豆 日韩 偷拍| 久久久亚洲欧美综合| 蜜色网色哟哟| 欧美成人精品欧美一级乱黄一区二…| 人妻 中文 日韩| 欧美日本久久精品一区 | 午夜AV人气不卡| 精品一区二区三区最新| 日韩一级二级三级| 日欧操屄视频| 久久久96精品| 亚洲精品官网在线观看| 四虎视频在线观看| 亚洲97成人在线观看| 国产精品老熟女一区二区| 性高潮久久久| 五月天黄色激情视频| 亚洲综合一| 国产精品美女在线一区| 四虎国产成人精品免费一女五男| 久久国产逼| 有码人妻系列| 欧美在线永久天堂| 大香网伊人久久综合网eew| 日韩精品中文字幕人妻| 日本九九久久99播| 午夜福利一区二区影院| 久久精品视频28| 操操逼视频| 天堂伊人久久| 殴美大黄片| 亚洲熟妇AV日韩熟妇在线| 中日韩熟女| 久久久久久裸体| 岛园激情| 亚洲精品欧洲色| 97视频网站在线观看| 精品一区二区三区免费古装毛片香港三级日本三级人妇 | 夜夜操天| 影音先锋每日最新资源在线观看| 日本黄色裸日本黄色裸体 | 精品人妻一区二区三区视频| www.久久最新地址| 日本天堂在线播放| 久热九九| 97爱| 久久受www免费人成| 96爱综合| 亚洲最大成人a毛毛片| 男人天堂电影院| 日本午夜福利影院| 综合 亚洲 欧美| 天天弄欧美| 夜夜影视四色| 亚州性色| 九九热这里只有在线精品视 伊人草 成人菠萝蜜视频在线观看 | 国产自产一区视频在线| 欧美综合色图网| 亚洲丝袜色图| 天天日天天干天天整| 国产97免费视频| 中文在线久久字幕| 91啪啪| 久久青青草原免费视频| 久久久久久久久女黄| 伊人青青一区成人视频在线观看区| 人妻一区视频| 色逼综合| 99热99re6国产在线播放| 美女尤物福利视频| 秋霞影音一区二区三区| 亚洲欧美综合| 五月天精品| 青青操少妇| 婷婷五月天成人| 精品人妻av在线播放| 九九九九九精品视频| 330dv亚洲成年视频网| 国产 日韩 欧美 人妻 熟女 中文| 亚洲黄色视频在线观看视频| 国产97色在线 | 亚洲| 天天综合网91入口| 天天综合网网欲色| 久久久精品九| 天美欧美国产| 99激情| 国产亚洲精品第一最新| 91亚洲欧洲| 欧美色交| 无码久| 嗯~啊~快点 死我视频| 国产女性无套 免费观看| 亚洲一区日韩精品| 777超碰| 欧美97免费| 美美91成人国产精品欧美精品久久久久久久 | 老熟女91av| 亚洲欧美国产成人综合不卡| 屁股久久久久久久久久| 农村少妇久久久久久久| 91爰爱欧美| 国产欧美精品日韩区二区麻豆天美| 久久这里是精品| 国产一区二区在线播放量| 日本二三四区| 中文字幕成人乱码熟女精品国50| 欧洲精品久久| 久久精品人妻一区二区| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | 思思热免费在线视频| 九九九999久久久网站| 欧色性第一页| 蜜桃久久久久久久| 91oumei| 九九av| 强奸a片网| 日本高清一区二区在线| 亚川综合视频| 男人天堂黄片| 国产精品原创巨作?v网站| 日韩高清黄片| 十八禁视频一区二区| 综合久久久久久久久91| 夜夜精品视频| 熟女精品日韩一区二区三区| 一区二区播放| 超碰综合97在线| 亚洲情色 自拍| 日韩欧美久久婷婷网站| 亚洲 欧美 第一页| 人妻丝袜二区| 国产一区二区三区高清视频| 国产综合色精品在线观看| www熟女乱伦com| 女性喷水高潮在线观看| 免费无码国产精品v片在线观看| 熟女乱3伦999| jizzjizz欧美| 留下AⅤ黄色片| 亚洲欧美精品一区天堂久久 | 成人AV素股で擦久久| 久极品在线观看| 7月婷婷综合| 久久久久久中文版| 亚洲国产中文字幕| 亚洲在钱| 男人综合网| 操逼视频国产无套| 亚洲av综合色区无码一| 五月丁香网站| 少妇毛片久久| 欧美熟女逼久久久久久| 一本大道久| 一二三区操逼国产91| 中文字幕AV乱伦| 亚洲AV永久无码一区仙野| 亚洲五月婷婷| 超碰99热中文字幕| 久久九操在线观看| 久久九色| 国产极品精品美女视频| 五月天综合在线| 啊…啊…操我用力操我| 亚洲天天影视色综合| 国产精品96| 激情五月天插| 91 在线亚洲| 国产情色第一第二页在线观看| 伊人网在线点播| 亚洲密乳AV| 中文字幕 国产 精品| 精品十三区| 女优大全 - 91n| 综合激情二| 亚洲熟妇自偷自拍另欧美| www.99热在线只有精品| 青青操国产夫妻| A级毛片在线看免费| 色玖玖| 色噜噜人妻丝袜AV资源| 大香久久| 免费一级特黄特色大片在线观看看| 色欧美天天| 欧美熟女丝袜| 久久无码一区二区二三区性色| 国产中文字幕曰本毛片| 欧美日韩系列| 国产精品美女久久久久AⅤ国产馆| 这里只有精品视频在线| 99热66| 死我十八禁| 一线黄色免费性爱片| 久久久一区二区三区四曲免费听| 少妇久久久免费| 韩国三级一线观看久| 黄色AV影视| 热热色综合网| 国产白嫩漂亮KTV在线| 日本亚洲vr欧美不卡高清专区| 人人妻人人色一区二区三区| 亚洲国产精品成人久久蜜臀| 性色高清..……| 嗯啊视频免费在线观看| 天天影视综合网欧美精品| 久草看看看| 日韩亚洲中文字幕在线| 欧美性爱网97| 欧美精品二区视频在线| 亚洲情色五月天| 97中文字幕一区| 十八禁视频网站| 欧美在线伊人色| 亚洲欧美一区二区网址| 嗯阿好爽好紧| 日韩成人无码| 欧美亚洲第1页| 凹凸视频在线一区二区| 肉丝网站91| 放黄片放3级黄片没穿衣服| 97久久资源| 无码137片内射在线影院| 亚洲,欧美,春色,另类| 美女91在线| 超碰99在线| 69一区二区三区 | 嫩草 人人网精品| 国产精品日日摸夜夜添骚逼| 少妇蜜汁| a片在线播放| 99蜜桃臀久久久欧美精品网站| 伊人久久在线视频观看| 色老牛| 色牛牛AV| 天天综合网~91| 成人五月香网在线| 欧美色乱| 男女一进一出视频久久| 老熟妇一区二区三区…| 久久精品中文字幕女同| 视频黄色国产一级| 一本色道久久综合熟妇| 操婢日韩| 久久草视频污视频| 粉嫩av在线一区二区| 果冻传媒A片麻豆熟妇人妻| 婷婷五月激情综合| 日韩中文字墓| 国产精品。| 性爱1区| 97综合激情| 欧洲乱码视频| 色色色色综合网| 九九九九精| 97bbn| 国产又粗又长又爽又色| 91中出| 天天看特黄的免费网站| 天堂种子在线www网资源| 久久男人天堂| 欧美中字二区| 婷婷97| 久久久久亚洲AV无码专区少妇| 精品一区二区2| 国产人伦精品一区二区三区| 国产超碰人人爽人人做| 日韩三级伊人| 欧美啪啪啪91| 久操网视频| 天天干18禁| 婷婷综合久久| 人人摸.人人色| 91成人无码| 欧美日韩婷婷中文| 婷婷五月天补不补| av网站在线观看了| 久久国产成人精品国产成人亚洲 | 亚洲美女精品九九视频| 欧美日韩精品久久| 五月激情影院| 中文字幕免费看大片| 日本阿v天堂在线观看| 97中文综合| 天堂九九九九九九九九九| 黄色大香焦1级‘′‘| 日韩欧美大片免费高清啪啪| 欧美色老汉| 91国产伊人大香蕉| 亚洲中文字幕妇伦久久| 俺去也婷婷| 超碰人人超在线观看| 国产精品日本无码A片| 丝袜AV一区二区三区| 色在线69堂| 看看小穴| 精品人妻视频一区二区在线播放 | 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 亚州乱码中文字幕综合久久久| 福利在线黄片| 国产偷拍自拍在线视频| 丰满美女一级毛片在线播放| 久久久9999| 无马一区二区| 少妇的嫩逼图片| 成人区人妻精品一| 久污| 综合激情一一91| 96精品久久久久中文字幕| 嗯嗯嗯啊啊啊在线免费观看| 三级三级三级日本99| 日本人人操人人操| 久久精视频美日韩在线视频| WWW操逼| 一本精品日本在线视频精品| 亚欧毛片基地国产毛片基地| 成年人网站在线免费观看| 91在线美女| 伊人AAA| 欧美亚洲日韩人妻在线观看| 99免费视频| 九九RE视频在线精品| 久久久久9| 精品人妻美妇91job| 天天插天天操| 中文字幕 码 自拍 视频 区| 激情专区综合| 91操碰| 精品丝袜无码一区二区三APP| 操逼无码操逼| 熟女乱伦A| 人人玩人人添人人澡免费| 看免费的黄片| 欧美日本不卡在线| 97超碰色色| 91网九色蝌蚪操熟女| 国产乱伦视频污| 波多野结衣一级视频| 亚洲国产午夜真人一级片中文字幕精品黄网站| 色五月av| 亚洲天堂色图| 熟妇熟女视频一区二区三区| 欧美不卡在线美女| 婷婷深爱五月| 久久色人体| 日日AV加勒比| 国产精品亚洲日韩骚欢乐谷最新地址发布页huanieguty性屋娱乐妖精视频 | 长长久久曰曰夜夜成人网| 日韩成人大片在线观看| 国产欧美美女免费观看视频| 330Dv国产女人终合视频极品人与兽| 9/A片| 啊啊啊啊啊好大好舒服想要| 日韩不卡网操逼中文字幕日韩| 精品国产自在在线99| 五月天激情影院| 91粉芽高清在线一区二区| 超碰超碰欧美| 91九久| 你操综合| 日日干男人的天堂| 亚洲综人网| 欧美大波激情xxxx| 亚洲精品免费中文字幕| 午夜福利在线合集| 日韩精品中文字幕二区| 变态综合色| gogogo免费高清看中国国语 | 欧美78| 亚洲小说视频| 老司机深夜18禁污污网站| 91呆哥人妻| 9+1视频网址| 91nbbbbbb| 久久久久9999| 亚洲欧综合另类无码一区| 97视频观看| 天天综合91入口| 国产91影院| 欧美一级色| 狠操91,com| 精品黄色电影| 九月婷婷久久| 欧美熟妇亚洲版| 91色久| 99热这里都是精品| 免费9 1久久| 免费国产视频| 乱伦Av网| 精品小视频在线| 天天日天天干天天操| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 99热国产精品| 午夜国产综合视频在线观看| 国产高清无码一区二区三区四区皇冠| 国产天天看| 欧美日韩性爱操大逼| 天操天操夜操夜月操月年年操| 国产丸一视频| 日本免费人成视频播放120秒| 脫衣舞一区二区三区| 久久亚洲骚逼综合| 欧美精品黑人猛交高潮| 韩国午夜理伦三级好看| 精品无码一二三四区| 国产精品久久久吖| 加勒比大香蕉视频在线| 老鸭窝成人| 黄色性爱网网| 素颜老阿姨乱情色| 天天艹天天日| 大干人妻| 色婷婷婷五月天激情四射| 欧美情色亚洲| 久久久97| 日韩欧美女求操每天更新| 午夜操逼不卡| 亚洲日韩一区电影| 久操电影网| 免费一级毛片在线视频观看| 超碰无码五月97| 亚洲人体视频在线观看| 精品一区二区三区最新| 五月丁香黄色网| 亚州操操穴网| 啊啊啊想要| 中文久久| 久久综合九九| 可乐操亚洲蜜911| 91美女丝袜诱惑视频| 日韩欧美加勒比| 日韩人妻资源在线看| 九九热AV| 91色黑人少妇| 日日干天天干夜夜爽| 人妻精品一区二区全免费| 久久男人精品| 麻豆国产成人精品| 青娱乐久久艹| 亚洲精品久久久久久| 日韩AC| 日韩无限资源| 国产欧美日韩臀 | 91骚熟女| 日本一区二区三区欧美日韩中文字幕| 久久久久久久性爱| 亚洲瓯美色图| 日韩性爱电影一区| 欧美色蜜桃97| 2020视频1区2区3区| 男女啪啪网站免费视频| 欧美一区二区三区黄色影视| 五月丁香综合啪啪| 国产在线视频午夜精华在| 欧美性战999| 亚洲欧美日韩精品久久久一区二区| 蜜屁av| 夜夜爽妓女| 免费操逼视频下载| 久久一二三四| 欧美激情久| 亚洲欧美精品91| 免费啪啪av| 人人妻人人色| 日日夜夜干| 国产成人一级av88| 久久东京热久久| 东京热av男人的天堂| 激情综合婷婷| 99久久久无码精品国产人| 婷婷大香蕉| 怡红院怡春院| 天天精品| 欧美真人抽搐一进一出gif| 久久大陆| 狠狠躁天天躁日日躁| 92午夜免费福利视频| 亚洲小说视频| 色妇91| 日韩一区二区熟女| 欧美顶级黄色大片免费| 日本中文熟女视频| 在线观看啊啊啊啊啊| 深田咏美亚洲精品福利社| 亚洲熟女少妇免费视频| 狼天天狼天天大香蕉| 日本在线视频导航| 日韩无码a片| 蜜臀久久99精品久久久久久婷婷 | 美女露胸露屁股| 五月婷婷AV| 欧美的性爱网站免费| 伊人加勒比| 欧美亚洲首页| 黄色不卡视频| 999久久久九| 青青草操逼逼视频| 91搞逼视频| 热热色中文无码| 啊啊啊慢点| 视频在线观看青青99国产| 久热久一区二区三区| 夜夜一区二区| 99热综合| 伊人一区二区在线播放| 97在线免费看视频| 亚洲美腿丝袜香蕉影视欧美成人| 懂色AV中文| 日韩在线视频1234| 久久婷婷五月天| 日本天天操| 人妻久久久| 性爱av网站| 国产成人久久久精品免费AV| 婷婷五月天久久精品视频一区二区三区 | 丰满美女一级毛片在线播放| 无码人妻一区二区三区免费九色| 日本不卡一二区| 久久久91| 久久久天堂| 欧洲综合色| 中出欧美| 久久亚洲一区女同性恋中文字幕| 97超碰人操| 人妻精品一区一区三区蜜桃91| 久久久久极品| 91久久国外网| 丝袜视频网国产90| 亚洲欧美97√| 中文字幕乱码在线| 秋霞Av理论一级在线| 91国模| 清纯唯美亚洲综合| 亚洲āv网址在线观看| 超碰午夜| 2018天天干在线视频| 99色在线|