色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合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
返回資訊列表
国产精品禁久久久精品| 日韩精品在线观看网站| 91老熟女老女人国产老太| 日本一区二区三区精品| 欧美乱色| 国产精品农村妇女| 少妇人妻精品| 国产熟女精品区| 人人摸人人舔一区二区| 综合亚洲网| 超碰99re| 国产熟女完整版中字| 97香蕉碰碰人妻国产欧美| 无码又爽又硬又激情免费视频| 九九色精品| 久久一二三级一一一| 精品国产久久乱码| 91精品网站| 成人aⅴ一区二区三区| 欧美中出1| 91视频国品一二三区| 大香蕉综合网| 不卡在线观看视频| 六九九九| av网站免费线看| 国产一区二区a毛片| 有码人妻系列| 人妻精品一区二区全免费| 久久粉色| 亚洲人妻中文高清| 男人天堂日日夜夜| 丰满人妻一区二区三区色-百度| 久久riav中文精品| 91女人的网站| 鸥美中出| 熟女精品一区二区三区| 插插综合网天天影视网| 婷婷中文网| 欧美天天综合站| 国产精品露脸在线观看| 玖玖爱综合| 中文字幕精品探花视频| 婷婷色一区| 男人的天堂VA| 天天影视网综合少妇| 久久久四区| 亚洲 综合 欧美| 综合欧美亚洲| 中文字幕免费看大片| 91影库| 懂色av色欲av蜜臀av| 欧美亚洲成人在线一区二区三区| 粉嫩av久久一区二区三区| 国产一区二区三区中文字幕| 久久超碰免费的| 午夜视频好爽啊| 亚州色国| 亚洲国产高清福利视频| 日本 欧美 国产一区| 一摸二插三插| 亚洲欧美大| 另类欧美色| 久久AV无码网址| 91+欧美| 国产精品视频自拍在线| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 在线无码网站| 91国产大片| 噜噜吧,噜噜色,噜噜| 一二三区精品视频| 色娱乐色呦呦夜夜夜夜av| 成人八戒网站| 日本一天色道久久久精品视频| 亚洲国产一区二区三区四区国产| 日本不卡一二区| 国产污视频麻豆传媒一区二区 | 亚洲色情在线影视| 国产精品女同| 男人的天堂在线| 亚洲图片色图欧美另类| 婷婷激情四射| 久久午夜色播影院免费高清| 亚洲精品久久一区二区三区蜜桃臀| 超碰九7| 亚洲天堂男| 91N综合网| 99综合自拍| 免费一级欧美片片线观看| 曰韩欧美国产传媒麻豆第一区| 欧美1727免费观看视频| 野狼激情网| 日韩亚洲国产视频| 99热只有这里有精品| 久久啊啊| 人妻少妇精品| 啊啊啊免费| 精品97久久| 乱操9999| 亚洲欧美内射| 综合性视频99| 亚洲校园激情| 国产天天噜一噜久久久| 97射欧美| 99999国产精品| 九色黄站| 操婢日韩| 久久欧美性爱视频| 95人妻爽爽人人做人人澡 | 欧美一区二区三区互相| 欧美性爱第1 页| 天天草天天日| 精品国产一区二区三区四区在线看 | 亚洲第一二区另类图| 秘书高跟黑色丝袜国产91在线| 亚欧中文字幕在线视频| 偷拍偷窥与盗摄视频专区| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 亚av顶级裸体一区二区三区四区五区 | 一级片在线观看高清无码| 18禁免费视频| 97久久久| 97色碰| 美女啊啊啊啊啊啊啊| 亚洲男人天堂网久久| 九九九九精品一区| 风间由美日韩欧美久久| 人人操人人插 - 百度 - 百度| 日韩操逼HD| 亚洲综合小说另类图欧美视频激情小说色五月天 | 91老司机在线视频免费观看 | 少妇无码av专区线| 999在线电影香蕉| 97超碰总站| 91精品久久久久| 久久久亚洲高清不打码| 综合熟女| 亚洲大色鬼| 欧美一区二区男人天堂| 国产福利第一视频| 蜜乳av一区二区三区四区不卡| 日韩成人网址| 久久久久久久久成人av解说| 99在线免费观看| 久操99| 日韩一级片在线看| 成人av福利在线观看| 大香蕉伊利av| 亚洲精品欧洲精品| 91天射| 亚洲国产丝袜在线观看| 国产天美传媒精品| 男插女青青影院| 婷婷另类小说| 欧美色图另类图片| 久久久久亚洲AV无码专区少妇| 中文字幕一区二区三区字幕| 激情啪啪拍91| 理论久久婷婷网 8| 日本五十路在线| 日本不卡在线二区三区| 密乳AV免费观看| 你懂得91| 劲爆欧美人妖三区91| 久操国产在线| 久久香蕉影院| 91美女视频在线| 男人精品区| 色伊人91| av线电影| 2019久久久久久久久福利| 激情五月婷婷| 综合亚洲欧美| 91久久精品国产| 丁香五月天婷婷姐| 深夜激情 | 人人摸人人干| 日本高清加勒比| 乱伦3P视频| 97频视在线| 无码精品久久| 国内毛片国产专区二| 大香蕉色十月| 在线观看无码三级少妇| 国产精品久久久九九九| 国产www色在线观看| 超碰97导航| 99re公开精品免费视频| 97久精品| 91伊人大香蕉| 国产日韩欧美亚洲精品95| 极品后入免费视频| 蜜桃视频成a人v在线| 熟人人妻少妇精品久久| 天天舔天天 | 综合五月婷婷亚洲一区| 97爱啪| www.91色综合| 台湾一区国产高清在线| 四虎884a| 夜夜躁狠狠躁日日躁av| 超碰在线香蕉| 极品肉射| AV高清一区| 97在线精品观看视频| 欧美性五月| 日本三级久| 爱av免费| 夜夜操美女| 精品超碰色| 97久久精品国产| 91黑丝露脚| 日本黄大片在线观看视频| 在线小视频| 亚洲AV资源| 激情综合久久| 操逼网站视频漫画国产| 欧洲黄色网| 久久大黄片| 欧美天天影院| 一区二区三区四区五区久久久久久| 九九久久久九九| 极品丝袜无码| 亚洲一区二区麻豆影院| www.婷婷| 国产高清1234区| www.久久| 国产馆极品诱惑| 免費黃色視頻觀看一| 岛国激情视频在线观看| 无码黑人精品一区二区三区三| 欧美乱伦专区| 欧美日韩啪啪电影| 亚洲第2页| 九九九九免费| 黄片qw| 日韩性爱播放| 女人一区| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 翔田千里AV无码秘 三区| 国产白丝网站| 东北少妇高潮zzzz| 久久久久久亚洲中文| 日韩欧美亚洲自拍偷拍| 国产日韩精品人妻久久久久色欲网站| www.久久最新地址| 又大又白奶子| 老鸭窝黄色视频网站| 青青操视频在线| 国产白丝精品在线观看| 性爱网站一区二区| 这里只有精品视频在线| 中文字幕免费看| 玖玖久久久| 国内精品a| 成人网址在线观看| 97视频900| 91女色| 内射夫妻三片| 欧美99热| 久操频道免费在线呗看| 激情综合网五月婷婷五月天| 97电影院超碰| 肉丝中文无码高清| 国产成人精品必看 | 91人妻人人澡人人爽人人精品| 欧美十八禁导航成人| 国产精品一区二区三区在线密挑| 欧美日韩亚洲少妇寂寞影院正在播放 | 国产日比| 亚洲自拍欧美国产首页网曝| 久久久久久久精| 国产亚洲精品av一区| 丝袜熟女2P| 加勒比色99999| 成人激情无码在线视频| 亚州操操穴网| 亚洲欧美黄| 91一起操| 91精品网站| 丁香婷婷啪啪| 国产又粗又长又大的视频| 久久性爱网站| 一区二区播放| 婷婷AV一区二区三区| 国产熟妇一区二区| 园内精品自拍视频在线播放| 诱惑人妻欧美一区在线播放| 伊人一级免费黄片| 日日夜夜骚| 97日韩欧美| 久操婷婷| 精品国产乱子伦一区二区三区,精品一 | 国产福利精品最新在线| 98福利在线视频| 国产成久久综合片| 热天堂一区二区| 美欧色综合| 国产在线视视频有精品| 少妇久久久免费| 太久视频| 天天大干大香蕉| 日韩精品在线视频在线观看| 日本999精品视频| 四虎精品永久在线播放| 嗯啊免费视频| 欧美的性爱网站免费| 熟妇熟女一区二三区| 少妇久久久| 欧美78p| 日本一道在线播放高清| 91美女视频在线| 久久国产免费激情视频| 亚洲伊人久久综合97| 亚洲夜色在线| 日韩字幕一区| 国产欧洲精品亚洲午夜拍精品| 国产AV久久野战精品| 亚洲人久久久网| 国产福利影视| 亚洲人妻中文在线视频| 青青草一区二区三区四| 韩国一区二区精品亚洲| 国内偷自视频区视频综合| 91男同| 东京热亚洲一区二区| a片久久久久久久久久久久| 久久99手机免费视频| 日本五十路熟女一区二区| 久草电影网| 日韩情色视频| 亚州操逼网| 欧美色狠| 亚洲九九视频| 1区2区3区中文字幕日韩| 无码高清专| 诱惑网综合| 1204av韩国| 婷婷综合久久| 干干干天天| 99热在线播放| 舔舔啊| 天天摸天天插天天日| 在线观看中文av字幕| 91处女在线观看| 天美传媒av在线| 五月天丁香欧洲日韩| 久久精品国产亚洲AV高级北京| 狠狠爱综合网| 中日高清无码操逼视频| 中文字幕日韩专区精品系列| 精品免费囯产一区二区三区| 国产自产22区| 色综合99999| 看黑人AV不卡| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 噜噜噜在线视频| 精品传媒在线一区| 我爱操| 夜夜综合| 欧美色天堂网在线视频| 久久9久9久99久9久9| 一级性爱啪啪视频| 国产福利一区二| 欧美精品庄| 98超碰日本| 久久亚洲熟妇在线视频| 97色在线观看| 99re6国产精品99re在线| 亚洲综合九九| 99热综合| 五月天激情小说| 极品色www影院| 女人喷水视频在线观看| 黄页网站免费高清在线观看| 欧美经典一区二区三区| 乱伦AVxx| 免费黄色A片| 亚洲高清国产理伦片| 日本免费人成视频播放120秒| 国产高清亚洲日韩一区| 秋霞Av理论一级在线| 五月天亚洲色图| 99re视频这里只有精品| A级国产欧美激情在线| 国产91亚洲精品一区二区三区| 国产福利合集| 国产午夜福利专区综合| av天堂精品久久| 亚洲欧综合另类无码一区| 天天综合网日韩7799| 伦伦成年午夜免费视频| 欧美亚洲日本视频久久久| 秋霞蝌科网日本一区| 岛国在线一区二区三区| 国产做?爰片久久毛片?片美国| www国产天美久久久| 另类小色呦| 欧美性爱另类综合| 啊啊啊啊一区| 天堂精品小草| 综合亚州欧美| 97爱爱| 亚洲免费成人在线高清无码视频| 91快色色色色色| 免费综合亚洲中文| 欧美一区91大爱| 熟女一区二区| 久欲AV| 久久精品区| 国产精品白领在线观看| 极品尤物自安慰| 久久久婷婷| 污到发麻的视频 国产| 亚洲天天影视综合网| 女人18精品一区二区三区| 亚洲欲色| 午夜精品探花| 日韩一区二区熟女| 久操频道免费在线呗看| 一个国产在线综合网站| 日本三级黄页| 道久久五香丁月婷婷激情综合| 大香蕉日韩| 大香蕉www.超碰| 国产激情综合五月久久| 精品九九九九九九九九九| 78m成人视线| 欧美黄色片在线播放| 国产 三级自拍| 69AV女优男人的天堂| 在线情色电影 91大| 欧美日韩中文字幕人妻| 欧美顶级黄色大片免费| 夜夜操av亚洲一区二区| 大逼色网站| 干干干天天| 天天摸天天插天天日| 欧美日韩精品青青| xxxx网站亚洲精品| 亚洲色图 欧美热图 清纯唯美 另类自拍 | 亚洲自拍偷拍视频在线| 爱射综合| 天天在线91| 日韩偷拍一区二区三区 | 综合网 欧美| 欧亚性爱视频免费看| 干b在线性社区| 老熟女网站| 亚洲黄色影视| 日本二区不卡| 1769精品一区二区三区| 亚洲成人妻日韩在线| 亚洲欧美综合| 天天插天天舔舔天天干| 91亚洲情色| 亚洲黄色影视| 伊人性在线视频| 操逼操逼逼操操逼91| 91黑丝美女| 日本中文字幕不卡视频 | 91久久免费视频互動交流| 91视频国品一二三区| 插插综合网天天影视网| 超碰人人超在线观看| 99精品久久久久久| 黑人操一区二区| 黑人精品久久97| 福利操逼| 91无摭挡| 欧美精品999| 99在线精品观看视频中文| 午夜理论片在线观看免费| 人妻少妇精品久久久| 18禁中文字幕| 九九九只有精品| 天堂种子在线www网资源| 久久9精品网站| 在线国产一区二区av| 成人开心网在线视频| 欧美日韩国内不卡| 诱惑网综合| 99自拍B亚洲| 一区二区三区高清天码| 97国产伦理| 亚洲成av人片色午夜乱码| 精品国产99999| 老鸭窝亚洲毛片| 免费观看成人www精品视频| 91偷拍欧美亚洲| 亚洲精品性爱片| 亚洲国产青青| 色色综合网站| av网站国产主播在线| 天天摸夜夜操视频| www国产精品| 99久久无色码| 婷婷五月天激情网| 91香蕉国产尤物视频| 91+欧美| 日韩视频啪啪| 欧美999| 东京热精品97综合网| 日韩女模中文造逼| 亚洲伊人成综合成人网| 91老熟女老女人国产老太| 99久久久无码国产精品性男| 亚洲在线| 亚洲做性| 黄呦呦在线| 亚洲天堂,男人| 免费黄色片。| 亚洲视频精选| 中国熟女91| 日韩在线女优天天干| 蜜乳AV一区| 亚洲一二三四区| 亚洲宗合网| 狠狠躁AV| 亚卅熟女乱色| 日本欧美韩国国产在线| 99热这里只有精品18| 蜜臀久久久国产| 加勒比大香蕉视频在线| 凹凸视频在线观看伊人| 丁香七月婷婷| 伊人九九| 婷婷五月天色网| 欧美性,色九九| 久久九九99| 日韩人妻 中文字幕| 亚洲av性爱电影| 农村少妇久久久久久久| 久久久久久久综合,国产| 亚洲aw毛茸茸在线| 日韩无码嘿咻黑热久| 免费啪啪啪网站18岁| av网站在线观看了| 91精品微拍福利| 亚洲开心网| 东京太热男人的天堂久久久| 安微少妇操BBB| 国产在线精品电影观看| 国产白丝在线| 国产熟女二区| 在线有码中文字幕| 国产精品盗摄 偷窥盗摄| 日韩在线国产字幕| 97干97色| 国产强奸乱伦无码视频| 国产高清自拍| 青娱乐休闲视频在线观看| 欧美激情精品| 亚欧美色| 精品人妻中文字幕高清| 日韩欧美性爱电影在线观看| 试看60秒 爽| 91美女网站| 国产 日韩,欧美 自拍| 精品少妇999| 超碰97色| 日本性爱欧美性爱| 国产福利在线视频网站| 欧美成人性爱视频免费观看| 亚洲二区精品在线观看| 曰韩成人免费视频| 婷婷五月天久久久| 98色网| 大香蕉综合| 欧美大香蕉97| 极品色电影院| 全国男人天堂网| 躁躁躁日日躁2020| 成人羞羞视频国产| 草草影院日本第一页| 无码操逼网| 日本精品一区二区中文字幕| 婷婷丁香六月| 欧美色997| 日本精品久久久久久久| 亚洲色图日韩丝袜制服一区二区五月在线| 狠狠爱夜夜| 黄色片A级一区二区三区| 久久成人午夜精品影院 | 天堂精品| 欧美综合天天| 亚洲日韩美女中文字幕乱| 综合久久婷婷| 99精品网站| 亚洲久久天堂| a片在线播放| 成人午夜小视频手机在线看| 青青草视频久久| 精品一区二区三区四区女| 美女上床网站| 人人操人人干xxx| 色哟哟511老熟女| 欧美1727免费观看视频| julia中文字幕在线观看| 啊啊啊啊无码| 性爱视频无打码在线观看| 亚洲色久| 亚洲宗合网| 91操熟女| 五月婷婷AV| 99久久综合| 五月丁香色色网| 狼人综合婷婷激情四射| q2午夜理论片夜色av| 九九九九精品九九九九| 伊人久久在线视频观看| 欧美日韩国产传媒在线精品| 久久久91福利姬| 丁香婷婷五月| 人妻嗯啊啊在线播放| 亚洲日韩熟女人妻高清在线| 国产品精品自在在线午夜免费| 爽 好舒服 无码刺激久久| 二对二中文字幕。| 射久久| 无遮挡猛进视频免费无限观看| 67914在线精品观看| 亚洲图片欧美偷拍| 久久性爱城| 成熟熟女国产精品一区二区| 99婷婷一区二区| 啊灬啊灬啊灬好深灬快高潮了动漫-国产字幕国产在线观看-B049AV | 久9爱经典视频| 永久免费av无码网站国产app | 欧美天天| 亚洲精品视频二区| 亚洲天天天| 成人免费福利网站国产| 亚洲国内精品成人不卡| 无码区蜜乳| 九久久九精品视频| 97视频在线| 91在线页| 久久久久久久97| 99无码精品| 青青久久艹| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 亚洲蜜桃V妇女| 久久久久久久久久久久欧美日| 午夜无遮挡男女啪啪视频| 亚洲最大的黄色电影网站。| 日韩强奸av| 青青色综合| 日韩少妇丰满亚洲| 亚洲无码太久| 国产地址二三| 秋霞免费AV| 黄久久| 97干在线视频| 欧美日韩在线小说 | 91狠狠综| 欧美一区二区日韩传媒搭讪精品| 欧美极品美女aaaaaa级黄片| 欧美白嫩女HD| 亚洲AV性爱电影| 一本一道久久综合久久| 婷婷色综合| 欧美色999| 久久久久久91香蕉国产| 黄片色区软件| 欧美在线电影| 国产传媒日本欧美专区| 天天色天天干天天射| 人妻少妇精品久久久| 亚洲日韩美女中文字幕乱| 九九人妻| 精品久久久九九九孕妇| 亚洲久久久久| 超碰 另类 欧美 | 欧日韩在线观看| 亚洲无码久久久久久久| 欧美热图99| 亚洲无套久久嗯嗯| 国产无码精品高清| 黑人粗大V S日韩女优视频| 欧美一级黄片免费播放| 综合久久2017| 精品97久久综合| 操B在线观看| 成人性交免费视屏| 91在线欧色| 都市久久精品激情亚洲| 精品9999| 偷拍 亚洲| 不卡av在线中文字幕| 亚洲AV色图一区| 麻豆天美久久91| 免费一级性爱久久| 青青操日韩| 精品一区96| 免费在线观看国内色片网站网址 | 亚洲第一页色| 欧美一区二区三区入口| 青青青青青手机视频| 亚州再线| 深爱激情五月天| 日韩av不卡在线看| 亚洲色阁| 风月影院男女十八禁| 人妻天天夜夜爽一区二区| 九九精品99| 国产熟女无套内射| 亚洲综合射| 婷婷国产精品九区| 婷婷伊人| 久久精品国产亚洲AV高级北京| 97亚洲综合| 日韩av在线免费网站| 啊啊嗯嗯好爽| 色综九九九一区| 亚洲第91页 | 国产91丝袜 在线播放| 一区二区不卡| 久久久久久久极品香蕉视频| 国产亚洲精品自在线亚洲情侣| 日韩性爱免费观看视频| 国产熟女无套内射| 久9久9久9久9久9久9| 久久精品天美| 91狠婷| 婷婷激情综合网| 看一级特黄a大一片| a亚洲欧美色欲| 欧美天天综合网| 97精品在线视频| 日韩本不卡视频在线观看 | 久久久久久一日韩字幕无码| 国产无码精品成人| 性色AV蜜色av色欲av| 三久久久四久久久久| 久久系列| 青青色在线观看| 免费国产视频| 人妻天天爽天天爽三区| 日本成人在线不卡一区二区三区| 四虎免费在线观看| 色婷婷国产精品一区在线观看| 天天久久| 国产精品人妻免费精品| 欧洲特黄毛片免费看欧洲毛片| 国产一国产一级毛片古装| 九九九九久久久| 东北老熟女| 国产AB视频| 最新av在线| 116美女午夜| 91无码中出人妻视频| av网页一区二区三区| 成年人三级黄色片视频| 久久精品国产亚洲AV清纯| 乱性AV| 中文字幕第9页萱萱影音先锋| 丝袜综合网| 极品粉嫩少妇视频| 午夜丁香| 香伊人在线| 久久 国产 无码| 911av网站免费观看| 国产午夜激片Av毛片不卡| 亚洲精品性爱片| 麻豆60秒| 欧美婷婷五月天| 欧美色亚洲| 女欧美一区二三区| 日本免费专区| 99操99| 欧美另类色| AV色天香在线| 殴美,日韩国产伦精品| 麻豆天美国美国产AV| 动漫片子网站3黄| 亚洲丝袜B诱惑| 欧美爆操91| 日夜精品| 国产精品嫩草影院午夜两性| 天天操夜夜嗨| av中文在线| 5252色欧美在线| 国产乱弄免费在线视频。| 韩国国产欧美情侣视频在线| 四虎免费在线播放| 欧美不卡五十路| 在线观看岛国有码| 农村妇女一级二级三级视频| 91色五月俺来也| 久久精品一区二区三区蜜桃臀| 午夜欧美精品久久久| 精品国模无码| 熟女人妻一区二区三区| 精品久久99| 欧美激情精品久久久| 欧美乱欲| 日韩不卡毛片Av免费高清| 色一射色一射| 97伊人| 国产精品一级特黄aaa大片在线观看| 99热思思| 久久熟女嫩草成人片免费| 亚洲性爱乱操x| 蜜桃视频精品一区二区| 久久久久久久综合,国产| 久久精品 六十路 熟女 欧美| 97综合在线| 大屁股国产在线视频| 一级做a爰片性色毛片久久| 丁香六月综合激情| q2午夜理论片夜色av| 在线综合 亚洲 欧美中文字幕| 欧美日韩色图片| 欧美最婬乱婬爆婬牲视频| 变态乱伦伪娘灌肠一区二区| 毛片17S| 野狼福利社区| 二色av| 亚洲双插| 亚洲一本大道中文字幕无码在线| 97超级欧美| 欧美 精品国产制服第一页| 一区二区日韩欧美久久| 老鸭窝在线视频播放| 91久久精品中文字幕| m欧洲一级午老| 久久免费少妇| 国产日本熟女顶级一区二区三区视频| 妇女一区二区三区| 99精品网| 东京热天堂网| 久久人妻四季| 国产自制av蜜乳| 欧美亚洲激情小说| 少妇久久| 亚洲一区二区三区麻豆传媒| 翔田千里A片一区二区| 黄页18禁| 日韩av在线精品观看| 啊啊啊啊啊操我视频| 日本潮催一卡操| 精品小视频在线| 操逼不卡中文字幕| 欧美综合自拍亚洲综合图| 人人摸人人叼| 蜜屁av| 国模限制级电影| 日本国产亚洲一区在线观看| 人妻大相焦在线| 欧美一区二区三区另类精品| 97视频新免费| 色色综合网站| 亚洲97在线观看| 欧美亚洲丝袜美女电影| 俄罗斯一区二区视频在线观看| 欧美日韩精品国产91| 成人网站 免费观看| 婷婷人妻激情| 日本天堂网| 成人性爱av.com| 欧美少妇高潮| JULIA人妻风俗店中出电影| 香蕉热人人精品| 色777999综合| 天天肏美女| 欧美一级久久久久久久大片动画| 天天综合网合集91| 志村玲子视频一区二区| 操操操五月天婷婷丁香影院| 超碰97欧美日韩| 欧美九9 9 9| 久久久一区二区三区三州| www.acm成人黄色毛片| 亚洲有码 欧美精品| 精品午夜福利国产一区二区在线观看 | 亚洲中文字幕久久无码精品| 大香蕉碰| 操逼1区| 精品人妻一区二区三区日产乱码| 欧美久久婷婷| 丁香婷婷色五月| 国产精品福利视频播放| 0755午夜福利视频| 天美精品一区二区三区四区在线观看| 大地资源在线观看中文第二页| 亚洲精品97| 后入式999| 综合久欧洲| 丁香五月性| 成人性爱视频在线看| 亚州一区二区| 亚洲区限制级 99| 久久av色| 中文字幕高清20页视频| 丰满人妻无码一区二区三区| 国产后入| 久久精品国产99久久,亚洲日韩久久日本一区一区三区 | 国产sv美女内射| 91超碰碰在线| 日韩二三区| 99精品在线观看| japan日本高清乱xxxx| 欧美色网| 操熟女91| 久热精品在线| 99re热| 97视频620| 精品熟女一区=区三区| 91久操| 日韩亚洲Av人人夜夜澡人人爽| 久久精品 六十路 熟女 欧美| 高颜值美女口爆高潮浪叫| 先锋音影AV| 成人老鸭窝人人在线视频| 性吧在线视频| 六月色色| 日韩国产中文字幕| 中文字幕123| 亚洲啪啪视频一区二区| ,成人免费啪啪视频| 草草电影院| 激情小说亚洲| 欧美96精品在线| 精品日日人妻| 精品美女少妇一区二区| 亚洲干B| www.人人摸在线视频| 啊啊啊操死我了| 91在线丝袜| 久久超碰天天| 91在线丝袜| 国产久9| 国产深喉| 91操熟女视频| 亚洲 欧美综合| 干B网| 亚洲男人天堂av| 97免费视频在线观看| 啊啊啊好想要| 国产1024在线播放| 乱伦一二三区| 欧美日韩另类在线播放| 精品毛片av一区二区| 少妇无码av专区线| 免费看A片毛毛片在线播| 手机在线人成免费视频| 抽插无码高清一区| 九九99久久| 91精品电影18| 日日骚 av| 久久99草| 色香网| 美女啊啊啊啊啊| 欧美国产精品久久九九| 摸奶性爱视频网站在线免费播放| 1769国内精品视频| 岛国视频一二三区| 日本精品不卡一二三区| 婷婷五月天福利| 人人色人人射人人妻| 91爱看| 欧美肥臀在线| 欧美日本成人一区二区| 免费的黄片有限公司| 97欧美性爱| 综合熟女| 欧美老妇女内射网址| 少妇丝袜在线观看AV| 亚洲天堂资源在线| 黄色片A级一区二区三区| 天天操夜夜操狠很操| 看日韩操逼| 91大胆欧美| 亚洲视频一二区| 热热色国产一二区AV| 97免费在线观看| 精品成人动漫一区二区| 激情综合亚洲| 亚洲免费97免费| 亚春色色| 亚洲精品成人动漫在线| 青青草天天亲夜夜操网| 久久色一区| 久久华人网| 午夜啪| 5278欧美一区二区三区| 天天操天天射青青草| 另类专区加勒比| 好色综合| 麻豆这里只有精品| 少妇三P| 天美传媒AV在线播放| 福利视频一区二区微拍| 另类图片五月| 超碰欧美97资源| 熟妇xxxxx性春色| av天堂影视中文在字幕在线中文| 欧美成人色| 亚洲精品97| 国产成人无码久久精品| 超碰中文字幕人妻草一区| 欧美天堂在线| 日本午夜精品理论片A级APP发布| 日本中文字幕高跟| 九九久久久| 精品一区二区成人动漫| 试看福利| 26UUU欧美日本| 日日狠狠久久偷偷色综合免费| 国产1727欧美| 91搞逼视频| 精品人妻二区三区| 色香天天| 91狠狠综合久久| 欧美高潮| 91在线超高颜值国产| 麻豆AV一区二区| 91骚熟女| 夜夜操2028| 国产路线专区| 99自拍视频在线| 欧美性第1页| 中文字幕av亚洲在线| 九九九九精品一区| 第四色奇米影视777| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | 亚洲欧美日韩精品久久久一区二区| 男人天堂久久日韩| 久久久久久久免费A片国产成a人亚洲精∨品无码| 久9视频| 好色美女九七第一页| 国产福利影视| 超碰97人人乐| 国产成人在线观看综合| 哑洲在线| 婷婷五月色| 久久色精品视频在线| 99热成人| 亚洲情色综合| 91丝袜美腿网站| 亚洲精品免费中文字幕| 一区二区三区日韩欧美| 乱伦熟妇一区二区| 加勒比综合九九99视频在线播放| 狠狠久久手机视频精品| 78p欧美| 国产一区二区三三视频| 91久久堂| 亚洲av影院在线观看| 97在线日韩中文字幕| 另类专区在线观看| 超碰97综合| 91啪9色| 国产成年女人免费视频播放a| 伊人久久久日韩一区| 青娱乐国产盛宴视频| 久久9999 | 97超碰总站| 再深点灬舒服灬太大了好硬好爽| 久久久555| 麻豆 欧美 日韩| 综合伊人激情| 久久精品视频一区三区小泽玛利亚| 美女国产一区二区久久| 国产又粗又长视频| 国产高清1234区| 午夜一级免费毛片| 在线观看啊啊啊啊啊| 欧美成人9797| 欧美一区二区福利在线| 国产亚热在线久久| 口爆综合网| 亚洲综合另类小说色区亚洲成av人片在www| 欧美 亚洲 综合 制服 另类| 99热这里是精品| 欧美成熟性爱精品| 超碰是碰在线观看| 蜜臀av一区二区三区免费观看| 日韩在线欧美精品一区二区| 色婷婷一区二区三区久久午夜 | 思思热一热婷婷热一热| 色婷婷成人| 另类亚洲一区二区三区| 超碰久草| 亚洲瓯美色图| 97综合在线| 国产精品久久久久久久AV大片 | 啊视频在线| 激情天天视频| 久久九九97| 亚洲AV不卡在线观看尤物| 婷婷伊人綜合中文字幕| 一区二区三区高清天码| 九九九九精品精| 天堂综合| 激情图片亚洲色图| 一起草AV| 操逼不卡中文字幕| 天天干人人看综合| 久久久久久久久9| 秋霞一区二区三区四区五区六区七区| 婷婷五月天色| 综合免费无码中文| 国内偷拍精品一区二区| 蜜区区视频79| 无码久| 日本美女性生活久久久久久久| 日韩去日本高清在| 国产人妖的免费的视频| 天天综合官网| 久久久神马影院| 久久国产精品熟女人妻| 欧美亚洲综合色| 免費黃色視頻觀看一| 亚洲欧美综合区自拍另类| 人妻三级在线中文字幕| 国产一线二线三线av| 99热18这里只有精品| 这里是精品| 久久一二三四五六七八九区区区| 欧美强奸乱| 久久精品中文字幕观看| 日本在线观看网址| 欧美天天弄| 啪啪啪综合| 9久9久| 国产日韩中文字幕欧美| av东京热男人的天堂| 欧美老妇女内射网址| 97亚洲国产影视| 91亚州日韩高清| 色色色色色色色色色色色色色色综合 | 亚洲人妻av| 操美女高潮抽搐白浆| 免费啪啪啪网站18岁| 亚洲美女自拍偷拍视频| 93人人操人人| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 成人乱码一区二区三少妇| 日韩色欲久久一二三四区| 国产精品美女久久久久AⅤ国产馆| 极品综合| 特级特黄一级毛片免费| 国产探花日韩援交| 免费观看国产小粉嫩喷水精品午| 人人摸.人人色| 国产 日韩 欧美高清| 黄片com.| 色香色欲天天综合网天天来吧| 中文久久爆乳| 99热最新网址| 午夜精品久久久久久久男人的天堂| 99在线免费观看| 九九热九九热| 九月AV| 在线情色电影 91大| 人妻素股| 婷婷性网| 日韩在线国产字幕| 九九视频黄色片|