色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合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
返回資訊列表
亚洲国产精品成人综合| 最近2019中文字幕国语免费版| 传媒在线观看一区二区三区| 人妻内射一区二区在线视频| 精品性爱一区二区| 国产精品无码av| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 精品一区二区三区麻豆| 物业黑人 AV一区| 无码99| 欧美18老人禁| 国产精品伦理| 中文字幕精品专区搜索结果91| 色综合五月天| 日本精品第一视频在'| 69视频入口| 欧美极品色| 中文字幕在线观看网页| 久久久久久91香蕉国产| 色爽爽文学| www.大香| 国产中文精品一区二区在线观看| 麻豆国产97在线| 亚洲同性aV综合| 嫩草 我啊~嗯~在线| 久久綜合很很很| 天天综合色电影| 91chinese在线| 婷婷丁香五月天综合东京热| 久久久久久人妻一区精品色欧美| 久久六六| 欧美日韩在线小说| 黄色电影在线播放综合网站| 成年人网站在线免费观看| 91爆操视频| 亚洲好看强奸乱伦| 夜夜影视四色| 色情五月婷婷| 丁香五月天视频| 最新国产亚洲精品精品国产亚洲综合| 国产第25页在线观看| 欧美另类精品xxxx| 91在线无码精品秘 软件| 国产成人拍国产亚洲精品| 天天做天天爱| 国产综合在线视频网站| 欧美国产欧美在线观看| 一级片在线观看高清无码| 一本色道久久天天射天天干| 久久久一区二区三区三州| 超碰78| 97AV在线观看| 26uuu欧美日韩| WWW操逼| 久久精品国产99精品亚洲蜜...| Sekablack无码一区| 99久久久无码国产精品性啊聊| 日韩9区| 夜夜爽夜夜爽| ji熟女.com| 久久黄色视频一区二区三区| 国产激情在线| 亚洲人妻一区二区三区| 99在线观看无大码| 四虎免费视频| 久久首页| 红杏大香蕉| 综合网久久| 超碰97在线中文| 自拍第一页| 青青五月天| 日本久久女同性恋视频| 婷婷色色网| 亚洲人精| 伊人欧美大香蕉视频| 天天日天天爽| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 精品九区| 午夜精品久久999热蜜桃介男人用| 91综合天天看| 国产色图乱伦| 欧美顶级黄色大片免费| 欧亚乱色熟一区二区三四区| 人妻超碰青青草98| 超碰在线一区二区| 欧美另类综合久久| 精品久久99| 韩日精品福利视频一区不卡在线免| 国产熟女自拍| 亚洲欧美自拍偷拍| 久久夜夜夜夜| 五月丁香六月综合缴清无码| 精品国产肉丝袜在线拍国语| 色狠人在线99| 亚洲激情综合另类| 99热精品在线观看| 九九九草| 中文字幕一区二区在线日韩精品| 五月天激情网图片| 男人的天堂无码| 国产 日韩,欧美 自拍| 亚洲精品日韩国产欧美| 91日产欧美| 试看日韩黄片| 久久精品老司| 色欲三区| 伊人操操| 日本熟妇人妻中出视频| 亚洲熟女一区| 亚洲激情在线观看一区| 欧美日韩国产中文精品字幕自在自线,| 五月综合视频| 久久宗合97| 两女互慰AV高潮喷水在线观看| 日本国产高清色www视频在线| 性影在线视频| 色香欲影| 国产欧美第五页| 91在线观看,天天综合| 在线观看成人性爱免费小视频| AV天堂丝袜| 91亚洲最新在线| 全球成人中文在线| 日日碰视频网| 天天综合网站| 蜜臀久久99精品久久久久久酒店 | 强奸乱亚洲| 九九热精彩视频| 欧美激情性久久久久久| 日韩噜噜69| 乱伦a片视频| 国产乱码精品久久久久久| 国产一级137片内射麻豆| 东北老女人的激情视频| 果冻传媒一区二区三区| 白丝被操91| 75大香蕉| 囯产操逼片| 怡红院亚洲怡春院av| 1禁看欧美黄片免费看| 久久97超碰香蕉| 成人AV在线电影| 日比av无码| 夜夜爽77777| 久久久亚洲| 日少妇亚洲版| 久久久精品视频免费观看| 另类成人首页一区| www.夜夜操| 91麻豆天美传媒在线| 高清无码网址| 91亚州| 啊啊啊啊啊啊啊好爽不要| 免费福利视频中文字幕| 搡老女人老91妇女熟女| 色婷五月天| 精品国产乱码| 大香蕉99热| 国产人妖视频一区在线观看| 亚州色图欧美色图| 欧美体内射精| 熟女人妻av在线资源,黄色的资源| 一起草在线视频| 日韩免费人妻色情网站| 色视频蜜乳| 美日韩男女操屄视频| 国产精品精品系列在线观看| 日本精品五区| 天美传媒av在线| 思思热在线观看| 欧美福利视频啊啊啊啊| 色香天天| 天天舔天天日天天射| 九九人人操| 国产成年免费大片黄在线观看| 亚洲国产97在线精品一区| 久久久久日本视| 精品人妻av在线播放| 婷婷久草一区二区三区| 亚洲精品国语在线播放| 欧美综合777| 热久久91婷婷| 激情久久久| 无码最新| 亚洲国产成人7777| AV乱伦专区| 久久αⅴ| 骚货操死你| 亚洲天堂电影网| 91色爽欧美| 中文字幕成人| 手机看片1025| 日韩午夜精品一区二区三区电影| 中文字幕日韩人妻视频一区二区三区| 探花视频免费观看国产专区| 大香蕉淫人| 自拍第一页| 丁香五月成人| 国产自产一区视频在线| 亚洲一区二区三区播放在线| 26uuu最新| 99热一区二区三区四区| site:sinbotex.com| 亚洲图片小说欧洲| 人妻少妇精品久久久久久| 99re这里| 四虎影视国产精品| 欧美91精品国产自产| 四虎av在线| 久久久女人| 91男人综合| 熟妇高潮二区三区| 国产精品电| 激情婷婷丁香| 欧亚 另类 久| 人人妻人人爱人人玩| 四虎AV在线播放| 怡红院久久老司机| 欧美天天性| 1769成人国产精品视频| 日韩不卡在线一区二区| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 影音先锋视频在线| 99久久e免费热视| 一区操逼日比视频| 日本岛国黄色网址| 91九久| 日日干日日操五月天伦理视频| 男人天堂站| 欧美日韩国产男人| 成年人免费观看网站| 国产又长又大又粗的视频| 黄色av播放免不| 青青草影视蜜久久| 激情小说在线视频| 久久九九热| 亚洲成人在线高清| 久久亚洲AV成人精品无码| 日韩色| www.国产高潮精品| 800zy一区二区| 午夜毛片高清免费不卡| 亚洲熟女人妻中文字幕一区二区| 欧洲在线性爱视频| av网页一区二区三区| 婷婷综合五月| 色噜噜人妻丝袜AV资源| 天天综合91入口| av黄图片在线观看| 人人爱人人操人人性| 国产伦精品一区二区三区在线观| 久久久久久久9| 国产综合色精品在线观看| 99re免费视频精品全部| 免费看一级a性色生活片久久无| 盗摄 精品 另类 一区| 欧洲乱码一区二区| 精人妻一区二区三区| 欧美操人视频| 91亚洲人电影| 色网亚洲人| 日本性感人妻91| 亚洲高清无码免费观看视频| 中文字幕av久久爽Av| 午夜精品视频777| 婷婷综合激情| 偷拍片久久| 亚洲精品一二牛牛| a久久| 黄日韩| 亚洲色狠| 亚洲色图大香| 婷婷8月天青娱乐| 亚洲国产奇米影视久久| 97视频在线观看高清资源| 国产又粗又长的视频| 久久久精品91八戒| 国产精品suv一区| 亚洲国产精品无石码久久| 老司机射| 欧美啪啪天堂| 国产综合网站在线播放 | 青青草色AV| 福利伊人玖玖国产| 91欧美性| 自拍偷拍亚洲熟女妇人精品| 91最新综合| 少妇高潮九九九九| 999狠狠综合| 日产精品久久久一区二区| 国产探花精品在线| 色天堂在线观看| 秋霞网—男女啪啪亚洲免费体验区| 麻豆黄色五月天| 欧美激情区| 激情综合网激情五月天| 久热精品在线| 操一区| 欧美日韩一二三| 色婷婷亚洲婷婷| 亚洲色图欧美色图综合| 在线视频日韩欧美国产| 999热这里只有精品| 小少妇| 久久夜夜| 绑缚麻绳人妻寝取完整版| 国产91影院| 亚乱色| 亚洲男人的天堂一区二区| 欧美色院| 91逼逼女人91| 色黄色美女大长腿午夜视频| 亚欧洲一区二区视频| 91精品无码人妻系列| 欧美综合在线第一页| 91精品黄在线观看| 四虎精品一区二区| 成人综合视频久久| www国产天美久久久| 亚洲做性| 中文字幕在线观看AV| 日韩极品无码B| 成人一区二区三区四区| 亚卅熟女乱色| 人人爱人人乐人人操| 久久中文色图| 国产强上视频在线观看| 91少妇人妻| 久久e6只有精品| 欧美亚洲第一页| 久久9999| 夜夜操老骚逼视频网站| 亚洲啪啪视频一区二区| 五月婷婷六月激情| 国产黄色在线播放观看| 0755午夜福利视频| 少妇与黑人高潮在线| AV无码久久久精品| 亚洲自拍偷拍视频在线 | 中文字幕乱妇免费视频| 麻豆性爱视频在线播放| 簧片免费看视频| 好爽视频在线观看视频 | 国产精品九九| 97超碰色屌| 亚洲一本大道中文字幕无码在线| 亚洲婷婷丁香在线| 五月情色天| 狠狠色一区二区中文字幕| 国产免费永久精品无码| 丝袜AV一区二区三区| 日韩 成人 有码| 超碰人人干| 视频一区二区三区精品| 天堂亚洲精品| 神马影院午夜福利久久久| 去干网最新版| 亚洲一区二区三区中文字幕| 2017大香蕉| 亚州色阁| 超碰98综合网| 校园春色亚洲欧洲| 嗯嗯啊在线视频| 日本成人电影资源网| 青娱乐淫乱1314| 久久久555| 人人摸人人舔一区二区| 青青欧洲黑| 在线 亚洲 网爆 自拍| 99爱爱| 国产精品午夜成人福利| 丁香六月啪啪| www.婷婷| 亚洲男人天堂Av| 人人操AV| 免费看日产一区二区三区| 亚洲精品人妻在线| 国产女人高潮嗷嗷嗷叫小说| 天天看天天干| 99e久久国产精品| 少妇综合网| 日韩欧美俄罗斯A片| 国产91久久九九免费精品无码| 国产一级αv免费看片| www.色婷婷| 天天天天天天天天综合| 国产白嫩精品久久| 伊人991| 九九拍拍精品视频在线播放| 亚州再线| 影音先锋一区二区在线资源| 一区二区三区四区久久视1| 欧美日日夜夜| 另类 综合 日韩 欧美 亚洲| 是还免费视频1727我| 1000午夜黄色| 骚日日av| 国产丝袜啪啪| 久久久久九九九| av网站免费看| 2017人人操,人人摸| 国产女人和拘做爰视频 | 国桃视频产巨乳精品一区二区在线| 9热9热综合网| 好舒服视频| 97久久精品不卡| www.成人无码| 九九九久久久| 无码av永久免费专区网站| 蜜乳AV一区二区三区四| 91美女中出| 伊人影院在线理论播放| 亚洲欧美日韩有码| 欧美日日人人天天| 啊啊啊啊啊啊啊啊视频| 久久日韩精品一区二区| 国产福利小视频高清在线观看| 成人日本视频人妻在线| sss视频华人在线| 人妻天天爽| 91宗合网| 日本色色色视频| 99∨VTV| 亚洲天堂情色| 精品一区二区三区麻豆| 亚洲第一免费视频| 少妇二级| 日本黄页视频在线观看| 91美女视频在线观看| 国产精品久久久久无码Av网曝门| 日本肏逼视频在线观看| 欧美丝袜激情| 老女人综合| 欧美性爱日韩性爱| 99热超碰| 草B在线| 干我久操| 五月天春色激情网| 午夜福利合集| 亚欧日韩成人| 麻豆国产原创AV色哟哟| 麻豆一区二区三区在线看 | 色婷婷久久| 欧美少妇性乱| 岛国在线国产| www老逼91| 亚洲天天自拍| 国产第25页在线观看| 性色avv| 日本布卡一区二三区| 三级色综合| 超碰国产情侣自拍网| 抽插一区二区视频| 中文字幕狠狠玩| 一级性爱视频免费观看| 日本网色| 日韩欧美三级| 日韩成人免费电影| 女上位精品在线| 国产精品亚洲无码| 亚洲淫色网中文| AAAA级日本片免费视频| 天堂九九九九九九九九九| 久久国产精品视频| www成人啪啪18秘 免费| 另类成人首页一区| 免费强奸av| 久久亚洲天堂| 成人福利视频网| 欧美论理片| 午夜.DJ高清在线观看免费7| 国产精品suv一区| 激情综合五月| 亚洲一卡2卡3卡4卡乱码网站| 黄污污污污| 人人妻人人澡人人爽久久av| 大屁股xxxxx| 另类专区加勒比| 3P乱轮视频| 超碰在97| 婷婷综合在线| av中亚| 欧美综合97www| 欧美第一页| 91新在线欧美| 国产操逼视频在线观看| 亚洲欧美日韩电影网站一区| 欧美天堂超碰97| 家庭乱伦国产| 亚洲av综合色区无码一| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 97色视频在线| 国产精品日韩在线一区| 麻豆精品三区视频| 欧美日韩99| 青草精品视频日本久久久久网站在线| 免费视频在线观看啊啊啊啊啊| 青春草莓视频在线观看网址| 午夜天堂网| 日韩操p| 一区二区三区成人 | 亚洲欧洲久久天堂| 成人综合久久精品色婷婷| 亚州黄站| 97青娱乐超碰久久| 激情五月天社区| 91丝袜| 性性欧美| 男人的天堂,欧美亚洲另类国产日韩,日本高清一区二区 | 超碰久热| 51久久夜色精品国产麻豆| 91丝袜美腿片| 蜜臀久久99精品久久久老,,| 国产绿奴视频在线观看| 91性网| 熟妇人妻一区二区三在线 | 亚洲青青草| 婷婷久草一区二区三区| 色五天伊人| 日韩精品-原创伙伴| 久久久久久91香蕉国产| 亚洲综合成人网| 中文字幕日韩人妻视频| 国产97免费视频| 东北操逼| 亚洲色图美腿丝袜| 嗯嗯,啊啊,国产精品| 在线看片国产精品每日更新| 成人线上超碰| 清纯唯美激情| 97超碰中文字幕| 亚熟在线| 啊啊啊好爽快点啊啊啊嗯嗯| 啪啪啪精品视频| 92性色国产午夜福利在线661| 黄色交缠性感爆操91国产精品免费一区二区三区| 蜜桃久久久久久久| 色色色网站| 午夜欧美女人操逼| 亚欧无码在线| 国产精品爽爽v| 欧美v日韩v亚洲v最新在线| 97 国产精品| 91国精产品| 亚洲激情天堂网| 天天香香欲综合| 禁片 高清 在线观看视频网站| 精品亚洲国产成人AV制服丝袜| 欧美精品成人在线播放| 91丨九色丨国产丨人妻在线| 青娱乐休闲视频在线观看| 欧美se综合| 久久大香蕉97| 国产精品农村妇女精品| 91中出视频| 91N综合网| 中国韩国明星一极片一区乱码毛片人妻熟女一区二区三区 | 欧美999| 亚洲97综| 色吧5亚洲| 探花视频免费观看国产专区| 永久免费观看的毛片的网站| 国产一区二区在线播放| 色网色网色网色网色网色| 日本 情色 1区| 97色操| 国产精品久久泡妞网站| 麻豆精品一区二区三区四区免费观看| 人妻少妇精品视频一区二区三区| 日韩97在线| 校园春色 欧美| 亚洲欧美成人网站AAA| 国产无码成人无码| 黄色片一区二区三区四区五区| 国产综合在线视频网站| 玖玖玖玖精品国产剧情| 国产一区二区在线电影| 高清在线偷拍自拍视频| 狠狠干狠狠干| 日本不卡码黄色 | 26uuu性物| 天天草天天干天天日| 亚洲日本韩国在线| 盗摄 精品 另类 一区| 精品.99999| 欧美 亚洲 另类 综合| 欧美九一精品久久久熟妇| 2017天天操天天日| 免费A片三p视频| 黄片色区软件| 激情99| 成人A片男人的天堂| 国产第二页| 欧美精品庄| 日韩欧美午夜一区二区| 一区二区三区视频在线观看免费| 天美国产三级传媒| 欧美第二页午夜| 另类图片天天影视| 久久久免费的精品| 精精夜夜| 午夜福利合集| 人人 操人人 操人人| 亚洲操逼视频网站| 久久视网78| 欧美九九九| 精品少妇人妻av久久免费| 99热啪啪| 无码一区二区三区四区五区六区七区八区九区十区视频 | 国产精品国产精品国产| 久久精品国产Aⅴ| 秋霞影音一区二区三区| 九九热精品免费视频| 精品九九九九九九九九九| 青草地一本线一区二区三区| 国产女同视频在线播放| Julia在线播放亚洲久久| 91爱看| 大学生美女口爆| 青娱乐日韩无码| 蜜臀久久99精品| 夜夜骑夜夜操| www.久久99| 久久精品成人一区二区三区蜜臀| 青娱乐淫乱1314| 午夜婷婷| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 日本国产高清色www视频在线| 亚洲 日本 一 二 三| 天堂涩涩| AA级电影三区| 好淫网一二三视区| 精品999一区二区| 欧美一区二区亚洲天堂| 天欧美在线| 啪啪免费| 日韩 欧美 国产 麻豆| 欧美一二三级精品在线| 天天干一区二区| 日日骚AV| 国产av青草| 丁香七月婷婷| 内射日韩大臀美女| 婷婷色综合欧美日韩| 婷婷尹人大香蕉免费| 极品出轨视频网站| 日韩人妻无码专区| 国产精品97视频| 成片免费播放| 久久精品电影在线| 亚洲中文字幕97久久精品少妇| 日韩99999| 91粉芽高清在线一区二区| 婷婷人妻激情| 欧美男人一区| 成年无码动漫av片无尽在线 | 国产综合永久精品日韩鬼片| 日韩国产十八禁| 国产精品视频91久久| 校园春色欧美色图| 亚洲春色欧美激情自拍| 人妻熟女一区二区三区在线| 日韩性爱人人爱人人操| 亚洲日韩东京热一区| 老司机射| 国产精品一区二区三区在线| 人人摸人人干| 美国日韩黄片| 夜夜 中文视频rt| 国产情侣自拍在线播放| 国产精品另类| 久久久久日本视| 欧美人人曰人人操人人射射| 自拍亚洲综合| 黄网在线播放| 1769一区| 日韩精品系列| 日本特黄f c2| 激情抓乳插进去啪啪啪日韩 | 免费观看国产不卡av| 国产风韵犹存熟妇三区| 久操热| 少妇一级无码精品| 九九av| 日本大片日本一区二区免费高清| 国内毛片欧美香蕉精品| 免费超碰97久久| 99久久综合| 欧美精品久久久久久久丰满| 蜜桃狠狠色伊人亚洲综合 | 夜夜高潮夜夜爽国产伦精品| 五月综合激情| 久久天天艹| 天天欧美| 欧美大色交| 久久精精区一区二区一蜜桃一区二区| 色操逼网| 欧美色院| 日韩精彩视频| xxx亚洲午夜天堂| 色呦呦呦在线观看视频| 99热在线观看| 亚洲综合草草| 麻豆AV96熟妇人妻| 四虎AV在线观看| 国产精品干干干| 90后性网国产欧美| 在线有码中文字幕| 亚洲色图 欧美| 蜜臀aV午夜一区二区三区| 青青草在线视频人人想人人上| 欧美激情中文字幕另类小说| 搡老女人911熟妇老熟女| 婷婷久久久精品| AV99热18这里只有精品| 99国内精品| 91丨九色丨大屁股| 久久国内| 日本免费专区| 91香蕉视频在线观看免费| 久热最新在线杭州| 欧美人妻一区二区| 大香蕉一人| 亚洲国产精品99久久久| 97综合激情| 日韩97视频| 欧美中文狠| 爱干爱射网啊啊啊| 99热亚洲天堂| 超碰97精品在线| 337p大胆噜噜噜噜噜91Av| 日本欧美一区二区三区免费| 欧美性爱第一页久久| 中日韓欧美高清| 久久久久女教师免费一区| 另类老少妇| 精品人妻伦一区二区三区久久| 中 文字幕一区二区三四 五 区日 日 骚| 熟女人妻久久中文字幕一二区| 国产福利第一视频| 国产精品视频精品一二| 久久国内| 国产一区在线免费播放| 狠狠色噜噜狠狠狠狠狠色综合久久| 午夜亚洲国产理论秋霞| 中文字幕,人妻,日韩| 人人操人人插 - 百度 - 百度| 日日超碰亚洲| 日韩一级欧美一级国产一级台湾| 天天激清| 美女熟妇色| 成人av影院在线观看| 啪啪视频亚洲第一 | 日韩三级一区 | 婷婷色一区| 人妻少妇一区二区| 伊人影院在线理论播放| 99re这里只有精品3| 超碰 另类 欧美| 国产污视频麻豆传媒一区二区| 丝袜综合色图| 中文一区在线日| 尤物视频偷拍免费| 国产中文字幕在线观看| 久久青娱乐| 欧美姓爱综合网| 欧美亚洲图片| 人人 操人人 操人人| 免费啪啪一级视频| 国产精品麻豆成人AV艾秋| 精品国产一区二区三区av在线资源| 久久久爆乳翘臀一线天伦理视频| 日本三级中国三级99人妇网站| 青娱乐导航AV| 情色五月天网| 国产激情在线| 亚洲黄色视频在线观看视频| 色哟哟511老熟女| 婷婷五月天丁香| 爱欲AV| 五月天精品| 一级性爱视频免费观看| 久草网站免费在线观看| 艹我哪美一区无码| 青娱乐手机日韩在线视频| 久久熟女嫩草成人片免费| 青青在线视频日韩欧美| 亚欧成人综合影院| 激情久久久| 欧美97视频| 国产搭汕a级片| 色欲av一区二区三区蜜芽| 国产精品熟女乱伦| 日韩精品9999| 超碰九7| 福利在线观看一区二区| 小草精彩毛片| 在线观看av区| 婷婷久久网| 91性高| 啊啊啊想要| 91精品无码人妻系列| 一道本东京热加勒比一区二区三区| 午夜精品久久久99热蜜桃的功能特点| 丝袜美腿亚洲| 五月婷婷丁香| 青木玲在线不卡| 久久狠狠色噜噜狠狠狠狠97| 亚洲偷拍自拍在线视频| 青青草日本中文字幕 | 欧美综合区| 夜夜人妻爽| 国产91影院| 大香交伊人网| 亚洲自拍小说| 黑人无码一区二区| 韩国国产欧美情侣视频在线| 欧美性爽xyxOOOO| 亚洲少妇色| 91操熟女视频 | 五月婷视频| 偷拍99| 丝袜熟女一区二区三区| 九九九九九九九九九五码| 天天射天天操天天干天天吃2018| 98一区二区精品| 精品一区二区三区蜜桃| 免费毛片在线播放| 久久久久幕乱码| 东北丰满熟女国产一区| 久久久久久久久久黄色网| 淫荡网址| 91在线美女| 欧美亚洲| 欧美中文字幕一区| 日韩有码 一区二区三区| 熟女丰满人妻一区| 夫妻天天操岛国视频| 久久国产三区| 少妇久久| 亚洲丝袜色图| 久久 国产 无码| 99久久综合| 国产精品嫩草久久久久| 久久久久网站-538在线视频-欧美永久乱码 | 色呦呦国产精品免费看| 欧美亚洲国产自久久| 欧美人人操人人插| 久噜噜| 亚洲码专区| 欧美日韩中文字幕不卡| 国产玖玖| 精品人妻一区二区三区四区石在线 | 极品色社| 精品蜜乳AV免费观看| 极品内射| 国产精品无码在线| 精产品久久| 天天插天天舔舔天天干| 国内毛片热久久思思热| 久久久网一区| 欧美啪啪女女| 啪啪啪综合网| 高清肉丝中文无码| 中文字幕黄色片| 久久大黄片| 美女诱惑在线一区| 秋霞视频一区二区| 九九九九精品九九九九| 欧美日韩精品国产91| 人人摸人人干人人拍97| 清纯唯美综合| 高树玛利亚无码流出| 搡老人老9丨女老熟人| 久久久天堂| 色综合潮| 中文字幕性感少妇av| 好爽免费视频| 亚洲色图自拍| 久久久久成人蜜桃精品| 国产无码精品高清| 欧美日韩不卡传媒| 黑人中出21连凳花野真衣| 丝袜美腿制服人妻二区中文字幕 | 国产一区二区在线播放量| 夜夜免费视频| 黑丝少妇麻豆| 搡老熟女老女人老熟妇免费视频| 男女一进一出视频久久| 国产和美国毛片| 青青草在线成人视频| xxx0国产在线播放| 亚洲在线欧美| 爱丝福利| 日本 免费 一区二区三区 久久香蕉 | 99在线免费公开视频| 99热在线只有精品| 亚洲欧美国产中文字幕| 成人日韩欧美| 在线看片国产精品每日更新| 狠狠操狠狠操操| 97人妻人人躁人人玩人人| 亚洲情色一区综合| 亚洲综合色婷婷| 国产91啪| 亚洲影院无码在线| 美女91在线观看| 国产精品毛片?v一区二区三区 | 日本五十路熟女一区二区| 大香蕉伊在线久草麻豆天堂故事| 探花精品视频| 亚洲最大成人a毛毛片| 91无遮挡| 欧美偷拍| 精品国产乱码久久久影院| 欧美 日韩 婷婷 五月| 久久大香蕉手机高清视频| 婷婷丁香成人| 免费A V在线播放| A 在线网址| 日韩欧美性吧婷婷乱伦大香蕉| 欧美成97爱| 91亚洲丝袜熟女| 97爱碰| 另类 综合 日韩 欧美 亚洲| 99自拍B亚洲 | 亚洲好看强奸乱伦| 色在线综合| 日本韩国国产精品一区| 无码国产精品96久久久久孕妇| 亚洲小说视频| 懂色Av一区二区三区| 老熟女阿 国产91| a啊啊啊啊啊啊啊啊一区二区| 久久久久国产精品人妻aⅴ天堂| 亚洲综合九| 91欧美性| 九九人妻| 超碰色大香蕉| 女优大全 - 91n| 搡老女人老91二区| 国产99热| 人人性爱视频免费| 午夜.DJ高清在线观看免费7 | 中文字幕-区二区三区四区视频中国| 96AV久久久| 久久111| 97频视在线| 久久↗↗| 蜜臀99久久国产| 啊啊啊啊啊在线| 成人小说另类在线| 成人a级高清视频在线观看| 人人操肉肉| 97任你吞精| 中文字幕精品一区二区精品| 看看小穴| 久日91在线| 国产97综合| 国产精品乱码久久| www.亚洲黄色| 久久精品中文字幕无码l| HEYZO高无码国产精品227| 无码自拍SM| 97香焦色区| 嗯嗯,好大,好爽,好骚| 欧美一区二区三区黄色影视| 国产超碰97| 国产精品久久久| 激情五月天插| AAA久久| 日韩欧亚太美不卡| 五毛骚逼极品美女怕怕| 99re28在线观看| 乱伦熟妇一区二区| 久久精视频美日韩在线视频| 色色国产| 99只有精品| 伦理第一页| 日韩性爱人人爱人人操| 色婷婷导航| 一区麻豆 高清中文字幕| 欧美综合 站| 清纯唯美亚洲综合| 日韩无码黄色片| 久久黄黄| 亚洲欧美综合网站| 国产乱伦视频污| 国产情侣自拍在线播放| 日韩中文字幕熟妇人妻 | 午夜福利1区2区3区| 你懂得91| 亚州久久9| 精品亚洲天堂| 天堂中文资源在线bt| 蜜桃久久综合视频| 职场同事知名国产国产精品久久欧美日韩| 精品久| 熟妇操花| 蜜桃精品视频一区| 青青在线视频日韩欧美| 成人免费福利在线观看| 日韩精品区二区三区不卡| 欧美日动态视频| 欧美色九九| 操逼免费视频无码国产| 长长久久88视频| 久久偷偷色综合蜜桃| 成人精品无码| 九九热AV| 死我十八禁| 一级片在线观看高清无码| 少妇高潮99p| 国产成人精品日本视频| 91女人的网站| 丰满人妻一区二区三区免费| 亚洲人久久久网| 易易A毛视频| 国人欧美精品一区二区| 亚洲天堂自拍| 九九九免费视频| 丁香五月电影| 疯操AV| 国产小黄片在线免费观看 | 天天综合网~91| 欧美人妻久久精品二区三区 | 国产美女口爆吞精视频| 99在线观看| 很狠操| 中日韩熟女| 一二三四区电影| 欧美 综合 亚洲| 黄色操人| 人人综合| 久久久性| 日本免费不卡二区| 男人天堂欧美| 超碰三级秋霞| 精品国产乱码久久久久久蜜臀| 欧美人人AAA| 综合熟妇一区二区三区| 小情侣高清国产在线视频| 国产乱青青草久久| 亚洲最大的综合性av| 天天综合网~69| 女人午夜视频777| 超碰97在线色男人??| 日韩激情啪啪啪| 亚洲性少妇| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 97天天在线| 人人妻人人狠人人| 亚洲综合另类色图| 日韩999| 色臀AV| 极品白嫩福利在线| 日本操逼aaaaa| 美女主播色欲91抠b在线播放| 国产精品高清2021在线| 精品国产72| 夜夜天天噜狠狠爱2021| 五月天加勒比啪| 欧美成人一区二区三区在线播放| 夜夜春夜夜操| 亚洲 欧美 91| 色999偷自拍拍| av三级电影在线播放| 97综合国产精品高潮久久| 国产一级内射无挡观看| 精品中文日韩字幕视频| aaaa黄片| 美女黄站| 骚逼一区二区| 国产精点久久久成人| 91中文字幕制服丝袜免费视频| 久草久热| 亚洲无码?第一页| 日韩欧美传媒一区国产| 亚洲AO在线| 伊人久操| 又大又大又大又粗爽高潮观看 | 国产精品一区二区手机看片| 欧美夜夜骑视频| 激情四射五月天| 国产丝袜欧美在线视频| 操逼无毒无码免费视频| 天天操天天插| 午夜视频好爽啊| 亚洲男人天堂手机版| 黄总AV色图| 91精品丝袜久久久久久| 亚洲电影中字一区二区| 1204人成网站色www| 久久亚洲骚逼综合| 福利在线黄片| 美国日韩黄片| 97伊人超碰| 欧美色图成人网一区二区 | 91激情网| 大学生美女口爆| 夜夜嗨AV一区天天| 久久精品福利影院| 神马久久69| 亚欧美色图| 欧洲乱码一区二区| 五月丁香激情啪啪| 狼狼色丁香久久婷婷综合五月| 亚洲中文字幕av | 国产高清精品一区二区三区毛片| 91高清欧美| 人妻天天爽| 青苹果影院男人的天堂| 丁香五月影院| 人看人人摸人人操| 黑人美精品 A片| 亚洲美女av无码| 青青草原av| 96精品在线| 美女啊啊啊啊啊啊啊| 黄页网站免费高清在线观看| 日本不卡一区| 亚洲欧美骚| 精品人妻一区二区三区蜜桃视频| 二级久久网| 99re不伦| 日韩成人色图| 精品一区二区三区蜜桃臀赵总 | 亚洲图片欧美在线视频| 精品一区二区在线针对华人免费观看这里只有精品免费观看 | av网站国产主播在线| 男人的天堂99| 色原狠狠天天天| 羞答答AV中文字| 九热超碰| AV天黑人| 精品免费成人久久| 大香蕉日韩欧美| 亚洲第一页综合在线| 大香蕉92| 啊啊啊啊,啊啊好多水| 久久久久96| 丝袜视频网国产90| 蜜臀99久久精品久久久久久| 丰满熟女人妻一区二区三五十一路| 欧美传媒一区| 激情婷婷丁香| 欧美久久人体| 性感美女91影视| 人妻熟女一区二区在线视频| 午夜操一视频一区| 欧美色综合网| 国产97亚洲| 成年无码动漫av片无尽在线| 日本视频在线中文字幕| a'v在线资源| 国产精品无码成人精品| 欧美经典一区二区三区| 欧美97免费| 欧美激情 一区|