久久亚洲成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
返回資訊列表
久久久111| 亚洲国产成人精品女人久久久| 日日躁天天躁狠狠躁| 一区AV| AV九九| 情色五月天网| 在线观看色视频| 麻豆AV短剧| 国产91 丝袜在线播放00-百度| 国产福利小视频高清在线观看| 成人精品电影| 亚州综合在线| 男人高清无码一区二区| 亚洲 欧美 另类 日韩 人妻一区| 操逼www.| 午夜福利在线合集| 亚洲一区二区三区中文字幕| 欧美日韩婷婷中文| 国产精品久久久无码AV网站| 91欧美丝袜| 久久久免费的精品| 情色五月天就去干| 日本123区操B视频| 91狠狠狠| 日本 欧美 亚中文字幕| 综合色欧美| 激情综合婷婷| 天天色欧美| 久久久精品日本一道| 高清视频一区| 亚洲日本加勒比在线| 探花熟女,姿勢到位,體驗感也到位| 十八禁啪啦拍视频无遮挡| 伊人991| 成人麻豆av电影网站| 精品射1999| 午夜啪| 国产有码一区| 国产操逼视频在线观看| 成人在线永久| 婷婷丁香五月激情啪啪| 91日韩网站| 亚洲精品亚洲人成人网| 97干在线| 国产精品视频| 99久久e免费热视| 亚州日韩97| 玖玖玖玖精品国产剧情| 视频黄站| 欧美夜夜狠| 大香蕉伊人75| 国产超碰国产97| 99re免费视频精品全部| 91综合国产精品| 国产精品自产拍在线观看社区| 超碰久超碰久| 超碰97最新人妻| 欧美日韩一区二区三区四区蜜桃| 青青青在线高清视频在线一二三四区| renqi久久久久久久久久久久| 国产精品免费久久久久久久久久| 久久99草| 蜜桃久久综合视频| 日本人人操人人操| 日韩三级av片| 丝袜天堂网| 在线 制服丝袜中出 人妻| 绯色一区二区三区不卡少妇| 色在线69堂| 激情五月天丁香| 大香蕉伊人网| 欧美精品欧美精品系列| 青青草日逼视频| 免费看国产曰批40分钟怎么下载| 中国韩国明星一极片一区乱码毛片人妻熟女一区二区三区 | 天美一二三在线观看Av| 亚洲天天影视综合网| 男女激情黄色网址| 男人的天堂Va| 亚洲精品国产精品乱码不卡| 巨爆乳肉感一区二区三区竹菊影视| 熟妇色99| 欧美久久婷婷| 99综合| 亚洲欧美在线观看无码| 熟女少妇视频| 精品中文日韩字幕视频| 日韩AV噜噜噜一区二区三区四区| 五月天亚洲色图| 男人的亚洲天堂| 色色热| 做爱A级亚欧| 亚洲人妻色图| 久久色AV线| 偷拍五区| 91精品又粗又猛又爽| 国产亚洲综合欧美一区| 亚洲h片在线免费观看| 欧美一区二区三熟女剧情| 18一区二区三区| 日本在线不卡v二区| 乱伦熟女论坛| 校园春色五月天| 狠狠爱夜夜| 日本国产亚洲一区在线观看| 一区二区三区一亚洲中文字幕、综合区灬 | 国语少妇精| 日韩图区| 精品熟女一区=区三区| 91精品伊人久久久大香线蕉91| 九九综合九九综合| 欧美成人一级麻豆| 国产一区二区二区按摩精品啪视频| 97免费视频在线观看视频| 麻豆AV一区二区| 啪啪综合网| 人人做人人妻人人夜视频| 日韩精品一区二区高清 | 一区在线精品中文字幕| 日韩一级二级三级免费看完整版| av草草在线电影| 亚洲情色在线| 20cm女自慰在线日韩欧美| 9 9无尺码天堂网| 色婷婷丁香五月| 白天啪啪晚上啪啪视频| 蜜臀99久久精品久久久久| 天天久久久久久| 久久人体一区二区| 大屁股熟女一区二区三区| 国产肏屁眼视频| 久久九九一区二区三区成人| 久久婷婷在线观看视频| 亚洲精品久久久久久久蜜桃臀| 成人精品一区二区91毛片不卡| 久久啊啊| 日韩成人无码| 午夜福利国产欧美日韩夜夜| 福利视频香蕉免费一区二区在线| 欧美日韩*字幕一区| 国产强奸无码乱伦| 91美女视频| 欧美色网络| 欧美日韩一二三| 国产97av| 白嫩少妇| 精品国产乱码久久| 激情 欧美 亚洲 小说| 国产女同在线观看视频| 国产白丝精品在线观看| 日韩啊V| 麻豆乱码久久精| 色五月激情网| 日韩三级久久久| 日本一区二区电影网站| 亚洲AV高潮| 亚洲天堂,男人| 91校园春色长篇| 99在线精品观看99| 国产伦精品免编号公布| 美女淫穴| 人人操人人精品影片| 激情综合 婷婷五月 红杏| 亚欧操逼片在线观看| 狠狠入| 毛片99-全集电影手机免费观看完整-B029AV| 久久9999| 国内毛片欧美香蕉精品| 搞中出久久| aⅴ日韩成人电影av在线免费看av大全| 日韩无码视频黄色| 97国产成人精品免费视频| 亚洲最大网站av| 午夜一区| 女同性恋一区二区三区精品视频| 日日妻色网| 久热精品在线| 精品人妻免费观看| 天天天天天天天天天天干美女 | 2020中文字幕在线| 精品人妻一二三| 激情抓乳插进去啪啪啪日韩 | 影音先锋一区二区在线资源| 舔人妻中文免费视频| 一区二区三区一亚洲中文字幕、综合区灬 | 国产二区三区粉嫩在线| 91在线观看,天天综合| 国产精品片| 性爱Av免费| 免費黃色視頻觀看一| 91色碰| 在线小视频| 加勒比伊人| 一类av片在线看| 2010男人的天堂| 欧美暴力猛交| 91情色在线| 2017人人操,人人摸| 日韩人妻少妇 一区二区三区| 91国产美女丝袜足交精品视频| 黑丝制服中文字幕| 十八禁av无码免费网站APP| 亚洲AV成人在线| 综合网色| 天天综合网站| 60秒免费视频| 天天看天天日天天操| 亚洲AV无码翔田千里网站| 六月丁香啪啪啪| 欧美国产有色电影| 日韩精品人妻| 日韩成人大片在线观看| 人妻 欧美 中文| 图色综合网| 色九九综合| 91在线限制级| 亚洲色宗合| 图片区小说区| 亚洲青青草| 思思久热在线精品66| 亚洲高清在线| 久久天堂网| 久久久久久日韩| 中文字幕在线观看网页| 人妻欧美| 可以免费观看的AV| 久草老司机| 眼镜人妻101.com| 深夜啪啪啪视频免费| 免费男人的天堂| 精品一区二区综合熟妇| 成人一区二区三区四区| 精品久久久久久无码| 一道本久久棕合爱| 91九色丨风韵犹存| 一区二区日韩欧美久久| 97视频播放| 一级免费啪啪片| 狠狠2050在线观看| 中文字幕aⅴ在线视频| 日日黄色三级网站| 乱性AV| 欧美黑人性猛交91| 富女玩鸭子一级毛片| 猛交交| 好爽视频在线观看视频| 大香蕉伊利av| 男女啪啪网站免费视频| 欧美78| 成人激情无码在线视频| 天天摸夜夜操视频| 风流老熟女一区二区三区l| 久草男人天堂| 人妻 丝袜美腿 中文字幕| 色九九九综合| 超碰在线观看av不卡| 中文字幕文字幕无码一区二区三区电影99| 中文字幕在线观看永久| 日本不卡码黄色| 99热精品在线| 国产97免费视频| 91久久国产综合久久| 国产精品乱码久久久久| 日韩伦理视频| 激情 欧美 亚洲 小说| 97色欧州| 一区二区影院| 九九热只有精品| 亚洲男人的天堂亚洲| 亚洲97超碰| 日本不卡码黄色| 日日操夜夜操天天操免费观看麻豆| 女优免费一区二区永久| 乱性AV| 伊人97色天使| 国产成年免费大片黄在线观看| 91亚洲欧美综合高清在线| 唐山老熟妇露脸啪啪叫| 久久岛国| 自拍二页| 综合久| 一起草三级AV电影在线观看| 亚洲人妖网| 国产三级电影免费观看| 五十路熟女人妻一区二区三区四区五| 欧亚日韩三区| 天天干美少妇一区| 密乳无码| 91成人18| 96国产污污污丝袜| 久久麻豆一区二区| 久久久亚洲Av| 后入人妻无码| 青青欧美| 欧美黄色图片| 色爱国产| 亚洲成人av电影在线| 探花精品 一区二区| 久久久久921| 97舔舔| 成人七区| 国产乱伦视频污| 天天在线91| 亚洲情色91| 岛国视频免费在线观看| a级免费在线观看| 激情四射婷婷六月天| 一品道视频一区二区三区| 久艾草在线精品视频在线观看| 插插综合网天天影视网| 校园春色综合色| 免费观看欧美日韩操逼视频| 嫩草影院在线观看精品| 澳门黄片一香蕉视频| 91欧| 热久久无毒不卡| 国产SV一线| 91碰碰| 91精品国产日韩欧美综合| 97久久国产精品| 蜜臀精品1区2区| 久久综合婷婷| 色婷婷色99国产综合精品| 亚洲国产精品无码AV久久| 熟女露脸激情自拍视频| 伊人久久亚洲中文字幕不卡| 91女网站| 麻豆天美国美国产| www.色婷婷| 天天干夜夜操网| 97资源视频| 精品九九九九| 99re视频这里只有精品| 97超碰免费人人性爱| 九九九网页| 国产热RE99久久6国产精品首| 日韩欧美tv一区二区在线观看| 日本在线观看网址| 男女啪啪啪18禁网站| 麻豆精品.欧美精品.日韩精品.| 青操影院| 超碰97在线色男人??| 一区二区三区四区久久视1| 日本熟妇熟色97一本在线观看| 中文字幕 国产 精品| 精品亚洲国产成人av网站| 亚洲成a人v欧美综合天堂下载| 怡春院久久| 伊人宅男大香蕉| 春色综合免费| 亚洲欧美日产国产91毛片| 97资源久久| 91制服丝袜| 蜜臀aV午夜一区二区三区| 五月婷婷基地| 成人在线视频网| 唐山老熟妇露脸啪啪叫| 亚洲欧洲日韩国产自在线| 福利视频一区二区微拍| 国产美女自拍AV| 欧美性爱日韩性爱| 啪一啪免费视频| a v网站在线播放| 美女一区二区国产精品| 自怕偷自怕亚洲精品| 20cm女自慰在线日韩欧美| 天天综合97| 天天射夜夜操| 亚洲AV无码乱码| 中国操逼无码| 人妻一区视频| 免费人成?大片在线播放| 大伊香蕉在线视频免费| 立川理惠无码一区二区| 日本三级韩国三级99| 最新加勒比丝袜在线| 激情丁香五月| 极品粉嫩一区二区| 60秒免费小视频| 日本熟妇熟色97一本在线观看| 亚洲欧美中文一区二区三| 久操网视频| 手机在线观看不卡无码av| 99久在线精品99re8| 五月色综合| 欧美最婬乱婬爆婬性视频| 天美欧美国产| 97视频免费在线| 青草成人免费视频一COm| 韩国一级做a久久久久| 强奸乱伦免费网站| 午夜福利免费精品视频| 强奸a片网| 婷婷尹人大香蕉免费| 国产性感骚丝袜在线| 动漫区日韩区欧美区| 日夜尻逼网| 夜夜欢天天干| 东北少妇高潮zzzz| 亚洲欧洲网站免费观看| 丁香五月婷婷色| 亚洲春色激情小说| 亚洲欧美激情另类色图| 九九九九97| 亚洲天天更新| 性在久久久久久| 欧美很很操视频| 亚洲18禁| 91美女视频电影| 中欧人妻丝袜中文字幕 | 熟女熟妇一区二区三四区| 欧美成人性爱视频在线播放| 强奸乱伦av电影| 天天爽天天爽| 1204金沙人妻懂旧版免费| 久久久九精品| 手机在线免费看的av| 国产高清无码一区二区三区四区皇冠| 青娱乐av在线| 超碰97极品9| 综合伊人激情| 国产玖玖| 欧美日韩国产人人| 精品人妻一区二区三区鲁大师| 国产v片在线免费观看| 亚洲aV无码成人在线观看| 亚洲色图 欧美热图 清纯唯美 另类自拍 | 无码动漫av中文字幕| 国产视频一区二区免费| 18岁禁 茉莉成人久久| 吊色| 日韩成人私密一级精品av| 国产成人久久久精品免费AV| 亚洲涩涩| 久久无码精品| 国产性爱在线视频一区二区| 夜夜爽77777| 加勒比色综合| 日韩精品碰碰| 欧美激情 日韩精品| 久久视频,这里只有精品| 国产精品不卡高清在线观看| 97人人干| 久久国产精品视频| 黄色电影观看久久9| 欧美熟爽综合| 黑人免费福利视频| 91在线|亚| 视频二区美腿制服人妻欧美| 国产小黄片在线免费观看| 97视频900| 日婷婷| 大香蕉在线视频15| 91狠狠| 欧美 亚洲 制服 精品| 97精品第3页| 天天影视色香欲综合网小说| 蜜桃久久久久久久| 国产精品网址| 久久久久久亚洲精品不卡人乳 | 精品人妻伦一二三区久久| 91久久久久| 奇米四色影视777久久久| 东北女人av| 超碰78| 国产九九久久久精品| 日夜精品| 大香蕉久| 美女9118禁| 久操大香蕉手机视频在线看 | 求求你操操我| 欧美aaaaaaa| 久操视频免费在线观看| 一起草三级AV电影在线观看| av操操不卡| 色综合加勒比| 九九久久99| 中文字幕精品一区二| 美女主播色欲91抠b在线播放| 成人一道本免费视频| 嗯嗯嗯嗯啊啊啊好紧好大| 精品午夜福利导航| 伊人国产视频| 国产一国产一级毛片古装| 久久伊人在线五区| 超碰无码加勒比| 欧美天堂亚洲电影院一区在线播放| 国产Aα| 久久久久久免费电影| 91丨九色丨43老版熟女| 日韩兔费看黄片| 国产综合久久久鬼色| www.91逼逼.com| 久久九九热| 蜜臀久久99精品久久综合| 1769一区| 综合天天。| www.av在线观看| 火箭成精品视频884必出精品| 夜夜高潮夜夜爽| 成全在线观看免费观看| 九九九国产| 亚洲国产综合久久久性感熟妇| 五月丁香六月综合缴清无码| 夜夜操中文字幕| 色婷婷五月综合| 91精品无码久久久久久久| 91精品婷婷国产综合久久竹菊| 国产女人91精品嗷嗷嗷嗷| 中国少妇啪啪视频| 操b网站亚洲无码| 狠狠狠狠狠干| 日韩无码a片| 国产蜜臀精品一区二区尤物| 图色综合网| 日本 欧美 国产一区| 欧美成人一级麻豆| 999九九九九国产动| 淫色网综合| 老司机老司机午夜影院| 亚洲图片另类| 久久↗↗| 天天看特黄的免费网站| 亚洲九九夜夜| 无码精品一区二区三区潘金莲| 精品久| 久久精品女同亚洲女同13| 国产精品久久久久绯色| 六月丁丁香| 日日噜噜夜夜狠狠视频无| 天天综合色图| 九色 蝌蚪 熟女自| 欧美成人色| 又黄又爽在线观看视频| 亚洲图片欧洲图片aⅴ| 人人操人人干xxx| 青青草依人大香蕉| 天综合网欧美| 亚洲天堂自拍| 熟妇熟女亚洲天堂网| 东北丰满熟女国产一区| 久久久精品91八戒| 色欲av国内精品久久久久久| 欧美手机在线综合| 国产人妻精品一区二区三区秋霞 | 久久婷婷色| 强奸国产在线| 日韩无码三级影院| 人妻精品视频一区二区三区| 人妻91少妇| 亚洲系列欧美| 热热热热日日漂亮永久永久国产日| 男人兔费天堂| 丁香五月天啪啪| JULIA一区二区三区在线播放| 亚洲伊人a线观看视频| 狠狠操使劲操| 男人的天堂 在线一区| 99999国产| 9.1小视频| 欧美日韩第一页| 干B网| 久久精品国产欧美日韩亚洲欧美日韩中文久久国产一区 | aa片毛片| 亚洲老熟妇xxx| 大香蕉草草| 91|九色|国产熟女| 欧美线天码中字| 中文字幕aⅴ在线视频| 日韩精品操少妇| 妇女性内射冈站HDWWWCOM| 天天影视网综合少妇| 鸥美中出| 熟妇熟女视频一区二区三区| 欧美性爱超碰97| 亚洲成人免费在线| 风间由美日韩欧美久久| 一区二区娱乐网站| 欧美情色亚洲| 国产精品大香蕉| 日日夜夜骑| 午夜精品久久久久久久男人的天堂 | 亚洲色堂免费视频| 97超碰超| 97电影院超碰| 99re这里只有精品9| 九九热在线视频| 亚洲本色精品一区二区久久| 99热免费| 一区二区中文| 中文一区二区婷婷视频| 日韩性爱小视频| 成人无码专区精品视频| 天天射天天| 97国产天堂岛| 午夜福利免费精品视频| 国产又大又粗又长视频| 久久五月视频| 精品九九| 99www.bibizy香蕉资源国产一区二区三区高清 | 日亚韩精品视频二区三| 色路综合| 国产久久一区二区午夜| 中文字幕第9页萱萱影音先锋| 亚洲色9| www.伪伪| 久久精品一区一起草| 亚洲精品视频在线| 日本色色色网站免费看不卡| 99re9在线| 黄色免费网| 欧美韩国你懂得在线| 一区二区影院| www.成人无码| 欧美夜夜狠| 国产h小视频在线观看免费| 激情亚洲天堂| 欧美操逼熟女| 欧美在线大香999| 夜夜夜久久| 亚洲蜜乳av| 国产91丝袜 在线播放| 久悠悠av| 国产小黄片在线免费观看| 传媒在线观看一区二区三区| 男人的天堂在线2| 亚洲中文国际强奸字幕| 97天天| 人妻社区男人天堂| 极品尤物在线观看| 蜜臀久久99精品久久久电影| 亚洲吊色| 精品精品精品| 欧美日韩免费性爱| 精品97久久| 精品一区二区麻豆| 久久久久久欧美精品se一二三四| 亚洲AV成人精品网站在AV| 天欧美在线| 久久免费老司机精品| 久操网视频| 日韩亚洲欧美中文字幕| 后入式视频国产自| 久操B网| 破苞ⅩXXX性无码动漫无码| 秋霞怕怕片| 无码人妻系列少妇| 91n美女视频| 尤物国产一区在线观看| 亚洲国产精品无码AV久久久| 国产精品久久久午夜夜伦鲁鲁| 中文字幕视频一区视频二区| 国产欧美第五页| 国产偷拍自拍在线视频| 欧美加勒比| 久久九操在线观看| 爱干爱射网啊啊啊| 国产麻豆一级精品视频| 日韩激情无码影院| 91精品人妻一区二区三区蜜臀| 日韩中文字幕av在线播放| 亚洲无码99| 操逼逼福利视频| 明星性猛交ⅹxxx乱大交| 91天天综合在线观看| 久久久久久波多野吉衣高潮| 欧美日不卡| 成人日本视频人妻在线| 日日日日做夜夜夜夜无码| 亚洲综合20p| 欧美洲精品一级| 在线视频资源| 日本九九久久99| 天天干天天日天天射黄色| 婷婷亚洲综合| 黑人嘿嘿嘿超爽免费视频| 欧美不卡五十路| 亚洲图片第一页| 精品白丝一区| 欧美成人一区二区| 日本亚洲vr欧美不卡高清专区| 欧美成va视频网站| 日本免费专区| 大香蕉一区二区在线观看.| 东京热双插| 久伊人网78| 中文精品少妇天堂| 激情四射五月天| 9超碰免费| 91色噜噜狠狠| 欧美大码在线视频| 黑操B| 亚洲中文一区二区三区视频| 欧美日韩性爱无码| 久久久久亚洲av综合波多野制衣| 熟妇综合一区二区三区| 黑人综合网| 婷婷五月天激情四射| 久久伊人影院| 精品少妇高潮久久| 欧洲自拍第一页| 久久↗↗| 久久久九精品| 欧美综合777| 欧美激情亚洲情色| 欧洲一区二区三区四区在线观看| 学生妹天天看| 老女人91| 校园春色欧美| 欧美色图在线视频少妇| 亚洲凸凹超碰成人| 久久久久密臀一区二区| 啊啊啊啊啊在线视频| 99精品无码| 亚洲精品一区中文字幕乱码| 在线 制服丝袜中出 人妻| 久久精品一区二区三区不卡| 嗯啊不要啊在线 | 天天综合,91入口| 久久中久文96| 天天影视之亚洲综合网| 丁香7月婷婷| 国产蜜臀在线| 91 天天综合| 热热色91| 麻豆三极片| 亚洲人妻中文在线视频| 中国AV美女| 尤物视频一区| 91足交| 天天天天天干夜夜夜夜夜操| 91色综| 老师充足的奶水小说| 久久久99999久网站| 日产123区精品免费观看| 精品中文日韩字幕视频| 久久视频,这里只有精品| 久操影视| 国产在线激情| 少妇熟女一区二区三区| 亚洲色图欧美一区二区不卡| A片A5445444| 做爱A级亚欧| www.人人cao| 久久小视频| 欧美成不卡网| 韩国国产欧美情侣视频在线| 东京热,男人的天堂| 色99999| 强奸国产在线| 久久婷综合| 久久99国产综合精品女同| 日日夜夜噜| www.久久超碰| 亚洲中文字幕在线视频一区二区| 国产极品精品美女视频| 92人人操人人| www四虎| 特级大荫道BBwBBwBBW| 久久视频少妇美女| 欧美性性性| 亚洲天堂一区二区久久| 狠狠爱综合| 啊啊啊啊二区好大| 久久99久久99精品天美传媒棢·纸:. | www.91色综合| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 久久亚洲AV无码专区国产精品| 国产免费一区在线观看| 打av高清| 蜜桃午夜视频一区二区 | 精品久久青青草| 涩涩久久精品| 超碰美国| 91社区拍啪人妻| 性欧美另类高清| 亚州色阁| 2024黄色视频| 日韩情色视频| 亚洲在高跟鞋自慰久久在色线| 春色综合免费| 亚洲欧美不卡线| 人妻81p| 中文字幕五区| 99国内熟女露脸视频| 久久久四区| 亚洲暴力强奸AV| 91暧暧| 久久国产精品视频| 欧洲亚洲国产综合在线| 丁香婷婷大香蕉| 超碰这里只有精品| 久久 精品| 成人性爱全视频观看| 久久久99久9| 亚州五月| 三级特黄60分钟播放| 偷拍伦理视频| 99最新日韩偷拍视频| 尹人免费观看视频在线| 六月丁丁香| 97爱啪| 无遮挡一级毛片视频免费的| caorenqi shipin| 欧美少妇色综合| 女性91网站| 十八禁视频网站| 亚洲国产丝袜在线观看| 操碰97| www.久久| 激情内射| 啪啪AV导航| 天天日天天射天天干| 日韩无码一区二区三区| 91超级碰| 亚洲一二三四区在线免费看视频| 中文字幕第9页萱萱影音先锋| 婷婷色婷婷| 加勒比性爱成人在线| 日韩99精品视频综合区| 亚州操操穴网| 国产自啪精品视频网站黑丝| 亚洲熟女精品| 日本久操视频| 熟女少妇视频| 久久露脸国产老熟女| 国产视频第2页| 日熟女| 久久黄黄| 快灬快灬 一下爽蜜桃在线观看| 一区操逼日比视频| 男人的天堂色偷偷青青草视频婷婷网| 啊啊啊啊免费视频| 久久99亚洲精品久久99果| 欧美一品道| 91视频精品| 青青草密桃在线播放| 久久丝袜| 国产原创自拍| 亚洲视频精选| 日韩精品一区的| 欧美精品不卡一二三四在线91| 亚洲AV秘 精品久久老牛影视| 亚洲精品1区| 久久黄色性爱视频| 青青青艹在线视频| 日韩操逼HD| 2017超碰| AV污污污污| 学生妹天天看| 唐山老熟妇露脸啪啪叫| 亚洲精品97中文字幕| 岛国福利在线精品播放| 你草精品在线视频| 国产精品一区av在线| 秋霞午夜视频一区二区| 操逼大黄片| 亚洲素人网| 在线观看色视频| 少妇高潮喷水无套久久久久久| 大色综合网| 夜夜高潮夜夜爽国产伦精品| 欧美做爰无码A片视频| 一卡二卡三卡| 屌逼麻豆| 国产呦精品系列在线观看| 成人AV素股で擦久久| 日本精品一级二级三级| 97 超碰 人人做 人人爱| 日韩欧美午夜一区二区| 999 久久久| A片三级无码| 蜜臀久久99精品久久久久久成人小说| 亚洲第一综合| 97视频网站| 色狠人在线99| av在线不卡一区二区三区| 91九九九吃| 六月婷婷色综合| 青娱乐国产剧情av一区| 欧美 传媒 麻豆 日韩 偷拍| 国产精品嫩草影院午夜两性| 亚洲999综合| 亚洲成A∨人影院在线欢看| 欧美97网| 91色碰| 一级AV性爱| 欧美一区二区三区黄色影视| 超碰在线国产| 私人尤物在线精品不卡| 日本五十路在线| 日本在线激情一区二区三区| 欧美91精品国产自产| 老熟妇综合| 免费视频97| 宗合情欲网| 午夜120视频在线观看| 精品国产乱码久久久久久久久久毛片| 在线啊v一区| 性综合网| 欧美影音在线| 91色情黑丝搞鸡在线观看一区二区三区三州 | 久久久久久国产无码精品| 日韩天天综合| 国产精品熟女AV中文字幕在线播放| 看大黄色大片原件| nuu12国产麻豆精品| 宅男91视频在线播放| av网站在线观看了| 亚洲Av诱惑| 久偷拍| 综合久久中文字幕综合日韩精品| 国产一国产一级毛片古装| 日日噜噜夜夜久久亚洲一区二区| 狠狠色色| 国产亚洲美日韩Aⅴ中文字幕无码成人| 国产精品乱码久久久久久久久| 亚洲综合99999| 激情综合五月| 久久av一级av少妇av高潮| 尤物视频偷拍免费| 91丝袜美女| 久久久久9| 免费的黄片有限公司| 韩日欧亚a级| 日韩资源网| 91美腿丝袜在线观看| 手机在线观看不卡无码av| 操东北女人| 自拍第一页| 91jk色拍| 九九九九久久久| 中文字幕免费看大片| 伊人一级免费黄片| 黄页av| 熟女露脸激情自拍视频| 亚洲美女30b| 午夜免费视频1000| 天堂中文日本在线观看| 亚洲国产美女久久久久| 久久久精品,3| 亚州男人的天堂| 亚洲激情 欧美色图| 国产成人网| 欧亚在线视频| 少妇无码av专区线| 国语对白露脸XXXXXX | 免费综合亚洲中文| 老司机深夜18禁污污网站| 日韩猛交| 97se亚洲| 中文字幕精品亚洲熟女| 天天天乱色综合全| 日韩在线女优天天干| 99无码视频| 8050无码八戒| 91快色色色色色| 岛国激情视频在线观看| 亚洲天堂在线怕怕视频| 四虎在线观看视频| 亚洲色婷婷综合久久久久中文| 四虎在线观看网站| 人人噜夜夜操| 国产欧美第五页| AV无码久久久精品| 成人5码视频| 激情抓乳插进去啪啪啪日韩 | 欧美操逼视频二区| 日日夜夜骚| 91久热这里只有精品| 久久久久13| 99在线免费观看| 免费人成?大片在线播放| 中日韩熟女| 97人人夜夜精品视频| 白丝被操91| 1000部熟女视频在线观看| 激情小说在线视频| 国产精品96| 亚洲影视综合| 久久黄人人爽视频| 欧美一区二区三熟女剧情| 四虎精品一区| 欧美综合网站999| 亚洲成人妻日韩在线| 人妻在线大香蕉| 欧美精品人妻视频| 精品国产乱码久久久久久久久1| 人人扣人人操| 激情久久久| 天美麻花大全视频| 色999;丁香五月| 99热精品在线观看| www.狠狠| 99这里有精品| 久久色一区| 操操操操网黑人| 大香蕉综合久久| 美女黑人91神马| 在线情色电影 91大| 熟妇高潮二区三区| 99草精| 欧美色图电影| 啊啊啊操死我| 久久精品国产亚洲妲己影视| 内射老妇BBWX0C0CK| 国内精品a| 亚洲成人精品在线一区| 中日亚韩免费视频| 中文字幕国产| 日韩人妻中文视频| 亚州免费啪啪视频| 国产精品宅男免费| 超碰九色| 91色艳| 一区,二区,三区视频| 嗯嗯啊啊日韩精品| 后入人妻无码| 97精品免费| 精品中文字幕一区二区| 少妇高潮对白在线观看| 五月丁香成人网| 亚洲天堂电影精品一区| 91人妻视频在线| 成人久久精品| 97色欧洲| 亚洲丝袜诱惑| 浓厚中出中文字幕在线| 亚洲成人无码影院| 亚洲精品视频在线| 欧美日韩理论一区| 免費人妻夜夜爽天天爽爽一区| 久久久久久久久久黄色网| 人妻大相焦在线| 四虎在线观看网站| 亚洲天天更新| 搡老熟女免费视频| 一,爱啪啪,在线免费视频| 五月天大香蕉| 亚洲欧美天堂在线| 中文字幕女同在线| 久久久久久人体| 亚洲一区日韩精品中文字幕| 操逼啊啊啊91| 极品五月天噜噜| 日本久久综合| 天天日夜干| 家庭乱伦国产| 亚洲色诱惑| 又大又黄国产| 99这里都是精品| 91美女视频在线观看| 国产毛片在线| 伊人97超碰| av久日| 一起草三级AV电影在线观看 | 中国操逼无码| 日韩999| 1204av韩国| 日韩久射综合| 一类无码操逼视频| 人妻熟女av国产网站| 亚洲、日韩、综合、另类| 骚妻少妇精品性色无码四色A V| 久久超碰com| 国产Aα| 国产欧美精品日韩区二区麻豆天美| 欧美亚洲成人在线一区二区三区| 蜜臀久久99精品久久久久久-DVD| 亚洲97久久精品亚洲| 涩五月婷婷| 久9久精品视频| 亚洲国产另类在线中文| 一区三区啪啪| 二对二中文字幕。| 国产sv美女内射| 久久精品国产亚洲AV片多多| 加勒比无码一区二区三区| 亚州欧美综合| 国产精品成人无码a v毛片| 欧美一级三级| 日本 情色 1区2区3区| 天天爽夜夜爽夜夜爽精| 一区二区三区精品黑丝白丝酒店对鸡| 人妻熟女一区二区| 白丝被操91| 五月天社区| 无码精品啪啪啪一区二区三区三州| 国语对白露脸XXXXXX| 亚洲国产尤物yw在线观看| 日本特黄f c2| 成人开心网在线视频| 国产日产精品久久快鸭的功能介绍| 亚洲天堂另类美腿| 97美日韩视频| 亚洲国产午夜真人一级片中文字幕精品黄网站| 狼天天狼天天大香蕉| aV中文麻| 97欧美性爱| 神马午夜久久久| 婷婷丁香激情| 色婷婷丁香五月| 青青草原成人| 精品人体无圣光凹凸| 精品国产污一区二区三区| 鸥美中出| 丁香五月综合| 日本在线15p| 另类一区| 国产第二页| 综合 欧美 亚洲 日本| 久久天天躁日日躁狠狠躁 | 亚洲天堂99| 五月天精品| 一级特级aaaa毛片免费观看| 欧美日韩少妇色情| 日本孕妇一区二区视频操逼免费看| 色色色热| 综合激情一一91| 夜草网站| 99综合| 黑人性暴力毛片| 蜜乳AV色欲AVAV无码| 91激情综合| 色狠狠 - 百度| 久久国99999| a一区二区三区乱码在线| 欧美爆操91| 综合伊人网12色| 国产一区麻豆免费观看| 九久精品| 精品久久久久,69国产成人精| 91少妇人妻| 精品超碰中文在线| 人人妻人人澡人人爽人人精品浪潮| 播播亚洲小说亚洲| 蜜臀一二三区| 69精品久久久久中文字幕| 四虎影视永久在线观看精品免费网站| 精品一区二区人妖| 99色热| www.99热| 国产美女高潮| 久久伊人在线五区| 亚洲人体视频在线观看| 人人综合| 日韩无码三级影院| 九七毛片九九毛片| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 日韩亚洲欧美中文字幕| 久久久啊啊| 午夜成人爽爽爽爽A片李冰冰| 久久综合乱子伦国产免费| www.色吧5.com| 97精品国产精品免费观看| 国产强奸乱伦xd| 91色堂| 久久久婷婷婷| 亚洲在线a| 91偷拍欧美亚洲|