色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合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
返回資訊列表
青青欧美| 亚州五月| 日本精品五区| 久久久久久久久成人av解说| 99r九九| 欧美在线色图| 高清视频一区| 色色福利| 亚洲 图片 欧美 色图| 色呦色呦色精品| 岛国A V在线免费看| 玖玖色综合| 亚洲欧美国产精品久久久久久久| 亚洲欧洲精品视频发布| 日韩欧美偷拍美女视频| 日本黄色精品专区网站| 第四色亚洲色图| com 首页 18岁 禁区 女优 免费 精选 同城| 香蕉视频欧美一卡二卡| 中文字幕啊啊啊在线观看视频| 啊啊啊啊啊舒服| A 在线网址| 青青伊人久久| 91校园春色长篇| 夜色综合| 久久视频少妇美女| 91强奸乱轮| 91制服丝袜| 欧美激情总合网| 人人模人人看| 九草九九九| 一区二区三区欧美激情| 亚洲欧美日韩免费观看| 伊人久久亚洲色欲综合网站 | 99热99色| 国产精品久久久久久高清无码免费看 | 国产超碰AV在线精品| 欧美香蕉视xxx| 影音先锋视频在线| 男人的天堂com| 欧美精品成人亚洲| 日韩欧美中文| 91爱啪| 韩国女主播青草在线| 日本视频一区二区三区| 加勒比中文av| 老色鬼成人精品视频下载大在线观看| 男人的天堂色偷偷青青草视频婷婷网| 综合激情五月天| 国产sv美女内射| 91网站18在线| 少妇极品熟妇人妻无码| 亚洲少妇诱惑| 最新加勒比丝袜在线| 在线无码操| av天堂精品久久| 亚洲熟伦熟妇AV无码春色| 96久久久精品| 日韩精品一区,二区 九九...老司机| 日本曲间由美性生活片| 大香蕉AV丝袜| 啊好爽受不了无码| 国产精品视频播放| 欧美第一页| 91夜夜蜜桃臀1区2区3区| 亚洲日产专区| 亚洲精品人妻吞精av| 亚洲蜜乳av| 国产无码精品成人| 超碰97丝袜| 精品成人久久久人人亚洲| 国产视频第2页| 久久久国产精品亚洲精品| 骚人妻少妇视频| 亚洲一本色码中文字幕| 日韩99神马视频片| 欧美论理片| 久久9免费视频| 国产蜜臀精品一区二区尤物| 热热色中文无码| 夜夜精品视频一区二区| 午夜成人爽爽爽爽A片李冰冰| 欧美熟妇精品黑人巨大91| 欧美精品三级黄片| 亚洲成a人片在线观看中文!!!| 多毛小伙内射老太婆| 综合网欧| 欧美宗合网| 韩国三级一线观看久| 国产亚洲精品农村妇女 | 亚洲熟妇熟在线电影视频| 欧美色图亚洲色图成人在在线| 亚洲色入欧美| 亚欧毛片基地国产毛片基地| 无遮挡h肉动漫在线观看| 操操逼操操逼操操逼逼| 国产a级午夜毛片| 麻豆国产尤物AV| 欧美色图在线视频少妇| 国产黄色视频久久| 淫妻综合网| 欧美日本视频一区| 91干熟女| 91青青| 人人爱人人操人人性| 色九月综合| 成年无码动漫av片无尽在线 | 久久久久久亚洲Av无码| 激情丁香婷婷| 亚洲脚交| 精品国产精品一区二区| 91亚洲综合| 920日本午夜免费| 欧美毛片在线网| 裸模AV女优| 超碰97综合在线| 欧美色视| 亚洲成人在线播放| 一区二区亚州激情久婷婷欧美| 日韩射精| 亚洲色图欧美视频| 日日干日日操五月天伦理视频| 热G综合热G中文| 十八禁视频一区二区| 五月婷久久| 亚洲成人精品久久久| 亚洲色图欧美色图另类图片| 久悠悠av| 久操精品| 国产精品久久发布| 伊人骚琪琪亚洲天堂网站| 亚洲性爱无码乱伦av| 求求你操操我| 亚洲操逼视频网站| 全国男人天堂网| 欧美特大AA级黄片| 免费网色网站| www.大香| 97色欧洲| 五月婷视频| 熟女高潮合集-永久久久-成人AV| 强奸乱伦大香蕉网| 亚州精品人妻一二三区| 亚洲nv男人的天堂网| 亚洲男人的天堂在线看| 日韩午夜精品一区二区三区电影| 91碰碰| 一区二区三区黄色片a| 天天舔天天日天天射| 久久精品国产亚洲AV高清演员表| 色制服丝袜夫妻av一区| 人妻熟女一区二区在线视频| 99热18| 大香蕉综合网| 91N五十路| 免费a v| 七久久久| se01国产在线视频| 免看60秒涩涩视频| 97自拍视频在线| 水多多映视AV| 96久久久精品| 日韩三级一区| 囯戸精品高潮呻吟旡码| 老司机福利社视频在线观看| 91原创在线观看| 一级做a爰片性色毛片久久| 粉嫩AV一区夜夜嗨| 国产刺激视频| 蜜乳AV一区| 亚欧洲日韩国产精品| 亚洲日韩精品在线播放| 欧美gv在线观看| 97操综合| 精品久久久久黄少妇| 人人操人人操人人人操| 天天久久久久久| 成人欧美一区二区三区黑人一| 亚洲日韩狠狠撸视频| 97网址www| 日韩性爱电影一区| 亚洲啪AⅤ永久无码| 97热视频在线观看| 色色99| 男人兔费天堂| 秋霞免费AV| 日少妇视频| 天综合网欧美| 久久久久久久久久久久久久9999| 伦理片秋霞免费影院| 搡老女人老91妇女老熟女| 亚州欧美一区| 大香蕉色网| 色婷婷导航| 十八禁视频一区二区| 97在线观看免费| 中文字幕久久精品一区| 精品无人区麻豆乱码久久久| 久久天天摸| 极品丝袜无码| 男人亚洲91首页在线| 欧亚在线视频| 日韩欧美俄罗斯A片| 日逼逼免费看| 久久透逼视频| AAAA欧美日韩| 久久伊人最新网址视频| 网友自拍第一页| 久久久精品,3| 久9综合在线| 蜜桃久久久久久久久久久久| 欧亚不卡| 97国产精品国| 嗯嗯啊好大| 欧美天天综| 淮穴色AV| 五月婷久久| 日本肉体xxxx裸交| 人人摸人人叼| 天天日天天干天天整| av网站在线看| 人人性爱视频免费| 午夜电影在线观看无码专区| 欧美强奸乱能| 精品久久久久久中文| 亚洲国产精品99久久久| 一起草三级AV电影在线观看| 超碰色综合| 久久精品国产欧美日韩亚洲欧美日韩中文久久国产一区 | 日韩美女操b| 18禁精品网站在线看| 日本国产高清色www视频在线| 丁香婷婷九月| 91在线美女| 91精品丝袜久久久久久无码人妻| 人人妻天天做天天爽| 国产精品白丝www| 97碰久久| 波多野结衣先锋影音| 天天躁日日躁AAAXX| 精品一区二区啪啪啪| 精品国产一区二区三区久久久蜜臀| 男人的天堂VA在线| 熟妇女伦乱视频| 99亚洲精品| 国产成人精品日本视频| 97视频7| 四虎免费视频| 欧美在线永久天堂| 99综合网| 国产成人无码a| 久久国产乱子伦精品免费女人| 成人av动漫在线观看| 夜夜操av亚洲一区二区| 成人情色综合网| 天天干天天操天天操夜夜操天天操 | 秋霞一级A片黄色视频| 日韩精品在线观看网站| 中文字幕91综合| 欧美性天天影院| 97在线免费观看视频| 日韩不卡毛片Av免费高清| 999久久久久久久精| 中日韩久久久免费看| 国产精品露脸在线观看| 97超级久久强资源| 干b网| 国产v片在线免费观看| 天天综合网站| 97资源站国产精品| **一级毛片国产| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 青青草原av| 密乳AV免费观看| 嗯嗯,啊啊,国产精品| 9久9久| 最新中文字幕av| 熟妇色99| 亚洲激情av| 97免费视频在线观看视频| 亚洲密乳AV| 亚洲伊人久久精品狠狠在线| 蜜桃久久一区二区| 玖玖在线视频| 啪啪视频免费在线观看| 偷窥自拍亚洲色图| 亚洲国产一级黄色视频| 大香蕉伊人网WWWn0n| 亚洲天天更新| 日韩乱码Av| 91熟女网| 欧洲综合视频| 色屁屁影院www国产| 欧美熟妇乱码在线一区| 欧美岛国精品在线观看| 美女裸体麻豆天美蜜桃91| 精品欧美不卡在线播放| 成人久久精品| 91三级理论片播放器| 亚洲欧洲久久天堂| 五月丁香啪啪啪| 91九色丨风韵犹存| 夜夜狼人妻| 秋霞色色影院| 日日A∨| 欧美亚洲尤物久久| 99精品无码| 99色热| 0755午夜福利视频| 99自拍B亚洲| 国产AAAAAABBBBB| 狠狠色一区二区中文字幕| 插穴性爱视频在线观看| 国产精品日日摸天天碰| 久久人妻97久久久久久久| 久久狠狠色噜噜狠狠狠狠97| 久久久久久久久久久久黄色 | 玖玖蜜臀资源网| 美女极品一区二区三区| 人妻人久久精品中文字幕| 天天色播| 日韩欧美亚洲自拍偷拍| 成人欧美日超碰| av天堂5| 久草免费在线视频| 美女黑人91神马| 日本三级日本三级99| 伊人91| 亚洲蜜臀懂色| 久久亚洲婷婷| 国产极品粉嫩馒头一线天av| www.成人无码| 白丝AV网站| 尤物一级在线免费观看| 日本韩高清无砖码22o| av麻豆啪啪| 亚洲国产欧美中文永久| 国产51色综合久久免费| 老女人综合网| 91AV国产精品| 亚洲一区二区三区麻豆传媒| 久久美女福利是上海美女| 翔田千里AV无码秘 三区| 日本熟妇色熟妇在线视频播放| 亚洲日韩AV视色| 中文字幕亚洲热播人妻| 亚洲 无码 偷拍| 蜜桃AV天堂| 插老姨肥穴| 亚洲 日韩 欧美 国产综合体| 国产毛片久久久久久久| 欧美日韩啪啪电影| 日韩三级在线观看网站| 日韩熟女精一区二区三区不卡| 欧美日韩亚洲五月天婷婷| 91久久精品国产| 一区二区三区精品视频| 夜夜嗨一区| 夜夜一区二区| 日本123区操B视频| 日韩少妇一区二区三区| 亚洲精品毛片在线观看| 午夜福利国产欧美日韩夜夜| 偷拍 亚洲 欧美| 久操| 青青草久草AV| 亚洲欧美中文一区二区三| 人妻一区二区三区熟女| 欧美色交| 日韩欧美~中文字| 91少妇香蕉久久精品| 色盈盈影院| 麻豆精品久久久久久久| 九九成人| 国产精品肉丝自拍| 少妇蜜汁| 九一综合精品视品av| 久久久久久久一级黄色打同平台| 夜色五月天| 依人大香蕉| 9l视频自拍9l九色成人| 人人色97| 亚洲影视综合网| 久久久久成人蜜桃精品| 色欧美天天| 中文高清一区二区的| 另类综合另类| 国产农村妇女精品一| 熟女中出视频| 欧美色图 人妻| 久久熟女久| 啊啊啊啊啊啊啊在线| 欧美极品少妇| 日日玩天天干| 操逼网站网站| 国产亚洲精品农村妇女| 亚洲精品第一| 欧美色五月| 91丝袜美女| 91丝袜激情在线| 射丝袜大香蕉| 亚洲熟女av中文字幕| 夜色91| 51国产午夜精品视频| 95自拍视频在线观看| 免费作爱一级视频| 婷婷色综合| 91大神电影天堂| 白 大 人妻 区 在线| 蜜桃臀久久| 2017天天插| 激情小说日韩无码| 国产九九九九九九九九| 青青草九九九九九| 超碰夫妻97| 亚洲欧美激情小说| а√天堂资源官网在线资源| 国产AV无码AV| 伊人大香蕉在线| 热久久国产精品视频大陆精品| 精品欧美日韩在线观看| 91色人妻| 五月天激情婷婷| 欧美一区二区情色| 亚洲校园激情| 天天躁日日躁AAAAXXXX国产 | 日本久久久久久久久| 欧美亚洲AN| 中文字幕一区二区三区四五区| 尤物网站91| 综合久久欧美| 婷婷另类小说| 国产 日韩 欧美一区| 天天色播亚洲综合网站| 色诱avtt| 91亚洲高清| 天天天天天天天天天天干美女| 91亚洲不卡一区| 在线观看啊啊啊啊啊| 无码高清操逼网址| 艹我哪美一区无码| 丝袜视频网国产90| 亚瑟国产精品久久无码| 欧美性猛交美女自慰91| 我要色综合网站| 欧亚成人| 草蕉影视亚洲无码| 亚洲天天做日日做天天谢日日| 97婷婷色| 97久操| 在线观看日韩av不卡| 午夜毛片高清免费不卡| 呦呦影院| 免費人妻夜夜爽天天爽爽一区| 91熟女丨91老女人| 9 9精品一区二区三区| 208天天久久九九九| 国产极品99热在线播放69| 亚州乱码中文字幕综合久久久| 亚洲人妻精品一区二区| 亚洲高清在线| 黄色成年| 天天干天天做| 色臀AV| 中文字幕在线日亚州9| 国产av色网| 综合久久欧美| 中韩中文字幕在线观看| 久久婷婷五月天| 欲色综合| 9九九九九视频在线观看| 99av| 好淫网一二三视区| 久久精品国产亚洲5555| 少妇人妻精品| 九九干| 久久久久久少妇| 美国一区二区免费视频| 91精品在线播放| 91粉嫩萝控精品福利网站_精品影音先锋国 | 蜜区区视频79 | 激情婷婷丁香网| 高清无码国产亚洲| 欧美日韩1234| 青娱乐蜜桃臀AV色婷| 在线欧美69V免费观看视频| 嫩草影院永久在线制服丝袜| 日本在线视频导航| 91老熟女| 午夜福利区| 国语国产操逼伊人AV网| 久久久久国色αv免费观看| 大香蕉亚洲中文| 99精品国产户外露出| 国产九区| 五月丁香网站| 久久久久亚洲三级电影| 很狠操| 日日干日日| 手机午夜电影神马久久| 日韩特一级久久| 一本一道人妻久久一区二区三区| 无码高清国产AV| 农村少妇久久久久久久| www.高清无码诱惑一区.com| 97色婷| 岛国A V在线免费看| 久久人妻少妇| 不卡超碰护士AV在线免费播放| 日本成人A片免费看| 一本大道青青| 亚洲诱惑| 秋霞 色色| 九九综合九九综合| 天天综合色| 日本1区2区不卡视频| 日产成人久久| 久久25| 亚州AV无码国产精品| 亚洲欧美人妻| 骚鸭AV| 啊啊啊啊啊在线视频| 婷婷色影院| 久久精品久久九九精品| 亚洲欧美高清| 深夜激情 | 亚州欧美总和| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | 欧美精品久久久久久久久88| 2017av无码免费无线播| 漂亮人妻被强中文字幕hd| 久久一二三四五六七八九区区| 欧美日韩m| 国产AV高清AV无码| 天天视频综合在线观看视频| 永久免费av无码网站国产app| 黑人无码一区二区| 熟女乱伦A| 人妻色偷色噜| 国产女人视频三四五区| 欧美高清16| 97久久国产亚洲精品超碰热| 亚州色图片在线色| 97精品综合久久网| 91新在线欧美| 激情图片亚洲色图| 九九英色视频| 撸撸成人在线视频| 超碰1024久久| 日韩精品操少妇| 亚洲永久AV无码精品秋霞| 狼人综合婷婷激情四射| 黑丝少妇麻豆| 91新在线欧美| 精产国品一区二三产品| 啊啊啊97视频| 中文字幕超碰CAO| 性生活久久久久久久久久| 伊人久久国产免费观看视频| 熟妇熟女一区二三区| 精品久久久久瑟瑟| 一区 欧美 日韩 麻豆| 国产怡红院| 亚洲欧美色综合| 99热导航| 亚洲男人天堂2| 后入福利| 色综合天天爱去电影网| 超碰免费人妻在线| 少妇高潮流水av免费| 久久成人国产精品| 免费作爱一级视频| 久/久精品99看9| 五月天色图影视| 中文字幕 一区二区 亚洲无码| 97久久精品亚洲中六字幕| 97免费视频网| 男人天堂久久精品不卡| 欧美激情 亚洲色图| 大色综合| 国产亚洲精品农村妇女| 婷婷色婷婷| 在线观看十八禁| 91久久堂| 91精品久久久久| 国产色图乱伦| 国产福利小视频高清在线观看| 99re视频在线播放青草| 91天天综合网| 欧美一区二区三区蜜桃| 四虎AV在线观看| 欧洲亚洲人妻无码中字久久三区四区| 四虎影视永久在线观看精品免费网站 | av网站国产主播在线| 国产精品久久久久亚洲av| 91一起操| 综合天天网| 久久久久久十| 隔壁邻居波多野结衣中文字幕 | 神马久久啊啊| 嗯嗯啊啊啊好爽| 国产一区二区三区免费视频在性观看| 操屄不卡视频| 一区二区三区蜜桃成人撸久久东京热 | 新视频sss国产| 98久久超碰| av日韩国产一区二区| 亚洲夜色在线| 中文字幕一二三av| 超碰无码加勒比| 五月天婷婷久久| 使劲用力艹少妇视频一区二区| 欧美天天搞| 亚洲古典另类欧美在线| 狠狠搞 亚洲91| 嗯嗯不要视频| 成人三级片无码| 99久久综合| 一区二区三区不卡视频| 蜜桃无码AV一区二区| 无码久| 色欲久久久久综合网| 五月天婷婷久久| 91亚洲丝袜| 欧美激情 日韩精品| 色97欧美| 亚洲av乱伦色图网站| 欧亚成人在线视频| 综合av社区| 爱爱动态120秒| 91精品人妻一品二品三品| 51一区二区三区| 久久久久久久久久久久黄色 | 99自拍视频在线| 精品人妻伦一区二区三区久久| 国产一区二区三区久久久精品| 亚洲中文制服诱惑| 国产精品九九九| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 亚洲欧美综合网| 亚洲 欧美日韩 另类| 碰超人人在线一区二区三区| 少妇人妻好深太紧了vr91| 色狠人在线99| 欧美一二三级精品在线| 91伊人大香蕉| 秋霞成人一级在线观看| 国产乱人妻精品入口| www.91人妻.com| 免费网站观看www在线观| 亚洲成人精品在线一区| 欧美永久激情一区二区| 手机看片日韩人妻| 中文字幕文字幕无码一区二区三区电影99| 美女视频尤物网在线看| 亚州欧美一区| 在线无码操| 日本二区不卡| 国产又粗又又黄又猛| 麻豆AV一区二区| AVE乱伦| 国产青视频| xxx0国产在线播放| 天天综合网~91| 男人的天堂啪啪| 亚洲一区二区三区春色| 国产乱人妻精品入口| 偷拍自拍在线视频观看| 欧美亚州综合网图片| 久久久蜜桃一区二区三区| 日本不卡二区| 亚洲熟女乱综合一区二区三区| 日本一级二级三级网站| 九月伊人中文字幕| 97国产天堂岛| 欧美特大黄一级片片免费| 风韵犹存大大大大香蕉 | 国内外内射高清视频| 欧美亚洲AN| 色小视频蜜乳| 成人精品在线免费视频| 日日噜噜夜夜久久亚洲一区二区| 二色av| 日韩精品色呦呦| 欧美日综合| 伊人国产av| 偷窥自拍A片| 亚洲中字幕日本一区二区三区 | 近亲乱伦一区二区| 熟妇色99| 色亚州人久干视频在线观看免费版 | 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 97超级久久| 无码直播久久久| 4tube欧美女厕所| 欧洲Au麻豆| 日本免费亚洲欧美| 亚洲无无码αⅴ每日更新| 天天欧美97| 日本999精品视频| 97色婷| 插穴性爱视频在线观看| 国产一区二区二区按摩精品啪视频| 国产精品久久久久久久免牛肉蒲团 | 91neishe| 日韩去日本高清在| 久久久久免费看少妇A片特黄| 青青草好吊色| 日韩青久久| www.高清无码诱惑一区.com | 日韩图色| 久久精品成人一区二区三区蜜臀 | 日韩av电影成人在线| 少妇三p| 久久久久人| 东北女人| 9热9热综合网| 国产人妻精品久久久一区二区三区 | av黄图片在线观看| 欧美日韩亚洲天堂| 97人人色| 夜夜爽夜夜摸夜夜操免费视频| 日han少妇无码| 97人肏| 屌逼麻豆| 97色婷婷| 91久久久久久| 韩国黄色片精品久久久| 日本熟妇人妻中出视频| 久久av一级av少妇av高潮| yazhousetuoumei| caorenqi shipin| 超碰99热| 色综合久久久久| 五月婷婷激情网| 一级啊性爱在线视频| 亚洲人妻中文高清| 国产成人免费观看在线视频 | 男人的天堂三级| 加勒比久久av| 超碰到97情色| 麻豆天美AV传媒第一页| 久久华人网| 淫穴高潮色图| 性欧美第一页| 麻豆熟妇乱妇熟色A片在线看| 97在线播放| 欧美九九九| 伊人91| 91欧美大片| 伊人专区一区二区三区| 国产亚洲精品美女久久久| 日韩精品国产一区二区| 岛国视频免费在线观看| 国产精品午夜高潮呻吟久久av| HEYZO高无码国产精品227| av片在线观看免费播放| 丁香五月色情| 久久精品亚洲婷婷| 99啪啪| 成人精品水蜜桃久久久久久久| 超碰97.com| 男女国产精品| 澳门黄片一香蕉视频| 嗯啊视频免费在线观看| 成人性爱全视频观看| 天天拍天天操| 97高清啪啪| 狠狠爱AV| 热99re69精品8在线播放| 四虎午夜影院| 精品性爱一二三区| 先锋精品av色鲁| 一区 欧美 日韩 麻豆| x97av| 亚洲有码视频二区| 欧美日韩精品久久| 午夜九九| 天天日天天操天天射河南省| 欧美大香蕉同搞| 99热9| 色超碰综合| 亚州性色| 日韩无码黄色片| 人妻啊啊人妻啊| 日韩精品9区| 97爱亚洲| 白嫩国模丰满一二三区| 美女露胸露奶头| 中文字幕无码不卡啪啪| 蜜臀无码视频在线观看| 岛国片在线观看视频亚洲| 欧美激情 日韩精品| www.久久超碰| 爽极品影院| 久久国产三区| 国产丝袜高跟美女av免费观看| 2024年最新色情网站在线观看| 在线v中文字幕一区二区三区| 日韩紧密久久| 久久久999国产| 天天摸夜夜添无码小视频| 久久精品小视频| 亚洲区限制级 99| 国产超碰AV在线精品| 99国产人成精品| 亚洲乱熟女一区二区| 老司机深夜18禁污污网站| 日本一级一级一级一级| 99热日| 成人无码在线超碰网| 性欧美另类高清| 久久精品无码熟妇一区二区三区视频导航 | 日本好吊色视频| 激情小说日韩无码| 天天欧美色| 日韩99999| 无遮挡猛进视频免费无限观看| 精品人妻一区春色| 青青免费在线视频一区| 有码免费观看| 精品九九九| 亚洲精品九九九| 色婷婷九月| 2020中文字幕在线| 岛国艾薇凹凸视频天堂| 伊人aaa| 强奸乱伦亚洲第一页| 欧美一二在线| 精品日韩人妻视频| 自拍盗摄一区| 亚洲欧洲日本精品中文a∨| 欧美熟妇乱码在线一区| 色在线视频导航| 97精品国产97久久久久久户外免费| 久久97精品久久久久久久不卡| 亚洲激情久久| 久久超碰97| 91人妻超碰| 99人妻碰碰碰久久久久禁片| 欧美激情视频一区二区三区不卡| 蜜臀无码视频在线观看| 熟妇熟女一区二三区| 国产在线综合福利网站| 免费人人搞97| 超碰国产精品久| 97久久国产亚洲精品超碰热| 国产精品三级视频网站| 午夜欧美精品久久久| 婷婷五月天补不补| 在线日韩精品一区二区三区| 无码人妻丰满熟妇奶水区毛片| 自怕偷自怕亚洲精品| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 日本不卡高清视频| 免看60秒涩涩视频| 亚洲丝袜二区| A级片日韩欧美国产欧美视频精选观看 | 六九九九| 欧美一区二区三区互相| 亚洲色图伊人网| 久久精品美女一区| 久久男人的天堂| 美骚妇av高清在线| 1769精品一区二区三区| 美女91在线| 久久久久亚洲精品| 久久久999国产| 花野真衣| 天天做日日做| 97资源站国产精品| 亚洲情色一区综合| 欧美黑人精品一区二区| 久久精品黄色| 东京热不卡视频| 婷婷综合| 欧美性爱91| 国产搭汕a级片| 欧美美女在线高潮999| 国产一级黄色片在线观看| 婷婷爽人人婷婷爽视频| 啊好爽快点-国产一区二区三区撒尿在线-成人AV| 国产无马视频| 亚洲av青草久久一区二区| 日韩视频小说在线观看| 五月综合视频| 岛国视频一二三区| 国产精品白丝| 少妇高潮喷水无套久久久久久| 精品少妇一区二区三区免费观看| 国产精品无码av嫩草| 屁股久久久久久久久久| 欧美青青草视频| 久久久久久久久久久久久9999| 色爱三区| 黄色人人| 白嫩少妇| 亚洲熟妇白浆无码AV| 亚洲另类色图片| 激情五月综合网| 久久久亚洲高清不打码| 狠狠操,使劲操| 人妻丝袜一区二区三区在线| 青草视频人妻在线观看| 密臀在线免费观看| 五月丁香啪啪| 五月丁香社区婷婷日韩欧美精品影院| 亚洲欧洲中文日韩女优乱码| 中文字幕在线免费观看 | 久久婷婷六月综合| 国产欧美岛国精品一区 | 中国黄色特级精品一区二区三区片| 青青草在线视频人人想人人上| 丁香五月电影| 日韩av不卡在线观看| 午夜视频好爽啊| 国产精品无码成人精品| 熟女丰满人妻一区| www.超碰在线| 国产麻豆一级精品视频| 一牛影视成人片免费| 国产成人无码a| 成人精品无码| 日本女人久久久| 色淫网站优优视频| 97精品全部| 欧美日韩人妻精品一区二区三区| 视频在线中文字幕| 色网综合网| 天堂资源站| jiujiujiujingpin| 香蕉免费一区二区三区不读| 91国产美女丝袜足交精品视频| 国产精品午夜成人福利| 亚洲免费日韩在线一区二区| 日韩av熟女一区二区三区成人| 婷婷国产精品九区| 色婷婷在线视频精品导航| 一区黄二区黄| 亚洲AV资源| 美腿丝袜偷拍亚洲欧美| 亚洲少妇激情视频| 精品无码久久久久| 欧洲大香蕉| 在线观看啊啊啊啊啊| 小电影欧美91| 天天日夜干| 亚洲麻豆av一区二区| 欧美日韩国产一区二区小黄片大全| J?P?NESEHD熟女熟妇伦| 日韩无码精品综合久久| 一线黄色免费性爱片| 99久久久er直播网址| 性爱1区| 欧美午夜精品久久久久久3D| 日韩99999色| 日本欧美色| 四虎免费视频| 97天天| 奇米四色网| 熟女人妇一区二区三区| 9久久精品| 青青青操| 欧美久久人妻少妇一区二区| 91综合天天看| av三级电影在线播放| 亚洲欧洲综合成人av一区| 性爱精品一区| 亚洲色图在线视频| 青女在线| 国产成人五月天丁香花| 激情五月综合开心五月| 亚欧成人中文字幕一区| 另类图片五月天| 婷婷情色五月天| 2020天天色综合| 欧美一区二区男人天堂| 日韩 欧美 视频 在线 一区| 97色色婷婷| 97免费视频网| 久久久久久欧美精品se一二三四| av优播| 大香蕉在线SuP| 操逼操逼操| 欧美东京热精品A∨| 欧插网站| 欧美高清在线| 精品国产Av无码久久久伦古装| 97人人操人人摸| 在线观看十八禁| 超碰是碰在线观看| 亚洲欧美高清无码| 国产欧美一区激情交| 日韩三级在线观看mp4| 97超级久久| 日韩Va亚洲va欧美Ⅴa久久| 殴美牲| 人妻喷水| 成全在线观看免费观看| 人妻加勒比东京热| 日韩人人精品| 国产美女自拍AV| 欧美亚洲玖玖玖| 日韩中文字幕精品一二三事国产精品| 一起草三级AV电影在线观看 | 大香网伊人久久综合| 金典av| 亚洲欧美日韩制服另类| 丁香六月婷婷久久综合| 久久精品中文字幕女同| 国产午夜福利电影免费在线观看 | 夜夜春夜夜操| 成人aⅴ一区二区三区| 少妇诱惑视频| 最近二区三区视频大全| 一级免费啪啪片| 亚洲熟女偷拍在线观看| 五月天久久综合网| 伊人久久国产免费观看视频| 啊啊啊草死我| 69人妻精品一区二区绯色| 欧美性少妇| 国产精品一区二区三区,亚洲综合| 美女91在线观看| 欧美成人性爱视频在线播放| 91爱综合| 国产女人视频三四五区| 大奶啊啊好爽 | 亚洲国产欧美日韩人妻日中文| 欧中美三级一区二区三区| 日韩性爱小视频在线观看| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 国产精品噜噜噜日日日| 色狠狠色| 91N综合网| a在线视频免费观看| 干b网| 狠狠干狠狠色| 无码二级三级| 狠狠综合网| 男人亚洲91首页在线| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 国产欧美精选自拍一区| 亚洲色图欧美另类在线| 国产精品无码av嫩草| 91无码人妻| 精品一二三区久久AAA片| 久久久久久中文| 婷婷午夜| 亚洲欧美人妻| 国产农村妇女精品1区二区| 91色人妻| 99后入| 91九色在线| 欧美资源| 亚洲综合影片| 丝袜剧情| 欧美色亚洲色| 91在线色综合| 人妻无一区二区三区| AV中文字幕剧情1区2区3| 久久精品亚洲成a人天堂| 熟妇人妻精品一区二区| 久久女人视频| 亚洲囯产精品女人久久久| 久久影视二区三区行押| 色色色网站| 大香蕉乱级| 另类欧美| 97精品一二区| 欧美日产国产在线成人第一区| 天天干1区2区在线| 6080yy午夜理论三级一区二区三区无码| 欧美日本成人一区二区| 亚av顶级裸体一区二区三区四区五区| 国产亚洲禁久一区二区| 99re98| 欧美人人天天网| 99无码| 人人潮人人摸| 伊人超碰97| 久热久| 嗯啊不要在线观看嗯啊| 黄色电影在线播放综合网站| 久久有码视频| 青青草精品| A久久| 视频黄色国产一级| 久久久久久久九九九九| 欧美日韩亚洲电影| 一道本久久棕合爱| 日韩欧美综合激情| 中文字幕三四区| 嫩草91| 99精品网站| 日韩一级二级| 日韩人妻中文视频| 亚洲欧美一区二区网址| 色原狠狠天天天| 色天堂综合| 东京热激情视频一二三区| 欧美日韩操逼动图| 2017av无码免费无线播| 天天操天天干美女网址导航| 伊人国产视频| 啊啊啊啊啊啊在线看| 在线视频日韩欧美国产| 精品国产无码中文| 国产福利合集| 色老大| 91在线国产后入风骚翘臀美女素人| 中文字幕乱碼在线| 麻豆人妻精品一区二区| 午夜福利成人免费视频| 欧美性爱日韩性爱| 男女日B国产| 天天综合网网欲色| julia国产在线 | 日韩精品一区二区日韩| 欧美激情久操网| 亚洲a色| 蜜区区视频79| www.acm成人黄色毛片| 综合91网| 性爱欧美五月| 四虎国产成人精品免费一女五男| 欧美少妇大量自拍视频在线观看| 可以看的av| 日本色色色| 日韩成人电影AV| 欧美综合天天| 嗯啊抽插大香蕉网页| 最新日本中文字幕| 啊啊啊啊啊啊啊啊视频| 亚洲中文字幕av| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 天天影视之亚洲综合网| 使劲用力艹少妇视频一区二区| 欧美综合色站| 密臀在线免费观看| 日本淫色网| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 欧美在线啊啊| 亚洲男人天堂手机版| julia国产在线 | 国产精品久久久久综合| 天天精品| 再深点灬舒服灬太大了好硬好爽| 少妇特黄一区二区三区| 97色伦97色伦国产欧美| 无码99| 性色AV网站| 色女99一级片在线观看| 亚洲日韩精品久久久久一区壹牛 | 日韩av电影成人在线| 婷婷国产精品九区| 国产精品4p在线观看| 亚av顶级裸体一区二区三区四区五区| 婷婷在线视频在线观看| 中文字幕AV片|