日韩精品一区二区三区在线视频放-无码中文字幕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
返回資訊列表
a亚洲欧美色欲| 亚州欧美综合| 天天干嫩逼网| 口爆吞精在线观看| 综合久久99亚洲人妻中文在线| 白丝少妇一区二区| 亚洲欧美在线观看无码| 五月天综合在线| www.99热在线只有精品| 97天天弄| 91老司机在线| 久久av色| 国产精品熟女九九九| 天天在线91| 国产午夜精品在线观看| 亚洲国产97| 777超碰| 欧美一二在线| 国产小黄片在线免费观看| 一二三啪啪专区| 啊啊啊骚| 亚洲男人bt天堂| 青木玲在线不卡| 国模一区二区三区| 日骚逼视频| 国产高清26uuu| 欧美少妇大量自拍视频在线观看| 999精品久久久久久久| 狼人久草| 亚洲欧美国产中文视频| 色999五月色| 2019男人的天堂| 色天使亚洲综合在线观看| 男人的天堂啪啪啪啪啪蜜桃不卡| 综合网欧美| 啊啊啊啊一区| 国产精品黄色三级av| 操穴国产| 亚洲AV永久无码一区仙野| 天天综合网视频91| 免费视频97| 国产一区二区三区久久久精品| 国产视频一区二区在线观看| 97天天摸天天爽| 综合激情一一91| 少妇第一页| 天天天操天天天爱| 蜜桃无码AV一区二区| 人妻喷水| 亚洲一欧洲中文字幕在线| 精品视频97| 亚洲三区视频| 亚洲综合射| 狠狠激情综合狠狠操中文字幕| 欧美性Fer办公室秘书| 麻豆啪啪啪视频| 九九九成人| 97欧美久久久久久久| 国产一区二区三区精品观看啪| 久久久国产精品人妻丝袜| 曰韩精品视频一区二区| 亚洲精品蜜桃久久久| 日韩性爱高清免费视频| 一级做受视频免费是看美女| 97精品久久久久中文字幕| 国产乱人伦AVA麻豆软件.| 天天操天天舔| 亚洲区限制级| 久久国色天香香蕉| 国产超碰人人操| 午夜福利国产欧美日韩夜夜| 超碰 欧美| 熟妇熟女亚洲天堂网| 久久精品 六十路 熟女 欧美| 91男人天堂网| 欧美,日韩,亚洲视频| 91在线观看,天天综合| 91碰碰碰| 国产午夜精品在线观看| 国产熟妇一区二区| 四虎 精品 WWW| 欧洲综合色图| 国产精品久久久久久久久久久久久久久久 | 亚洲国男人的天堂| 五月天色五月| 国产天天噜一噜久久久| 成人精品视频一区二区| 亚洲综合色婷婷| 日本2020一区二区| 婷婷另类小说| 夫妻四区五区六区| 久久手机好看网站| 丰满人妻一区二区三区| 天天操夜夜嗨| 久9re热视频这里只有精品| 伊人网在线点播| 做爱福利视频一区二区| 日韩天天本| 操国产逼| 超碰色大香蕉| 亚洲天堂加勒比| 九九九久千久久激情蜜桃在线看| 久操网线| 人人操欧美风骚| 97免费视频在线| 日韩一级二级| 99热精品在线观看| 狠狠色婷婷| 不卡一区二区日本视频| 国产视频一区二区三区在线免费观看| 一级性爱视频免费在线| 亚洲在线a| 国产91丝袜 在线播放| 欧美日韩 强奸乱伦| 97天堂| 久久久久国色αv免费观看| 九九aV| 欧美极度丰满熟妇hd| 国产性久久久| 日韩性爱视频免费在线| 综合操逼| 国产美女mm131爽爽爽爽| 色噜噜国产精品视频一区二区| 97一区二区三区视频| 久久久性爱视频| 美女诱惑在线一区| 日韩性色b| 无码免费精品高清| 97天天日| 99热99在线播放激情| 国产高清MV操逼视频| 呻吟 欧美 日本 中出| 女同性恋一区二区三区精品视频| 激情综合亚洲| 蜜色网色哟哟| 国产视频第2页| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | 欧美春色| 丁香色狠狠色综合久久小说| 久久久久久久国产视频| 九九碰九九爱97超碰| 黑丝少妇在线观看| 亚洲色图美腿丝袜| 91超碰丝袜制服| 欧美—性—交—色| 探花一区二区三| 无遮挡猛进视频免费无限观看| 成人电影一区| 老汉网| 亚洲啪啪啪啪视香蕉| 一级免费精品| 澳门黄片一香蕉视频| 可以在线观看的黄色网址| 亚洲天堂人妻熟妇视频| 免费毛片在线播放| 日日夜夜青青草母狗| 中文字幕av片| 日韩黄片视频试看| 五月天综合| 人妻插插人妻人| 日本黄页视频在线观看| 热无码中文亚洲H一道本一区二区| 日韩熟女乱伦中出| 激情五月天网站| 性色高清在线| 亚洲人妻色图| 91在线视频国产网站| 狼狼色丁香久久婷婷综合五月| 亚洲国产成人精品久久久国产成人一区二区三.| 手机久操欧美综合色码| 免费视频观看60秒| 国产超碰| 国产噜噜噜噜噜久久久久久久久| 欧美丝袜中文字幕07在线| 黄色操人| 殴美牲| 另类老少妇| 一起草三级AV电影在线观看 | www.大香| 九九综合久久| 亚精品无码毛片一区二区三区| 欧美日韩中国x| 狠日操| 日韩丨制服丨中文|在线| 2019天天干| 日本免费人成视频播放120秒| 人人操,操人人| 熟妇熟女一区二三区| 五月天加勒比啪| 国产精品不卡av免费在线观看| 欧美极度丰满熟妇hd| 神马久久久久久久久久久久| 91精品网站| 国产亚洲深夜激情| 九九久久久久久爱| 国产自偷| 免费一级欧美片片线观看| 图色综合网| 国产馆| 人妻熟女av国产网站| 亚州中文字幕超碰97| 国产性爱强奸乱伦大全| 蜜臀av在线播放一区二区三区| 色九九九综合| 亚洲久9| 欧美性爱91| 欧美 青青草| 亚洲天天操| 婷婷激情五月天小说网| 欧美午夜视频| 亚州欧美色图| 嗯~啊~快点 死我视频| 97欧美色| 99久久e免费热视| 亚洲一二三四区机械| 乱色老一区二区三区的观看方式| 丰满少妇精品一区二区| 91熟女丨91老女人| 老女人综合网| 特色a在线上| 熟妇一区,二区,三区。| 久久久97| 色91综合网| 综合av社区| 亚州少妇| 国产25页| 无码精品久久久天天影视| 熟女一区二区| 国产探花日韩援交| 日韩不卡网操逼中文字幕日韩| 中文字幕精品免费一区二区| 99蜜桃臀久久久欧美精品网站| 中文有码9| 色色热| 九九九网站| 日本久久久久久久久| AV丝袜东京热| 国产成人bd在线观看| 久久九九精品一区二区| 清柠毛片| 眼镜人妻101.com| 日本精品88888888| 亚洲高清无码在线桃色| 国产精品一区二区麻豆| 蜜桃久久一区二区三区| 国产精品剧情| 超碰在线成人| 夜夜爽夜夜操| 久草色悠悠在线视频| 国产美女口爆吞精视频| 欲色综合| 大香蕉伊然在亚洲91| 国产成人网址| 麻花豆传媒剧国产MV出差| 天堂精品小草| 五月婷婷综合网| 26uuu最新| 中出20p| 日韩乱码av| 亚洲色 国产 欧美 日韩| 欧美九一精品久久久熟妇| 久久久98网站免费视频| 午夜120视频在线观看| 欧美激情 亚洲色图| 丰满人妻一区二区三区在线| 国产日韩欧美亚洲精品95| 嗯嗯不要 视频| 国产精品久久久鸭无码的功能| 曰韩中文人妻视频| 热久久无毒不卡| 欧美熟妇人体| 极品色社| 国产中文字幕曰本毛片| 亚洲一卡二卡在线免费| 91五十路| 国产成人啪一区二区| 极品粉嫩一区二区| 国产精品久久久久久久久久梁医生| 夂久色| 欧亚乱色熟女一区二区| 日韩黄片影院| 97综合激情| 五月开心久久AV官网| 国产欧美一区二区| 久久黄黄| 九九99精品视频在线观看| 亚洲第一狼人丝袜美女另类| 亚洲国产成人精品久久久国产成人一区二区 | 国产后入清纯| 婷婷五月天无码| 精品乱子一区二区三区99| 操人91| www.人人cao| 岛国免费黄色网址| 欧美一级AAAAAAA| 天天综合-91入口| 国产日本顶级一区二区三区| 成人草草视频| 97亚洲中文| 超碰超碰超碰超碰的大鸡吧操黑丝袜 | 婷婷综合网站| 欧美精品日韩一区二区| 黄片aaaaa一区| 顶级丝袜熟女一区二区三区| 久久AV无码网址| 免费综合亚洲中文| 日韩免费性爱视频在线观看| 久久久网站| 青娱乐日韩无码| 日韩精品中文字幕一| 成人性爱视频在线看| 青娱乐亚洲热| 91美女视屏| 欧美色图亚洲色| 成人福利视频网| 高清国产性猛交xxxx乱大交| 打av高清| 亚洲自拍欧美国产首页网曝| 手机看片1024你懂的国产| 久久亚洲国产成人| 日韩乱插| 狠狠色丁香| 欧美日韩丝袜| 日本丝袜美腿人妻九九| 六月丁操逼| 操曰本熟女| 青青草女人天天干| 超碰97护士| 1769一区| 女人精品内射国产99| 欧美日韩色综合网| 国产无码精品高清| 无码在线亚洲| 7月婷婷综合| 91精品人妻一区二区-全集完整版免费正片国语-B02AV | 欧美人人曰人人操人人射射| 日欧亚洲二三区大片不卡| 久久婷婷综合国际产色怕| 久久性爱城| 狠狠干综合| 啊操爽品善一区二区三区| 校园春色家庭伦理欧美激情| 一二三区操逼国产91| 飘花国产午夜精品不卡| 欧美性爱一级操| 不卡超碰护士AV在线免费播放| 九九成人精品| 日本综合色图| 精品欧美А∨无码黑人大荫蒂| 国产 v乱码一区二| 亚洲人在线| 98超碰日本| 亚洲欧美另类图片| 韩国午夜理伦三级好看| 超碰国产情侣自拍网| 校园春色中文字幕AV| 99热在线观看| 韩国黄色片精品久久久| 97一本大道亚洲一区| 天天拍夜夜| 久久久久亚洲?V片无码V| 日韩亚洲美州欧洲综三区一品在线| 久久夜嗨| 久久亚洲欧美一区二区三区-亚洲国产精品第一区二区 | 97色冈| 欧美猛交黑寡妇中文字幕| 国产精品久久久亚洲第一牛牛_在线观看| 亚洲学生妹高清av| 亚欧精品久久久久久久久久久| 情侣操 逼视频99| 久久久久久99999国产精品| 亚洲图片色图欧美另类| 长长久久88视频| 精久久久| 国产操偷| 日日骚精品视频| 人妻少妇无码| 国产亚洲美日韩Aⅴ中文字幕无码成人| 丁香五月综合| 人人妻人人爱人人玩| 情色五月天网| 麻豆av一区二区| 久久中文字幕一区不卡| 骚人妻少妇视频| 精品人妻中文字幕高清| 国产精品岛国片在线观看| 色香在线| 美女视频尤物网在线看| 少妇被玩视频二三区| 好吊色综合| 亚洲图片偷拍视频区| 后入福利视频| 欧美熟女操屄| 亚洲不卡一| 男人高清无码一区二区| 国产美女精品| 亚欧无码在线| 91网站在线播放| 日韩欧美国产高清视频| 91美女国产在线| 操屄不卡视频| 超碰97综合网| 国产亚洲精品av一区| 欧美性爱一区二区三区四区 | 欧洲中文字幕| 日本爽爽爽爽爽爽免费视频| 久草新免费| 伊人一区二区在线播放| 91色综合色| 亚洲成人性爱在线观看| 蜜桃臀av一区二区| 97精品国产97久久久| 精品九九| 国产精品天干天干综合网麻豆| 在线A日本| 另类成人首页一区| 巨爆乳肉感一区二区三区竹菊影视| 少妇高潮喷水无套久久久久久| 成人性爱电影网| 67914在线兔费成人视频| 五月天婷婷欧美三区| 91情色| 色哟哟1区2区| AAA久久| 国产蜜臀在线| 黄色污污污污污污网站| 白丝被操91| 九区国产| 欧美综合自拍成人自拍第二十页| 欧美精品97| 大香蕉伊利av| 美女一区二区国产精品| 蜜桃久久一区二区| 欧亚成人在线视频| 婷婷五月天激情小说| 九九九精品成人免费视频小说| 日本欧美色| 免费精品福利在线观看| 秋霞午夜成人福利片片| 男人天堂 天天射| 69精品少妇一区二区三区蜜桃| yaouchengrenav| 激情视频图片| 夜夜操天天肏| 操逼操逼逼操操逼91| 青草一区二区| 亚洲不卡av在线| 国产农村一一级特黄毛片| 97综合久久| 日本国产二线女色| 亚洲另类色图片| 九色视频91| 无码一区二区精品视频久久久春药| 插B在线观看| 欧美亚洲丝袜美女电影| 少妇 综合| 一级性爱啪啪视频| 国产粉嫩蜜臀av一区二区三区| 综合激情一一91| 久操大香蕉手机视频在线看| 欧美一级A片在线看视频性色| 亚洲一区二区在线观看91| 免看60秒涩涩视频| 国产 大胆 对白| 精彩视频日韩| 五月天婷婷色| 久久草大香蕉| 约操熟妇| 黄色av网站在线播放| 日本色日夜干| 欧美视频一区二区三区| 久久亚洲天堂| 人人妻人人色| 久久精品老司| 中文字幕视频2区| 亚洲中文字幕97久久精品少妇| 国产av强奸美女| 最新av网站在线观看| 伊人亚洲国产一成人久久精品,久久| 久久婷婷伊人| 高清无码 国产精品| 91啦人妻| 久9re热视频这里只有精品| 欧美精品一二三| 精品视频一区二区| 中文字幕av片| 欧美九一精品久久久熟妇| 风月影院男女十八禁| 一区二区蜜臀| 60秒免费小视频| 激情亚洲天堂| 亚洲综合性网址| 1204金沙人妻懂旧版免费| 午夜天堂精品久久| 欧美日动态视频| 亚洲性少妇| 久噜噜| 久久侵犯人妻爽爽爽| 欧美大码在线视频| 精品无码一区二区| 亚州色站 日韩电影| 国产精品久久发布| 人人超碰在线观看黄| 日日橹狠狠爱欧美超碰| 欧美玖玖爱免费玖玖| 欧洲精品久久| 日韩一级二级三级| 亚洲欧美色图| 国产精品美女久久久久AⅤ国产馆| 一区操逼| 日本操BAV| 女人被添高潮免费视频| 操逼逼一区视频| 超97在线精品视频| 99视频精品| 久久久久久大| 欧美91精彩| 日日骚av| 日本久久女同性恋视频| 乱伦图av| 欧美视频在线视频免费va| 青青11操操操操操操操操| 91色黑人少妇| 久久精品操| 欧美亚洲高清| 乱伦av.com| 夜夜嗨AV一区天天| 欧美 亚洲 91| 精品人妻一区二区三区视频在线| 天天视频黄| 国产AV无码AV| 婷婷五月花| 国产熟女精品区| 熟女熟妇伦久久影院毛片一区二区| 国产97在线 | 亚洲| 内射小黄片| 九九aV| 中文字幕加勒比海高清无码免费视频| 天操天操夜操夜月操月年年操操| 91 丝袜在线播放| 探花熟女,姿勢到位,體驗感也到位| 一区二区三区激情在线观看| 涩爱AV在线| 久久久神马影院| 囯产精品久久久久久久久久梁医生| 国产精品成人无码a v毛片| 日本色色视频网站| 色播五月丁香| 亚洲日本天堂| 人妻丰满熟妇一区二区三| 桃花色涩综合影院| 裸体美女久久久| 97精品在线视频| 国产白嫩漂亮KTV在线| 亚殴在线| 欧洲综合色| 91c色| 97色97好| 日韩三级伊人| 美女刺激久久国产欧美| 东方亚洲在线操逼天堂| 欧美亚洲一级在线观看| 天美AV片| 九九热三级片| 无码自拍SM| 久久九操在线观看| 国产三级资源在线观看| 夜夜爽妓女| 精品玖九九久| 丁香六月婷婷| 一本大道久| 顶级丝袜熟女一区二区三区 | 东北少妇高潮zzzz| 无码9区| 精品人妻一区二区三区蜜桃视频| 亚洲一区二区三区四区视频| 先锋音影AV| 日韩天美| 风月影院男女十八禁| 夜夜嗨绯色| 97se亚洲综合自| 国产精品自产拍在线观看社区| 芊芊操逼视频无码| 亚洲性爱免费电影| 一区二区三区四区久久视1| 日夜伊人网| 9 9精品一区二区三区| 9997se| 青娱乐国产精品| 情色五月天网| 日本一区二区做爱的视频| 久久只有精品一区二区三区| 男女日B国产| 免费人人搞97| av最新免费中文字幕| 99热精品国产| 综合影视国产无码| 久久视频,这里只有精品| 成人性爱高清视频免费看| 青青草字幕AV| 超碰99热| 97碰碰色| 久久超碰亚洲人| 91丨九色丨国产丨人妻在线 | 国产兽交视频在线播放| 久久综合中文国产| 思思热久久成人| julia在线观看久久| 中文在线视频| 日日夜夜模| 亚洲色人阁| 国产操逼逼网| 99re综合伊人| 亚洲欧美性生活| 妇女性内射冈站HDWWWCOM| 大香蕉综合| 婷婷丁香五月天综合东京热| 久久9999| 久久国产精品一级二级三级| 天天影视色香欲综合网小说| 亚洲综合大片| 亚洲婷婷五月天| 黄色激情电影在线观看| 果冻传媒A片一二三区| 国产亚洲99久久精品| 欧美成人一级麻豆| 久久精品天美| 竹菊影视国产一区二区| 91免费看一区二区三区| 欧美一级专区免费大片| 五月丁香网站| AV一区观看| 久久精品无码专区| 91久久伊人婷婷青青草| 91色色色| 激情五月天插| 欧亚日韩中文在线| 九九九九九九九九九九九九九九九女| 任你艹| 中文字幕人妻资源在线| 久久久久久免费电影| http://qxhbdz.com| www.国产高潮精品| 日本韩国国产精品一区| 日本熟妇人妻一区二区三区| 国产偷仑| 国产精品女同| 欧美日韩性爱操大逼| 欧美日韩在线视频网站| 国产日产欧产美韩系列麻豆免费| 色爱欲亚洲| 国产无马av| 成人aⅴ一区二区三区| 亚洲色图欧洲| 97K超碰在线| 欧美少妇高潮久久91| 澳门成人网站久国产日韩| 亚洲一区二区性爱电影| 精品久久久久久AV无码| 国产精品一区二区三| 福利大香蕉| 99re只有精品| 欧美人妻二区三区| 欧美日韩少妇色情| 亚洲伊人久久精品狠狠在线| 天堂8在线新版官网| 3d成人精品一区二区| 欧美精品精品一区二区| 久久专区| 超碰在线免费一区二区三区| AV有码在线| 午夜无码熟妇丰满人妻| 超碰98综合网| 亚洲欧美另类少妇精品| 色女网日韩| 91久久精品蜜臀| 亚洲日韩一区电影| 五月婷婷大香蕉| www.久久久久| 久久香蕉国产线看观看猫咪av| 国产精品久久久久中文字幕| 免费自拍三级综合| 亚洲性爱免费电影| 高潮毛片无遮挡高清免费| 亚洲无线码欧洲精品区别| 人人操人人93| 免费看片黄| 国产91亚洲精品一区二区三区| 欧洲性爱无码区| dy888午夜老子影视达达兔| 玖玖爱影院| 91春色| 久久性爱视频免费看| 熟妇一区,二区,三区。| 亚洲第二页| 精品成人女人久久| 亚洲第一男人天堂| 日韩97视频!在线| 不卡人妻少妇精品毛片一区23区视频| 一区在线国产播放| 六月婷婷激情| 色成人Www精品永久观看| 亚洲中文字母在线播放| 精品亚洲成人免费在线| 久久久久亚洲?V片无码V| 日本免费专区| 99热只有这里有精品| 六月丁香婷| 97视频在线免费看| 久久久久久波多野吉衣高潮| 91影视亚洲| 婷婷丁香人妻 | 久久国产乱子伦精品免费女人| 中文字幕aⅴ在线视频| 日韩丝袜二区| 97国产超湿| 91色图片| 亚洲日韩狠狠撸视频| 亚洲欧洲综合| 手机在线免费看的av| 激情无码日韩| 91九九| 精品久热| 久久久久久波多野吉衣高潮| 亚洲国成人情色好看电影| 亚洲男人天堂2016| 国产97亚洲| av一区二区三区四区| 欧美特大黄一级片片免费| 色色热| 亚洲综合性网址| 啊啊啊骚| 国产51色综合久久免费| 婷婷久久综合久| 亚洲国产综合久久天堂| 一级AV性爱| 久久9久9久99久9久9| 国产二区三区粉嫩在线| 91成人亚洲色图| 啊啊啊好大好深| 成人三一级一片aaa| 日韩午夜啪啪视频| 激情AV| 91动漫操逼视频| 另类亚洲图色| 色五月av| 欧美亚洲日韩人妻在线观看| 97久久久久久久久久| 蜜乳av一区二区| 欧美v日韩欧亚洲电影天堂色诱,国产传媒| 国产熟女无套内射| 日本中文字幕在线视频| 大香蕉伊然在亚洲91| 夜夜骑夜夜操| 亚洲精品欧美专业| 久久综合九色综合欧洲98| 看免费的黄片| 激情综合二| 色九九九九| 丁香六月婷| 伊人久久亚洲色欲综合网站| 亚洲男人的天堂在线看| 神马久久午夜| www.色婷婷色综合| 黑人与人妻| 日本精品一级二级三级| 九九热超碰| 在线中文AV| 精品久久久久久中文字幕三区| 日本三级中国三级99人妇网站| 超碰免费欧美7| 思思热在线视频免费| 黄色一区二区秘书性感| 亚洲情色 无码专区| 不卡人妻少妇精品毛片一区23区视频| 狠狠图片青青草| 国产乱伦亚洲色图高清无码| 国产乱人伦AVA麻豆软件.| 亚洲av热热色| 亚洲啪啪视频免费| 天天做天天爱天天爽AV| 成人无码在线视频网站| 鸥美精品一区二区久久婷婷| 日本97久久| 青操影院| 91天美传媒精品| ji熟女.com| 综合97| 超碰成人免费| 一区麻豆 高清中文字幕| 狠狠爱综合网| 91爱综合| 日韩激情电影中文字幕| 九九热九九热| 岛国1区2区3区在线观看| 日韩伦理久 久久 清纯| 13小男生GAY自慰脱裤子| 欧美少妇大量自拍视频在线观看| 青草成人免费视频一com| 色综合中文字幕不卡| 人人操人人摸人人骑| 一区中文字幕二区日韩| 日本人妻伦在线中文字幕| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 青青国产在线拍揄自揄拍| 国产亚洲精品无码三区| 天天色怡春院| 一级A啪啪啪啪| 欧美色九九| 精品精品精品| 国产乱伦亚洲色图高清无码| 亚洲人妖网| 操高情无码| 久久久九| 精品伊人久久久大香线蕉小说| 2003天天干夜夜操| 日本99视频| 亚洲色狠| 啊好大好舒服| 夜夜嗨视频| 91是天天| 人人操人人摸人人看人人干| 少妇熟女视频一区二区三区| 欧美淫穴| 第四色奇米影视777| 久操视频在线| 久久久久久久久久久六六| 国产在线强奸视频| 95自拍视频在线观看| 国产精品视屏| 亚码人妻| 校园春色 亚洲| 欧美欧美少妇| 一级黄色性爱A级片| 极品色www影院| 无码91| 欧亚性爱视频免费看| 久久日韩精品一区二区| 操操逼视频| 丁香九月激情啪| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 日韩一级二级三级免费看完整版国语版 | 九九热三级片| 9I1性色影院| 日韩欧美水蜜桃人妻| 91老司机精品| 久久国产乱子伦精品免费女人| AV综合中文字幕干| 久久久久国产亚洲一区欧美色图日韩 | 黑人免费福利视频| 男女激烈网站最新| 超碰97在线中文| 91国产丝袜美女| 91岛国动作片| 琪琪精品免费一区二区三区| 激情专区综合| 日欧美色| 深喉吞精| 亚洲欧洲综合av在线| 欧美精品自慰系列寂寞少妇| 丝袜六区| 91青青在线视频| 久久久久9999| 韩国三级理论在线| 夜夜爽妓女| 久久6热精品99视频| 校园春色 欧美| 伊人久久大香线蕉无码| 婷婷在线播放| 99re这里只有精品3| 自拍啪啪视频| 一本精品日本在线视频精品| 91丨九色丨东北熟女| 国产乱码精品久久久久久| 国产91 丝袜在线播放00-百度| 免费黄色片。| www.97在线| 亚洲综合另类色图| 午夜啪啪片| 啊啊啊啊啊在线观看网址| 亚洲丰满很很操| 午夜啪| 欧美aaaaaaa| 免费看污网站| 啊啊啊骚| 成人无码影片视频在线| 综合日韩激情另类图片| 久久久久久97| 综合色99| 日本最新1区2区3区| 综合伊人网12色| 久久色人体| 偷拍导航视频网站| 近亲乱伦一区二区| 偷拍超碰| 最近2018中文字幕在线高清第一页| 男女激情黄色网址| 久久久久熟女| 国产区91柔拿会所技师| 夜夜高潮夜夜爽| 久久αⅴ| 秋霞蝌科网日本一区| 亚洲AV高潮| 欧美色图20p| 国产免费永久精品无码| 夜色97| 久久九九视频九九视频| AV老汉| 大香网站| 成 人片 黄色大片| 少妇免费视频| 丝袜AV一区二区三区| 五月婷婷丁香中文字幕| 欧美色色人| 日本国产高清色www视频在线| 97色97好| 最近2018中文字幕在线高清第一页| 天天影视综合网欧美精品| 色妇综合网| 夂久色| 妇女一区二区三区| 大黄片做爱的大的| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 国产日韩人人| 欧美一区二区三区另类精品| 精品999日本| 天天色,天天干,天天干| 青青草国产盗摄一二三区| 亚洲精品国产专区在线观看| 97久久精品国产| 蜜乳Av成人片网站| 精品无码久久久久| 亚洲一区二区性爱电影| 久久久久久中文| 91人妻Pr| 美女性91| 男人的天堂2018.| 操啊国产| 欧美变态激情网| 久久精品店| 91女色| 久操综合在线| 亚洲春色一区二区三区| 夂久色| 91色人妻| 偷拍综合亚洲| 岛国精品视频在线观看| 婷婷探花久久精品一区| 青青操青娱乐| 蜜乳中文字幕a在线| 久久久熟妇熟女国产| CCYY草草影院地址入口| 青青草无码视频| 日本熟女中文| 亚洲成人贴图| 夜草欧美| 亚洲无线码一区国产欧美国| 在线观看一级α片刺激高潮视频| 男女啪啪啪18禁网站| 国产色图乱伦| 黑人狂躁日本妞一区二区三区| 日日夜夜草草草| 1禁看欧美黄片免费看| 伊人操操| 婷婷精品| 综合影院永久入口国产| 色网1| 丁香五月激情综合国产| 97色在线视频| 97超碰免费人人性爱| 成人性爱高清视频免费看| 久久精品无码专区| 美女久久久久久久| 亚洲一区中文字幕一区| 神马久久久久久| 成人片视频| 99久久99久久综合| 国产绿奴视频在线观看| 99在线精品观看视频中文| 久久欧美按摩999| 91AV入口| 超碰人人干天天射| 蜜臀AV成人精品蜜臀AV久久| 粉嫩不卡一区二区性爱 | 青青草大香蕉视频| 中文字暮97| 久久婷婷综合国际产色怕| 综合网天天| 成人天天爽| 97一区二区蜜臀| 精品国产久热在线观看| 国产午夜精品在线观看| 丝袜喷水在线| 日本在线不卡一二区| 欧美少妇色图| 亚洲性少妇| 强奸少妇AV导航网| 俺去俺来也在线www| 91香蕉视频在线观看免费| 欧美综色欧| 亚洲91网站| 蜜桃精品一区二区三区ww| 超碰97人人乐| 欧美日本天堂| 91无码中出人妻视频| 国产精品露脸在线观看| 亚洲久9| 啊啊啊啊啊,啊啊啊啊好舒服,操我舒服啊啊啊| 97色婷婷| 亚洲色图日韩精品| 人人摸.人人色| 亚洲综合20p| 中文字幕av一区二区三区人妻少妇 | 屁屁影院一区二区三区国产| 操逼网站网站| 欧美激情 亚洲色图| 加勒比综合a∨| 操b网站亚洲无码| 爱爱60秒免费视频| 日韩不卡av一二三| 亚洲 国产 精品一区| 91看黄片| 国产一级内射高清视频| 香蕉99秘 一区精品蜜桃臀| 欧美中字不卡| 99国产精品久久久在线播放| 国精品一区二区三| 婷婷成人久久久精品| 丁香五月偷拍| 麻豆这里只有精品| 欧美日韩在线国产在线| 国产一区二区三三视频| 亚洲麻豆av一区二区| 青青青青青手机视频| 欧美少妇高潮| 尤物视频新赏网鲜网色诱网| 亚洲性少妇| 夜夜爽爽夜夜精品视频| 天天日天天射天天干| julia在线观看久久| 九久9精品| 色啪网| 色婷婷综合网站| 午夜高清成人在线视频| 91在线无码精品秘 软件| 日日碰狠狠添天天爽超| 日韩在线观看字幕精品| 97摸视频| 国产又粗又长又爽又色| 熟女色综合久久| 天天日天天搞天天干| 久久男人精品| 国产精品亚洲天堂网址| 色天使亚洲综合在线观看| 色乱二区| 日韩精品 视频一区二区| 国产区91柔拿会所技师| 国产亚洲日本精品在线| 日本操BAV| 麻豆国产免费影片| 日韩欧美亚洲一区二区三区影院| 唐山老熟妇露脸啪啪叫| 色欲日韩欧美在线一区| 在线一道啪| 一区在线观看中文字幕| 91超级碰| 久久日韩毛| 天天夜夜久久| 天天摸天天舔天天操| 久久夜精品一区二区三区| 久久久久久无码人妻中文字幕| 疯操AV| 丝袜AV一区二区三区| 久久久性| 精品中文字幕第一页| 粉嫩粉嫩一区性色AV片| www久| 超碰亚洲97| 国产成自自拍在线观看| 久操视频免费观看| 一本色道综合久久欧美| 精品国产Av无码久久久亚洲| 男人女人18禁片免费看网站| 天天干天天燥| 日韩美女啪啪一区| 中文自拍欧美影视| 色色五月婷婷| 91AV老熟女视频| 日韩噜噜69| 91精品伊人久久久大香线蕉91 | 国产无码精品成人| 欧美精品99久久久**| 欧美色66| 国产精品白丝| 亚洲乱码精品一区二区| 在线观看免费视频国产| 成人一级性爱| 日韩色欲久久一二三四区| 国产成人精品日本视频| caorenqi shipin| 中文字幕天天天天天| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 青青操少妇| yazhouzaixian| 欧美色人| 国产精品久久久久久 百度| 天天干,夜夜爽| 妇女视频网站| 极品肉射| 亚洲图片日本AⅤ欧美在线| 婷婷AV一区二区三区| 一区二区三区四区五区高清无码永久视频 | 极品少妇99| 偷拍亚洲情色| 亚洲欧美国产中文视频| 午夜福利免费精品视频| 极品色社| 五月天人妻综合| 男人女人18禁片免费看网站| 嫩草影院在线观看精品| 欧美中文字幕男人天堂久久精品 | 岛国A V在线免费看| 亚洲国产欧美中日韩成人综合视频| 丁香五月天啪啪| 热久日综合| 天天爽天天操啊啊啊| 20cm女自慰在线日韩欧美| 亚洲精品日日夜夜52| 国产亚洲日本精品在线| 人妻一区二区三区视频 | 91久久青青草原精品| 超碰97人妻免费在线| 丁香啪啪| 99色骚| 国产乱码久久久久久| 久久在线观看免费视频| 亚洲图片欧美在线视频| 熟妇精品juliaannAV| 亚洲人妻久久| 国产成人bd在线观看| www.99热在线只有精品| 天美精品原创av片国产| 桃花色涩综合影院| 久久大精品乱码视频人妻熟女| 国产在线综合网| 五月天激情小说| 成人综合网 欧美| 曰韩中文人妻视频| 91九九| 亚洲素人综合| 强奸乱伦大香蕉| wwe 天天干.com| 91久久| 久久久A∨| 操逼无毒无码免费视频| 狠狠色噜噜狠狠狠狠2018| 97天天搞在线| 欧美激情内射| 九九伊人网| 中文字幕熟女人妻丝袜丝|