日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满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| 97精品中文字幕| 99精彩视频| 999精品国产高清一区二区| 色777999综合| 99国产精品免费| 插日本熟女视频| 在线视频97| 亚洲精品97p| 亚洲 欧美 中文 日韩超碰 | 久久99视频| 91大神精品长腿在线观看网站| 日本人妻最新在线中| 亚洲偷拍欧美激情| 欧美成人色| 国产精品青青草| 欧美一级色| 26uuu性物| 丁香九月婷婷| sewuyueav| 精品人妻一二三四区视频| 超碰 另类 欧美| 日韩人妻操B| 精品一区二区三区蜜桃臀赵总| 欧美日韩性爱无码| 国模吧 一区二区三区| 人妻一区二区三区视频| 中文字幕国产在线天堂| 色激情综合网站| 国产91美女视频| 国产丝袜啪啪| 欧美中文综合| 思思久热在线精品66| 国产一二三在线视频五十路| 粉嫩AV一区二区夜夜| 国产夫妻性生活视频| 大但人体久久久久| 人妻熟妇一区二区三区| 色逼综合| 日韩熟女精一区二区三区不卡| 久男人久久| 亚洲91射| 懂色Av一区二区三区| 成人九九| 三上悠亚在线毛片91| 伊人骚琪琪亚洲天堂网站| v91av| 九九亚洲| 成 人片 黄色大片| 把腿张开老子CAO烂你| 人人射人人操人人摸| 日本一区二区成人在线| 久久伊人大香蕉| 色婷婷影院| 97色色视频| 亚洲综合888| 色综合久久夜色精品国产天堂| 少妇色综合| 丁香7月婷婷| 3P丝袜熟女 色综合| w w w.久久精品| 国产乱伦亚洲色图高清无码| · —级AA伦aa坐爱午夜极速ⅴA一区天天噪天天噪天天噪 | 天堂蜜桃无码视频一区二区| 亚洲欧洲无码97久久精品| 亚洲色图加勒比| 夜夜嗨av午夜成人| 熟女久久久| 神马麻豆福利院| 免费日韩黄片| 97视频在线免费看| 夜夜青青无码影院| 五月亭亭六月丁香| 综合色图区| 用力操死我| 天天综合麻豆视频| 精品视频一区二区| www.色操逼| 国产女上位好爽在线| 亚洲熟女乱色一区二区三区久久久| 天天爽入口| 夜夜草我| 日韩精品国产精品五码一区二区| 日韩淫色网| 亚洲影视第一页| 99精品丰满人妻无码| 亚州色图第三区| 97超碰超欧美。| 一区二区三区不卡视频| 日本色色的视频| 97超碰色屌| 男人的天堂99| 成年人一级黄色毛片大全在线观看| 丝袜美腿诱惑亚洲欧美视频在线观看| 人妻内射一区二区在线视频| 性天堂| 亚洲欧洲综合视频在线| 动漫av中文| 午夜在线播放| 久久欧美性爱视频| 啊好爽快点-国产一区二区三区撒尿在线-成人AV| 黑白配性爱AV成| 欧美日韩*字幕一区| 国人欧美精品一区二区| 97视频新免费| 中文字幕亚洲永久精品| 97精品在线| 国产又黄又爽又刺激久久久久久 | 一道本东京热加勒比一区二区三区 | 少妇精品| 色色综合网站| 大香蕉草草| 成人乱码一区二区三少妇| 天天综合香 ld视频| 综合欧美亚洲| 国产熟女| 国产成人一级av88| 亚洲色91C| 精品中文字幕第一页| www.欧精品| 久艹日日日| 日日夜夜干| 干少妇视频| 久久国产99精品72福利 | 日本不卡三级网在线播放| henhen91| 人妻精品综合中文字幕在线 | 国产传媒操逼视频| 国产精品动态一区二区三区四四| 国产精品爽爽va在线观看98| 久久一区二区三区四区五区| 艳美熟妇先锋一二三区| 九九九精品成人免费视频小说| 日本一二区免费| 乱欲视频| 国产精品3| 中文字幕 国产区| 精品毛片av一区二区| 91狠狠综合网| 亚洲日韩欧美一区二区| 亚洲成a人在线观看久| 中文字幕一区二区三区蜜桃视频| 国产真实野战在线视频| 久久久555| 久久婷婷五月天| 欧美色图亚洲色| 看看小穴| 91动漫操逼视频| 久久久久女教师免费一区| 人妻少妇久久久| 蜜臀久久99精品久久久| 超碰97亚洲区| 九九热免费国产视频婷婷伊人五月 | 欧美18禁91| 草草网站影院白丝内射| 九九九九精| 大香蕉一人在线| 久久一区二区三区入口| 免费观看一区| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | www.99在线| 国产毛片片精品天天看视频| 综合97亚洲| 人人爱操| 亚洲日韩美国人妻| 国产深喉视频一区二区| 日产成人久久| 国产乱弄免费在线视频。| 操高情无码| 九九Av| 午夜视频黄| 欧美日韩精品久久久久东北老熟妇| 五月天婷婷综合网| 粉嫩绯色AV一区二区在线| 97天天综合| www.男人天堂| 极品白嫩福利在线| 激情四射五月天| 不卡中文字幕aⅴ在线| 人澡逼| 伊人精品视频| 区日韩亚洲乱码av电影| 97综合在线| 免费黄色片。| 国产午夜福利专区综合| 久久 精品| 亚洲中文丝袜美腿诱惑字幕| 东京热熟女亚洲视频网站| www.狠狠干.coom | 美骚妇av高清在线| 国产suv精品一区二区四区999| 伊人色综合网电影| 黄色欧美性爱视频| 欧美强奸乱能| 亚洲h片在线免费观看| 亚洲男人电影天堂| 超碰95| 熟女熟妇一区二区三四区| 青青草原香蕉日本Ap| 操逼短片| 91蜜桃传媒精品久久久一区二区| 97操综合| 亚洲AV色图| 国产伊人精品在线| 91久久婷婷| 啊啊啊啊好多水| 国产69精品久久久久99尤物| 免费的很黄很污的全部视频| 欧美日韩电影成人在线| 超碰97男女| 青青草久草AV| 插B在线观看| 亚洲精品黑丝| 一本色道人妻久久| 天天综合-91入口| 色欲久久99国产精品久久久久久| 男人天堂网址| 欧美十八禁视频| 天美传媒婬乱| 四虎国产精品永久在线囯在线| 亚洲欧洲成人在线电影| 先锋激情∨在线视频播放| 色在线亚洲视频www| 2019精品国产无码成人| 国产精品一级毛片不卡视| 亚洲蜜乳av| 中国一区二区亚洲人妻| 久久精品一区二区三区不卡| 60秒免费小视频| 久久色AV线| 国产中文字幕在线| 久久夜夜| 日韩图区 偷拍| 秋霞一级视频在线观看免费| 黄色高清久久无码依人| 91精品久久久久久77777| 九九九九97| 91久| 欧美一级久久久久久久大片动画| 国产97色在线| 亚洲综合码| 男人精品天堂一区| 欧美亚洲91| 九九视频黄色片| 国产树林里野战在线看| 嗯嗯啊啊亚欧精品| 欧美少妇高潮| 国产精品久久久久久久AV大片 | 五月花婷婷| 91人人看| 亚洲 日本 不卡| 国产精品人妻一区二区| 97九色人妻| 色九九综合AV| 亚洲一区日韩精品| 少妇免费视频| 国产夫妻性生活视频| 亚洲综合电影| 麻豆天美国美国产AV| 日韩美女高潮喷水视频| 综合第一页| 思思热影视| 日韩AV色图| 国产在线激情| 思思热影视| 中文字幕精品人妻丝袜| 四虎影视精品| 婷婷五月天基地| 麻豆国产成人精品| 性爱视频免费网址| 志村玲子视频一区二区| 啊啊啊久久久视频| 四虎影视永久在线免费| 婷婷激情一区二区三区俺也去| 综合大香蕉美。| 51国产午夜精品视频| 久久久999国产精品| 国产欧美岛国精品一区| 丝袜综合| 操国产逼| 玖玖97综合| 欧美日韩久久精品爱爱| 丁香色五月 97干| 亚州春色| 干干干天天| 天堂精品小草| 亚洲91在线播放影院| 1234区中文字幕在线观看_青青草国产在线_日韩一区二区 | 婷婷日韩一区二区三区中文字幕在线| 校园春色美腿丝袜 | 操高情无码| 伊人网在线观看| 国产一国产一级毛片古装| 精品国产精品一区二区| 国产精品对白自产拍| AV无码久久久精品| 中日韩久久久免费看| 国产精品极品美女视频| 91N综合网在线| 日本午夜操逼| 夜夜嗨一区| 综合网色| 久久九色| 97看操| 免费精品中文字幕| 九九九只有精品| www.超碰在线| 亚洲日韩美女丝袜美腿人妻视频| 亚洲 欧美 中文 日韩超碰| 欧美天天干| 无码人妻一区二区一牛影视| 日本一区二区三区午夜观看| 99操| 干婷婷综合网| 熟妇色99| 在线观看高清AV| 91熟女综合| 人人操人人大香蕉| 精品传媒在线一区| 国产人伦精品一区二区三区| gogogo免费高清看中国国语| 一本大道久| 久久,精品一二三| 青青操网| 天堂亚洲欧美| a人片中文字幕一区二区| 熟女人妻一区二区三区| 91国产操逼视频| 色老汉色| 欧美日韩丝袜| 影音先锋中文字幕日本好一区二区| 成人资源中文字幕在线观看| 高凊专区人人操| 污污汅18禁网站在线永久免费观看 | 欧美体内射精| 久久久久久亚洲精品中文字幕人妻| 7777奇米影视久久| 欧美性91| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 操久久久久久| www.99中文字幕| 五月天伊人网| 亚洲怡春院| 六月婷激情福利天堂69| 亚洲Av无码成人精品国产| 超碰97护士| 欧美成人一区二区| 91在线美女| 国产精品久久久久中文字幕| 亚洲日韩人妻中文字幕一区| 久久精品国产亚洲粉嫩| 亚洲欧美国产中文字幕| 丝袜熟女2P| 无码少妇精品一区二区60岁老人| 乱操乱伦AV| 99热思思| 天天视频黄网站| 麻豆国产视频精品观看| 成人性交免费视频| 九九九只有精品| 久久国产精品熟女人妻| 亚洲精品久| 午夜精品视频777| 国产女同视频在线播放| 乱伦一二三| 日本二三四区| 天堂网亚洲区手机版| 亚洲人久久久网| 青青草白白色| 日本黄色裸日本黄色裸体 | 美女诱惑久久| 伊色久人大在线| 天天躁狠狠躁av| 一区 欧美 日韩 麻豆| 操九九九九九九| 99免费视频| 五月婷婷基地| 亚洲AV成人在线| 人人妻人人狠人人| 精品毛片久久久精品毛片| 操逼www.| 亚州AV无码国产精品| 国产69精品久久久久99尤物| 欧美一区二区三区另类精品| 人人摸人人添人人操| 欧美日韩亚洲一区二区在线观看| 超碰国产精品久| 老熟女乱子伦中文字幕一区二区 | 超碰久久草| 97色色,97综合| 啪啪视频亚洲第一| 精品高清一区二区三区三州| 激情小说成人日本无码一| 国产成人精品无码久久| 日韩精品在线观看网站| 熟女精品一区二区三区| 久操99| 97超碰天天| 日日做夜狠狠爱欧美黑人| 亚洲人码13| 91精品国产91久久久久久久久久久久| 色色九区| 91大神精品长腿在线观看网站| 巨爆乳一区二区爆乳区| 5278欧美一区二区三区| 91人妻丝袜无码| 欧美老妇女内射网址| 超碰97欧美日韩| 96超碰网| 一级AV性爱| 强奸乱伦资源| 99青草| 强奸熟女一区二区三区| 亚洲女优有码无码高清| yaouchengrenav| 亚洲av综合色区图片亚洲| 国产精品香蕉热久久新品| 亚洲第一综合| 亚熟hd视频在线| 91国产丝袜白虎| 精品无码久久久久久久杏吧| 欧美一区二区三区蜜桃| 青娱乐av在线| 色69大色97香蕉| 久久亚洲AV无码白度| 中文人妻av高清一区| 亚洲图片偷拍视频区| 久久久久久久久久久久久久久性生活视频| 秋霞一区二区三区四区五区六区七区| 午夜噜噜噜| 国产强奸乱伦xd| 天天操天天插| 欧美色图片欧美色图| 亚洲欧美色图| 色情五月丁香| 校园春色宗合网| 精品人妻一区二区三区鲁大师| 免费日韩黄片| 暖暖精品二区三区观看| 啊啊啊水好多| 亚洲αv一区二区三区| 偷拍 精品另类 凸凹了四区| 夜夜免费视频| 激情抓乳插进去啪啪啪日韩| 国产青一二三| 麻豆成人影音在线| 婷婷九月色| 99re6国产精品99re| 日韩福利电影网| 一区二区娱乐网站| 青青草好吊| 韩国一级AAA| 人妻无码后入| 黄色免费网| 亚洲欧美精品一区天堂久久 | 欧洲性爱无码区| 超碰人人色| 久久骚| 国产东北女人在线视频| 鸥美插入视频| 精品一区二区国产日韩| 日韩在线视频1234| 97超碰色情| 9色在线| 高颜值美女口爆高潮浪叫| 无码人妻丰满热妇又大又粗| 亚洲 综合 第一页| 国产h片在线观看视频| 九一精品牛牛一区二区| 强奸乱伦 亚洲一区| 色女女女导航| dy888午夜老子影视达达兔| 激情网五月天| 天天综合网~91| 亚 欧 美 综合| 久久久久久久9| 国产免费一区二区三区最新不卡| 色欧美综合| 精品国产乱码久久久久久影片| 夜夜精品视频| 亚洲日本男人天堂网 | 欧美白嫩女HD| 一级aaaaa欧美中文字幕录像片| 欧美日本天堂| 秋霞曰韩R级| 欧美成97爱| 欧美有码激情视频一区二区三区| 懂色aV一区二区天美传媒| 久久精品免费| 激情网色| 91综合无码| 天天透伊人| 黄色AV免费| 日韩丝袜高跟制服在线观看| 大香蕉五月天婷婷| 思思热一热婷婷热一热| 中文字幕在线观看网页| 精品人妻中文字幕4399| 91激情综合| 色色五月丁香| 国产91会所女技师在线观看| 夜夜青青无码影院| 日本在线一二| 久久综合国产精品国产| 超碰4A| 久久9精品视频| 精品国产人成在线| 神马久久午夜| 亚洲综合伊人| 顶级少妇BT天堂| 秋霞免费AV| 久久 精品| 99只有精品| 三级三久久线久久99久目本WW| 精品综合久久久久久五月天| 四虎在线观看网站| 久久9精品视频| 亚洲一区二区精品福利| 尤物av网站免费在线播放| 免费超碰97久久| 一区黄二区黄| 国产成人精品日本亚洲语言| 亚洲天堂在线怕怕视频| 人妻精品一区二区三区| 麻豆国产成人精品| 91国产精品熟女| 五月天黄色激情视频| 国产精品 视频| 97超碰伊人| 国产一区二区三区,在线观看观看| 激情婷婷| 欧美精品日韩一区二区| 无码最新| 天天谢天天干| 秋霞Av理论一级在线| 亚洲国成人情色好看电影| 精品视频日日夜夜| 日本新免费二区三区| 91久久久久久久久久久| 天天视频综合在线观看视频| 综合久久久久久久久91| 欧成人精品一区二区三区| 加勒比海成人视频网| 亭亭丁香激情| 一道本久久棕合爱| 97福利视频| 国产精品无码在线| 乱论91| www.久久制服糖| 国产精品美女视频诱惑| 亚洲久9| 亚洲男人在线观看天堂| 97资源站国产精品| 99精品综合久久久久五月天| 激情文学 亚洲图片| 日韩丝袜高跟制服在线观看| 好屌色综合| 91美女在线视频| 精品国产一区二区三区久久久蜜臀| 骚货人妻偷情自拍在线视频| 亚洲日本成人动漫| 日韩欧美视频青青| 欧美三级不卡| 在线视频一区二区传媒| 日本黄色裸日本黄色裸体 | 蜜臀无码一区二区| 久久久一区二区| 天天综合网亚洲综合网| 精品久久久一本一道| 欧美啪啪天堂| 高清无码人妻久久久一区二区三区aⅴ| 色九九久九九| 久久久久久久唑| 欧美99999| 美女裸体无遮挡永久免费观看网站| 啊啊啊啊啊啊在线观看| 国产成人超碰在线| 国产自产自拍| 激情综合五| 亚洲一二三精品久久网| 亚洲欧美一区二区不卡视频播放| 九久久精品| 99re28在线观看| av影片在线观看不卡| 韩美日操逼| 在线看片国产精品每日更新| 色噜噜婷婷| 久久久久久久久久久久久9999| 99re在线观看| 97国产精选| 欧美日本成人一区二区| 操操逼操操逼操操逼逼| 九九在线精品| 中文字幕78| 九九九九亚洲| 最新岛国大片| 亚洲无码99| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 婷婷九月丁香| 啊啊啊好想要| 国产亚洲日本精品在线| 九九久久一区二区三区| 日夜尻逼网| 一级乱伦网站| 黄片不用下载在线观看| 亚洲AO在线| 91N综合网| 日本三级A片网站com| 超碰91在线| 97色涩| 久久9久| 看日韩操逼| 超碰 另类 欧美| aV中文麻| 国产www色在线观看| 熟妇女人妻呻吟久久AV| 天天干18禁| a天堂视频| 成人综合网 欧美| 另类欧美色| 伊人991| 麻豆精品一区二区三区四区免费观看| 日韩av影片在线观看| 天天天乱色综合全| 热99这里有精品综合久久| 国产AV高清AV无码| 加勒比伊人影院| 久久草草亚洲蜜桃臀| 嗯嗯啊在线视频| 亚洲成人在线资源| 乱伦AVxx| 国产精彩女在线观看视频| 欧美日韩插逼视频| 九九久久久九九| 好爽视频在线观看视频| 超碰99在线| 亚洲天堂一二| 久久美女福利是上海美女| 亚洲人码13| 干干干天天| 99只有精品| 尤物黄色在线观看网站| 日本东京热大香蕉a片| 欧美日韩国产一区二区小黄片大全| 99re视频在线观看这里只有精品| 婷婷10月天青娱乐| 爱射综合| 美女9118禁| 亚州国产精品乱| 美女诱惑久久| 欧美专区第一页| 色综合一本| 青青草在线视频人人想人人上| 九九九九精品九九九九| 久久9亚洲| 国内毛片热久久思思热| 日韩情色AV| 可以在线观看的黄色网址| 青青伊人加勒比海| 中国一区二区亚洲人妻| 208天天久久九九九| 牛黄色久午久| 大香蕉淫人| 99999久久久久9国产精品| 富女玩鸭子一级毛片| 少妇极品熟妇人妻无码| 韩国成人精品久久久免费看| 加勒比久久av| 五月婷婷深深爱| 日产操逼| 欧美精品久久| 97色婷| 国产亚洲色停停久久99精品91| 东北老女人的激情视频| 肉嘟嘟www视频在线观看高清| 四虎免费在线播放| 中文高清一区二区的| 一级性爱视频免费在线| 亚洲欧美综合网站| 淫妻综合网| 超碰在线欧美性爱激情| 91无摭挡| 蜜臀久久一区二区| 国产精品一区av在线| 免费男人的天堂| 97国产超湿| 国产精品自拍xxxx| 精品九区| 亚洲无限观看| 国产超碰国产97| 成人亚欧免费视频| 99re免费| 色色青青久久| 69AV女优男人的天堂| www.91逼逼.com| 青草成人免费视频一COm| 久久久久久久久久久久黄色 | 国产99999久久精品| 婷婷五月花| 性爱视频啪啪啪啪| 超碰97 线线 在现| 欧美 综合 亚洲| 9久综合网| 在线国产一区二区av| 26UUU欧美日本| 超碰色大香蕉| 裸体1区| 男人的天堂.com| 国产欧美日韩在线不卡第一页| 无码高清少妇久久| 天天综合~91| 色欧美在线| 99精品人人爽| 欧美日韩资源在线| 啊啊啊啊嗯嗯嗯用力好爽| 亚洲欧美国产成人综合不卡| 日韩欧洲操屄视频| 又大又大又大又粗爽高潮观看 | 在线强奷到舒服的无码视频| 亚洲色欲天天天堂色欲网女| 91骚熟女| 国产97亚洲| 高精欧美色| 1204人成网站色www| 青青草色插素人| 欧美少妇第一页| 韩国女主播青草福利视频| 九九热视频在线观看| 中文字幕在线日亚洲9| 大色综合网| 久久夜黄色无码A级大片| 狠狠色噜噜狠狠狠狠2018| av影片在线观看不卡| 综合色好色| 精精品人妻一区二区三区| 婷婷20月天青娱乐| 久久久女人| 男人的天堂kva| 在线洲亚线| 精品少妇一区二区| 精品熟妇视频一区二区| 超碰色美女| 亚洲图片小说欧洲| 欧美激情专区| 中文视频在线观看| 操国产高清| 秋霞一集毛片观看| 少妇熟女1区2区3区| 操逼网站网站| 五月丁香六月综合缴清无码| 日本成人免费一区二区三区| 99e久久国产精品| 欧美区亚洲区偷拍区| 韩三级a视频在线观看 | 婷婷15月天青娱乐| 亚洲日韩欧美一区二区| 高清孕妇孕交 交孕妇| 婷婷五月天色网| 亚洲欧美清纯| 成 人 A V免费视频在线观看| 99婷婷一区二区| 国产精品久久久久久久AV大片| 无码丰满熟妇一区二区浪潮AV| 超碰成人公开| 色小视频蜜乳| 啊啊啊啊啊啊啊国| 日本 免费 一区二区三区 久久香蕉 | 99这里只有精品| 日韩天美| 色超碰综合| 玖玖综合视频| 亚洲欧美天堂| av在线免费一区二区| 色色五月婷| 国产精品ww久久| 伦激情人妻另类人妻| 亚洲天堂人妻熟妇视频| 久久99久久99精品免视看婷婷| 污啪啪啪视频| 色超碰综合| 亚洲色电影在线| 高潮的A片激情扒开一区| 国产 丝袜 欧美中文 另类| 日韩pv中文| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 91 亚洲情侣偷拍 久久| 国语精品对白| av一区二区三区四区| av天堂手机版追回| 亚洲高清视频在线观看| 亚春色色| 五月婷网站| 黄页大片在线观看| 国产日韩中文字幕欧美| 少妇一级无码精品| 91日本在线观看| 亚洲情色在线| 综合 亚洲 欧美| 福利伊人玖玖国产| 日本中文字幕高跟| 少妇的嫩逼图片| 久草视频在线视频在线视频在线观看 | 操逼内射干逼白丝91| 亚洲色图欧美色18直播在线| 大香蕉视频一二三区| 亚洲色图大香| 91n.欧美| 国产精品自拍xxxx| 午夜天堂网| 天天综合网~91| 亚洲AV无码国产成人| 欧美色日本| 97超碰人人模人人拍人人| 久热9| 破处bbq| 人人看欧美性爱| 国产又大又粗又长视频在线| 校园春色 欧美| 丁香婷婷久久| 欧美日韩亚洲少妇寂寞影院正在播放 | 久久欧美性爱视频| 校园春色亚洲无码| 2017人人操,人人摸| 淫色网综合| 97色亚洲| 欧美大香蕉卡久久| 91另类| 欧美成人9797| 97精品一区二区三区免费| 日本污ww视频网站| 啊啊啊啊,啊啊好多水 | 青娱乐 青青青操 日逼| 精品在线观看视频在线| 黄色av播放免不| 国产男人又猛又粗又爽| 无毛精品| 久久久精品视频免费观看| 98福利在线视频| 日韩人妻中文视频| 中国熟女91| 黑人黄片在线免费观看| 一区二区播放| www.99在线| 欧美性夜| 91女在线观看| 欧美成人A√在线一区二区| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 亚州高清色综合| 国产综合网站在线播放 | 国产午夜福利专区综合| 一区| 性做久久久久久久| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 天天综合~91| 国产精品久久久久绯色| 蜜乳视频网站| 亚洲精品 欧美精品| 亚洲图片欧洲图片aⅴ| 天美传媒精品久久视频| 久久亚洲不卡| 国产日韩手机视频在线| 中文字幕诱惑制服人妻丝袜美丝袜美| 日韩av不卡在线观看| 久久婷婷成人综合色怡春院| 中文字幕91综合| www亚洲免费| 久久精品女同亚洲女同13| 六月丁香五月婷婷| 国产乱伦搜索结果91P| 91总综合网| 五月天黄色激情视频| 美女9118禁| 色五月天AV| 一级免费啪啪片| 国产色图乱伦| 国产乱码久久久久久| 91久久婷婷| 青娱乐福利99| 日日AAvv| 久久久久久大| 色爱三区| 乱伦熟妇一区二区| 白嫩白嫩的午夜九久久久久久久久久久久成人剧场 | 国产一级片| 久久无码一区二区二三区性色| 亚洲成人妻日韩在线| 狠狠干狠狠色| 成人97人人超碰人人| 99超碰网| 欧美亚洲美少妇一区二区| 色五月首页| 草莓精品视频在线免费观看| 亚洲天堂资源在线| 日本中文字幕一区| 91n美女视频| 极品尤物在线观看| 中文字幕在线观看永久| 五月天激情小说| 99久久久无码精品国产人| 97久久国产精品女不卡| 嗯嗯嗯啊啊啊干死我吧| 丁香五月天婷婷姐| www超碰| 久操视频资源站公开| 日本高清免费一本视频在线观看| 91操熟女视频| 九九九九九精品十六| 久操高青| 97电影院超碰| 日本 欧美 国产一区| 亚洲欧洲综合av在线| 亚洲av青草久久一区二区| 97国产精选| 色情婷婷久久五月天| 在线视频五十市| 国产精品对白内射| 人人乐大香蕉| 可以看的av| 中文字幕在线日亚洲9| 一区二区三区免费岛国片| 少妇一级婬片免费放一级a性色.| 亚洲国产综合视频| 夜夜躁狠狠躁日日躁av| 少妇高潮一区二区三区在线| 另类欧美| 91欧美巨乳| 久久人妻无码毛片A片麻豆| 精品然女一区二区| 一级黄碟在线观看| 欧美白嫩女HD| 久久精品72| 大吊色| 国产精品色哟哟| 亚洲精品欧洲精品| 91久久久视| 蜜臀99999| 亚州中文字幕超碰97| 亚洲精品天天影视综合网 | 色婷婷成人综合| 国产天天骚| 激情文学 国产一二三aV| 一区久久久二区| 色婷婷成人综合| 日日A∨| 好屌色综合| 91无码人妻| 性感美女啊啊啊在线| 2019男人的天堂| 蜜臀99久久精品久久久久久| 国产精品一区二区麻豆| 四虎AV在线播放| 97天天| 欧美视频一| 久久精品国产亚洲AV高清演员表| 少妇啪啪自拍| 色yeye成人免费视频| 人人射人人操人人摸| 亚洲中文一区二区三区视频| 欧美精品999| 99精彩视频| 在线女人91| 国产亚洲精品美女| 久久成人精品| 亚洲综合九九| 国产高清吃奶免费视频网站| 国产中文精品一区二区在线观看| 黄aaaaaaaaaaaaaaaaaa色网站| 超碰诱惑| 人人爱人人乐人人操| 青草草免费网站av| 在线啊v一区| 神马视频久久久久久| 亚州色国| 国产嫩草精品A88AV| 日本精品五区| 黑人操一区二区| 免费观看欧美日韩操逼视频| 日韩天堂av电影在线观看| 天天天天做夜夜夜夜做| 97伦综合| 成人自拍三级在线观看| 东亚亚洲无码高清| 欧美日不卡| 嗯嗯嗯啊啊啊干死我吧| 亚洲男人天堂2017| 眼镜人妻101.com| 伊人久久婷婷| 久久超碰免费的| 男人天堂毛片| 无码区蜜乳| 婷婷五月天在线观看| 丝袜天堂| 国产精品在线免费| 芊芊操逼视频无码| 久久免费中文字幕在线观看| 亚洲黄a三级三级三级看三级| 97亚洲中文| 乱伦3P视频| 六月丁操逼| 天天干嫩逼网| 国语对白在线播放视频| 成人熟女视频一区二区三区| 9美女超碰在线免费观看| 黑人美精品 A片| 九九九九九九九精品视频| 天美传媒av在线| AVE乱伦| 亚洲五月丁香花狠狠干一区二区三区 | 国产午夜无码片在线观看影视| 美女啊啊啊啊pc| 亚洲a色| 黄片在线免费在线观看| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 天堂成人网| 亚洲aV无码成人在线观看| 精品一久久久| 襙一襙| 91在线欧色| 精品传媒在线一区| 91一起操| 2020天天色综合| 啪一啪免费视频| 亚洲人久久久网| 国产高清精品一区二区三区毛片 | 久久精品国产亚洲5555| 丁香五月影院| 99超碰碰| 丁香婷婷久久 | 欧美,日韩综合久久| 精品视频专区| www.亚洲黄色| 97欧美精品综合| 日本一区二区亚洲综合| 99中出在线| 成人精品无码| 神马视频久久久久久| 神马久久久久久| 日韩pv中文| 牛牛AV人人夜夜澡人人爽| 国产视频一区二区在线观看| 色吧91| 欧美成人精品一区二区三区| 操国产逼| 超碰中文字幕人妻草一区| 8x福利精品第一福利视频导航| 久久久穴999| 国产女人和拘做爰视频| 老司机免费视频在线91| 欧美综合娱乐久久| 欧美熟女丝袜| 亚洲国产午夜真人一级片中文字幕精品黄网站 | 操东北女人| 青青爽| 欧美激情视频在线一区| 狠狠夜色午夜久久综合在线| 亚洲阿v天堂无码z2018| 国产1727欧美| 秋霞一级视频在线观看免费| 天天综合91入口| 综合色图亚洲欧美| 熟女激情综合网| 不卡一区视频| 色爱国产| 3PAV乱伦视频| 超碰综合色| 亚洲国产欧美中日韩成人综合视频| 欧美色吧综合| 白丝1区2区3区| 欧美成人四级在线播放| 日韩干B| 啪啪91| 亚洲毛片一级带毛片基地| 日韩内| 久久av网| 乱伦系列一区二区| 91情色| 手机av亚洲丝袜美腿日韩第一页二页| 国产亚洲综合欧美一区| 百度百度日本操逼| 日韩 女同 综合| 少妇高潮99p| 思思热在线cao| 欧美性暴力猛交| 亚州高清色综合| 亚洲少妇喷视频看| 日日插夜夜| 国产精品一区二区密臀| 干B| 另类图片五月| 天天操天天干一区二区| 极品肉射| 中国熟女91| 日日日啊啊啊| 亚洲欧洲综合视频在线| 久久欲| 久久无码精品| 中文字幕人乱码中文字的预防方法| 任你草| 亚洲欧美自拍偷拍| 爱爱动态60秒| 亚洲熟妇AV日韩熟妇在线| ss久久| 久久婷五月天| 国产不卡免费在线视频| 老熟女91| 日日爽熟女| 91国产美女丝袜足交精品视频| julia高潮后不停追击中出| 亚洲第一狼人丝袜美女另类| 97精品免费视频网站| 激情内射| 久久九精品| 东北老女人的激情视频| 嗯啊不要啊在线| 最近的最新的中文字幕视频| 国产日韩区| 强奸乱伦 亚洲一区| 自拍六区| 欧美日韩不卡传媒| 狠狠干精品一二三四五六2022| 久久无码一区二区二三区性色| 美女好片色日本| 婷婷精品国产欧美精品亚洲人人爽| 欧美午夜色妇色鬼| 91久精品| 黑丝内射一区二区三区| 岛国成人av在线播放网址| 精品国产人成在线| 少妇一级婬片免费放一级a性色.| 热99这里有精品综合久久| 97超碰欧美精品| 精品国产a∨一区天美传媒| 亚洲色图第一页| 午夜精品人妻二区三区| 久久久久久久久久久999| 91色噜噜狠狠| 国产13区| 色999偷自拍拍| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | 1区2区3区在线视频| 欧美性天天影视| 理论久久婷婷网 8| 中文字幕在线24| 一色网男人的天堂| 四虎影库国产精品免费| 99热超碰| 天天爽夜夜欢视| 精品一久久久| 一区二区蜜臀| 大香蕉青青9| 蜜臀av网址| 东北女人性交| 97亚洲中文| 亚洲精品一区二区日本| 青青操网| 99色热国产视频精品| 国产美女高潮叫床视频| 日本3级一区二区免费|