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

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

Android OpenGL ES:將GL_TEXTURE_2D紋理渲染到ImageReader Surface的完整指南

Android OpenGL ES:將GL_TEXTURE_2D紋理渲染到ImageReader Surface的完整指南 簡介針對 Android 平臺上將 OpenGLES3 紋理 ID 渲染到 ImageReader Surface 的需求這份資源以完整可運(yùn)行的 Android 工程形式提供了從紋理加載、EGLDisplay 虛擬屏幕綁定、eglSwapBuffers 緩沖交換到 ImageReader 回調(diào)讀取數(shù)據(jù)并生成 Bitmap 的端到端參考實(shí)現(xiàn)。源碼按功能拆分結(jié)構(gòu)清晰適合需要對接相機(jī)/視頻幀數(shù)據(jù)或做離屏渲染的 Android 中高級開發(fā)者參考。包含 89 個(gè)文件壓縮包僅 879KB。工程采用 Android Gradle 標(biāo)準(zhǔn)結(jié)構(gòu)java 文件承載渲染線程與回調(diào)核心邏輯xml 完成界面布局及清單配置gradle 與 properties 管理依賴和構(gòu)建參數(shù)webp 等用于界面輔助展示bin、lock 等則屬于工程編譯緩存。代碼中對 EGL 環(huán)境搭建、紋理加載、Surface 數(shù)據(jù)通路和 onImageAvailable 取幀等關(guān)鍵節(jié)點(diǎn)均有直接體現(xiàn)便于對照項(xiàng)目進(jìn)行流程梳理、移植或性能調(diào)優(yōu)。目前已有 731 人學(xué)習(xí)/下載適合正在鉆研 Android 圖形管線、希望打通 OpenGLES 與 Surface 之間數(shù)據(jù)鏈路的開發(fā)者。1. 為什么要把 GL_TEXTURE_2D 紋理 ID 渲染到 ImageReader 的 Surface 上在 Android 圖形鏈路里紋理 ID 往往是離屏渲染鏈尾部的產(chǎn)物FBO 完成特效合成、第三方 SDK 輸出一幀經(jīng)過 GL_TEXTURE_2D 的紋理下一步要么送編碼器要么給系統(tǒng)拍下來。但紋理 ID 只是 GPU 里的一個(gè)“名字”MediaCodec、ImageReader 不認(rèn)識它它們認(rèn)識的是 Surface——或者說得更準(zhǔn)確一點(diǎn)認(rèn)識一塊 BufferQueue 的生產(chǎn)端。把 GL_TEXTURE_2D 紋理 ID 畫到 ImageReader 提供的 Surface 上本質(zhì)是在 GPU 里把一張紋理完整搬一次家完成一次低成本的顏色緩沖交換而不是把圖像數(shù)據(jù)讀回 CPU 再寫出去。這個(gè)需求常見于視頻編輯、老照片修復(fù)、平臺美顏抽幀和低延遲串流。它比 glReadPixels 高效得多比使用 SurfaceTexture 多一層可讀性也比直接向 MediaCodec 編碼器 Surface 輸出更能兼容后續(xù)的 CPU 讀幀邏輯。適合兩類人一類是想把 OpenGL ES 3.0 離屏渲染結(jié)果交給系統(tǒng)編碼、錄屏、拍照的工程師另一類是手頭有一個(gè)來自第三方庫的 GL_TEXTURE_2D 紋理 ID不知道如何不碰像素就轉(zhuǎn)型成 Android 可消費(fèi)幀的人。這篇文章按我的慣用方案把 EGL 環(huán)境、ImageReader Surface 初始化、渲染代碼、同步柵欄和編碼器接入全部拆開。2. 用 EGL 把 ImageReader 的 Surface 接進(jìn) OpenGL ES 3.0先解決“畫到哪”幾乎所有 Android 開發(fā)者看到 ImageReader 的第一反應(yīng)都是調(diào)onImageAvailable后拿Image對象逐一讀 Plane。這個(gè)思路只覆蓋了消費(fèi)端忽略了 ImageReader 另一個(gè)更重要的身份它的getSurface()返回值是一個(gè)標(biāo)準(zhǔn) Surface而 Surface 背后是 BufferQueue 的生產(chǎn)端。換句話說GPU 可以把它當(dāng)作一塊可繪制的緩沖區(qū)域只要 EGL 愿意認(rèn)領(lǐng)這塊 Surface。2.1 ImageReader 的 Surface 不是 View渲染路徑完全不同TextureView、SurfaceView 的 Surface 與 ImageReader 的 Surface 在底層都關(guān)聯(lián) BufferQueue但在 API 表現(xiàn)上差異很大。SurfaceView 上可以用 OpenGL 繪制TextureView 本身是 View 層級里的一個(gè)圖層而 ImageReader 的 Surface 只能作為 ImageReader 的消費(fèi)緩沖入口。它沒有窗口句柄也不能被 attach 到窗口系統(tǒng)唯一的接入方式就是通過 EGL 的eglCreateWindowSurface。很多人在這一步選錯(cuò) API把 ImageReader 的 Surface 當(dāng) SurfaceTexture 傳進(jìn)setPreviewTexture或者嘗試Canvas.lockCanvas后手動編解碼都繞了遠(yuǎn)路。常規(guī)做法是創(chuàng)建 ImageReader取出其 Surface然后在 EGL 層創(chuàng)建 EGLSurface之后所有 GL 繪制命令都會落到這塊 Surface 上eglSwapBuffers之后 ImageReader 就能異步收到一張全新 Image。下面是四種常見 Surface 消費(fèi)者的對比對象可被 GL 繪制能否 CPU 讀像素典型用途SurfaceView 的 Surface可以需要額外處理游戲、視頻播放TextureView 的 SurfaceTexture可以需要額外處理相機(jī)預(yù)覽、UI 合成MediaCodec 的 input Surface可以不可以直接讀硬編碼輸入ImageReader 的 Surface可以通過 EGL 接入可以且是設(shè)計(jì)目標(biāo)拍幀、讀紋理、YUV 轉(zhuǎn)換2.2 EGL Surface 與 ImageReader 的像素格式必須匹配EGL 是 OpenGL ES 和窗口系統(tǒng)之間的橋梁。把 ImageReader 的 Surface 接進(jìn)來核心是eglGetDisplay、eglInitialize、eglChooseConfig、eglCreateWindowSurface這條鏈路。其中最容易出問題的是 EGLConfig 的選擇ImageReader 的緩沖格式由構(gòu)造時(shí)的 pixelFormat 決定而 EGLWindowSurface 創(chuàng)建時(shí)不能直接指定格式它必須從 EGLConfig 中推導(dǎo)。如果 EGLConfig 的 RGBA 位數(shù)與 ImageReader 不一致輕則色彩偏移重則eglCreateWindowSurface直接返回EGL_BAD_MATCH。以下是我在實(shí)際項(xiàng)目里穩(wěn)定使用的 EGL 初始化片段EGLDisplay display EGL14.eglGetDisplay(EGL14.EGL_DEFAULT_DISPLAY); int[] version new int[2]; EGL14.eglInitialize(display, version, 0, version, 1); int[] configAttrs { EGL14.EGL_RENDERABLE_TYPE, EGL14.EGL_OPENGL_ES2_BIT | 0x0040, // 0x0040 對應(yīng) EGL_OPENGL_ES3_BIT EGL14.EGL_RED_SIZE, 8, EGL14.EGL_GREEN_SIZE, 8, EGL14.EGL_BLUE_SIZE, 8, EGL14.EGL_ALPHA_SIZE, 8, EGL14.EGL_NONE }; EGLConfig[] configs new EGLConfig[1]; int[] numConfigs new int[1]; EGL14.eglChooseConfig(display, configAttrs, 0, configs, 0, 1, numConfigs, 0); int[] surfaceAttrs { EGL14.EGL_NONE }; EGLSurface eglSurface EGL14.eglCreateWindowSurface(display, configs[0], imageReaderSurface, surfaceAttrs, 0);這段代碼里第二行的0x0040很關(guān)鍵。Android 的 EGL 頭文件對EGL_OPENGL_ES3_BIT_KHR的定義是 0x0040而EGL14.EGL_OPENGL_ES2_BIT的值是 0x0004兩者并不相同。如果只寫入 ES2 bit某些機(jī)型上依然能創(chuàng)建成功但后續(xù)eglCreateContext請求的 OpenGL ES 3.0 context 與 EGLConfig 的 renderable type 不匹配會得到EGL_BAD_MATCH或EGL_BAD_CONFIG。2.3 共享上下文紋理 ID 在新 EGLContext 里“仍然有效”EGLSurface 創(chuàng)建完成后下一步是創(chuàng)建 EGLContext。如果你已經(jīng)有另一個(gè)線程在渲染紋理比如相機(jī)模塊或第三方濾鏡庫在某個(gè) GL 線程上生成了紋理 ID那么新的渲染線程必須創(chuàng)建共享上下文。EGLContext 默認(rèn)擁有獨(dú)立的資源命名空間紋理 ID 只是一個(gè)小整數(shù)在不同 context 里如果不同步它在 GL 側(cè)會被當(dāng)作“不存在的對象”即使調(diào)用glBindTexture也不會報(bào)錯(cuò)繪制結(jié)果只會是黑色。創(chuàng)建共享上下文的方法是先拿到當(dāng)前線程的活躍 contextEGL14.eglGetCurrentContext()然后把它傳給eglCreateContext的第二個(gè)參數(shù)。這樣兩個(gè) context 共享紋理、FBO 等對象紋理 ID 才能跨線程使用。但如果原紋理所在線程根本沒有 EGLContext而是通過其他方式生成的那問題就不一樣了——那種情況通常要用擴(kuò)展接口導(dǎo)出內(nèi)存句柄這里不展開。3. 渲染 GL_TEXTURE_2D 到 ImageReader Surface 的完整實(shí)現(xiàn)有了 EGL Surface 和共享上下文渲染核心就只剩三件事創(chuàng)建 Shader 程序、綁定紋理、提交繪制。這一章給出可以直接抄進(jìn)工程的 Java 實(shí)現(xiàn)用的是 OpenGL ES 3.0 API沒有引入任何第三方依賴Android Studio 里新建工程即可運(yùn)行。3.1 初始化 EGL 環(huán)境與創(chuàng)建 EGLSurface 的代碼把上一章的邏輯收攏成一個(gè)初始化方法注意imageReader必須提前創(chuàng)建并且寬高要與紋理一致public void init(ImageReader imageReader, EGLContext sharedContext, int textureId) { mImageReader imageReader; mTextureId textureId; mWidth imageReader.getWidth(); mHeight imageReader.getHeight(); mDisplay EGL14.eglGetDisplay(EGL14.EGL_DEFAULT_DISPLAY); int[] version new int[2]; EGL14.eglInitialize(mDisplay, version, 0, version, 1); int[] configAttrs { EGL14.EGL_RENDERABLE_TYPE, EGL14.EGL_OPENGL_ES2_BIT | 0x0040, EGL14.EGL_RED_SIZE, 8, EGL14.EGL_GREEN_SIZE, 8, EGL14.EGL_BLUE_SIZE, 8, EGL14.EGL_ALPHA_SIZE, 8, EGL14.EGL_NONE }; EGLConfig[] configs new EGLConfig[1]; int[] numConfigs new int[1]; EGL14.eglChooseConfig(mDisplay, configAttrs, 0, configs, 0, 1, numConfigs, 0); mSurface EGL14.eglCreateWindowSurface(mDisplay, configs[0], imageReader.getSurface(), new int[]{EGL14.EGL_NONE}, 0); int[] contextAttrs { EGL14.EGL_CONTEXT_CLIENT_VERSION, 3, EGL14.EGL_NONE }; mContext EGL14.eglCreateContext(mDisplay, configs[0], sharedContext, contextAttrs, 0); EGL14.eglMakeCurrent(mDisplay, mSurface, mSurface, mContext); setupShaders(); }參數(shù)說明sharedContext是紋理來源線程的 EGLContext如果傳入的 textureId 就在當(dāng)前線程創(chuàng)建這里可以直接傳EGL14.EGL_NO_CONTEXT。EGL_CONTEXT_CLIENT_VERSION, 3決定創(chuàng)建的是 OpenGL ES 3.0 context注意 EGLConfig 里必須帶上 ES3 bit否則這里報(bào)錯(cuò)。eglMakeCurrent的作用是把 EGLSurface 綁定到當(dāng)前線程的渲染目標(biāo)之后所有 GLES3 指令都作用于這塊 ImageReader Surface。3.2 Shader 與繪制命令如何用三角形覆蓋紋理ImageReader 的 Surface 是一塊矩形緩沖渲染時(shí)最常見的方式是畫兩個(gè)三角形拼成一個(gè)全屏四邊形。頂點(diǎn)著色器負(fù)責(zé)接收頂點(diǎn)坐標(biāo)和紋理坐標(biāo)片段著色器負(fù)責(zé)從 GL_TEXTURE_2D 上采樣顏色。頂點(diǎn)著色器#version 300 es layout(location 0) in vec4 aPosition; layout(location 1) in vec2 aTexCoord; out vec2 vTexCoord; void main() { gl_Position aPosition; vTexCoord aTexCoord; }片段著色器#version 300 es precision mediump float; uniform sampler2D uTexture; in vec2 vTexCoord; out vec4 fragColor; void main() { fragColor texture(uTexture, vTexCoord); }這個(gè)著色器沒有做任何顏色變換和矩陣運(yùn)算保留紋理原始顏色。sampler2D默認(rèn)綁定紋理單元 0所以繪制前不需要顯式glActiveTexture只要把紋理 ID bind 到GL_TEXTURE_2D上即可。如果將來要接入 OES 外部紋理需要將采樣器類型換成samplerExternalOES同時(shí)把紋理目標(biāo)改成GL_TEXTURE_EXTERNAL_OES與本文標(biāo)題鎖定的 GL_TEXTURE_2D 場景不是同一套配置。3.3 draw 幀的調(diào)用時(shí)機(jī)與紋理參數(shù)頂點(diǎn)數(shù)據(jù)和繪制代碼private void drawFrame() { EGL14.eglMakeCurrent(mDisplay, mSurface, mSurface, mContext); GLES30.glViewport(0, 0, mWidth, mHeight); GLES30.glUseProgram(mProgram); GLES30.glBindBuffer(GLES30.GL_ARRAY_BUFFER, mVbo); GLES30.glEnableVertexAttribArray(0); GLES30.glVertexAttribPointer(0, 3, GLES30.GL_FLOAT, false, 5 * 4, 0); GLES30.glEnableVertexAttribArray(1); GLES30.glVertexAttribPointer(1, 2, GLES30.GL_FLOAT, false, 5 * 4, 3 * 4); // 關(guān)鍵綁定紋理 ID 到 GL_TEXTURE_2D 目標(biāo) GLES30.glBindTexture(GLES30.GL_TEXTURE_2D, mTextureId); GLES30.glDrawArrays(GLES30.GL_TRIANGLE_STRIP, 0, 4); EGL14.eglSwapBuffers(mDisplay, mSurface); }glVertexAttribPointer(1, 2, ..., 5 * 4, 3 * 4)表示頂點(diǎn)數(shù)據(jù)每 5 個(gè) float 為一組前 3 個(gè)是位置后 2 個(gè)是紋理坐標(biāo)stride 為 20 字節(jié)。繪制的 4 個(gè)頂點(diǎn)可以用(-1,-1,0,0,0)到(1,1, ..., 1,1)的三角形帶覆蓋全屏。紋理綁定后建議檢查紋理對象的過濾參數(shù)。外部庫生成的紋理 ID 不一定設(shè)置了GL_TEXTURE_MIN_FILTER如果默認(rèn)值是GL_NEAREST_MIPMAP_LINEAR而紋理沒有生成 mipmap畫面會出現(xiàn)模糊接縫或黑邊??稍赿rawFrame里每次綁定時(shí)執(zhí)行一次glTexParameteriGLES30.glTexParameteri(GLES30.GL_TEXTURE_2D, GLES30.GL_TEXTURE_MIN_FILTER, GLES30.GL_LINEAR); GLES30.glTexParameteri(GLES30.GL_TEXTURE_2D, GLES30.GL_TEXTURE_MAG_FILTER, GLES30.GL_LINEAR); GLES30.glTexParameteri(GLES30.GL_TEXTURE_2D, GLES30.GL_TEXTURE_WRAP_S, GLES30.GL_CLAMP_TO_EDGE); GLES30.glTexParameteri(GLES30.GL_TEXTURE_2D, GLES30.GL_TEXTURE_WRAP_T, GLES30.GL_CLAMP_TO_EDGE);GL_CLAMP_TO_EDGE可以避免紋理邊緣采樣到透明或黑色區(qū)域。如果紋理 ID 來源是最新一幀相機(jī) YUV 轉(zhuǎn)成的 GL_TEXTURE_2D換幀時(shí) GPU 和 CPU 之間可能還有未完成寫入需要在 draw 之前插入glFinish()或使用同步柵欄否則第一幀可能出現(xiàn)紋素錯(cuò)亂。4. 共享上下文、同步與格式最常出問題的 3 個(gè)位置EGL 初始化完成后渲染邏輯本身很短真正消耗時(shí)間的是排錯(cuò)。這一章只討論最常導(dǎo)致黑屏、花屏、綠屏的三個(gè)因素上下文共享失效、GPU 繪制與 ImageReader 消費(fèi)之間的時(shí)序、像素格式不匹配。4.1 紋理 ID 不是“全局身份證”必須用共享上下文許多人拿到外部傳入的 textureId 后既不詢問它的 EGLContext也不做共享直接在新線程里glBindTexture后繪制得到的結(jié)果是黑屏但不報(bào)錯(cuò)。原因是 GL 紋理 ID 在 context 的資源表里只是一個(gè)索引新 context 里沒有這張表的注冊信息。共享上下文的創(chuàng)建方法在 2.3 節(jié)已經(jīng)說明這里補(bǔ)充一個(gè)常見誤用只共享 EGLDisplay卻不共享 EGLContext這種代碼在開發(fā)機(jī)上偶爾能跑因?yàn)槟承?qū)動廠商把資源表做成了全局的但壓測和真機(jī)更換設(shè)備后立刻崩潰。推薦的做法是在紋理生產(chǎn)方初始化時(shí)記錄一個(gè)全局變量sSharedContext EGL14.eglGetCurrentContext();然后在渲染線程 init 時(shí)把它作為創(chuàng)建參數(shù)傳進(jìn)去。如果紋理生產(chǎn)方?jīng)]有 EGLContext直接傳EGL_NO_CONTEXT。注意共享 context 只共享對象不共享 GL 狀態(tài)機(jī)所以紋理參數(shù)、Shader、VBO 都要在新 context 里重新設(shè)置。4.2 EGL 渲染先行ImageReader 異步消費(fèi)同步在哪做ImageReader 的 Image 是異步到達(dá)的onImageAvailable觸發(fā)時(shí)并不代表 GPU 繪制已經(jīng)完成。eglSwapBuffers只表示緩沖被送交 BufferQueue不保證 GPU 已結(jié)束渲染。在部分設(shè)備上ImageReader 拿到幀時(shí)紋理內(nèi)容還處于可寫狀態(tài)后面消費(fèi)線程讀取時(shí)會出現(xiàn)半幀或內(nèi)容撕裂。如果追求穩(wěn)妥最直接的做法是在eglSwapBuffers后插入 GPU 等待EGL14.eglSwapBuffers(mDisplay, mSurface); // 等待 GPU 完成所有繪制指令確保 ImageReader 能拿到已完成的幀 GLES30.glFinish();glFinish會讓 CPU 阻塞直到 buffer 可復(fù)用。對于 30fps 的抽幀需求影響不大但如果要跑 60fps建議換成 fenceEGLSyncKHR fence EGLExt.eglCreateSyncKHR(mDisplay, EGLExt.EGL_SYNC_NATIVE_FENCE_ANDROID, new int[]{ EGLExt.EGL_SYNC_NATIVE_FENCE_ANDROID, 0, EGL14.EGL_NONE }, 0); // 從 fence 里取出 native fence fd傳給消費(fèi)端等待完成后 close這是 Android 推薦的低延遲方案把 fence fd 一并傳給消費(fèi)者而不是讓 CPU 在 GPU 完成后才繼續(xù)跑。如果當(dāng)前只做總結(jié)輸出glFinish簡單不易錯(cuò)。4.3 像素格式與 Size 對齊ImageReader 不是隨便創(chuàng)建的ImageReader 的構(gòu)造參數(shù)pixelFormat必須與 EGLConfig 的 RGBA 位數(shù)一致否則畫面顏色會偏移或者完全失真。RGB_565、RGBA_8888、YUV_420_888 在 BufferQueue 里是不同格式EGL 無法對一個(gè) YUV 格式的 Surface 直接執(zhí)行 RGBA 的渲染操作。標(biāo)題鎖定的場景是 OpenGL ES 3.0 輸出所以 ImageReader 通常這樣創(chuàng)建mImageReader ImageReader.newInstance(width, height, PixelFormat.RGBA_8888, 2);注意最后那個(gè)maxImages參數(shù)。如果設(shè)成 1渲染頻率高時(shí)消費(fèi)者來不及 closeImageReader 會停止向 BufferQueue 請求新緩沖eglSwapBuffers會卡死設(shè)成 4 又會成倍占用內(nèi)存。2 是絕大多數(shù)抽幀和編碼場景下的默認(rèn)值。寬度和高度也需要對齊。給 ImageReader 傳奇數(shù)尺寸部分設(shè)備在eglCreateWindowSurface階段就失敗部分在ImageReader.getPlanes()階段因?yàn)?stride 和 width 不一致返回錯(cuò)誤的 Buffer 布局。常規(guī)做法是先對尺寸做對齊再創(chuàng)建int alignedWidth (width 15) / 16 * 16; int alignedHeight (height 15) / 16 * 16;紋理渲染到對齊后的 Surface 上如果 UVC 相機(jī)原始尺寸是 640x480對齊后依然是這兩個(gè)數(shù)字因?yàn)?16 的倍數(shù)對齊不會改變這兩個(gè)值。5. 接入 MediaCodec 編碼器與 30fps 幀率控制一個(gè)可收尾的技巧渲染到 ImageReader 的最終目的大多離不開編碼。一個(gè)更高效的做法是讓 OpenGL ES 3.0 直接繪制到 MediaCodec 編碼器的輸入 Surface省掉 ImageReader 這個(gè)中間層。但有時(shí)業(yè)務(wù)需要同時(shí)保留 CPU 讀幀能力那就必須雙 Surface 并行。5.1 如果你要編碼別讓 ImageReader 成為中間跳板常見錯(cuò)誤寫法是先渲染到 ImageReader再在onImageAvailable里把Image的 buffer 拷貝出來通過MediaCodec.queueInputBuffer喂給編碼器。這不叫 GPU 渲染等于把 GPU 畫的幀又回到了 CPU再交給編碼器性能損耗巨大。如果不需要 CPU 讀幀直接創(chuàng)建編碼器輸入 SurfacemEncoder MediaCodec.createEncoderByType(video/avc); MediaFormat format MediaFormat.createVideoFormat(video/avc, alignedWidth, alignedHeight); format.setInteger(MediaFormat.KEY_COLOR_FORMAT, MediaCodecInfo.CodecCapabilities.COLOR_FormatSurface); format.setInteger(MediaFormat.KEY_BIT_RATE, 4_000_000); format.setInteger(MediaFormat.KEY_FRAME_RATE, 30); format.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, 1); mEncoder.configure(format, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE); Surface encoderSurface mEncoder.createInputSurface(); mEncoder.start();然后把encoderSurface傳給第 3 章的init方法ImageReader 那條路徑留作旁路抽幀。5.2 兩個(gè) EGLSurface 交替渲染同時(shí)保留讀像素能力為了同時(shí)滿足編碼和讀幀可以創(chuàng)建兩個(gè) EGLSurface一個(gè)綁定 ImageReader一個(gè)綁定編碼器輸入 Surface。每次drawFrame時(shí)按當(dāng)前消費(fèi)者選擇目標(biāo)EGL14.eglMakeCurrent(mDisplay, chooseSurface(), chooseSurface(), mContext); GLES30.glFinish(); EGL14.eglSwapBuffers(mDisplay, chooseSurface());chooseSurface()根據(jù)當(dāng)前是否處于檢測階段返回對應(yīng) EGLSurface。這樣編碼鏈路的每一幀都是 GPU 直接寫入不經(jīng)過 CPUImageReader 路徑只在真正需要抽幀的瞬間才切換過去。幀率控制可以用Choreographer在 VSYNC 信號上回調(diào)或者用循環(huán)控制long startTime System.nanoTime(); long frameInterval 33_000_000L; // 30fps單位納秒 while (running) { drawFrame(); long elapsed System.nanoTime() - startTime; if (elapsed frameInterval) { SystemClock.sleep((frameInterval - elapsed) / 1_000_000L); } startTime System.nanoTime(); }SystemClock.sleep比Thread.sleep更精確它不受 Java 層時(shí)間調(diào)整影響適合在 GL 線程里做節(jié)奏控制。5.3 用 adb 驗(yàn)證 ImageReader 是否真的在刷新接入完成后如果無法確定 ImageReader 是否收到幀可以用 adb 查看 SurfaceFlinger 的圖層狀態(tài)。先列出所有 Surface 名稱找到 ImageReader 對應(yīng)的項(xiàng)adb shell dumpsys SurfaceFlinger --list對比渲染前后同一 Surface 的z-order或visible region變化可以確認(rèn)是否提交了緩沖。但要注意一點(diǎn)ImageReader 表面在eglSwapBuffers后不會永遠(yuǎn)可見如果消費(fèi)者沒有及時(shí) close 圖像Surface 圖層可能被 SurfaceFlinger 判定為無內(nèi)容而在--list中消失。遇到這種情況優(yōu)先檢查onImageAvailable是否執(zhí)行以及Image.close()是否及時(shí)調(diào)用。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
美女让帅哥通她小鸡鸡| 艹比视频国产精品| 日本幼女18+| 日本三级中国三级99人妇网站| 最新av网站在线观看| 亚洲天堂电影网| 全免费a敌肛交毛片免费| 91久热| 久热色情精品| 思思热免费视频观看| 久久大黄片| 久久999久| 91色艳| 一二三四视频中文字幕在线看| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | av天堂加勒比| 97在线观看免费视频l| 91欧美| 国产精品久久久久久久久久梁医生| 久久綜合很很很| 国产亚洲国产超碰| 操b在线观看| 啊啊啊好大好深| 极品久久久久久久久久久久久久| 日本天天人人狠狠在线日美女| 成人三级片无码| 久久草草亚洲蜜桃臀| 亚洲美女精品九九视频| 日本不卡一区二区三区| 欧美97日韩| 婷婷成人五月天| 久久久久成人亚洲国产| 久久国内| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 上床不卡网站| 九九玖玖精品| 人妻少妇久久久| 一级A啪啪啪啪| 久草精品国产99| 美女9118禁| 亚洲自拍青操视频| 999 久久久| 75大香蕉| 久久国产精品,久久国产| 99热精品在线| 97色色网| 欧美综合亚洲综合| 欧美情色男人的天堂| 中文字幕一区二区三区高清| 97这里有精品| 啪啪91| 91五十路| 日韩不卡毛片Av免费高清| 操一区| 综合婷婷| 波多野结衣之双飞调教在线播放| 精品午夜福利| 91男同| 欧美人妻制服| 伊人欧美大香蕉视频| 国产后入精品| 亚洲欧美精品一区天堂久久 | 伊人国产成人av网站| 国产又粗又长视频| 啊啊啊轻点在线观看| av东京热男人的天堂| 日本99一区二区| 99蜜桃臀久久久欧美精品网站| 国产肏屁眼视频| 日韩AV一区二区三区三州三州| 人妻AV 中文字幕的| 五月天婷婷基地| 男人的天堂亚洲| 亚洲精品国产精品乱码不99| 欧美一区二区亚洲天堂| 人妻久久久久久| 欧美一级三级| 亚洲国产一区二区三区在线| 97色诱| 97一区二压| 青青伊人久久| 国产丝袜高跟美女av免费观看| 国产AV线| 久久久久久久91| 亚洲不雅视频1区二区| 成人国产二区三区在线,男女精品。| 97日韩欧美亚洲| 国产一线二线三线av| 粉嫩av一区二区三区天美传媒| 综合色区偷拍| av在线播放国产一区| 日韩激情啪啪啪| 日韩欧美一级特黄大片| 成人看片网站| 日韩草久视频| 成人精品欧洲亚洲| 国产美女高潮视频| 日韩精品色呦呦| 免费簧片在线观看| 99在线免费视频| 婷婷丁香六月| 亚洲影视综合网| 裸模AV女优| 粉嫩av一区二区三区四季| 国产中文字幕在线观看| 亚洲成人在线乱码色午夜| 啊啊啊啊操死我| av爱爱爱| 婷婷丁香五月天综合东京热| 综合影院亚洲| 超碰1997| 超碰99re| 国产专区第一页| 日本欧美亚洲高清在线看| 久久中文字幕一区不卡| 强被迫伦姧在线观看无码网站| 一区在线精品中文字幕| 青娱乐啪啪视频| 欧美大片91| 欧美欧美少妇| 激情文学网伊人| 久久婷婷苹果| 欧洲一区二区三区免费| 国产肏逼网站| 久久久久久国产无码精品| 91狠狠综合久久| 96麻豆精品一区二区三区| 亚洲情色综合| 亚洲国产日韩精品久久久| 亚洲天天艹| 亚洲精品啪视频| 九九综合久久| 成人A片男人的天堂| 国产精品粉嫩福利在线| 风韵犹存大大大大香蕉| 91影库| 大香蕉99999| 日韩免费中文字幕视频| 国产美女高潮叫床视频| 日韩久久艹| 热热色综合网| 三级激情网站| 中文字幕 av v| 91精品操美女| 大学生口爆吞精| 国产av尤物| 九九九九九九九| 日本操逼aaaaa| 久久久久亚洲Aⅴ无码| 九久9热| 人妻熟女一区二区| 国产老太乱伦一区| 97免费在线观看| 高清无码在线播放网站| 天天日天天爽| 蜜臀在线看片| 一起草日韩| 人妻碰碰碰碰碰碰| 91bbb| 欧美人妻久久精品二区三区| 安徽熟妇视频| 懂色Av| 岛国艾薇凹凸视频天堂| 国产综合久久久鬼色| 日韩欧美麻豆| 欧美强奸乱| 日日干日日操五月天伦理视频| 欧美男女午夜啪啪| 啊灬啊灬啊灬好深灬快高潮了动漫-国产字幕国产在线观看-B049AV | 天天插天天插| 日韩内| 欧美视频一区二区在线| 超碰在线第一页| 久久欲| 久草资源在线视频官方总站日韩丝袜美腿| 蜜桃av色偷偷av老熟女| 婷婷色五月激情| 熟女熟妇伦久久影院毛片一区二区 | 极品肉射| 超碰在线人妻| 四虎免费在线播放| 欧美日韩中文亚洲v在线综合| 中文字幕91页| 国产九九久久久精品| 精品国产乱码久久久| 久操精品网| 精品十三区| 在线视频免费观看午夜| 91亚洲青青草原精品1区| 黄页av| 超碰99在线| 日韩人妻精品中文字幕| 99这里有精品| 麻豆一区二区三区精品| 欧美亚洲丝袜美女电影| 欧美国产有色电影| 2017大香蕉| 一区 欧美 日韩 麻豆| 天天干天天舔| 少妇天堂网络| 国产又黄又爽| 97人人操人人摸人人爱| 精品一二三区久久AAA片| 中文字幕十五区| 久久性爱精品一区| a人欧美综合天堂麻豆| 国产精品直播在线观看直播| 在线无码视频| 久久久性爱视频| 一类av片在线看| ai欧美亚洲小说| 日韩操逼HD| 人妻熟女一区二区三区在线| 国产传媒午夜理伦精品| 污到发麻的视频 国产| 亚洲欧美第一页| 日韩av熟女一区二区三区成人| 国产高清亚洲日韩一区| 日本 免费 一区二区三区 久久香蕉 | 久久av色| 丁香九月 婷婷| 亚洲三级网址久久最新| 日韩精品9区| 伊人影院综合是一个与深夜成人在线| 欧美洲精品一级| 精品人妻美妇91job| 一本大道久| 丁香六月激情| 青娱乐淫乱1314| 欧美色66| 日日碰狠狠添天天爽超| 理论久久婷婷网8| 亚洲国产欧美中日韩成人综合视频| 色97欧美| 欧美美女在线高潮999| 成人97人人超碰人人| 蜜桃一区二区三区| 丰满人妻av一区二区三区| 亚洲国产第一页综合视频| 人人操人人肉久久精品| 日韩天堂av电影在线观看| 久久男人精品| 无码二级三级| 射丝袜高跟鞋99| 日韩激情啪啪啪| 97在线播放| 免费看毛片操穴| 色激情综合网站| 欧美97视频| 国内精品伊人久久久久影院会| 国产精品9999| 91久久久视| 午夜福利视频在线一区| 精品无码久久久久久久久果冻糖心 | 狼人综合婷婷激情四射 | 日日碰狠狠添天天爽超| 国产精品999aaa| 九九九精品一区二区无码| 激情五月天插| 亚洲春色欧美激情自拍| 亚州欧美在线| 91美女国产在线| 欧美亚洲影视| 亚洲丝袜色| 精品人妻一区| 97超碰碰| 欧美激情久久久久| 日韩成人大片在线观看| 91操熟女视频 | 午夜丁香婷婷| 啊啊啊啊操死我| 亚洲国产婷婷在线播放| 国产又粗又长又大的视频| 20cm女自慰在线日韩欧美| 欧美色图20P| 欧美极品色| 欧美性爱97超碰| 丁香五月天啪啪| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 日本肉体xxxx裸交| 操逼视频色| 伊人国产AV| 中文字幕av色| 亚洲暴力强奸AV| 亚洲少妇在线观看| 在线啊啊啊| 欧美熟女妇同| 91人人爽人人爽人人人,gav福利视频导航,日韩欧美亚洲国产字幕四区 | 看全色黄大色大片免费视频| 日韩欧美~中文字| 啪啪视频mP4| 中文字幕激情小说| 欧美亚洲se91| 天堂九九九九九九九九九| jk白丝没脱就开始啪啪| 白丝一区| 国产精品欧美在线观看| 91男女| 亚州中文字幕超碰97| 91婷婷| 十八岁啪啪视频免费看| 操逼逼一区视频| 婷婷五月天激情四射| 精品久操| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 97在线免费观看| 黄色一区三区| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | av在线人气| 噜噜在线| 97在线亚洲| 国产AV天美| 91久久久久久| 日本岛国黄色网址| 一个人免费HD91视频| 日本性爰一道本| 老女人综合网| 久久99干一本高清| 超碰欧美97资源| 校园春色中文字幕AV| 欧美日韩222| 色一射色一射| 久久久久久久久久久久久久久性生活视频 | AV中亚| 操老熟女AV| 欧日韩在线观看| 国产青视频| 国产13区| 很很干很很操| 床上啊啊啊一区二区三区| 91色婷婷综合久久中文字幕二区| 一区二区三区欧美激情| 午夜福利免费精品视频| 成人av福利在线观看| 免费视频在线观看啊啊啊啊啊| 色999亚洲人成色| 中文字幕 国产区| 岛国片国产成人亚洲播放| 97色色色| 免费视频在线观看啊啊啊啊啊| 久超碰这里只有精品| 久久草草亚洲蜜桃臀| 欧美gv在线观看| 五月婷婷五月天| 97精选久久| 久久久久久久久久久久欧美日| 一本久久精品中文字| 97天天插| 丰满少妇精品一区二区| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 大香蕉www.超碰| 香伊人在线| 91国产丝袜白虎| 男女啊啊啊啊啊| 国产久9| 97chaopengongkai| 天天操夜夜操| 搞中出久久| 乱伦图av| 婷婷久月| 男人天堂.AB| 男人下部插入女人下部| 久久骚少妇| 99999这里都精品| 青青草华人在线欧美在线| 精品少妇人妻一区二区三区| 国内外毛片在线观看| 国产美女高潮视频| 少妇久久久| 国产精品人妻一区二区| 综合免费无码中文| 9久久精品| 五月丁香六月婷综合成人综合| 九月婷婷久久| 日日日啊啊啊| 小情侣高清国产在线视频| 国产一区二区三区影片| 精品福利视频| 精品一区二区三区四区外站| 欧美淫乱视频| 少妇高潮一区二区三区在线| 超碰欧美| 操逼片中文| 五月天激情网站| 九九热精品免费视频| 超碰1024久久| 日日爽熟女| 男啪女色黄无遮挡免费观看| 自拍内地三级在线观看| 欧美亚洲| 国产精品一二三区福利| 国产丰满少妇久久久精品影院| 大香蕉日亚洲日本亚大| 国产成人久久精品蜜臀| 强奸乱伦av电影| 久久性爱免费送| 天天肏美女| 啊啊啊快操我视频| 9丨久久九九九| 日本三级A片网站com| 久操大香蕉| 9超碰免费| 91精品久久久久久| 欧美激情色婷婷花野真衣一区二区| 少好三P| 韩国一级做a久久久久| 波多野结衣先锋影音| 久久久久久亚洲精品不卡人乳| 高潮嗯啊性感美女久久久| 精品丰满熟妇人妻一区| 91色人妻| 丁香六月婷| 九九热在线精品视频| 97在线视频网站| 麻花传媒免费网站在线观看| 精品网站9999| 超碰视97中文| 一级AV性爱| A久久| 91/欧美| 亚洲狠狠入| 国产午夜视频| 热热色国产一二区AV| 秋霞色色影院| www.婷婷五月天| 国产久久一区二区| 欧州一区二区三区四区| 综合色99| 青青草无码视频| 中文字幕av亚洲精品| 国模精品一区二区三区苹果色戒| 亚洲人91| 激情看片网站| A级毛片在线看免费| 国产热av| 75大香蕉| 99热免费| 色小视频蜜乳| 久久 国产 无码| 欧美成97爱| 亚卅熟女乱色| 久久精品男人的天堂| 热天堂一区二区| 老女人日韩美91| 97资源站久久| 综合久久久久久久综合网| 日韩人妻大香蕉| 久久女女| 免费αV在线视频| 亚洲天天艹| 91综合熟女| 97超碰色中文字幕| 精品成人亚洲午夜电影| 亚洲男人天堂手机版| 嗯嗯啊好大| 日本一二区免费| 中文字幕高清20页视频| 偷看洗澡一二三区美女| 欧日韩一二三f区| 高清在线不卡一区二区 视频| 亚洲码和欧洲精品激情系列| 在线视频一区二区传媒| 伊人991| 人妻精品视频一区二区三区| 男人的天堂亚洲| 久久是精品| 欧美亚洲| 亚洲不卡不卡中文字幕不卡| 肏逼视频日本| 日本熟妇熟色97一本在线观看| 亚洲精品国产拍免费91在线| 欧美在线观看综合国产| 色哟哟av网址| 欧美不卡二区| 久草线上视频免费看| 日韩亚洲国产视频| 人妻丝袜肏逼| 狠狠色噜噜狠狠狠狠狠色综合久久| 成人一区二区三区四区| 色婷婷激一区二区三区| 久久妇| 手机在线免费看的av| 91久久国产综合久久| 丰满人妻一区二区中文| 国产粉嫩出水在线播放| 啊啊啊骚| 男人的天堂不卡一区二区| 99999re| 性色一线| 国产二区三区免费视频| 日本免费不卡二区| 色欲三区| 色眯眯射| 夜夜天天噜狠狠爱2021| 色五月第四色| 亚洲啪AⅤ永久无码| 欧美成人亚洲精品| 小视频玖玖| 人人摸人人舔一区二区| 人人操人人操人人人操| 青青草白白色| 狠狠色噜噜狠狠狠狠狠色综合久久 | 国产精品久久久久中文字幕| 天天在线91| 亚洲图片欧美在线视频| 欧美综合亚洲综合| 少妇被玩视频二三区| 国产精品白领在线观看 | 一个人免费视频观看在线WWW| A啊啊在线观看| 麻豆国产精品午夜视频| 男人把坤坤插入女人的下体| 亚洲中文日韩精品| 野狼福利社区| 国产25页| 岛国片在线观看视频亚洲| 伊人九九九| 日本青青草在线| 亚洲精品国产熟女| 色欧美在线| 91女在线观看| 激情无码日韩| 欧美色图99| 久久这里都是精品| 午夜乱轮操逼视频免费看| 少妇久久久免费| 日韩熟妇二区| 91丨豆花丨熟女| 久超碰这里只有精品| 精品妇女一区二区三区| av在线观看不卡网站| 欧美另类天堂| 欧美高清性猛交| 粉嫩不卡一区二区性爱| 国产精品乱码久久久久| 蜜桃久久精品一区二区三区| 婷婷五月天av| PMv在线观看| 伊人嫩草| 欧美 青青草| 国产伦乱91| 久久久久九九九九| 九九av| 男人兔费天堂| 人人人人插| 久久久久921| 1769成人国产精品视频| 69综合网| 91色色网站| 97色伦欧美| 国产精品久久久午夜夜伦鲁鲁| 大学生口爆吞精| 四虎AV无码| 日本孕妇一区二区视频操逼免费看 | 992这里有精品| 久久产精品一区二区三区电影| av线电影| 国精品一区二区三| 91人妻Pr| 天天操夜夜操狠很操| 欧美性性性| 久草男人天堂| 久草久热| 国产精品久久久三级无码| 久久精品人人做人人看| 久久国产精品m码| 大奶尤物鲍汁淫荡欧美视频粉嫩夜夜骚| 操逼片国产| 人妻天天爽天天爽三区| 大香交| 日日夜夜骚| 懂色AV蜜臀无码精品APP| 久操免费在线| 手机av亚洲丝袜美腿日韩第一页二页| 麻豆区99999| 久久婷婷色| 人人艹亚洲| 日韩肏逼视频| 麻豆精品.欧美精品.日韩精品.| 亚洲色图欧美色图制服诱惑| 欧美狠狠弄| 天天综合色| 大伊香蕉在线视频免费| 日韩偷拍一区二区三区 | 婷婷情色综合网| 国产成人精品亚洲日本| 国产无马视频| 日韩三A大片在线观看| 国产品精品自在在线午夜免费 | 黄网在线播放| 首页中文字幕中文字幕免费| 国产性久久久| …亚洲黄色厕厕女女在线播…| 51一区二区三区| 是还免费视频1727我| 久久大香蕉手机高清| 亚洲午夜福利视频| 亚洲最新中文字幕免费| 美国精品国产精品| www.亚洲成人一区| 淫荡网址| 97aiaiai| 啊啊啊啊啊在线| 78精品在线| WWW美腿丝袜香蕉中文| 欧美日韩国产人人| 久久久久久波多野吉衣高潮| 无码免费一区二区三区啪啪| 色优久久| 日韩性爱网址| 91精品丝袜在线观看| 96久久精品一二三区色欲| 亚洲成a人片在线观看中文!!!| 中文字幕一区二区三区字幕| 74成人在线| 青娱乐老司机视频| 日韩精品一区二区高清| 久久黄色视频一区二区三区| 手机在线中文字幕国产| 无码精品人妻一区二区三区妖精| 亚洲成人美女无吗| 欧美劲爆视频一区二区| 国产精品视频精品一二| 激情五月天视频| 日本天堂网| 日本精品无码三级网站| 人人人人插| 午夜福利在线合集| 天天色黄色影院天天操| 波多野结衣被操50分钟免费视频| 亚洲精品自拍| 国产色综合亚洲色综合吹潮| 国产AV色黄看到爽| 日韩欧美aⅴ综合网站发布| 黑人操一区二区| 人人操人人摸人| 国产一区在线观看无码AV| 久久亚洲AV无码专区首页| 丰满人妻一区二区三区性色| 97人妻免费中文字幕| 欧美日产国产在线成人第一区| 尤物网址| 韩国三级理论在线| 67194国产| 日韩素人无码一区二区三区三州| 青青草视频在线观看一区二区| 日韩情色AV| 久久久久久久久国产| 夜夜夜爽www精品视频| 午夜一区| 亚洲天堂在线怕怕视频| 国产亚洲精品农村妇女| 人人看人人摸人人色| 精品国产精品一区二区| 丝袜制服字幕在线| 狠狠躁天天躁日日躁| 欧美日韩人妻少妇 一区二区三区| 97中文综合| 玖草在线视频| 少妇啪啪自拍| 天天插天天操| 91人妻视频在线| 国产日韩欧美| 91精品人妻一区二区三区蜜桃| 蜜乳AV免费观看| 亚洲AV操| 中文字幕在线播放2中文字幕在线观看2| 色婷婷在线视频精品导航| 国产精品久久久九九九| 欧美精品系列| a片自拍直播视频| 在线一道啪| 丁香五月偷拍| 99re8免费高清在线| 欧美桃色网| 88xx成人精品视频| 天干天干天干天天做| 成人性交午夜免费片| a片偷拍视频| 99热只有这里有精品| 欧美大码在线视频| 久久人人爽av亚洲精品天堂桃色 | 欧美色老汉| 综合亚洲欧美精品日韩?v| 亚洲强奸乱伦影视网| 蜜臀久久99精品久久久老,,| 日日干夜夜欢| 97啪啪| 久久国产免费激情视频| 日本欧美成人片AAAA| 欧美日韩精品国产91| 一本久道久久综合狠狠爱一密臀精| 久久天天艹| 在线日韩视频| 伊蕉97蜜桃97狠狠综合干 | 国产亚州高清国产拍精| 国产精品青青草| 中文欧丝袜诱惑| 又大又大又大又粗爽高潮观看| 无码高清专| 后入内射蜜桃臀| 天天躁日日躁狠狠狠躁| 日韩综合无码色欲vv| 亚洲五月丁香花狠狠干一区二区三区 | 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 91精品人| 无码国产精品午夜不卡( | 免费a v| 精品成人av一区二区三区在线| 日本精品国产视频| 人妻精品一区二区三区| 人妻一区视频| 真实高潮91| 人人九九精| 1人人看人人摸人人操| 理论久久婷婷网 8| 91久热| 色色色色日本| 玖玖人人爱| 五月天婷婷社区| 国产www色在线观看| 黄色二级片网站| 午夜一区| 999岛国大片| 伦理弟一页| 亚洲男人电影天堂| 大香蕉乱伦视频网| 日韩人妻精品| 男女性感激情网站| 综合网久久| 欧美18老人禁| 久久婷婷国产一区二区色| 91中文字幕在线观看| 国产熟女完整版中字| 亚州精品丝袜-不卡成人免费| 天美传媒婬乱在| 国产超碰人人操| 东京热大香焦| www.av在线视频| 婷婷五月天无码 | 久久伊人网视频一区二区三区| 男人综合网| 在线观看av区| 黄色十八禁| 天天做日日做| 精品亚洲俞拍视频一区| 少妇被c 黄 免费观看| 天天射,天天操,天天爽-国内精品一区二区三区-成人AV | 思思在线免费视频| 足交视频老司机| 99re国产精品视频| 青青国产在线拍揄自揄拍| dy888午夜老子影视达达兔| 中文字幕 人妻不满 在线视频| 一本大道青青| 国产在线视视频有精品| 激情视频图片| 久久男女激情视频网站| 天天在线91| 亚洲一区二区中文字幕| 九九九久久久久| 性爱视频无打码在线观看| 亚洲棕合电彰| 国产精品点击进入在线影院| 亚洲精品骚逼| 色操逼网| 啊啊啊不要好爽日韩无码一区| 亚洲熟妇一,二,三期| 亚洲人妻一区二区三区| 九九久久玖玖| 情色AV电影| 加勒比伊人| 啊啊啊啊啊啊啊国| 久久精品国产亚洲AV清纯| 国精品一区二区三| 中文AV制服乱伦| 先锋音影AV| 91人妻中文| 我想要啊 啊 啊| 国产伦精品一区二区三区在线观| 国产AV线| 任你爽视频| 999久久久国产精品| 麻豆2区1区天美| 操逼网站网站| 久草婷婷| 亞洲久久直播| 午夜传煤十二区精品| 97精品国产97久久久久久| 日本成人免费一区二区三区| 青青国产在线拍揄自揄拍| 亚洲AV噜噜狠狠网址蜜桃动漫| 少妇色综合| 欧美精品自慰系列寂寞少妇| 久肏视频字幕| 久久乐| 肏逼视频日本| 伊人久久亚洲中文字幕不卡| 亚洲图片欧洲图片aⅴ| 天天爱综合网| 99视频只有精品| 99999亚洲| 色月天AV导航| 97精品熟女少妇一区| 国产超碰97| 东北夫妻性偷拍| 国产日韩区| AV有码在线| 草b在线| 中文字幕日韩电影人妻| 人妻大香蕉| 五月婷婷五月天| 97超碰磁| 欧美性五月| 欧美在线播放aaaa| 麻豆久久精品亚洲精品88 | 亚州情色j区| 久久这里只精品免费福利| 亚洲男人天堂视频| 亚洲欲色9532548967一区| 久久69精品久久久久久久| 性感美女91影视| 67194无码不卡| 精品亚洲黄色片 国产精品导航一区二区 | 亚洲一区二区三区婷婷| 中文幕97| 久久大香蕉| 自怕偷自怕亚洲精品| 91痴汉| 欧美|91色综合| 大学生口爆吞精| 丝袜美腿操av| 国产一级久久久| 国产精品无码AV网站| 欧美天天射| 日本黄页视频在线观看| 91ise欧美| 无码国产精品久久久久| 69国产对白刺激| 91欧美少妇| 91欧美长吊| 五月天激情影院| 日韩福利综合一区| 后入合集| 中文字幕97色| 久久怡红院| 日韩无码三级影院| 91丝袜| 色踪合AV| 91色图片| www.激情| 熟妇操花| 黄色电影在线播放综合网站| 极品色综合| A一级色女| 亚洲AV资源| 任你草| 亚洲少妇综合在线播放| 亚洲无码超碰免费| 中文乱码字幕观看视频| 欧美在线|亚洲| 超碰97男人| 色色综合网站| 盗摄女人妻在线| 襙一襙| 亚洲 在线| 国产一区二区三区,在线观看观看| 欧美熟爽综合| 婷婷激情五月| 郑州宾馆老熟女露脸啪啪| WWW.操逼.COM| 变态综合色| 欧美日韩97在线| 中 文字幕一区二区三四 五 区日 日 骚| 婷婷五月色| 国产高清成人传媒影视| 白天啪啪晚上啪啪视频| 人人操人人色人人摸| 亚洲色宗合| 加勒比99999| 天天躁夜夜躁狠狠躁AV| 韩日巨乳美女免费视频在线观看| 精品久久99| 久青草影院| 日韩性爱小视频在线观看| 亚洲国产ⅴ高清在线观看| 男女啪啪网站免费视频| 97在线视频网站| 国产suv精品一区| 色哟哟av网址| 国产天美传媒精品| 欧洲天天在线| 蜜桃久久一区二区三区| 97色色婷婷| 国产欧美精选自拍一区| 大香蕉免费3| 国产精品美女视频诱惑| 精品视频一二三中文| 伊人性在线视频| 日本东京热大香蕉a片| 亚洲综合影片| 在线天堂999| 欧美综合97www| 久久天天性久久伊人| 中文字幕亚洲在线一区| 日本性爱少妇| 亚洲综合一区二区| 熟妇操花| 四虎影院成年人片| 999岛国大片| 曰本人妻人人澡人人夹| 欧美黑人精品在线播放| 九月丁香婷婷色| wwwxxx日本爽| 小视频国产| 天天操人人操狠狠插| 欧美十八禁视频| 少妇被c 黄 免费观看| 欧美男人天堂| 亚洲国产一级黄色视频| 中文AV制服乱伦| 亚洲精品白浆高清久久久久久| 强被迫伦姧在线观看无码网站| 9久在线视频只有精品| 天天影视色香欲综合网小说| 亚洲欧美国产va在线播放频| av毛片aaaaa免费看| av网站国产主播在线| 91成人18| 国产亚洲色停停久久99精品91| 国产精品久久久无码aV去| 精品人妻1区| 91人精品妻入口| 99在线免费公开视频| 中国zzijzzijzzwww精品| 男人高清无码一区二区| 免费在线观看国内色片网站网址| 日韩精品一区二区日韩| jizzjizz欧美| 九九探花视频在线观看| 在线观看日韩av不卡| 超碰人妻在线| 9久综合网| 67194无码不卡| 天堂精品小草| 日本中文字幕一区| 国内外毛片在线观看| 天天欧美| 国产亚洲色停停久久99精品91| 91香蕉视频在线观看免费| 国产成人bd在线观看| 丁香九月激情| 熟妇女人妻呻吟久久AV| 大香蕉宅男伊人| www久久精品| 亚洲九九视频| 日本欧美中文字幕| a一区二区三区乱码在线| 欧美日韩另类在线播放| 国产高清无码一区三区二区| 免费看A片毛毛片在线播| 强奸乱亚洲| 女人的久久久| 欧美三级免费伊人| 一本大道综合伊人精品热热| 无码九九| 熟妇女伦乱视频| 午夜视频黄| 91强热人妻| 国产伦精品一区二区三区视频女| 97人亚洲综合字幕| 国产不卡的视频 | 久久夜夜| 黄片视频,下载| 日本国产欧美高清在线| 男人天堂2012| 美女啊啊啊啊pc| 一本久久精品中文字| 久久熟女嫩草成人片免费| 97亚洲精品| 国产av又色又爽又黄| 国产精品一二三免费网站| 美腿色图| 色97国产69香蕉| 日韩欧美女求操每天更新| 人人人摸人人| av在线免费一区二区| 丁香六月婷婷综合| 91精品成人www| 97国产伦理| 丁香九月婷婷| 国产成人免费观看在线视频| 涩五月婷婷| 亚洲精品1区| 欧美亚洲手机在线| 欧美亚洲第一页| 亚欧高清在线| 97爱欧美| 日日骚网站| 久久久久久日韩| 97国产超湿| ...日韩成人一区二区三区字幕| 综合久久97| 无码免费精品高清| 暖暖精品二区三区观看| 99最新日韩偷拍视频| 2021国产成人精品久久| 超碰成人国产| 玖玖爱一区在线| 99在线精品视频| 福利色色| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 噜噜噜狠狠色综合| 日韩不卡网操逼中文字幕日韩| 亚洲日韩电影| 日韩性爱视频免费在线| 求求你操操我| 中文字幕在线免费观看 | 免费一级欧美片片线观看| 中文字幕天天操| 好爽视频在线观看视频 | 精品久久久av| 久久久久久久久9| 91在线视频观看国产| 性感女人网页在线观看视频| 蜜臀va69| 性久久| 大香蕉伊人网WWWn0n| 少妇激情一区二区三区视频| 国产精品蜜乳AV| 18岁禁 茉莉成人久久| 在线视频97| 丁香五月性| 欧美草草| 老熟妇一区二区三区…| 男人的天堂在线2| 亚洲高清自拍| 久综合网| 国产精品97超碰| 欧美日韩不卡a片| 欧美熟女激情| 色婷婷一区二区三区久久| 日本3级一区二区免费| 伊人精品国产| 一区二区三区黄色片a| 麻豆av一区二区三区| 久艹日日日| 操婷婷逼| 超碰碰小说97| 黄在线| 天天看高清麻豆| 国产成年女人免费视频播放a| 国模限制级电影| 夜夜夜夜久久久久| 亚洲操人| 97在线资源| 国产精品无码成人精品| 日产国产精品中文久久婷婷| 国产欧美另类久久久精品课程| 亚洲制服欧美另类内射| 人妻素股| 欧美日韩国产高清在线一二三区| 精品人妻一区二区三区夜夜| 国产91影院| 少妇毛片久久| 九九九色| 欧美久久九九| 97爱爱爱| 日韩偷拍色图| 国产精品熟女一区二区三区| 精品人妻伦一二三区久久| 97欧美色| 日本精品成人无码| 亚洲天天天| 欧美婷婷五月天| 啊啊啊好大好深| 天天干天天拍| 天堂综合网| 国产女上位好爽在线| 囯产精品久久久久久久久久二区三区| 久久综合九九| 男人的天堂1024| 婷婷久久网| 97chaopengongkai| 开心激情站| 人妻一区二区三区熟女| 亚洲熟妇自偷自拍另欧美| 欧美色亚洲| 欧美大香蕉在线观看| 免费αV在线视频| 日本午夜福利视频| 92性色国产午夜福利在线661| 欧美日韩国产中文超碰| 久久r精品| 色9999日韩国产| 91情色在线| 大香蕉123| 亚射在线| 天天视频网站黄| 国产丰满少妇久久久精品影院| 成人av影院在线观看| 99在线观看无大码| 北约熟女超碰| 97精品在线| 国产日韩在线播放| 91熟女少妇| av九九| 亚洲国产97| 熟女中出视频| www.99中文字幕| 国产成人啪一区二区| 久久久婷| 波多野结衣之双飞调教在线播放| 久久色一区二区| 久久av成人无码免费| 嗯嗯啊啊啊好爽| 内射白嫩美女| 交换娇妻呻吟声不停中文字幕| 欧美淫乱视频| 成人婷婷丁香| 国产精品视频自拍在线| 亚洲综合一| 亚洲人妻AV| 欧美78P| 成年男人的天堂| 在线观看岛国有码| 中出在线视频| 国模限制级电影| 国产精品视频麻豆入口| 九九免费影片| 欧美精品四区| 26uuu国产亚洲综合| 色天使AV天堂| 96精品在线| 亚洲天堂一区二区久久| 99999亚洲另类| 日本美女性生活久久久久久久| 人人操人人摸人人看人人干| 午夜啊啊| 中文字幕日韩精品一区二区三区| 亚洲一区二区精品福利| 久久久久久人| 九九九网页| 8050午夜少妇无码| 久久久人妻| 精品人妻一区二区乱码一区二区| 成人午夜小视频手机在线看| 天综合网欧美| 黄色一区二区秘书性感| 麻豆天天躁天天揉揉AV| 情色AV电影| 上海一级黄片| AV女优男人的天堂| 91l欧美在线| 日日夜夜天天| 国产精品爽爽v| 久久精品无码专区| 粉嫩AV输入| 亚洲成av人片色午夜乱码| 操啊国产|