久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码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| 亚欧美综合网。| 高清肉丝中文无码| 国产真实子伦对白| 91ise欧美| 91AV天美在线视频| 又粗又长又爽在线观看| 校园春色宗合网| 欧美第二页午夜| 人人操 欧美| 久久性视频| 1二区9| 91老熟女视频| 蜜臀AV一区二区三区激情综合| 日天天九九天堂666| 亚洲国产av中文字幕久久| 青青草日韩无码| 国产视频小说| 欧美大香蕉专区网| 日产123区精品免费观看| 国产高清成人免费视频| 五月天社区| 国产av色网| 国产黄色 A 片免费看| 五月天伊人| 日韩精品人妻| 久久这里都是精品| 久久亚洲国产成人| 日韩一级二级在线| 国产中出内射一区二区| 欧美第38页| 久久专区| 91色爽欧美| 一级做a爰片性色毛片久久| 大香蕉十区| 亚洲图片激情小说| 有码色中文字幕在线观看| 人人模人人看| 99热导航| 骚逼高潮久久精品| 国产精品无码久久久久2025| 欧美亚洲清纯| 三级三级三级日本99| 久久精品国产Aⅴ| 91国产大片| 九九视频黄色片| 伊人久久久日韩一区| 亚洲一区二区三区不卡国产欧美| 久久久久久裸体| 成年人性爱日韩| 亚洲第一页色网| 猛交交| 日韩欧美大片免费高清啪啪| 后入综合久久| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 国产精品免费视频人成| 欧洲一区二区三区四区在线观看| 婷婷五月丁香五月| 超碰精品国产无码| 免费成人在线熟妇网| 国产精品爽爽va在线观看98| 人妻久久一区二区三区 | 中文字幕日韩电影人妻| 久久久久成人网| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 欧美一级三级| 一级人妻性爱视频| 天天搞欧美| 久久黄黄| 久久一区二区高清免费| 国产精品熟女一区二区三区| 欧美在线色| 天天做天天爱天天爽| 免费αV在线视频| av情色影音| 欧美刺激色黄片免费看| 青草草免费网站av| 91美女小视频| 国产亚洲色婷婷久久99精品91葵花宝典 | 99这里有精品| 欧美一级做a爰片免费视频| 欧美性爱第1 页| 97欧美色综合| 蜜臀99999| 亚洲欧美精品91| 国产一区二区三三视频| 色噜噜国产精品视频一区二区| 狠狠躁天天躁日日躁| 午夜福利在线合集| 熟女人妻av在线资源,黄色的资源| 国产91美女视频| 伊人网在线视频| 精品国产乱码久久久久A| 岛国视频免费在线观看| 激情抓乳插进去啪啪啪日韩 | 亚洲激情四射| 综合免费无码中文| 一牛影视成人片免费| 精品久久久久久中文字幕视频免费| 精品九九淫乱男| 婷婷国产精品九区| 99久re热视频精品98| 久久成人午夜精品影院| 亚洲成人黄色在线观看| 亚洲国产精品成人综合| 亚洲欧美日韩免费观看| 欧美日韩资源| 亚欧成人一级片在线播放| 国产精品农村妇女精品| 91女优在线观看 | 伊人97超碰| 国产精品岛国片在线观看| 欧美性爱免费短视频| 欧美男人天堂| 亚洲成aⅴ人片不卡无码| 青青草在线视频播放器| 久久久久幕乱码| 中文字幕第23区| 人人超碰在线观看黄| 真实高潮91| 麻豆AV一区二区| www.久久| japan日本高清乱xxxx| 午夜男女爽爽爽影院视频| 日本综合色图| 日韩AV无码网站| 国产精品不卡高清在线观看| 大香蕉免费3| 久久婷婷国产一区二区色| 亚欧性爱ab| 欧美日本国产日韩激情视频| 国产18精品亚洲精品| 欧美黄色大香蕉一区二区| 久久AV无码网址| av天堂手机版追回 | 久久狠狠色噜噜狠狠狠狠97| 亚洲欧美在线观看无码| 巨爆乳一区二区爆乳区| 黄色毛片A片| 综合久久99| 天天日天天爽| 日韩啪啪啪啪啪| 无码99| 艹我哪美一区无码| 国产综合久久久鬼色| 色大香蕉97N| 青娱乐手机日韩在线视频| 久久超碰av在线| 日本五区不卡| 性爱视频免费网址| 国产精品一区二区三区,亚洲综合| 无码av永久免费专区网站| 丰满人妻大屁一区二区| 神马久久久久眼| 久久久久久久78| 精品视频久久区| 蜜桃天美传媒AV一区二区三区| 五十路三区在线| 欧美伊人久久综合网| 亚欧无码在线| 噜噜在线| 青青草成人视频在线观看二区| 亚洲一区制服诱惑| 淫荡网址| 男女真人网18| 日韩欧美丝袜诱惑| 伊人嫩草| 亚洲在线网站| 婷婷综合激情| 日韩不卡码| 久草精品在线| 午夜AV人气不卡| 色色五月婷婷| 国产性爱欧美性爱在线| 熟女人妻一区二区三区| 17c在线成人免费A片观看| 立川理惠加勒比无码| 绯色一区二区三区不卡少妇 | 老熟女网站| 99国产在线 精品 视频| 欧美天天拍| 亚码人妻| 中日韩免费看男女操逼大全| 超碰在线人妻| 高清无码91| 国产亚洲深夜激情| 欧美熟妇视频| 久久久九九九九| 97精品在线视频| 在线a v| 日韩av熟女一区二区三区成人| 久久久久久久综合,国产| 91N综合网| 人人干人人操人人爱| 欧洲熟妇xxXx欧美老妇裸体| 综合激情一一91| 色吧5亚洲| 一级久久性爱视频| 91热色| 北约熟女超碰| 成人在线永久| 午夜福利无毒不卡| 日韩78m视频| 亚洲爽图| 99久久无色码| 插入逼91| 啊啊啊不要啊啊受不了了视频在线| 免费成人自拍视频在线| 欧美后进式| 色九久| 大香蕉综合在线| 国产欧洲精品亚洲午夜拍精品| 日本成人免费一区二区三区| 日韩一级二级在线| 新亚洲无码| 天天综合日韩网| 俞拍久久国应视频| 99免费视频| 日韩BBN| 五月丁香啪啪网| 96久久久久久久| 亚洲av无码成人精品国产| 欧美伦乱| 欧美熟爽综合| 欧美αv.com| 男人的天堂VA在线| 国产精品宅男免费| 精品视频一区二区| 国产九月婷婷| 黑人猛交| 日韩人妻精品中文字幕| 天天草AV| 特级毛片特黄久久免费看| 蜜桃视频精品一区二区三区| 亚洲AV秘 精品久久老牛影视| 射丝袜大香蕉| 久久性爱大全| 亚洲日韩资源| 操操啪| 91亚洲在线| 中日韩久久人妻一区二区| 午夜国产乱伦视频| 手机在线大香蕉| 99热色这里只有精品| 亚洲综合第一页| 精品久久久久9999| 一级特级aaaa毛片免费观看| 蜜臀久久99精品久久久久久成人小说| 亚洲五月丁香花狠狠干一区二区三区| 日韩小电影| 嗯嗯嗯啊啊啊干死我吧| 久久婷色| 久久久精品91八戒| 91熟女视频网| 午夜精品99久久久久传媒| 亚洲无码超碰免费| 婷婷九月丁香| 日日天天久久啊啊aaa| 欧美精品成人在线播放| 日韩9区| 三级网站超变态精品| 亚洲五码一区二区三区| 亚洲无 码A片在线观看麻豆| 成年在线视频日本亚洲在线视频区精品江靖宇公司 | 亚洲成人日韩小说| 亚洲在线a| 久久久久久久久久久久久久久乱码| 搡老女人老妇女AAA一VU麻豆| 色情乱伦AV| 九九九国产| 婷婷五月天无码| 九久9精品| 亚洲国产一区二区入口| 人妻性爱一区二区| 中文字幕一区二区三区50路| 91黑丝操| 99蜜桃臀亚洲成人在线观看| 欧美亚州手机在线| 国产强奸乱伦xd| 久久视频少妇美女| 在线观看A啊啊啊| 淫妻综合网| 操逼www.| 成人一级性爱| 午夜性生活av免费在线看| 丰满熟妇大乳做爰| 欧洲精品久久| 99re在线视频国产| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 欧美人妻一区| 无码WWW免费视频网站| 国产精品 视频| 亚洲天天自拍| 久久久性少妇| 色情婷婷久久五月天| 成人无码专区精品视频| 1024亚洲中文字幕久在线看片你懂的 | 欧美玖玖爱免费玖玖| 一区 欧美 日韩 麻豆| 91超级碰碰| 精品国产乱码久久久久久口爆网站| 人妻干天天| 在线观看不卡一区二区三区| 国产色图乱伦| 秋霞一集毛片观看| 一本色道人妻久久| 俞拍久久国应视频| 丝袜AV一区二区三区| 日韩青久久| 久久久噜噜噜久久人妻| 久超碰这里只有精品| 操逼短片| 欧美熟妇色| 青草一区二区| 超碰99在线| 欧美色图校园春色| 综合色区偷拍| 国产亚洲性生活视频播放| 黄片www视频免费| 天天噜| 97精品久久| 国产91精品在线免费| 少妇内射www在线观看视频| 91夜夜蜜桃臀1区2区3区| 另类小说五月天| 色色色综合网| 久久大香蕉手机高清| 91国产精品熟女| 天天日日本| 色五月第四色| 黄页网站成人免费| 另类欧美色| 91老女人| 国产91乱伦| 爆操无码| 密臀成人视频久久久| 97伦乱| 色老大| 天天视频黄| 国产欧美精选自拍一区| 午夜寂寞欧美| 韩国久久97| 成人精品视频一区二区| 超碰到97情色| 精品999999| 国产精品女生av| 女人午夜视频777| 五月婷婷六月激情| 殴美性色a级欧美| 综合色拍| 色欧美综合| 国产亚洲精品美女久久久| 中文字幕精品一区二区精| 亚洲图片偷拍视频区| 嗯啊啊啊轻点视频 | 自慰白浆在线观看| 国产精品 午夜福利| 婷婷美人网| 91丝袜美女视频| 天天色黄色影院天天操| www.婷婷六月天| 日韩精品操少妇| 97色操| 久久天天艹| 久久色情| 青青三级视频| 亚欧高清| 囯产乱伦一区二区三女| 久插综合| 熟女人妻一区二区三区免费看 | 精品丰满熟妇人妻一区| 国产一区二区在线播放量| 韩国黄色片精品久久久| 中文字幕91页| 爱欲AV| 综合少妇网| 欧美自拍偷拍综合图片| 超碰在线人妻| 超碰社区97| 国产AV色黄看到爽| 成 人 影视 一区 二区 三区 四区 | 麻豆啪啪啪视频| 亚洲色欲一区二区三区| 91人妻熟女| 黄色高清无码无码破解免费暗网| 无码一区二区三区四区五区六区七区八区九区十区视频 | 欧美爆操91| 精品玖九九久| 免费啪啪啪网站18岁| 天天综合香 ld视频| 高清孕妇孕交 交| 欧美成人性爱视频免费观看| 91五月天| 99re在线| 91女网站| 国产精品午夜福利亚洲综合网| 一区二区三区四区色图| 日逼97| 岛国成人av在线播放网址| 久久久不卡区一区二区三区久久久| 91黑丝在线| 五月天婷婷久久| 日本亚欧爱爱| 大香蕉黄色一区| 精品免费国产二区三区 | 99久在线精品99re8热视频在线| 精品无码一区二区三区色欲| 久久手机视直播| 777超碰| 五月激情天| 无码二级三级| 99在线观看| 欧综合网| 日韩av熟女一区二区三区成人| 神马久久久久久| 欧美一区91大爱| 欧美色图亚洲色| 少妇一线天久久久久久| 亚洲人妻日日日| 91久久久久久| 青青草原香蕉日本Ap| 国产精品免费视频人成| 亚洲视频小说| 在线看片国产精品每日更新| com 首页 18岁 禁区 女优 免费 精选 同城| 成人性爱美曰韩| 人妻五十路在线| 26uuu国产免费观看| 女人18精品一区二区三区| 亚洲啪啪性视频| 亚洲熟女av中文字幕| 国产成人无码久久精品| 91人妻熟女| 熟妇亚洲一区二区三区| 日本操嫩b网| 97伊人超碰| 亚洲天堂,男人| 69少妇一区二区| 亚洲AV乱码专区国产噜噜亚洲| 国产在线观看91精品一区| 91日产欧美| 美女被艹尤物视频| 成人久久久| 欧美成人综合| 久久曰曰| 欧美一二三级精品在线| 综合亚洲网| 操b网站亚洲无码| 日韩人妻中文视频| www国产无码| 久久久久久少妇| 欧美日韩色图片| 亚洲成?V人片在线观看福利| 精品少妇99| 亚洲免费97免费| 久久婷综合| 亚洲精品国产专区在线观看| 色淫网站优优视频| 欧美青青视频| 内射日韩大臀美女| 综合婷婷| 亚洲精品人妻吞精av| 国产1024在线播放| 久久久亚洲精品中文字幕人妻| 久久久久久中文版| 志村玲子视频一区二区| 丰满高潮18xxxx| 国产狂喷潮在线精品| 久操电影网| 人人澡人人弄| 九九热免费在线国产视频伊人五月| 抽插无码高清一区| a男人的天堂久久一级A毛片| 综合网少妇| 人妻内射一区二区在线视频| www.色婷婷| 伊人久操| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 五月天亚洲网| 久久精品老司| 精品大久久| 欧美激情总合网| 99久久9| 国产情侣自拍在线播放| 成人亚欧免费视频| 成人精品久久久午夜福利| 91麻豆天美传媒在线| 亚洲日本天堂| 久久日本熟妇熟色高清| 干b在线性社区| 天美麻豆精品视频99| 日本网色| av中文在线| 日韩乱插| 秋霞视频一区二区| 艹我哪美一区无码| 超碰免费人人| 婷婷五月天色| 大胆91| 嗯嗯啊中文字幕| 日本女优在线视频福利| 在线强奷到舒服的无码视频 | 丝袜狠狠草尤物人妻av91| 青娱乐啪啪视频| 99久久网站| 精品人妻一区二区视频| 国产亚洲精品激情| 波多野42部激情无码喷潮| 97资源站国产精品| 水滴偷拍| 影音先锋日本一区二区| 麻豆视频一区二区| 三级日韩一区二区三区| 大香蕉视频一二三区| 精品人妻中文字幕4399| 精品在线观看视频在线| 日韩一区二区精品视频| 天天日天天舔东京热| 热久久国产精品视频大陆精品| 91国产美女丝袜足交精品视频| 男人的天堂日本东京热| 欧美 亚洲精品首页| 国产农村妇女毛片精品久久| 少妇的嫩逼图片| 翔田千里AV无码秘 三区| 国产成年女人免费视频播放a| 日韩欧美大片免费高清啪啪| 欧美性爱三区二区| 人妻乱仑一区二区三区| 日韩av色图综合| 99后入| 日韩av在线精品观看| 在线99热| 视频在线观看青青99国产| 我要去看2个日本美女.com曹逼| 色婷婷九月天天综合| 亚洲黄日韩无码专区| 成人怡红院| 在线观看国产黄色| 欧美色图 人妻| dy888午夜老子影视达达兔 | 性站 | 人妻激情另类| 97操B| www.色婷婷| 蘋果手機免費看成人Av| 91视频综合网| 99久久婷婷国产综合精品草原| 欧美日韩国产传媒在线精品| 18+91网站| 国产呦精品一区二区三区下载| 美日韩一二三区| 强奸乱伦 亚洲一区| 日韩成人色图| 日韩av无码网站| 97chaopengongkai| 色色色色综合网| 中日韓欧美高清| 午夜免费视频1000| 亚洲中文字幕在现观看| 精品国产自在在线99| 美欧色综合| 九九热视频在线观看| 91亚洲最新在线| 爱射综合| 免费岛国一级片| 亚洲综合图文| 国产91久久九九免费精品无码| 国产99999久久精品| 无码不卡亚洲成?人片| 97在线青| 中日高清无码操逼视频| 97欧美日韩| 熟女AV一区| 国产久久一区二区午夜| 秋霞一级鲁丝片A片| 走光一区92下载| 久久婷婷五月天| 曰韩精品视频一区二区| 国产精品不卡一区二区三区| 亚洲高清在线| 国产精品久久久久亚洲av| 久久久精| 超碰这里只有精品| 丰满少妇乱子伦精品无| 亚洲丝袜诱惑| 97久久天天综合色天天综合色电影| 欧日a| 超碰久久综合| 青青草十区九区爱夜| 69精品少妇一区二区三区蜜桃| 亚洲av综合色| 亚洲国产ⅴ高清在线观看| 久久精品无码专区| 国产91美女视频| 无毛精品| 狠操91,com| 亚州欧美另类| 粉嫩久久久极品| 狠狠躁日日躁夜夜躁A| 亚洲综合九九| 久久婷婷影院| 骚逼高潮久久精品| 五月丁香色综合| 国精精品无码一二三区水多多| 久久一区二区三区四区五区| 91肉丝| 蜜臀Av一区二区三区| 91在线一起| 亚洲在钱| 加勒比无码毛片| 欧美人妻色| 有码色中文字幕在线观看| 欧美在线啊啊啊| 亚洲超碰综合网| 97jingpin| 亚洲九九视频| 人人搞人人插人人操| 又粗又长又大国产不卡| 在线无码视频| 国产尹人在线视频免费| 国产九月婷婷| 欧美五区| 欧美在线亚洲| 五月亭亭六月丁香| 国内精品久久人妻性色av| 国产精品一区午夜福利| www.狠狠| 久久av色| 一区二区影视| 亚洲国产精品无码AV在线| 99热只有这里有精品| 清柠毛片| 日韩色图 一区二区| 天堂在线一区二区| 97操碰| 一道α片欧美| 巨爆乳肉感一区二区三区竹菊影视| 色色色网站| 久久97资源 网| 一级黄碟| 岛国毛片手机在线观看| 在线观看啊啊啊啊啊| 日韩电影在线观看网址| 国产热RE99久久6国产精品首| 人人手机欧洲亚洲国产人妻| 亚洲久9| 久久婷婷亚洲| 91精品操美女| 色综91| 97人人模人人爽人人| 少妇超碰在线| 亚洲风情在线观看| 日本一级性爱| 精品国产一区二区三区久久久蜜臀| 久久一二三四不卡 | 91夜色| 厕所偷拍在线| www国产无码| 久久久9视频| 五月婷亚洲精品天堂| 女优免费一区二区永久| 久久高潮妇女视频| 久久精彩免费视频| 日逼97| 极品五月天噜噜| 久久精品国产亚洲AV清纯| 欧美久久久15P| 免费一级精品啪啪视频| 午夜无码熟妇丰满人妻| 一区三区啪啪| 中文字幕伊人| A级片一区| 午夜后入| 91精品久久久久久77777| 四虎免费看黄| 秋霞一级视频在线观看免费| 久久99久久99精品天美传媒棢·纸:. | 成人性爱视频在线看| 嗯嗯啊啊啊啊轻点视频| 欧美日韩999| 亚洲欧洲激情卡通另类文学四射小说网站| 欧亚成人| 欧美高清18A片| 夜夜国产一区| 亚乱色| 亚洲牲交| 日韩成人性爱AV| 亚洲九九视频在线观看| 国产精品一二三免费网站| 亚洲色图尤物视频| 亚州中文字幕超碰97| 男人高清无码一区二区| 91日韩| 人妻人久久精品中文字幕| 午夜天天碰综合视频| 99久久精品无码一区二区| 亚洲AV无码乱码| 东京热一区二区三区四区五区六区| 中日韩欧美精品无码AⅤ一区二区| 亚洲人妻五月丁香婷婷| 啪啪视频mP4| 99热伊人| 中文字幕二区日韩天堂| 污啪啪啪视频| 欧美国产日韩清纯唯美| 蜜乳AV色欲AVAV无码| 日韩欧美午夜一区二区| 青青青国产手线观看视频2| 综合色一区三区二区| 中国黑人三级片网站上区| 婷婷五月花| 大香樵伊人网| 情色日播放AV| 欧美香蕉视xxx| 亚洲 91 在线| 97人肏| 俺去俺来也在线www| 欧美丰满少妇xx高潮| 欧美激情精品久久久久久| 婷婷av在线中文字幕| 婷婷丁香人妻 | 啪啪综合网| 亚洲熟妇一,二,三期| 精品成人动漫一区二区| 色爱三区| 久久欧美1卡2卡3| 美欧老女人97| 人妻人久久精品中文字幕| 9久久久久久| 亚洲一区日韩精品中文字幕 | 亚洲欧洲偷拍一区| 亚洲欧洲小说图片视频 | 91天射| 久久久免费懂色| 熟女精品日韩一区二区三区| 亚洲精品影视老司机| 制服乱伦| 国产精品69久久久久久久| 日本乱人伦片中文三区| 五月丁香社区婷婷日韩欧美精品影院| 手机在线看片免费人成视频| 性色高清在线| 射久久| www.婷婷五月天| 欧美A√综合网| 在线视频亚洲无码| 美女高潮视频91| 亚洲影视综合| 天堂精品在线| 91九九| 91neishe| 亚洲性少妇| 岛国激情视频软件| 嗯~啊~快点 死我视频| 国产视频大全| 亚洲欧洲日本精品中文a∨| 91狠狠色丁香婷婷综合久久精品| 亚洲一二三四区在线免费看视频| 三级AV入口| 快点操死我| 日韩中文字幕国产| 蜜桃视频精品一区二区三区| 人人操人人摸人人骑| 国产久久视频| 影音先锋乱伦资源| 久久曰曰| 强奸乱伦大香蕉网| 美女天天干| 色色婷婷丁香| 日产操逼| 91精产一区二区三区| 啊啊啊啊啊在线观看网址 | 99999精品| 一本久道久久综合狠狠爱| 久久久精品一区二区| 乱伦av.com| 超碰欧美在线欧美| 亚欧高清在线| 思思视频免费看网站| 国产后入清纯| 99热这里只有精| 大象AV在线| 九九九九九九九九九五码| 婷婷视频在线免费观看| 91久热| 国产蜜臀精品一区免费尤物| 影音先锋少妇| 国产精品动态一区二区三区四四| 夜夜操二区| 先锋色眉乱伦资源| 美女好片色日本| 欧美第38页| 爽爽淫人网| www黄片免费看com| 天天插夜夜操| 色97欧美| 91丨精品丨国产丨丝袜| 日韩一999精品| 日韩精品中文字幕一| 日韩无码极品| 中文字幕青青草| 色鬼在线综合| 久久久久亚洲av综合波多野制衣| 在线二区不卡| A男人的天堂| 少妇与黑人高潮在线| 色色婷婷丁香| 色五月综合| 天天干天天干天天干| 狠狠干婷婷| 操婷婷逼| 亚州色交| 久久偷拍人| 91在线/欧洲| 亚洲色图国产另类| 久草在| 亚欧操逼片在线观看| AV有码在线| 另类小说欧美激情校园春色| 国产一级做a爰大片免费久久| 嗯啊视频免费在线观看| 在线观看无码三级少妇| AAAAAAAAA黄片| 国产久久成人| 亚洲啪啪视频一区二区| WWW黄片COM| 五月丁香| 欧美性,亚州色| 亚洲国内精品成人不卡| 九九人妻| 亚洲日韩人妻中文字幕一区| 中文字幕在线观看永久| 黄色电影观看久久9| 五月婷婷激情综合| 色呦呦、国产精品| 狠狠躁日日躁夜夜躁A| 91国产伊人大香蕉| 日韩一级二级三级| 久久亚洲欧美中文字幕国语| 中文字幕狠狠玩| 天天操狠狠日夜夜干超碰撸com视频在线观看 | 日韩av一级黄片| 色久综合| 情色av电影| 亚州欧美综合| 综合五月婷婷亚洲一区| 天天爽天天操啊啊啊| 国产精品视频播放| 人妻精品一区一区三区蜜桃91| 欧美色乱| 亚洲黄色网址视频| 91亚洲人电影| 97精品人妻一二三四| 91天天综合日韩欧美| 人妻二区| 新精精品久久精品| 无人区高清电影免费观看一区二区三 www.qmcai2.com | 精品国产乱码久久久久久久久1| 日日干夜夜欢| 91在线超高颜值国产| 麻豆久久久久久久久丝袜 | 自拍第一页| 久草网站免费在线观看| 国产熟女精品区| 亚洲自拍偷拍视频在线| 激情五月天网站| 日本 情色 1区2区3区| 亚洲欧美综合| 九九在线视频| 日本顶级天天操狠狠操夜夜操中文字幕| 欧州激情视频在线一区二区| 午夜在线播放| 无码欧美有限公司| 95自拍视频在线观看| 欧美大片一区二区三区| 在线观看日韩av不卡| 无码精品啪啪啪一区二区三区三州| 一区二区三区亚洲| 亚洲极品| 99热在线播放| 美女裸体无遮挡永久免费观看网站| AV一二区| 日本性爱欧美性爱| 97在线欧| 六月丁香网| 久久人妻| 97天天弄| 亚洲天天艹| 亚洲国产精品成人综合| 97久久国产亚洲精品超碰热| 欧美一级做a爰片免费视频| 麻豆av一区二区| 欧美日韩少妇色情| 日本一区二区不卡精品| 欧美精品97| 国产又大又粗又长视频在线| 日本一区二区做爱的视频| 2020中文字幕在线观看| 1204av韩国| 男人的天堂啪啪啪啪啪蜜桃不卡| av爱爱爱| 亚洲国产97| 1204av韩国| www狠狠| 韩美日操逼| 日韩欧美天堂| 91嫩草欧美| 色色丁香| 亚洲成人无码影院| 无码 黑人一区二区三区| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 曰本熟女视频| 日日干日日| 婷婷六月色开| 天天插夜夜操| 激情小说亚洲| 精品9999| 国产视频97| 九九九只有精品| 嗯嗯啊啊视频一区二区三区| 久久97资源 网| 99.色网| 97视频900| 少妇色综合| 伊人四虎综合| 情色五月天就去干| 亚洲毛片基地专区| 天天综合网日韩| 色哟哟综合| 日韩操逼HD| 一区二区三区欧美激情| 久操九九九九| wwe 天天干.com| 另类欧美| 九九热九九| 国产精品熟女九色九色蜜臀| 国产h片在线观看视频| 青青草天天亲夜夜操网| 婷婷五月天_亚洲小说欧美激情另类_精品久久国产字幕 | 亚洲综合97| 无码免费在线观看黄色片| 久热精品在线国产| 欧美操逼熟女| 欧美性爱精品一区二区| 精品婷婷| 久草精品国产蜜臀| 99re69综合| 欧美丝袜美女电影一二三四区| 亚洲污污网站| 在线啊啊啊| 精品蜜乳AV免费观看| 久久精品国产96精品亚洲拳交| 国产精品自产拍在线观看社区| 国产做?爰片久久毛片?片美国| 亚洲欧综合另类无码一区| 天天干一干| 妇人噜噜| 91狠狠综| 五月丁香婷婷啪啪| 欧美熟女丝袜| 国产福利合集| 东京热亚洲一区二区| 亚洲色图欧美另类在线| 色欲久久99国产精品久久久久久| 国产v片在线免费观看| 六月丁香婷| 色九九九综合| 韩国一级做a久久久久| 日韩 欧美 视频 在线 一区| 日日碰狠狠添天天爽超| 欧美日本天堂| 免费观看性欧美一级| 天美传媒av 在线| 免费视频一二三区| 日韩97超碰中文字幕| 草久在线| 密臀在线免费观看| 亚洲小说视频| 欧美性爱一内片一区二区三区| 人妻欧美| 97色色色综合网站| 91精品人妻偷情| 嗯嗯啊好大| 国产色呦呦| 欧美天天搞| 97人肏| blacked精品一区国产| 欧美超碰人妻97| 色吧综合网| 白丝AV| 国产亚洲精品美女| 黑人嘿嘿嘿超爽免费视频| 97久久综合网| 小少妇| 成人免费看吃奶视频网站| 日韩精品电影| 96精品在线| 成人a大片在线观看| 婷婷激情四射| 大香蕉宅男伊人| 色婷婷基地| 欧美成年人性爱视频免费观看| 亚欧美综合| 干b在线性社区| 色av中文字| 亚洲码专区| 日本操色导航| 亚洲高清综合网| 久欲AV| 伊人久久久日韩一区| 亚洲天堂另类美腿| 人人摸人人叼| 婷婷丁香九月| 97超碰色色| 亚洲天堂资源在线| 中文字幕在线观看AV| 99re9在线| 亚洲蜜乳av| 日韩av电影成人在线| 欧美97色| 久9爱精品| 国产美女91| 性九九九九九九| 91少妇香蕉久久精品| 日日干日日| 久久极品伊人| 偷窥自拍亚洲天堂网爆| 亚洲av无码国产精品字幕| 天天日天天操天天射河南省| 亚洲欧美999| 中文字幕丰满子伦无码专区在线视频最新| 国产精品另类| 99少妇| 精品国产Av无码久久久伦古装| 五十路三区在线| 久久永久无码人妻视频| 91模特在线观看| 精品人妻一区二区三区不卡断 | 超碰 另类 欧美 | 亚洲91少妇| 国产亚洲欧洲在线观看| 第45页一区二区| 亚洲熟女一区| 中文字幕久久精品一区| 啊啊啊啊啊,啊啊啊啊好舒服,操我舒服啊啊啊 | 久久超碰98| 狠狠爱AV| 床戏久久久av一区二区麻豆| 9久热这里只有精品| 992视频一区| 91老熟女视频| 91福利网在线观看| 国产精品一级片在线看| xxx0国产在线播放| 丁香久久| 欧美玖玖爱免费玖玖| 97久久国产精品| 伊人一级免费黄片| 久久久久99精品成人片蜜臀| 99国产在线 精品 视频| 久久视频,这里只有精品| 欧美高清色| 熟妇熟女亚洲天堂网| 欧美97av| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 性饥渴少妇av无码毛片| 亚洲AV无线| 亚洲另类在线观看| 黄色不卡视频| 国产精品另类一区大香蕉| 91大神精品长腿在线观看网站| 青娱乐国产精品| 开心六月色| 91性情| 毛片电影一区二区三区| 超碰碰97| 精品99999| 手机看片1024你懂的国产| 久久久婷婷婷| 日本新免费二区三区| 偷拍 欧美 日韩| 激情国产乱伦Av| 亚洲精品 欧美精品| 在线观看免费视频国产| 色呦呦、国产精品| 国内偷拍精品一区二区| 婷婷性爱| 快灬快灬 一下爽蜜桃在线观看 | 哈哈操电影AV| 偷拍亚洲熟女视频播放| 人妻人人澡人人爽人人| 999精品久久久久久久| 激情丁香婷婷| 四虎精品一区| 99精品免费| 中文久久久| 啊啊啊啊啊啊啊国| 欧美精品精品一区二区| 东京热免费视频| 亚洲色图 91| 伦理片秋霞免费影院| 一本色道久久综合亚洲二区三区| 日日操丁香五月天| 91 国产丝袜在线播放-百度| 亚洲国产麻豆一区二区三区| 91国精产品| 99久久综合网| 乱抡国产91| 超碰在线91| A级片一区| 91网18| www.av在线观看| 蜜臀视频网站| 色婷婷蜜臀av| 8050无码八戒| 亚洲精品91| 久久少妇视频| 天天综合网日韩7799| 亚洲中文字幕在现观看| 91熟女少妇| www.97在线| 一区三区啪啪| 91人妻少妇| 丰满欧美放荡少妇在线| 操操操日本的逼| 91女色| 丝袜狂射91| 神马视频久久久久久| 国语国产操逼伊人AV网| 久9九综合在线| 人妻丝袜日本| 久久久久久综合久久伊人蜜月| 屁股久久久久久久| 男人的天堂久久狠| 欧美色偷拍 | 丰满人妻一区二区三区免费| 91国精产品| 人妻夜夜爽天天爽麻豆三区网站| 日韩激情中文字幕有码| 曰韩人妻中文字幕在线| 亚洲色欲一区二区三区| 国模精品娜娜一二三区| 亚洲制服aⅴ中文字幕| 思思视频免费看网站| 亚洲午夜av| 国产欧美一区激情交| 亚洲色色探花| 伊人影院综合是一个与深夜成人在线| 欧美日韩中文视频播放| 精品999一区二区| 亚洲国产成人精品女人久久久| 久久综合日韩亚洲欧美| 啊啊啊好湿久久| 亚洲蜜臀懂色| juliaann丝袜大战黑鬼| 超碰98综合网| 久久久久人| 传媒在线观看一区二区三区| 超碰欧美COM|