日韩精品一区二区三区在线视频放-无码中文字幕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
返回資訊列表
亚洲av成人精品一区| 18禁美女裸体无遮挡啪啪| 中文字幕 码 自拍 视频 区| 好爽免费视频| 亚洲综合九| 91在线精品| 欧美性91| 99国产精品自在自在| 亚州欧美一区| 国语人妻精彩刺激| 欧美视频中文字幕区| 久久中文字幕在线观看| 久久久久9| 婷婷亚洲综合| 国产乱色国产精品免费视| 日夜精品| 国产精品丝袜在线| 熟女一区二区三区| 超碰97资源大奶| 国产精品自拍欧美在线| 91在线精品一区二区三区| 欧美乱妇狂野欧美在线视频| 91人妻在线视频| 亚州熟妇精品| 日本性一区| 久久久久久久久久久久久久久性生活视频 | 九九热国产| 日韩9999| 无码人妻丰满熟妇奶水区毛片| 日韩人妻一区二区精品| 欧美顶级黄片AAAAA在线免费看| 亚洲色综合| 人妻另类| 欧美性爱一区二区三区| 97手机日韩| 久久精品国产99国产精品亚洲| 色五月婷婷在线| 天天艹天天日| 中文字幕在线观看永久| 亚洲一区二区三区播放在线| 中文字幕一区二区日韩网| 91丨人妻丨国产丨丝袜| www.男人的天堂| 天天搞欧美| 骚人妻少妇视频| 97久久国产精品| 色眯眯射| 999综合色| 亚洲性感丝袜诱惑在线观看| 天操天操夜操夜月月年年操操| 精品网站99999| 台湾佬大香蕉| 东京太热男人的天堂久久久| 加勒比海色香蕉婷婷| 中文字幕成人乱码熟女精品国50 | 日韩精品国产精品五码一区二区| 人妻激情偷乱视三区频一区二区| 蜜桃久久综合视频| 无码91| 91碰碰| 久草成人福利导航| 无码一区二区三区四区五区六区七区八区九区十区视频 | 在线观看视频91| 天天摸夜夜操视频| 暴力av在线| 97超碰色色| 葡萄牙性视频一二区| 九九热国产| 亚洲毛片基地专区| ..日韩av毛片精品久久久| 天天搞在线综合网| 99热这里只有精品地址| 欧美|91色综合| 少妇 综合| 10000部十八禁看电影| 人人操人人射人人干| 97伊人超碰| 免费试看60秒| 久久成人国产| 日韩有码一区三区| 91 丝袜在线| 人妻天天爽夜夜爽2| 亚州一区二区| 国产v片在线免费观看| 色盈盈影院| 久久久久久九九九九-美女久久久久久久-成人AV | 欧美日韩黄片精品在线| 99热最新| 夜夜国自区| 日韩无码极品| 国产精品亚洲一区二区三区四区 | 丝袜美女诱惑 91 视频| 亚洲爽图| 狠狠色婷婷777| 人妻天天爽夜夜爽精品2| 超碰在线97国产| 极品色综合| 亚洲欧美在线观看免费| 激情自拍 校园春色| 熟女一区二区| 中文字幕后石码四区五区| 激情五月天插| 人人妻人人爽一区二区三区| 国产在线综合福利网站| 色欲天天综合网| 久插综合| 亚洲欧美色图片| 丰满岳乱妇一区二区三区| 色五月婷婷五月天| 一二三四区操操Av| 操我无码| 国产日韩人人| 人人人摸人人| 偷窥自拍亚洲色图| 中韩中文字幕在线观看| 天天视频黄网站| 中文字暮97| 亚洲天堂一区二区| 伦伦成年午夜免费视频| 国产美女在线精品免费看| 国产h片在线观看视频| 91精品久久久久久77777| 亚洲网污污污污| 岛国福利在线精品播放| 日本女厕偷拍| AV乱伦专区| 2025亚洲男人天堂| A级片一区| 亚洲高潮少妇| 欧美在线天堂| 一本一道人妻久久一区二区三区 | 亚洲天堂日本| 天天操天天射天天日| 精品人妻二区三区| 欧美日产国产在线成人第一区| 综合网亚洲| 麻豆国产免费影片| 精品九九| 青青草色情网站视频| 亚洲天堂五月天国产| 欧美另类色图片| 97伊人| 开心五月婷婷激情| 超碰美女97| 97人妻色| 青青操网| 久久久9 9 9精品| 5278欧美一区二区三区| 人人摸人人舔一区二区| 99热精品在线| 一区二区三区 丝袜 高跟 美腿| 日本免费一区二区不卡| 操人91| 97超碰9| 天天射网| 欧美 日韩 亚洲 春色| 操亚州| 日韩AV无码中文一区二区| 国产精品3| 影音先锋国产精品| 国产福利电影| 91熟女.com| 亚洲激情在线一区二区| 91久久久亚洲| 国产一区二区三区,在线观看观看| 婷婷深爱五月| 啪啪啪东京| 国模91| 久污| 夜夜操二区| 日韩激情电影中文字幕| 一区| 中文字幕 人妻不满 在线视频| 91亚洲综合| 日韩人妻精品中文字幕| 天天操天天舔| 亚洲αv一区二区三区| 久久久啊啊啊| 天欧美在线| 欧美v日韩欧亚洲电影天堂色诱,国产传媒| 91丨熟女丨丰满熟女| 91人妻在线视频| 97国产天堂岛| 亚洲精品97在线| 国产女人操逼视频| 人妻一二三区| 操B视频日韩无码| ai欧美亚洲小说| 亚洲欧美日韩精品久久久一区二区 | 国产精品一区二区 尿失禁| 大奶的诱惑| 伊人久久亚洲中文字幕不卡| 91 手机在线播放 绯色| 欧美不卡在线美女| 99九九精品| 中国AAAAAA黄色片| 国产精品在线免费| 亚洲欧美骚| 亚洲综合大片| 国产乱青青草久久| 三级网站超变态精品| 色婷婷久久| 3d成人精品一区二区| 国产黄色视频久久| 亚洲欧美人妻| 舔足天天操天天射| 人伦四五区| 神马久久69| 看看小穴| 女人综合网| 精品人妻一区二区三区蜜桃视频| 精品中文一区二区| 亚洲爱爱视频一区二区| 欧美日本天堂| 黑丝日韩av丝袜av| 伊人久久蜜月| 精品人妻15区| 另类天堂| 亚洲高清视频在线免费观看| 久久婷婷苹果| 日韩亚洲97| 久草在| 日韩精品人妻中文字有码在线| 69人妻精品丰满熟女区| 欧美日韩另类在线| 欧美日韩国内不卡| 超碰精品在线| 色丁香五月婷婷| 国产精品久久久三级无码| 国产东北女人在线视频| 国产自产一区视频在线| 日韩免费性爱视频在线观看| 99精品久久| 天天插天天插| 久久久久性熟视频| 北京美女一区二区| 夜夜做夜夜爽精品视频| 欧美亚洲特P| 青青草国产欧美非洲黑人| 久久国产视频性吧 | 2019亚洲男人天堂| 97日韩| 少妇色| 17c在线成人免费A片观看| 综合网亚洲| 影音先锋少妇| 激情小说五月天| 超碰调教97| 国内黄色精品| 人妻少妇精品无码专区二区密桃| 超碰地址久久| 波多野结衣被操50分钟免费视频| 日本高清有码网址视频| 97人妻色| 欲色综合| 久久精品国产亚洲妲己影视| 亚洲最大AV网| 久久久一热在线播放| 天操天操夜操夜月操月年年操| 啊灬啊灬啊灬啊灬高潮奶出了免费视 | WWW.操逼.COM| 国产九九九九九九九九| 99热97| 98精品国产乱码久久久久久| 97伊人| 久久精品福利影院| 五月丁香婷婷色| 久久e6只有精品| 美女黄码视频午夜| 亚洲熟女综合网| 久久精品国产亚洲AV高清演员表| JULIA一区二区三区在线播放| 日日天天久久啊啊aaa| 97国产综合欧美| 婷婷人妻激情| 成人美女av| 厕所偷拍在线| 97干在线视频| 婷婷99狠狠躁天天躁| 男人天堂综合| 亚洲精品久久久久毛片A片拉屎 | 亚洲国产一级黄色视频| 啊灬啊灬啊灬好深灬快高潮了动漫-国产字幕国产在线观看-B049AV | 国产日韩中文字幕欧美| 26uuu成人影片| 久久久国产成人一区二区三区在线| 国内精品999| 国产精品粉嫩福利在线| 看大黄色大片原件| 久久综合精品一区二区三区| 91久久久亚洲| 韩国黄色片精品久久久 | 亚洲毛片基地专区| 日韩AV电影网站| 97人人色| 亚洲激情四射| 97亚洲色图| 黄片aaaaa一区| 欧美 综合| 91色花堂| 欧美在线官网| 九月伊人中文字幕| 人妻激情另类| 色香综合| 资源在线观一 二| 九九久精品| 亚洲中文日韩欧美大香蕉视频| 97爱欧美| 亚洲天堂7777| 欧美色图在线视频少妇| 欧美亚洲色图另类国产| 久久人爽| 亚洲第一无码播放立川理惠| 91成人亚洲色图| 国产精品久久久久久片| 一二三四区操操Av| 欧美日韩99精品麻豆传媒| 日韩少妇无码| 久久九七| 久久五十路熟女人妻| 久久爽爽精品| 欧美熟女操屄| 亚洲天天在线| 国产精品午夜成人福利| 巨爆乳一区二区爆乳区| 99热国产| www.夜夜操| 青青青在线高清视频在线一二三四区 | 留下AⅤ黄色片| 小电影欧美91| 日韩性色b| 欧美精品宗合| 一本大道综合伊人精品热热| 一级啊性爱在线视频| 亚洲色图8| 日韩精品 资源| 日本淫乱女一区二区三区视频| 亚州色站 日韩电影| 九月激情婷婷| 久久久久99999| 精品乱子一区二区三区99| 99国产在线 精品 视频| 中文字幕一二三av| 乱日视频| 牛牛操视频逼| 九九九网站| 九九热超碰97亚洲最新香蕉| 精品伊人久久久大香线蕉小说| 日比av无码| 5252色欧美在线| 黄片com.| 思思热一热婷婷热一热| 好爽要喷了| 欧美日韩国第一区| 黄片www.| 一级人妻性爱视频| 四虎免费在线播放| 美腿丝袜高跟网免费视频免费视频| 亚洲色图亚洲无码强奸乱伦| 九九热久久99精品re| 亚州,欧美在线| 午夜精品久久久99| 亚洲人妻一区二区三区| 青草青草久热| 激情黄色片在线观看| 99草精| 啊啊啊好舒服好爽啊啊啊视频| 免费A V在线播放| 富女玩鸭子一级毛片| 亚州精品人妻一二三区| 国产精品久久久九九九| 日本九九久久99播| 色妹子A V| 爱做久久久久久| 天天激情综合站| 亚洲美女高潮喷水视频| 狠狠爱AV| 精品久久大胆人体| 欧美色图偷拍另类| 操狠狠| 激情五月天丁香社区| 另类小说综合网| 亚洲影院365| 亚州综合在线| 91五十路| 好爽免费视频| 老妇女91| 熟女乱3伦999| 人人弄人人摸| 国产人妖的免费的视频| 激情熟女12P| 久久αⅴ| 9九九国产| 青女在线| 丝袜足交视频| 国产精品伦理| 久久久久久免费电影| 91丝袜在线视频| 蜜臀人妻少妇久久在线观看| 亚洲最大的黄色电影网站。| 一本一道人妻久久一区二区三区| 国产玖玖| 情侣开房子拍 日韩无码 女的很漂亮| 婷婷色婷婷| 五月婷婷激情综合| 口爆综合网| 欧美性天天影视| 青娱乐亚洲热| 欧美大香蕉97| 国产亚洲色婷婷99精品91| 97精品综合久久网| 91视频综合在线| 蜜臀一二三区| 91亚洲影视| 国产福利电影| 国产高清成人mv在线观看| 亚洲成人福利电影免费| 九九热最新| 精品夜夜澡人妻无码| 久久女人视频| 一区二区亚州激情久婷婷欧美| 呻吟 欧美 日本 中出| 国产日韩美女小穴视频网站不卡| se..亚洲欧美| 天天狠操| 九九色婷婷| 美国美女AV在线| 亚洲国产剧情少妇激情| 久久超碰av在线| 亚洲天堂男人天堂| 国产精品亚洲天堂网址| 五月婷婷爱六月丁香色| 丝袜内射| 欧美偷偷网| 精品无码久久久久久久久果冻糖心 | 亚洲人在线| 大香蕉啪啪啪啪在线| 97久久天天综合色天天综合色电影| 人妻熟女一区二区三区视频| 人人看欧美性爱| 99精品网| 98福利在线视频| 啊啊啊啊啊好多水| 能直接看AV的网站| 久久熟妇五十路一区| 精品大全99999| 乱欲视频| 无遮挡猛进视频免费无限观看| 不卡超碰护士AV在线免费播放| 久久久久久久久久久久欧美日| 大香蕉人妻久久| 天堂俺去俺来也www久久婷婷| 亚洲另类在线观看| 亚洲黄色网址| 国产无码精品高清| 男人亚洲91首页在线| 91欧美丝袜| 无码动漫av中文字幕| 中字乱伦AV| 欧美最婬乱婬爆婬性视频| 色婷婷一区二区三区久久午夜成人不| 思思热在线视频免费| 曰韩av中文字幕专区| 97一区二区三区视频| 久久无码精品| 九九色色| 亚洲a色| 国产激情av女片自拍| 久久熟妇五十路一区| 日骚逼视频| 久久久精品无码亚免费| 豆1无夜无码| 天天躁日日躁成人字幕aⅴ| 97色伦欧美| 亚洲清纯综合| 激情五月激情综合网| 快播久久人人aV| 芊芊操逼视频无码| 亚洲色香| 青娱乐国产盛宴视频| 久久水蜜臀亚洲AV无码精品| 国产精品点击进入在线影院高清| 超碰超碰95| 亚洲熟女av中文字幕| 可以免费观看的av| 久久精品电影在线| 日本狠狠干| 91综合网站| 色色色综合网| 美女诱惑一区| 日韩激情视频| 久久人人爽爽人人爽人人片αV| 五月天色电影| 日本激情免费大片| 丰满熟女人妻一区二区三五十一路| 国产成人一级av88| 久久女同性恋一二区| www.久久最新地址| 亚洲图片欧美另类综合免费视频大大香| xxxx网站亚洲精品| 福利大香蕉| 伊人五月天| 98久久超碰| 人妻在线中出视频| 丰满岳乱妇一区二区三区| 噜噜噜亚洲精品| 免费精品福利在线观看| 91老女人| 99热18这里只有精品| a级理论午夜日本| 九九热av| 久久亚洲不卡一区二区三区 | 蜜桃在线观看一区二区三区| 老熟女乱子伦中文字幕一区二区| 丰满少妇精品一区二区| 五月天激情网图片| 操操逼视频| 天堂精品一区| 欧美不卡在线美女| 手机在线视频国内精品| 日本媚薬中文字幕在线| 久久国产对白激情浪潮| 91日本在线观看| 精品三级在线专区| 中出20p| 麻豆视频test| 18禁超污无遮挡无码免费网| 日韩成人无码| 春色综合免费| a人欧美综合天堂麻豆| 色色色色综合网| 100啪啪视频大全| 偷拍新久久| 亚洲aw毛茸茸在线| 91在线无码精品秘 软件| 男女啪啪网站免费视频| 2020中文字幕在线| 日韩午夜国产| 国产女上位好爽在线| Blackedraw视频一区二区| 精品视频一区二区| 农村少妇久久久久久久| 欧美色日本| 久久99国产综合精品女同| 国产理论视频在线播放| 欧美18老人禁| 97超碰中文在线| 啊啊啊啊啊舒服| 夜夜高潮夜夜爽高清视频一| 色婷婷色99国产综合精品| 亚洲综合另类小说色区亚洲成av人片在www| 一本色道久久综合亚洲二区三区| 国产乱人妻精品入口| 亚洲情色91| 日韩国产中文字幕| 99久久久无码国产精品性男| 亚洲AV成人无码一二三久久| 九九九精品美女| 97人妻人人躁人人玩人人| 屌妞视频久久久久久久久久久久| 亚洲国产精品久久久久婷婷青年| 婷色五月天| 久久精品性| www成人啪啪18秘 免费| 国产理论视频在线播放| 国产在线激情视频| 99re国产精品视频| 午夜亚洲国产理论秋霞| 国产精品视频自拍在线| 亚洲国产精品无码AV久久久| 操逼网站网站| 亚洲中文字幕精品一区| 日韩熟女无码| 在线中文字幕| 久久精品国产亚洲妲己影视| 高潮毛片无遮挡高清免费| 日本高清视频xxxx| 国语av狠狠色丁香婷婷综合激情| 国产搭汕a级片| 日韩日韩日韩-国产乱码精品一区二区| 亚洲清纯唯美| 久热99999| 极品一区二区三区免费| 中文字幕免费在线观看| 欧美高清91| 日韩熟女精一区二区三区不卡| 黄色成年| 亚洲综合网91| 欧洲特黄毛片免费看欧洲毛片| 欧美成人一级麻豆| 日韩熟女操逼| 国产精品一级特黄aaa大片在线观看| 一区操逼日比视频| 看大黄色大片原件| 久操不卡视频| 超碰日本97美女人妻人人玩人人爱| 亚洲精品丝袜-不卡成人免费…… 久久久久成人蜜桃精品 | 人妻久久久| 俺去久久| 老女人碰碰在线碰碰视频| 激情四射婷婷六月天| 美女爽到高潮91| 国产91丝袜 在线播放| 91狠狠综| 大香蕉免费3| 新婚人妻扶着粗大强行坐下| 国产精品一区二区三区在线密挑| 人妻爽爽啪视频| 在线播放欧洲免费av| 精品人妻一区二区三区日产乱码| 免费超碰97在线观看| 巨爆乳肉感一区二区三区竹菊影视| 激情综合网激情五月天| 天天夜夜久久| 在线视频亚洲无码| 91操人| 国产在线不卡导航| AV男人天堂网| 欧美一级美片在线观看免费| 97最新在线播放视频| 日韩AV中文字幕电影| 色香综合天天影视综合| 三级精品三级在线观看| 99热精品在线| 偷拍片久久| 东京热一区二区中文字幕| 思思热影视| 五月天伊人| 强乱老妇中文字幕| 一区二区三区黄片免费观看| 久久熟女人| 日本熟妇自慰性高潮一区二区三区| 大香蕉伊人网| 九九在线精品| 激情欧美日韩女同久久| 一区二区高清视频| 日韩av乱伦| 久久久男人的天堂| 边做饭边操逼逼| 日韩乱插| 超碰69| 一区操逼| 欧美一区二区三区大综合| 亚洲性天堂| 操逼网站地址| 97超碰影音| 久久久久久精品免费看A级| 美女淫穴| 国内毛片热久久思思热| 日韩无码嘿咻黑热久| aV中文麻| 日韩成人网址| 天天影视综合色| 亚洲综合中文字幕有码| 嗯,啊。舔我逼| 亚欧成人综合影院| 欧洲精品一区二区三区| 亚洲成人精品在线一区| 国产农村妇女精品一二区| 性天堂| 偷拍 亚洲| 91欧美情色| 超碰人人妻| 777超碰| 亚洲欧洲偷拍一区| 久久专区| 色女综合| 欧美性爱91| 香蕉免费一区二区三区不读 | 日本黄色精品专区网站| 97综合国产精品高潮久久| av网站在线看| 久久久中文版| 国产福利在线视频网站| 乱色老一区二区三区的观看方式 | 国产精品午夜高潮呻吟久久av| 熟女熟妇伦久久影院毛片一区二区 | 成人自拍三级在线观看| 亚洲自拍一区夜夜操| 国产无码高清操逼视频| 97超碰总站| 日本日逼视频网| 黄页av| 中文字幕精品人妻丝袜| 日韩在线一区高清在线| 久操影视| 91女人的网站| 天天操夜夜嗨| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 999熟女精品| 强奸乱伦资源| 97这里有精品| 禁十八久久| 99啪啪视频| 日韩欧美亚洲自拍偷拍| 亚洲自拍欧美色综合| www.av在线观看| 亚洲有码视频二区| 99色日| 亚洲九区| 精品78| 不卡一区视频| 志村玲子视频一区二区| 欧美日韩另类在线| 久久人体一区二区| 丰满欧美少妇| 强奸乱伦大香蕉网| 漂亮人妻被强中文字幕hd| www.色婷婷| 精品毛片av一区二区| 后入合集| 96国产污污污丝袜| 麻豆天美国美国产| 综合久久六月久久婷婷| 看日韩黄片| 日韩综合色网| 97天天综合网| 日韩有码一区三区| 99精品久久久久久久婷婷| 97爱综合| 极品人妻少妇综合| www.男人天堂| 大香蕉十区| 婷婷色色五月天| 欧美国产精品| 欧亚无码视频| 大鸡巴久久| 久久久国产精品亚洲精品| 啊啊啊啊啊在线观看网址| 午夜福利视频在线一区| 日本中文熟女视频| 嗯嗯啊好爽| 草B在线| 久久精品视| 久久中日麻豆| 一二三啪啪专区| 五月综合激情| 免费一级视频特黄色大片| 99精品欧美一区二区三区桃色| 午夜.DJ高清在线观看免费7| 成人国产视频在线观看| 玖玖爱影院| 日本不卡一二区| 91操熟女视频 | 中文字幕国产| 日韩专区久久久| 精品国产99| 麻豆国产av网| 中文字幕精品人妻丝袜| 午夜欧美J进J出白浆流出久久久| 久久超碰爱| 欧美激情综合色综合啪啪五月| 国模少妇一区二区三区| 久久夜黄色无码A级大片| 日韩图区 偷拍| 天天夜躁日日躁狠狠2002| 欧美激情性爱视频网站| 欧美1区二区三区公司| 午夜福利国产欧美日韩夜夜| 97欧美资源| 欧美亚洲天天| 一区二区三区日韩欧美 | 亚洲日本大香蕉1| 物业黑人 AV一区| 爱妻综合网| 91n.欧美| 亚洲九九九九| 精品久久久av无码免费| 精品一区二区三区国产| 97超碰人人操人人操| 在线免费观看高清无码视频| 香港澳门日本三级网站| 少妇色| 97在线视频免费| 色吧5亚洲| 中文字幕人成乱码熟女香港| 性在久久久久久| 天天躁日日躁XXXXYY| 五月色综合| 欧美中文字幕男人天堂久久精品| 18精品一区| 久久久久久中文版| 人人摸人人舔一区二区| 欧美天天综合网版| 呦呦影院| 91精品国产高清久久久久久,亚洲成人| 在线v中文字幕一区二区三区 | 超碰人人干| av九九| 中文字幕艹艹| 亚洲系列欧美| 亚洲色图欧洲| 草草影院最新网址| 婷婷五月综合在线| 日韩 人妻 精品| 九七毛片九九毛片| 深夜国产福利| 翔田千里无码中出中文字幕| 无码少妇精品一区二区60岁老人| 嗯嗯啊中文字幕| 亚州色图欧美| 日韩91网站| 精品久久无码午夜福利| 99久久精品国产高潮| 大香蕉久操| 鸥美插入视频| 国产精品久久久久9999小说| 91亚洲色人| 超碰狠狠操| 97超碰资源网| 黄骗免费网站| 成人免费不卡在线视频| 97色在线观看| 92大香蕉| 丰满人妻一区二区三区四区| 中文字幕五区| 2026国产精品视频| 加勒比综合网| 国产亚洲色婷婷久久99精品91葵花宝典| 99热综合| 国产精品久久久久999| 91啪啪| 熟女乱伦二区| 国产人妻精品一区二区三区秋霞 | 亚洲精品官网在线观看| 国产精品久久9| 久久久78| 国产成人www免费人成看片| 欧美亚洲高清不卡| 91精品国产91久久福利| 九九碰九九爱97| 中文一区在线日| 激情婷婷综合久久| 日本在线一二| 2017超碰| 久久精品国产亚洲AV片多多| 天天看特黄的免费网站| 男女啪啪网站免费视频| 天天爱天天韩国日本牛牛牛牛| 丝袜高跟澳门91视频| 亚洲AV成人无码一二三久久| 天天综合影院91| 我要色综合网| 男人的天堂不卡一区二区 | 国产成年精品高清在线观看91| 宅男午夜在线视频| 操一操摸一摸| 青青草原狼av| 超碰在线人人射| 真实高潮91| 亚洲综合影院| 四虎影视在线| а√天堂资源官网在线资源| 亚洲最大的黄色电影网站。| 精品人妻一区二区三区免费视频| 亚一综合久久久久久久久久| 久草草一二三四区久久| 国产成年精品高清在线观看91| 69AV女优男人的天堂| 麻豆av一区二区| 五月丁香影视| 欧美天天综合网| 四虎影视在线| 摸奶性爱视频网站在线免费播放| 蜜桃视频一区二区三区在线观看| 日韩操逼HD| 日噜夜夜夜夜夜夜夜夜夜夜爽爽爽爽爽爽爽爽爽爽爽爽 | 成人精品一区二区三区| 中文字幕91页| 国产午夜福利合集| 久久人妻精品| 无码精品久久久久久亚洲| 亚洲欧美爆| 97在线精品观看视频| 亚洲日韩久久精品一区| 亚洲暴力强奸AV| 狠久久| 97蜜桃综合| 精品成人亚洲午夜电影| 国产AB视频| 日本欧美成人片AAAA| 91色人妻| 中精品一区二区三区| 婷婷五月色| 91P0RNY大屁股人妻| 久久久久久久久久精| 国产美女自拍AV| 欧美96在线|欧| 真实高潮91| 人妻一区视频| 日本媚薬中文字幕在线| 天天日天天舔东京热 | 亚洲精品国产熟女| 天堂av最新电影网| 久久久久久午夜男人的天堂| 国产精品久久天天干| 亚洲情色在线| 五月天综合网| 久久黄片国产一区二区| 超碰综合97在线| 一区久久久二区| 蜜桃av综合网发布| 美女天天干| 9久9久9久9久视频网站| 97超碰色屌| 人妻22p| 中日韩久久久| 91内射| 亚洲精品黑丝| 亚州成人A√| 成人午夜无码视频| 大学生口爆吞精| 91亚洲网站| 亚洲日韩熟女人妻高清在线| 偷拍欧美综合| 思思热免费视频观看| 狠狠操狠狠操操| 无码操逼天堂| 午夜天堂网| 丁香五月成人| 亚洲女毛多水多21P| 欧美夜夜草视频| 欧美熟妇色| 日韩淫色网| 91色图片| 91网站18在线观看| 亚洲精品亚洲人成人网| 国产成人自拍视频在线| 亚洲免费成人在线高清无码视频| 中文字幕丰满子伦无码专区在线视频最新| 国产欧洲精品亚洲午夜拍精品| 91在线限制级| 九九在线视频| 爱做久久久久久| 欧美日韩性爱视屏免费看了| 久久一区二区高清免费| se吧提供91精品国产91久久久久久 | 91欧美性| 秋霞午夜视频一区二区| 欧美最婬乱婬爆婬性视频 | 欧美性爱网97| 操B久久| xxx亚洲午夜天堂| 91蜜臀熟女| 伊人色综合网| 91ise欧美| 九九色图| 伊人五月天| 五月丁香色色网| 91精品大奶人妻| 欧美性爱精品一区二区| 97人妻碰碰中文无码久热丝袜| JuliaAnnXXX888| 91精品人妻五十路| 日本孕妇孕交| 日韩不卡一二三四| 97国产伦理| 久久人妻无码毛片A片麻豆| 日夜啪电影| 国产精品制服丝袜中文字幕日韩一区二区三区 | av网站在线观看了| 逼操网站| 操逼www.| 国产超碰| 亚洲第一页色| 91女网站| av情色影音| 99爱久久视频频| 口爆欧美91| 91在线|亚| 天堂麻豆天美| 日本999精品| 五月天伊人| 色亚州人久干视频在线观看免费版| 亚洲色图欧美色图制服诱惑| 中文字幕精品专区搜索结果91| 丝袜高跟澳门91视频| 久久日韩肥臀| 老熟女91| WWW啪啪的com| www网站黄| 91色综| 亚洲综合九| 2017天天操天天日| 99re免费| 午夜福利精品| 五月丁香久久| 日韩人体偷拍| 亚洲诱惑| 久久精品无码不卡| 99re超碰| 日韩操逼HD| 狠狠色婷婷| 久jiu久神马影院| 99色婷婷中文字幕乱色| 人妻喷水| 亚洲无码偷拍| 人妻乱仑一区二区三区| 香蕉综合网| 艳尻美人妻| 曰本道人妻久久久在线不卡色视频| 国产97亚洲| 国产精品人妻熟女aⅴ| 天堂中文日本在线观看| 9.1小视频| 国产亚洲精品久久久久小| 女人被添高潮免费视频| 亚洲射综合网| 精品人妻高清麻豆av| 日本视频在线中文字幕| 日本爽爽爽爽爽爽免费视频| av日韩手机在线影视| 殴美,日韩国产伦精品| 9 9无尺码天堂网| 免费αV在线视频| 日本 欧美 国产一区| 久久精品一区| 大奶的诱惑| 国产精品久久久久综合| 澳门成人网站久国产日韩| 蜜臀一二三区| 黄色免费一级在线毛片| 六月丁香啪啪| 操91| 四虎影视永久在线免费| 亚洲欧美九九| 91日韩网站| 久草国产在线视频| 色九九九九| 老熟乱一区二区三区四区| 欧美日韩亚洲一区二区在线观看| 丰满人妻一区二区三区四| 操操操操网黑人| 强奸抽插av| 69人妻精品一区二区绯色| 午夜无码熟妇丰满人妻| 久艾草在线精品视频在线观看| 97蜜桃综合| 亚洲 在线| 超碰AV在线| 91精品国| 无码动漫av中文字幕| 狂操嫩妻视频一区二区三区| 欧美激情亚洲| 婷婷丁香成人| 蜜桃丰满熟妇av无码区不卡| 中文字幕日韩专区精品系列| 熟妇人妻精品一区二区视频色欲| 久久亚洲一区二区色婷婷| 日韩av一级黄片| 久久综合久色欧美综合狠狠 | 在线观看中文av字幕| 狠狠躁天天躁日日躁97| 国产精品久久99日日| 情色五月天久久久| 久久无码一区二区二三区性色| 91九九九馒头| 91亚洲色图| 蜜臀精品1区2区| 亚洲Av诱惑| 五月婷在线| 中国和日本人色哪个不下载能放| 伊人五月天| 亚洲熟女诱惑| 91狠婷| 欧美精品三级黄片| 91偷拍欧美亚洲| 老熟女乱子伦中文字幕一区二区| 91路www| 色情乱伦AV| 欧美白嫩在线放| 中文字幕狠狠玩| 婷婷激情丁香| 另类图片五月| 日韩在线性爱免费视频| 亚洲诱惑天堂| 国产成人网址| 91中出| 欧美色图 人妻| 日本九九久久99| 波多野42部无码喷潮在线观看| 黄色二级片网站| 91香蕉视频在线观看免费| 夜夜嗷嗷一区二区| 亚洲高清无码在线桃色| 97视频在线观看免费高清| 青草青青久久久久久国产| 中文字幕精品免费一区二区| 欧美性爱网97| 九九RE视频在线精品| 国内伊人久久久久久网站视频| 精品人妻一区二区免费蜜桃| 久草免费在线一区二区| 97超碰超| 精品网站99999| 日韩精品色呦呦| 久久久久女教师免费一区 | 97精品免费视频网站| 性感女人网页在线观看视频| 国产绿奴视频在线观看| 91亚洲网站| 嗯嗯啊啊视频一区二区三区| www.狠狠| 中文字幕亚洲永久精品| 国产午夜精品一区二区三区牛牛| 日本不卡二三区| 色五月婷婷久久| 中国AV美女| 久久中文字幕人妻熟av女蜜柚| 嗯啊啊啊轻点视频 | 91影视亚洲| 国精品一区二区三| 国产精品视频白浆免费| 国产精品香蕉| 天天夜夜rb| 97这里只精品| 久久免费老司机精品| av无码av无码专区| 色悠久| 大香蕉性欧美| 久久久久久久 九九九九九九九| 人人爱人人操人人性| 亚洲影院成人| 国产999精品久久久| 日韩天天本| 婷婷伊人一区| 婷婷色综合| 国产午夜无码片在线观看影视| 日韩欧美亚洲自拍偷拍| 久久久专区| 高树玛利亚无码流出| 能直接看AV的网站| 欧美精品99久久久**| 亚洲97成人在线观看| 国产又粗又长视频| 色臀aV| 日韩大香蕉精品在线视频| 麻豆福利视频导航| 久久黄色网址| 人夜夜精品网站香蕉嫩草| 一区在线国产播放| 国产精品探花视频| 99只有精品| 啊啊啊好湿久久| 国产欧美日韩在线观看麻豆传媒公司| 午夜男女爽爽爽在线视频| 日本日逼高清| 欧美Aⅴ| 国产美女销魂在线观看不卡| 日日夜夜精品视频| 九九九网站| 好爽视频在线观看视频| 精品久久97| 麻豆av一区二区| 美女91在线| 9久久精品| 色香天天| 天天看天天日天天操| 97色97干| 97精品视频|