亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

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超碰碰在线| 亚洲精品丝袜-不卡成人免费……| 2018色综合天天操| 国产精彩女在线观看视频| 国产无码三级视频在线观看| 射 色综合| 久久久久久九九九九| 手机在线观看不卡无码av| 丰满精品人妻少妇久久字幕| 被男人添B超爽视频| 青青草在线成人视频| 精品999一区二区| 色婷婷99| 秋霞无码av鲁丝片一区| 强奸熟女一区二区三区| 无码 有码 国产18p| 91国精产品| 久久久久免费看少妇A片特黄| 久久精品免费| 国产美女口爆吞精视频| 欧美国产有色电影| 国产精品青青草| 99久久99九九99九九九| 草b在线| 中出欧美| 夜色97| 日韩中文字幕在线视频观看| 美女9118禁| 亚洲夜色在线| 在线人成亚洲视频免费观看| 高清肉丝中文无码| 九月丁香| 国产家庭乱伦表演| 国产亚洲精品美女| 性色av婷婷久久一区二区点复制| 综合 亚洲 欧美| 欧美性猛交美女自慰91| 亚洲精品自拍| 国产精品另类| 麻豆福利视频导航| 亚欧日韩成人| 天美传媒精品一区二区| 97日视频| 射欧美综合| 国产精品制服丝袜清纯唯美| 91n处女在线观看| 久久欧美按摩999| Sekablack无码一区| 一区二区国产视频在线观看| 超碰人妻在线| 欧洲综合无码| 超碰在线91| 91老熟女老女人国产老太| 亚洲制服欧美另类内射| 久久国产成人精品国产成人亚洲| 欧美后入式| 天美精品av| 午夜亚洲WWW湿好大| 九七毛片九九毛片 | 亚洲精品人体| 韩国嫰模上门援交视频| 女同性恋一区二区三区精品视频| 日本高清_区二区三区| 67914在线兔费成人视频| 色噜噜综合在线| 日本操逼视频导航| 亚洲激情在线观看一区| 97干在线视频| 精品一区99999| 免费岛国一级片| 加勒比五月天| 骚逼自拍99| 欧美制服网站美腿丝袜| 97色色婷婷| 久久伊人亚洲AV无码网站| 国产91 丝袜在线播放 | AV 少妇 人妻 偷拍| 久久天天艹| 1240青青草一区二区三区视频天爱| 中文字幕日韩精品一区二区三区| 日韩人妻大香蕉| 999亚洲国产视频| 精品黄色电影| 91久久国产精品| 97丝袜亚洲在线播放| 伊人影院中文字幕| 99re视频在线观看这里只有精品| 91人妻最真实刺激绿帽| 激情四射五月天| 国产sv美女内射| 亚洲精品日韩国产欧美| 18精品一区| 天操天操夜操夜月操月年年操| 欧美天天干| 日产操逼| 欧美Ⅴ性爱| 大香蕉综合网| 国产亚洲深夜激情| 亚州熟女乱伦| 久久久久久久免费A片国产成a人亚洲精∨品无码 | 超碰欧美97资源| 日本99一区二区| 东北女人被操| 天堂射| 欧美久久婷| 综精品久久久aaaa| 青青草精玖玖69精品| 大香蕉伊人一区在线观看| 人妻AV在线| 婷婷九月| 精品超碰中文在线| 日韩情色视频| 亚洲人妻熟妇三十三区| 丝袜高跟澳门91视频| 午夜精品久久999热蜜桃介男人用| 欧美精品91| 欧美白嫩女HD| 伊人在线大香蕉视频久久| 欧美色自拍| 色哟哟1区2区| 亚州五月| 97色伦97色伦国产欧美| 国产精品毛片?v一区二区三区| 免费观看性欧美一级| 精品蜜乳AV免费观看| www.色吧5.com| 很很操在线| 国产中文字幕在线点播| 韩日无码在线观看| 丁香五月婷婷基地| 天天摸天天碰天天添青青| 60秒试看最爽10分钟网站| 夜夜综合| 精品久久97观看在线视频| 一本久道久久综合狠狠爱一密臀精| 欧洲人妻视频| 久久性爱精品一区| 丁香激情网| 久久不卡一区二区| 人妻丝袜肏逼| 国产成久久综合片| 婷婷久久综合| 老司机久久| 精品国产乱码久久久影院| 国产精品美女| 精品在线观看视频在线| 极品丝袜无码| 亚洲玖玖爱| 2017av无码免费无线播| 在线观看AV片| 亚洲AV无码| 久久成人午夜狠狠| 牛牛操视频逼| 亚洲,欧美,春色,另类| 亚洲情色在线| 欧美美女视频| 亚洲国产激情国产av| 亚洲国产综合久久久性感熟妇| 天堂伊人久久| av在线播放国产一区| 91狼人| 91在线免费观看处女| 另类成人首页一区| www.99色| 操九九九九九九| 久久是精品| 亚洲97成人在线观看| 91精品国产麻豆国产自产在| 欧美 亚洲 另类 综合| 91日韩网站| 999亚洲国产视频| 中文字幕在线观看AV| 综合自拍| 丁香六月激情| 久久中文字幕人妻熟av女蜜柚| 国产强奸无码乱伦| 校园春色 男人天堂| 99最新日韩偷拍视频| 国产精品嫩草影院午夜两性| 久久久A∨| 欧美激情久久久久| 性开放中文AV高清无码免费看| 亚洲综合有玛| 91精品国产91久久青草| 男人夜色天堂ss| 色97国产69香蕉| 福利操逼| 日韩熟女视频二区| 人人爱人人操人人性| 久久 亚洲 日韩 人妻| 成人怡红院| 九九碰九九爱97| 啊啊啊啊啊舒服| 黄色AAAAA欧美| 欧美性爱一区| 91爆操视频| 亚洲十八禁止| 操比国产| 大香蕉综合网| 丰满人妻一区二区三区在线| 青草精品视频-日本久久久久网站| 国产AV超爽| 久久精品女同亚洲女同13| 在线中文字幕极品av| 日本最新1区2区3区| 精品中文字幕一区二区| 天天内射| 黄色高清无码无码破解免费暗网| 综合大香蕉美。| 亚洲欧美国产成人综合不卡| 亚洲人精品久久久| 99熟女| 色区97| 青青网三级视频| 伊人久久AV诱惑悠悠| 亚码激情| 欧美伊人久久综合网| 欧美精品 - 91爱爱| 国产精品视频自拍在线| 亚洲久久天堂| 性色高清在线| 韩国午夜理伦三级好看| 午夜传煤十二区精品| 激情六月天| 日韩欧美性爱电影在线观看| 国产视频第2页| 国产激情在线观看| CCYY草草影院地址入口| 涩涩久久精品| 丁香五月社区| 国产日韩欧美亚洲精品95| 青青草华人在线欧美在线| 超碰人人在线| 人妻丰满熟妇一区二区三| 青青草色插素人| 日韩欧洲操屄视频| 中文字幕视频免费| 天天日天天舔| 久久9久9久99久9久9| 国产高清26uuu| 激情抓乳插进去啪啪啪日韩| 可以在线观看的黄色网址| 久久久99免费| 亚洲欧洲自拍图片专区满春格 | 黄片视频观看| 精品丝袜无码一区二区三APP| 欧美高清第一页| 尤物网站91| 成人一级性爱| 色色色综合| 天天享受天天看| 人妻在线大香蕉| 九九九九九精品十六| 五十路熟女工口 | 国产女同性恋视频| 日本99一区二区| 男人久久精品| 精品人妻15区| 日韩在线一区高清在线| 一级特级aaaa毛片免费观看| 日本三级久| 日韩中文9| 我想要 啊 啊 啊| 国产老太乱伦一区| 欧美 精品国产制服第一页| 青娱乐亚洲自拍| 超碰人人超在线观看| 亚洲国产剧情少妇激情| 在线色资源| 日本日逼视频网| 日本99久久| 99999久久精| 性色一线| 无码精品久久久天天影视| 久久久性爱视频| 国模不卡| 亚洲丝袜少妇在线| 超碰97起碰| 芊芊操逼视频无码| 夜夜爽夜夜爽| 97视频在线视频| 亚洲欧美精品一区天堂久久 | 97国产超碰| 人妻天天爽夜夜爽精品2| 亚洲精品尤物yw在线影院| 蜜臀中文无码午夜| 欧美美女在线高潮999| av午夜影院在线播放| av大香蕉| 深爱伊人影院| 国产成人精品亚洲日本| 亚洲大色堂| 大香蕉 222| 国产高清吃奶免费视频网站| 久久大精品乱码视频人妻熟女| 国产精品96| 天天色香欲综合网| 久久久女人| 伊人网综合在线视频| 欧美96精品在线| 日本一本一区二区三区四区五区欧美日韩中文字幕 | 九九在线视频| 精品免费一区| 日本2020一区二区| 亚洲情色一区综合| 日韩性爱播放| 人人操人人摸人人看人人插| 亚洲人精品久久久| 懂色AV中文| 在线v中文字幕一区二区三区 | 精品久久97| 久久手机好看网站| 中文字幕精品资源在线| 国产中出内射一区二区| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 69精品久久久久中文字幕| 蜜臀网址在线| 色婷婷成人综合| 日韩一级特黄av毛片| 欧美春色| 亚洲三级。日韩三级| 九九九午夜| 日韩三四五区| 99无码视频| 一线黄色免费性爱片| 亚洲国产精品无石码久久| 国产欧美后入| 精品97久久综合| 欧美亚男人的天堂| 精品人妻一区二区免费蜜桃| 日韩色欲久久一二三四区| 国产强奸91| 五月丁香社区婷婷日韩欧美精品影院 | 另类图片五月天| 国产精品久久久久久久久久久久久久吹 | 国产精品天干天干综合网麻豆 | 日本123区操B视频| 97AV爱| 97超碰总站| 亚洲欧美不卡线| 国产色精品午夜大片| 红杏大香蕉| 91美女在线视频| 日本不卡在线二区三区| 91快色色色色色| 欧美日韩人人精品| 欧美激情专区| 把腿张开老子CAO烂你| 国产夜夜艹| 97资源超碰| 婷婷精品国产一区二区三区日韩| 欧美黑人日韩少妇色情| 亚欧美色| 青娱乐999| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 99热色精品| 91精品黄在线观看| 97视频在线观看播放与子乱对白在线……| 精品久久久av| 欧美亚洲激情一二三| 9精品久久| 伊人96在线| 久久久免费高清中文视频| 一二三四区操操Av| 国产精品午夜AV完会免费| 日本免费人成视频播放120秒| 玖玖色综合| 亚洲AV资源| julia ann久久| 天天澡天天狠天天天做| AAA久久| 加勒比海成人视频网| 欧美性色欧美| 亚洲蜜乳av| 美女操逼福利视频| 亚洲国成人情色好看电影| 中出20p| 爱av免费| 亚州大图综合色图| 色欲无码人妻日韩欧美精品| 精品国产污一区二区三区| 色妇综合网| 日韩啪啪网| 97se综合| 色五月婷婷在线| 欧美狠狠操| 婷婷激情五月综合| 久久精品国产亚洲AV片多多| 青青草一区二区三区四| 日本 欧美 国产一区| 天天操妹子| 成人精品在线| 91天天综合| 午夜天天碰综合视频| 天天综合-91入口| 亚洲色图 欧美热图 清纯唯美 另类自拍| 天天肏天天干| 91网站视频在线观看| 尤物黄色在线观看网站| 干美女人妻| 成人综合久久精品色婷婷| 97天天操| 一区二区三区 丝袜高跟| 久久97精品久久久久久久不卡| 欧美色www亚洲国产阿娇要播| 啊啊啊啊啊在线视频| 人人操人人插 - 百度 - 百度| 精品一区二区3区| 亚洲系列第一页| 亚洲精品蜜桃久久久| 天堂精品在线| 日韩激情小说一区二区| 亚欧美色| 97色欧洲| 亚洲一区制服诱惑| 日本狠狠干| 三级激情网站| 中文乱码字幕观看| 蜜桃臀一区二区aV| 久久国产视频性吧 | 亚洲a色| 97精品综合久久网| 粉嫩久久久久| 99re6国产精品99re在线| 懂色av色欲av蜜臀av| 9色国产精品一区粉嫩 | 中文字幕欧美日本乱码一线二线| 99国产精品久久久久久久成人热 | 日韩人妻精品| 一本久久精品中文字| AV天堂男人的天堂| 国产精品高潮久久AV| 97内射偷拍| 婷婷五月天成人网| 色色五月天激情| 久久久九九网站| 国产精品视频精品一二| 大香蕉啪啪网| 天天日夜夜爽| 色老汉玖玖爱| 青青草日本中文字幕| 狠狠躁AV| 中文字幕 一区二区 亚洲无码| 五月色综合| 日韩人妻资源在线看| 日韩av不卡在线看| 神马麻豆福利院| 丝袜综合网| 欧美91精品国产自产| 日韩精品一区二区人人人| 婷婷人妻激情| 人人操人人爽人人操人人| 黄色电影在线播放综合网站| 精品欧美А∨无码黑人大荫蒂| 蜜桃狠狠色伊人亚洲综合 | 91久久18禁| 老熟女中文字幕高清| 亚洲交性| 天天肏夜夜肏| 欧美色蜜桃97| 五月丁香啪啪| 台湾佬大香蕉| 五月丁香激情啪啪| 亚洲综合嫩| 综合自拍| 亚洲黄色电影| 清柠毛片| 久久狠狠色噜噜狠狠狠狠97| 婷婷五月激情综合| 男人的天堂VA| 亚洲va综合va国产va中文| 999九九九九国产动| jizzjizz欧美| 97欧美色| 婷婷五月天在线观看| 91女色| 成视频在线观看免费看| 一本色道久久综合精品婷婷| 婷婷五月色| 夜夜欢天天干| 东北夫妻性偷拍| 日韩熟女三十乱伦| 日韩不卡网操逼中文字幕日韩| 97超碰人操| 天堂性色| 4虎在线视频| 欧美精品日韩一区二区| 日本加靬比网站发布页| 人妻激情在线视频| 女人被添高潮免费视频| 久久久久女教师免费一区| 色情综合网| 俞拍久久国应视频| 久久久av爱| 欧美性爱第一区| 人妻大香蕉| 婷婷五月天小说| 国产91福利小视频在线观看 | 欧亚日韩三区| 人妻乱仑一区二区三区| 国产精品农村妇女| 欧美激情超碰777| 欧美日韩性爱无码| 夜夜性| 在线人妻熟女一区二区三区四区五区| 92性色国产午夜福利在线661| 91丝袜美腿片| AV天天综合| 强奸乱伦Av网| 男女一进一出视频久久| 男女性扦B| 国内91熟女人妻丝袜天天精品视频在线| 成人五月天丁香激情综合| 亚洲综合九| 99精品在线观看| 午夜操逼不卡| 欧美综合另类| 国产熟码AV| 一区二区三区 丝袜 高跟 美腿| 人人看人人爰人人操| 欧美精品激情| 亚洲男人综合网| 97超碰色五月| 久久美女福利是上海美女| 日韩欧美大片免费高清啪啪| 最新AV在线| 韩日巨乳美女免费视频在线观看| 久久久草成人网站久久久草成人久久久草久久久 | 激情综合网激情五月天| 成人日韩3| 69一区二区三区| 中文字幕免费看| 大吊色| 欧美色偷拍| 亚洲精品视频在线播放| 久久东京伊人一本到鬼色| 久久久久久性爱免费视频| 白嫩白嫩的午夜九久久久久久久久久久久成人剧场 | 中文字幕黑人大片| 亚洲日韩精品在线播放| 人人妻人射| Sekablack无码一区| 亚洲人妻久久| 欧美性夜| 91欧| 激情婷婷黑人91| 我爱搞逼综合网| 欧美变态激情网| 开心六月色| 天天淫人人妻日日色| 亚洲精品视频在线| 中文字幕久久婷婷丁香五月天 | 少妇内射视频| 看看小穴| 男人天堂婷婷五月天校园春色| 性爱1区| 久久久免费的精品| 1禁看欧美黄片免费看| 可以在线观看的黄色网址| 97色伦97色伦国产欧美| 日韩性爱一级片| 欧美黄色手机在线观看| 国产在线观看一区二区三区| 91精品国产91久久福利| 粉嫩av久久一区二区三区| 丁香五六月啪啪| 国产一区二区三区免费视频在性观看 | 伊人网青青| 五月天我淫我色av| 在线无码视频| 国产精品久久久久中文字幕| 最新日韩黄片| 色玖玖| 九九视品黄色| 精品97久久综合| 久久精品视频一区三区小泽玛利亚| 97欧美日韩中文| 视频黄站| 神马午夜久久| 欧美色五月| 一区二区偷拍拍视频| 亚洲国产一区二区三区在线| 久久爱超碰网| 亚洲欧美国产精品久久久久久久| 久久久夜夜夜| 1级午夜影院费免区| 八人操人人摸人人看| 丁香婷婷啪啪| 熟女一区二区| 中文字幕一品色图| 国产一区在线播放| 亚洲日韩美国人妻| 一区二区三区在线资源| 中文在线久久字幕| 久久九九精品一区二区 | 激情五月天社区| 91人人爽人人爽人人人,gav福利视频导航,日韩欧美亚洲国产字幕四区 | 92午夜免费福利视频| 五月丁香影院| 伦在线97| 欧美日韩在线小说 | 91九九| 五月天开心网| 亚洲一区中文字幕久久,果冻传媒一区二区天美传媒 | juliaann精品熟女一区| 内射黑丝袜| 国产精品扒开腿做爽爽爽视频| 激情抓乳插进去啪啪啪日韩 | 日本99热| 超碰98综合网| 国产精品国产精品国产| 日韩中文字幕在线视频观看| 色狠狠综合噜一二三区| 国内一区二区三区| 天天日天天干天天操| 日韩性爱小视频| 亚欧美综合网| 精品久久久久,69国产成人精| 久久亚洲天天做| 欧美熟妇精品黑人巨大91| 日韩精品碰碰| 亚洲情色1区| 91老司机精品| 破苞ⅩXXX性无码动漫无码| 中文字幕 一区二区 亚洲无码| 九九人妻| 免费簧片在线观看| 欧美性爱网97| 亚洲黄片免费在线播放| 欧美 亚洲 综合 制服| 91精品在线播放| 日韩乱伦影音先锋| 亚州高清色综合| 一区二区精品更新提醒| 97干com| 易易A毛视频| 国产精品久久成人免费| 久久超碰av在线| 国产性爱在线视频一区二区| 丝袜综合| 久久国产免费激情视频| 久久偷拍人| 国产精品无码成人精品| 国产男女无套97| 五月丁香六月综合缴清无码| 中文字幕艹艹| 久久草草亚洲蜜桃臀| 亚洲s在线观看| 极品国产内射| 欧美日韩少妇色情| 尤物黄色在线观看网站| 色老牛| 国产中文字幕曰本毛片| 内射卯月麻衣| 无码国产精品午夜不卡(| 3级毛片一二| 久久99网站| 舔足天天操天天射| 肉丝网站91| 韩国手机不卡无码三级视频| 怡春苑东京热| 日韩av不卡在线观看| 999久久久久久久久| 在线观看黄色电话| 啊啊啊久久| 看看小穴| 午夜超爽| 大茄子熟女AV导航| 成人综合色网| 久久中文字幕一区不卡| 91九九九吃| 精品久久人妻成人网| 蜜臀99久久国产| 蜜臀av中字字幕网站| 一区二区三区在线美女| 香蕉大久久久| 色嘟嘟人妻天堂网| 俄罗斯一区二区视频在线观看| 国产一区二区三区,在线观看观看| 伊人久操| 91处女在线观看| 国产一区二区三区久久精品太古里| 国产精品久久久久久片| 屁股久久久久久| 99啪啪| 91狠狠综合久久久| 青娱乐福利99| 青草伊人网| 情色五月天久久久| 欧美国产日韩高清在线| 在线人成亚洲视频免费观看| 日日嗷| 日韩一级二级在线| 不卡啪啪视频| 在线观看高清AV| 91中出视频| 91超碰碰在线| 日韩 人妻 精品| 青娱乐日韩无码| 超97在线精品视频| 超碰99热中文字幕| 欧美A√综合网| 五月丁香影院| 天天看天天在线精品| 国产999精品久久久| 干B| 久久日韩毛| 国产在线视视频有精品| 欧美伊人久久综合网| 校园春色亚洲色图| 91人妻久久久久久久久久久久久| 啪啪91| www.色婷婷| 国产综合网站在线播放| 极品欧美一区二区三区| 欧美色网络| 春色综合免费| 久久久久网站-538在线视频-欧美永久乱码 | 日本精品一区二区三| 免费9 1久久| 欧美熟女少妇| 五月丁香激情综合| 熟女人妻一区二区三区| 久草免费福利在线播放| 三级AV入口| 婷婷操视频| 17c嫩草51久久91嫩草| 国产精品一区在线播放| 欧美日韩97在线| 9999九九九久久久| 秋霞午夜视频一区二区| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 欧差乱伦二三| 天美传媒精品一区二区| 四虎影视精品| 91黄站| 五月天婷婷社区| 色噜噜人妻av中文字幕| 一本大道久| 久9久9久9久9久9久9 | 婷婷久热| 久久伊人大香蕉| 婷婷五月天丁香花| 久久久人妻| 激激五月| 久久人人爽爽爽人久久久| 国产视频一区二区在线| 97一区二区蜜臀| 99999精品成人| 超碰1024久久| 久久骚| 欧美爱国产综合、| 无套后入双马尾| 99re免费| 一区二区三区亚洲| 丰满少妇乱子伦精品无| 欧美99热| 精品四五区| 97露脸精品丝袜| 日韩精品9区| 久久精品六区| 久久78| 懂色中文一区二区三区 | 亚洲色91C| 九草九九九| 啪啪啪亚欧美视频| 久久久久久亚洲Av无码精| 国产亚洲精品A在线观看下载| 男人天堂黄片| 美女自卫慰黄网站免费| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 日日超碰亚洲| 天堂а√在线最新版在线| 国产亚洲精品第一最新| 中文字幕老熟妇黄色视频| 91精品人妻一区二区三区蜜桃臀| 久草男人天堂| 青青草在线视频播放器| 日韩性爱啪啪视频| 东亚亚洲无码高清| 欧美激情总合网| 涩涩久久精品| 1240青青草一区二区三区视频天爱| 肏逼视频日本| 亚洲AV无码成人精品久久| 日韩有码免费视频| 小骚逼被操的爽不爽| 老熟女综合网| 性久久久| 欧洲色| 日本人妻天堂网站在线播放| 国产一区二区在线看| 秋霞一集毛片观看| 久久人人爽人人爽人人片Ⅴ| 爱干爱射网啊啊啊| 日本久久久久久久久久| 日日操免费视频| 天堂岛av| 热久久无毒不卡| 男女日B国产| 97久久视频| 亚州色阁| 国产又黄又爽又刺激久久久久久 | 色妺妺AⅤ| 中文字幕精品日韩中文字幕| 久久久久久久九九九九九九| 成人九九| 特级丰满少妇一级AAAA爱毛片| 日本精品88888888| 欧美九九九九九| 亚州AV无码国产精品| 久久综合中文国产| 麻豆精品一区二区三区四区免费观看| 成人网站 免费观看| 欧美一区二区传媒| 91bbb| 在线只有精品| www.acm成人黄色毛片| 免费福利视频中文字幕| 中日无幕一二三四区| 麻豆91熟妇人妻中文字幕茄子| 午夜理论片在线观看免费| 啊啊啊啊啊好大好舒服想要| 99色网| 五月丁香在线| 国语精品av| 国产精品三级视频网站| 久9久9久9久9久9久9| h无码动漫在线观看| 中 文字幕一区二区三四 五 区日 日 骚| 欧成人精品H无码| 99热精品在线观看| 人妻欧美| 天天综合网~69| 午夜毛片亚洲精品片国产久久久| 人妻少妇久久久| 99999久久精| 色丁香五月婷婷| 亚洲欧美情色| 国产欧美第五页| 亚洲av青草久久一区二区| 亚洲欧洲偷拍一区| 日本精品一区二区三区四区的功能| 另类天堂| 加勒比综合| 无码一区二区三区四区五区六区七区八区九区十区视频 | 天天谢天天干| 97在线无精品| 亚洲操逼无码| 大逼色网站| 精品少妇一区二区三区免费观看| 欧美日韩97| 一区=区三区视频| 色翁荡息又大又硬又粗又爽| 日日日大屁股骚女人精品| 影音先锋乱| 蜜屁av| 欧美一区二区情色| 亚洲 自拍偷拍 欧美| 超碰97欧美日韩| 99视频在线| 91国产操逼视频| 青娱乐手机日韩在线视频| 人妻人人做人人澡人人爽欧美一区| 熟女一区二区三区四区| 九九久久九九久久| 东京热视频网| 性欧美| 青青爽| 精品国产丝袜一区二区三区乱码| 91色射| 偷窥自拍亚洲色图| 免费伦费视频在线观看| 啊啊啊啊好疼| 91国产大片| a在线视频免费观看| 久久久久国产精品久久久| 99久久综合| 日韩成人综合网| 亚洲在线网站| 中文字幕一二三av| 9超碰免费| 亚洲av乱伦色图网站| 2024年最新色情网站在线观看| 欧洲与亚洲欧美精品中文字幕| 狠狠激情综合狠狠操中文字幕| 亚洲天堂男人| 97亚洲国产| 日韩99神马视频播放| 91精品国产麻豆国产自产在| 少妇厨房愉情理伦片bd在线观看| 91劲爆| 超碰精品| 日日夜夜干| 国产精品呦一区二区三区| 91东北熟女| 亚州图片第一页| 偷拍亚洲高清图片| 亚洲操操操| 8050午夜少妇无码| ,成人免费啪啪视频| 97Ai亚洲| 九久久精品| 好看的久久不射无码影视影院| 1024香蕉视频| 国产精品国产拍高清AV| 看大黄色大片原件| 无码精品久久久久久亚洲| 精品十八在线观看| 国产人妻精品一区二区三区秋霞| 97色97好| 99自拍B亚洲| 亚洲欧美精品一区天堂久久 | 亚洲第2页| 国产精品爱欲| 久久久久少妇| 欧美精品庄| 日韩91网| 成人精品久久| 蜜臀一二三区| 亚洲人码13| 一区二区三区色综合| 丰满精品人妻少妇久久字幕| 久久精彩视频9| 九九毛片这里只有精品| 五月丁香色综合| 五月婷婷大香蕉| 高清国产av无码| 人人操人人操草草| 亚洲免费成人精品电影| 亚洲av综合色| 91c色| 户外裸露刺激视频第一区| 日va操| 51一区二区三区| 天天搞在线综合网| 婷婷午夜成人色中色| 亚洲五码一区二区三区| 中文字幕aⅴ在线视频| 风流老熟女一区二区三区l| 伦伦成年午夜免费视频| 五月天丁香婷婷综合网站| 综合欧美激情网| 国产强奸超碰AV| 日本午夜福利影院| 日韩无码成人电影| 久久精品人体AV| 亚洲AV资源| 久久亚洲人妻| 亚洲在钱| 黄色工厂这里只有精品| 日日骚中文字幕| 日韩性爱一级片| 亚洲AV无码翔田千里网站| 狠狠色狠狠色狠狠五月| 人人色人人操在线| 欧美后进式| 熟女自慰久久久| 精吧天堂| 97手机日韩| 日韩无码视频黄色| 久久久久成人亚洲国产| 另类天堂| 少妇诱惑视频| 天欧美在线| 亚州一区二区| 亚洲无线码欧洲精品区别| 中文字幕亚韩| 玖玖人人爱| 青青草色插素人| 天天久久久久久| 黄色免费一级在线毛片| 看黄片视频免费| 先锋精品av色鲁| 婷婷另类小说| 蜜臀Av一区二区三区| 三级日韩一区二区三区| 欧美熟女操屄| 黄页大片在线观看| 校园春色欧美| 大香蕉中文| 91小视频| 精彩视频日韩| 9 1超碰九色| 午夜成人爽爽爽爽A片李冰冰| 操逼无码一区| 台欧久久精品视频| 狠狠操狠狠燥| 国产 日韩 欧美一区| 懂色AV蜜臀无码精品APP| 亚洲欧洲视频小说在线观看| 玖玖超碰熟| 黄片免费日韩| av大香蕉| 99日免费视频中文字幕| 视频一区二区免费在线| 91人人臊| ai欧美亚洲小说| 丰满熟女一区二区三区在线播放| 性开放中文AV高清无码免费看| 校园春色 男人天堂| 性感美女啊啊啊在线| 欧美大香蕉久| 9久综合网| 99色在线| 日本视频一区二区三区| 久久超碰亚洲人| 欧美啪啪色吧在线| 91天堂色男人的天堂| www.高清无码诱惑一区.com | 永久免费发布性爱网| 久久发布国产伦子伦精品| 精品人妻久久久| 欧美日韩人人精品| 91老司机视频| 女人爽到高潮潮喷18禁网站| 九九九九免费高| www.色吧5.com| 天堂av2019| 91精品人妻一区二区三区蜜桃| 日韩性爱电影一区| 久久人爽| 99久久久无码精品国产人| 五月丁香在线| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 欧美性生活免费网| 在线97在线| 99久久久久久亚洲精品不卡| 97精品国产97久久久久久| 欧美东京热青青草| 二色av| 精人妻一区二区三区| 国产亚洲综合欧美一区| 久久久国产护士丝袜美腿一| 欧美一级久久久久久久大片动画| 男人天堂久久日韩| 色y情视频免费看| 亚洲棕合电彰| 蜜乳AV.COM| 久草综合视频| 色综合av男人天堂| 97欧美色综合| 精品国产肉丝袜在线拍国语| 91高清日| av九九| 97超碰美女| 亚洲欧美九九| 欧美片第一页| 五月天久久婷婷亚洲| 男女激烈网站最新| 极品久久久久久久久久久久久久| 欧美性生活免费网| 欧美国产操逼| 手机看片1025| 欧美一级二级三级| 嗯啊免费视频| 国产最火爆久久国产网站网站| 九九九久久久久| 国产综合永久精品日韩鬼片| 后入式999| 美女黄色一级A视频| 国产精品人妻免费精品| 97色色色综合网站| 久久久91福利姬| 97资源超碰| www.成人无码| 91综合色噜噜| 国产成人AV麻豆| 奇米四色影视777久久久| 天美麻花大全视频| 亚洲欧美综合色| 97超碰站| 91欧美另类| 九九性爱网| 91综合在线| 久久啊啊啊视频| 色色色999| 亚洲精品自拍| 91爱欧美| 精品久久久无码| 中文字幕人成乱码熟女香港| 大干人妻| 欧洲无码一区二区| 2021久久国产综合精品青草| 一本色道久久综合精品婷婷| 日产中文字幕2020| 黑人黄片在线免费观看| 中文字幕精品探花视频| 日本黄色天堂| 后入美女国产| 色噜噜人妻丝袜a∨先锋影 | 欧州一区二区三区四区| 天天日美女的B| 久久这里都是精品| 秋霞免费AV| 精品国产av一区二区三区四区入口| 欧美亚洲成人在线一区二区三区| 精品人妻伦一二三区久久| 操逼天美3区| 香蕉视频欧美一卡二卡| 欧美91色| 青青草啪啪网| 国产999精品久久久久久| 国产偷拍自拍在线视频| 一级黄色性爱裸体视频| 天天久久久久久| 综合97亚洲| 中文字幕一区二区三区人妻少妇在线| 日本www操操操| 欧美一二三级精品在线| 无码人妻1727| 骚鸭AV| 天天色怡春院| 麻豆AV一区二区| 久久久久久人妻| 丰满人妻av一区二区三区| 五月婷婷丁香六月丁香| 97在线免费观看视频| av影院十区| 九九九九九九九| 九区国产| 欧亚久久偷拍视频| 麻豆AV一区二区| 国产av白丝| 欧美综合站| 五月天激情网图片| 噜噜噜无码AV一级一级久久影院| 宅男影院久久久,99| 18禁止看精品中文字幕| 人人妻人人爱人人玩| 综合亚洲欧美| 婷婷人妻激情| 好一吊区二区| 成人夜夜| 久草毛片| AV女资源| 91精品丝袜久久久久久| 亚洲天在线| 美女9118禁| 人妻天堂三区| 亚洲图片欧洲图片aⅴ| 人妻内射一区二区在线视频| 日韩一区二区熟女| 久久嫩草国产成人一区| 91老司机在线视频免费观看| AV色天香在线| 日本精品88888888| 射欧美综合| 97日视频| 91精品免费| 97国产精选| 国产91美女视频| 蜜臀久久久99久久久久| 麻豆精品一区二区三区四区免费观看| 久久久四区| 亚洲中文字幕在现观看| 中文字幕国产在线天堂| 日韩精品在线放| 日韩免费大片一级播放| 8050无码八戒|