免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

ARTICLE DETAIL

資訊詳情

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

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

Android OpenGL ES:將GL_TEXTURE_2D紋理渲染到ImageReader Surface的完整指南 簡(jiǎn)介針對(duì) Android 平臺(tái)上將 OpenGLES3 紋理 ID 渲染到 ImageReader Surface 的需求這份資源以完整可運(yùn)行的 Android 工程形式提供了從紋理加載、EGLDisplay 虛擬屏幕綁定、eglSwapBuffers 緩沖交換到 ImageReader 回調(diào)讀取數(shù)據(jù)并生成 Bitmap 的端到端參考實(shí)現(xiàn)。源碼按功能拆分結(jié)構(gòu)清晰適合需要對(duì)接相機(jī)/視頻幀數(shù)據(jù)或做離屏渲染的 Android 中高級(jí)開(kāi)發(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 等則屬于工程編譯緩存。代碼中對(duì) EGL 環(huán)境搭建、紋理加載、Surface 數(shù)據(jù)通路和 onImageAvailable 取幀等關(guān)鍵節(jié)點(diǎn)均有直接體現(xiàn)便于對(duì)照項(xiàng)目進(jìn)行流程梳理、移植或性能調(diào)優(yōu)。目前已有 731 人學(xué)習(xí)/下載適合正在鉆研 Android 圖形管線、希望打通 OpenGLES 與 Surface 之間數(shù)據(jù)鏈路的開(kāi)發(fā)者。1. 為什么要把 GL_TEXTURE_2D 紋理 ID 渲染到 ImageReader 的 Surface 上在 Android 圖形鏈路里紋理 ID 往往是離屏渲染鏈尾部的產(chǎn)物FBO 完成特效合成、第三方 SDK 輸出一幀經(jīng)過(guò) GL_TEXTURE_2D 的紋理下一步要么送編碼器要么給系統(tǒng)拍下來(lái)。但紋理 ID 只是 GPU 里的一個(gè)“名字”MediaCodec、ImageReader 不認(rèn)識(shí)它它們認(rèn)識(shí)的是 Surface——或者說(shuō)得更準(zhǔn)確一點(diǎn)認(rèn)識(shí)一塊 BufferQueue 的生產(chǎn)端。把 GL_TEXTURE_2D 紋理 ID 畫到 ImageReader 提供的 Surface 上本質(zhì)是在 GPU 里把一張紋理完整搬一次家完成一次低成本的顏色緩沖交換而不是把圖像數(shù)據(jù)讀回 CPU 再寫出去。這個(gè)需求常見(jiàn)于視頻編輯、老照片修復(fù)、平臺(tái)美顏抽幀和低延遲串流。它比 glReadPixels 高效得多比使用 SurfaceTexture 多一層可讀性也比直接向 MediaCodec 編碼器 Surface 輸出更能兼容后續(xù)的 CPU 讀幀邏輯。適合兩類人一類是想把 OpenGL ES 3.0 離屏渲染結(jié)果交給系統(tǒng)編碼、錄屏、拍照的工程師另一類是手頭有一個(gè)來(lái)自第三方庫(kù)的 GL_TEXTURE_2D 紋理 ID不知道如何不碰像素就轉(zhuǎn)型成 Android 可消費(fèi)幀的人。這篇文章按我的慣用方案把 EGL 環(huán)境、ImageReader Surface 初始化、渲染代碼、同步柵欄和編碼器接入全部拆開(kāi)。2. 用 EGL 把 ImageReader 的 Surface 接進(jìn) OpenGL ES 3.0先解決“畫到哪”幾乎所有 Android 開(kāi)發(fā)者看到 ImageReader 的第一反應(yīng)都是調(diào)onImageAvailable后拿Image對(duì)象逐一讀 Plane。這個(gè)思路只覆蓋了消費(fèi)端忽略了 ImageReader 另一個(gè)更重要的身份它的getSurface()返回值是一個(gè)標(biāo)準(zhǔn) Surface而 Surface 背后是 BufferQueue 的生產(chǎn)端。換句話說(shuō)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 層級(jí)里的一個(gè)圖層而 ImageReader 的 Surface 只能作為 ImageReader 的消費(fèi)緩沖入口。它沒(méi)有窗口句柄也不能被 attach 到窗口系統(tǒng)唯一的接入方式就是通過(guò) EGL 的eglCreateWindowSurface。很多人在這一步選錯(cuò) API把 ImageReader 的 Surface 當(dāng) SurfaceTexture 傳進(jìn)setPreviewTexture或者嘗試Canvas.lockCanvas后手動(dòng)編解碼都繞了遠(yuǎn)路。常規(guī)做法是創(chuàng)建 ImageReader取出其 Surface然后在 EGL 層創(chuàng)建 EGLSurface之后所有 GL 繪制命令都會(huì)落到這塊 Surface 上eglSwapBuffers之后 ImageReader 就能異步收到一張全新 Image。下面是四種常見(jiàn) Surface 消費(fèi)者的對(duì)比對(duì)象可被 GL 繪制能否 CPU 讀像素典型用途SurfaceView 的 Surface可以需要額外處理游戲、視頻播放TextureView 的 SurfaceTexture可以需要額外處理相機(jī)預(yù)覽、UI 合成MediaCodec 的 input Surface可以不可以直接讀硬編碼輸入ImageReader 的 Surface可以通過(guò) EGL 接入可以且是設(shè)計(jì)目標(biāo)拍幀、讀紋理、YUV 轉(zhuǎn)換2.2 EGL Surface 與 ImageReader 的像素格式必須匹配EGL 是 OpenGL ES 和窗口系統(tǒng)之間的橋梁。把 ImageReader 的 Surface 接進(jìn)來(lái)核心是eglGetDisplay、eglInitialize、eglChooseConfig、eglCreateWindowSurface這條鏈路。其中最容易出問(wèn)題的是 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 對(duì)應(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 頭文件對(duì)EGL_OPENGL_ES3_BIT_KHR的定義是 0x0040而EGL14.EGL_OPENGL_ES2_BIT的值是 0x0004兩者并不相同。如果只寫入 ES2 bit某些機(jī)型上依然能創(chuàng)建成功但后續(xù)eglCreateContext請(qǐng)求的 OpenGL ES 3.0 context 與 EGLConfig 的 renderable type 不匹配會(huì)得到EGL_BAD_MATCH或EGL_BAD_CONFIG。2.3 共享上下文紋理 ID 在新 EGLContext 里“仍然有效”EGLSurface 創(chuàng)建完成后下一步是創(chuàng)建 EGLContext。如果你已經(jīng)有另一個(gè)線程在渲染紋理比如相機(jī)模塊或第三方濾鏡庫(kù)在某個(gè) GL 線程上生成了紋理 ID那么新的渲染線程必須創(chuàng)建共享上下文。EGLContext 默認(rèn)擁有獨(dú)立的資源命名空間紋理 ID 只是一個(gè)小整數(shù)在不同 context 里如果不同步它在 GL 側(cè)會(huì)被當(dāng)作“不存在的對(duì)象”即使調(diào)用glBindTexture也不會(huì)報(bào)錯(cuò)繪制結(jié)果只會(huì)是黑色。創(chuàng)建共享上下文的方法是先拿到當(dāng)前線程的活躍 contextEGL14.eglGetCurrentContext()然后把它傳給eglCreateContext的第二個(gè)參數(shù)。這樣兩個(gè) context 共享紋理、FBO 等對(duì)象紋理 ID 才能跨線程使用。但如果原紋理所在線程根本沒(méi)有 EGLContext而是通過(guò)其他方式生成的那問(wèn)題就不一樣了——那種情況通常要用擴(kuò)展接口導(dǎo)出內(nèi)存句柄這里不展開(kā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沒(méi)有引入任何第三方依賴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ù)說(shuō)明sharedContext是紋理來(lái)源線程的 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í)最常見(jiàn)的方式是畫兩個(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è)著色器沒(méi)有做任何顏色變換和矩陣運(yùn)算保留紋理原始顏色。sampler2D默認(rèn)綁定紋理單元 0所以繪制前不需要顯式glActiveTexture只要把紋理 ID bind 到GL_TEXTURE_2D上即可。如果將來(lái)要接入 OES 外部紋理需要將采樣器類型換成samplerExternalOES同時(shí)把紋理目標(biāo)改成GL_TEXTURE_EXTERNAL_OES與本文標(biāo)題鎖定的 GL_TEXTURE_2D 場(chǎng)景不是同一套配置。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)的三角形帶覆蓋全屏。紋理綁定后建議檢查紋理對(duì)象的過(guò)濾參數(shù)。外部庫(kù)生成的紋理 ID 不一定設(shè)置了GL_TEXTURE_MIN_FILTER如果默認(rèn)值是GL_NEAREST_MIPMAP_LINEAR而紋理沒(méi)有生成 mipmap畫面會(huì)出現(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 來(lái)源是最新一幀相機(jī) YUV 轉(zhuǎn)成的 GL_TEXTURE_2D換幀時(shí) GPU 和 CPU 之間可能還有未完成寫入需要在 draw 之前插入glFinish()或使用同步柵欄否則第一幀可能出現(xiàn)紋素錯(cuò)亂。4. 共享上下文、同步與格式最常出問(wèn)題的 3 個(gè)位置EGL 初始化完成后渲染邏輯本身很短真正消耗時(shí)間的是排錯(cuò)。這一章只討論最常導(dǎo)致黑屏、花屏、綠屏的三個(gè)因素上下文共享失效、GPU 繪制與 ImageReader 消費(fèi)之間的時(shí)序、像素格式不匹配。4.1 紋理 ID 不是“全局身份證”必須用共享上下文許多人拿到外部傳入的 textureId 后既不詢問(wèn)它的 EGLContext也不做共享直接在新線程里glBindTexture后繪制得到的結(jié)果是黑屏但不報(bào)錯(cuò)。原因是 GL 紋理 ID 在 context 的資源表里只是一個(gè)索引新 context 里沒(méi)有這張表的注冊(cè)信息。共享上下文的創(chuàng)建方法在 2.3 節(jié)已經(jīng)說(shuō)明這里補(bǔ)充一個(gè)常見(jiàn)誤用只共享 EGLDisplay卻不共享 EGLContext這種代碼在開(kāi)發(fā)機(jī)上偶爾能跑因?yàn)槟承?qū)動(dòng)廠商把資源表做成了全局的但壓測(cè)和真機(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 只共享對(duì)象不共享 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í)會(huì)出現(xiàn)半幀或內(nèi)容撕裂。如果追求穩(wěn)妥最直接的做法是在eglSwapBuffers后插入 GPU 等待EGL14.eglSwapBuffers(mDisplay, mSurface); // 等待 GPU 完成所有繪制指令確保 ImageReader 能拿到已完成的幀 GLES30.glFinish();glFinish會(huì)讓 CPU 阻塞直到 buffer 可復(fù)用。對(duì)于 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簡(jiǎn)單不易錯(cuò)。4.3 像素格式與 Size 對(duì)齊ImageReader 不是隨便創(chuàng)建的ImageReader 的構(gòu)造參數(shù)pixelFormat必須與 EGLConfig 的 RGBA 位數(shù)一致否則畫面顏色會(huì)偏移或者完全失真。RGB_565、RGBA_8888、YUV_420_888 在 BufferQueue 里是不同格式EGL 無(wú)法對(duì)一個(gè) YUV 格式的 Surface 直接執(zhí)行 RGBA 的渲染操作。標(biāo)題鎖定的場(chǎng)景是 OpenGL ES 3.0 輸出所以 ImageReader 通常這樣創(chuàng)建mImageReader ImageReader.newInstance(width, height, PixelFormat.RGBA_8888, 2);注意最后那個(gè)maxImages參數(shù)。如果設(shè)成 1渲染頻率高時(shí)消費(fèi)者來(lái)不及 closeImageReader 會(huì)停止向 BufferQueue 請(qǐng)求新緩沖eglSwapBuffers會(huì)卡死設(shè)成 4 又會(huì)成倍占用內(nèi)存。2 是絕大多數(shù)抽幀和編碼場(chǎng)景下的默認(rèn)值。寬度和高度也需要對(duì)齊。給 ImageReader 傳奇數(shù)尺寸部分設(shè)備在eglCreateWindowSurface階段就失敗部分在ImageReader.getPlanes()階段因?yàn)?stride 和 width 不一致返回錯(cuò)誤的 Buffer 布局。常規(guī)做法是先對(duì)尺寸做對(duì)齊再創(chuàng)建int alignedWidth (width 15) / 16 * 16; int alignedHeight (height 15) / 16 * 16;紋理渲染到對(duì)齊后的 Surface 上如果 UVC 相機(jī)原始尺寸是 640x480對(duì)齊后依然是這兩個(gè)數(shù)字因?yàn)?16 的倍數(shù)對(duì)齊不會(huì)改變這兩個(gè)值。5. 接入 MediaCodec 編碼器與 30fps 幀率控制一個(gè)可收尾的技巧渲染到 ImageReader 的最終目的大多離不開(kāi)編碼。一個(gè)更高效的做法是讓 OpenGL ES 3.0 直接繪制到 MediaCodec 編碼器的輸入 Surface省掉 ImageReader 這個(gè)中間層。但有時(shí)業(yè)務(wù)需要同時(shí)保留 CPU 讀幀能力那就必須雙 Surface 并行。5.1 如果你要編碼別讓 ImageReader 成為中間跳板常見(jiàn)錯(cuò)誤寫法是先渲染到 ImageReader再在onImageAvailable里把Image的 buffer 拷貝出來(lái)通過(guò)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)前是否處于檢測(cè)階段返回對(duì)應(yīng) EGLSurface。這樣編碼鏈路的每一幀都是 GPU 直接寫入不經(jīng)過(guò) CPUImageReader 路徑只在真正需要抽幀的瞬間才切換過(guò)去。幀率控制可以用Choreographer在 VSYNC 信號(hào)上回調(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 是否真的在刷新接入完成后如果無(wú)法確定 ImageReader 是否收到幀可以用 adb 查看 SurfaceFlinger 的圖層狀態(tài)。先列出所有 Surface 名稱找到 ImageReader 對(duì)應(yīng)的項(xiàng)adb shell dumpsys SurfaceFlinger --list對(duì)比渲染前后同一 Surface 的z-order或visible region變化可以確認(rèn)是否提交了緩沖。但要注意一點(diǎn)ImageReader 表面在eglSwapBuffers后不會(huì)永遠(yuǎn)可見(jiàn)如果消費(fèi)者沒(méi)有及時(shí) close 圖像Surface 圖層可能被 SurfaceFlinger 判定為無(wú)內(nèi)容而在--list中消失。遇到這種情況優(yōu)先檢查onImageAvailable是否執(zhí)行以及Image.close()是否及時(shí)調(diào)用。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
热久久999| 丁香五月激情啪啪啪啪| 五月天激情小说网| 天天操,天天插| 亚洲无码AV片| 日本精品人妻无码77777| 这里只有精品网站| 五月天久久www| 天天综合久久| 99ri6在线视频| 亚洲精品视频在线播放| 天天干夜夜想| 色婷婷综合网站| 婷婷丁香社区网| 丁香六月av| 亚洲视频在线观看| 五月丁香色| 久久婷婷五月天激情| 色三级色三级| 日本WWW九九九| 俺也去五月婷婷丁| 国产熟妇的荡欲午夜视频| 开心婷婷五月| 九九这里都是精品| 久久黄色免费视频| 国产乱码久久| 99re思思| 第四色色六月色综合| 婷婷久久图片| 成人短视频免费| 五月丁香影视| 开心激情综合| 激情五月婷婷| 欧美在线干| 97视频91| 97视频91| 色情综合| 天天色综网| 狠狠综合网| 另类小说五月天综合网| 伊人婷婷激情| 97干婷婷五月天| 九九美女视频| 99热在线观看99| 丁香五月-激情综合| 五月丁香无码| 五月婷亚洲精品AV天堂| 99色综合| 国外亚洲成AV人片在线观看| 无码人妻少妇色欲AV一区二区| 99热免| 激情综合五月| 五月婷婷久久综合| 色综合色色| 成人短视频在线观看| 五月天婷婷综合| 操操操AV| 久碰婷婷视频| 婷婷99狠狠躁天天| 欧美肉大捧一进一出免费视频| 日韩成人综合网| 色5月婷婷| 五月丁香色色| 久久久999精品| 伊人婷婷大香蕉| 夜夜操狠狠操| 99热这里只有精品中文字幕| 99国产精品白浆在线观看免费| 日本狠狠干| 五月婷婷六月丁香综合在线| 99精品偷自拍| 色五月婷婷丁香凹凸| 午夜少妇在线观看视频| 99视频热99| 综合久久婷婷99| 丁香综合| 国外亚洲成AV人片在线观看| 香蕉99网| 狠狠色丁香久久婷婷综合五月| 美国不卡视频| 久久92| 久久久WWW| 日日干五月天婷婷| 99爱在线视频观看| www.久久久久| 9九九久久精品无码专区| 五月天丁香久久综合 | 狠狠色噜噜狠狠狠狠综合| 色婷婷久久综合久色综| 99热精品在线播放观看| 色五月视频无码播放| 丁香五月激情性色郤| 97涩涩丁香五月天| AV色婷婷| 99人妻碰碰久久久禁片| 97色女人在线| 五月婷婷丁香啪啪| 丁香五月电影| 67194国产| 在线看的免费网站| 色综合中文色综合网| 97人妻碰碰中文无码久热丝袜| 五月开心婷婷极品激情| 四虎婷婷五月天| 亚洲成人va| 性生活久久朋友人妻| 思思热视频在线| 五月丁香91| 成人片在线播放| 欧美性生交XXXXX无码小说| AV网在线观看| 国产成人av在线| 五月夜丁香| 五月激情婷婷丁香天堂| 亚洲欧洲中文日韩久久AV乱码| 日韩有码一区| 天天成人综合| 91狠狠综合久久| 风流少妇A片一区二区蜜桃| 中文不卡av| 五月丁香婷婷欧美色图视频五月丁香777电影 | 婷婷综合影院| 99热在线观看免费| 国产亚洲色婷婷久久99精品91| 欧美一级a| 大香人妻| 欧美综合激情五月| 超碰在线人妻| 亚洲天堂99| A色色| 狠狠狠狠狠狠狠狠| 波多野结衣AV无码Porn| 激情综合亚洲色婷婷五月| enecarbon-materials.comWu染请涟系Bao护@wip1688 | 风流少妇A片一区二区蜜桃| 国产第99页| 天天人人综合| 99热精品在线播放| WWW免费视频碰碰碰碰| oVV4WIB3vFi8D| 久99久在线观看| 熟妇人妻中文字幕无码老熟妇| www.99热这里精品 | 婷婷五月天视| 五月天.com| 亚洲精品久久久无码| 大香蕉五月天婷婷丁香91| 婷婷色日本| 淑女丝袜bi操逼123| 国产亚洲99久久精品| 亚洲无码成人网| 五月天婷婷黄色视频| www,婷婷五月天,com| 九九熱最新視頻| 五月婷视频| 日韩AV免费电影在线播放| 久热九九| 综合五月婷婷| 精品99这里有| 日韩aaaaa| 99资源在线| 日日射天天射| 色无婷婷| 色情一区二区播放| 亚洲欧洲美女在线观| 99热思思在线观看| 99热久久这里只有精品| 色播丁香五月婷婷操:屄| 99色免费观看全部| www.久久爱.com| 五月花激情| 日韩野外 无套| 色五月激情基地| 成人精品视频99在线观看免费| 欧美日韩91| 成人婷99最新| 亚洲色色色色色| 9超碰在线| 欧美毛片www| 嫩草AV久久伊人妇女超级A | 狠狠色狠狠| 超色欲天天| 五月成人网站| 色综久久久| 五月天婷婷乱| 色99www.| 欧美在线97| 九九热re99re6在线精品| 日本色爽| 欧美黑人大吊| 久久人妻少妇嫩草AV| 永久99免费视频网站| 91色久| 婷婷91| 婷婷丁香人妻天天爽| 丁香五月天无码AV| 中国无码av| 激情五月天免费视频| 五月天色小说| 天天爽夜夜操| 美女激情综合| 噼里啪啦完整版中文在线观看 | 影院久久久| 五月六月丁香激情| 91操熟女| 色综合综合综合| 99这里只有精彩视频| 任你干线上免费视频有3吗| 五月停停激情网| 激情婷| 射久久丁香五月| 色综合com| 九九色综合| 日日日影院| www.色色com| www.婷婷,com| 婷婷六月丁香色| 美女被操一区二区| 成人av免费观看| 中文字幕av久久爽一区| 五月天久久色| 色丁香婷婷| 狠狠狠婷婷五月综合| 久久R激情| 色五月欧美| 欧美人人操| 激情又色又爽又黄的A片| 99热这里只有免费| 亚洲久热| 《丁香激情综合久久伊人久久》影视在线观看 -高清预告手机免费播放 -三妹影院 | 亚洲视频二区| 九色视频九色九色91jiuseshipin| 99热这里精品| 五月六月丁香婷婷在线观看| 久久婷婷人人| 爆乳熟妇一区二区三区四区| 亚洲人妻AV| 五月丁香好婷婷A片网| 亚洲一级AV在线免费播放| av九九| 成年人99热| 九艹在线| 日本一区二区三区精品视频| 精品国产AV色一区二区深夜久久| 久久五月天网| 99re这里只有精品在线观看| 狠狠色婷婷在线| 欧美日韩国产成人在线| 五月综合激情| 99精品久久久久久久婷婷久久| 91九色 婷婷| 五月婷婷色在线| 97干综合网| 婷婷五月激情丁香激情| 色色色色综合网| 婷婷丁香18| 色色激情五月天| 《》【无码】想被搞到爽AV应募而来的超M素人 西纯子 10musume-011723-01 | 综激情网| 久久精品日| 亚洲五月天激情| 影音先锋 婷婷| 99精品在线| 东北熟女高潮99综合99| 中文字幕中文有码在线| 婷婷五月天丁香花| 六月婷婷中文字幕| 亚洲av成人在线| 2025年最新亚洲在线欧美| 五月婷婷六月丁香免费| 欧美va视频| 国产伊人大香蕉| 国产XXXX搡XXXXX搡麻豆| 丁香六月婷婷开心| 国产午夜精品一区二区| 色色色99| 在线天堂9| 丁香五月天网友自拍啪啪啪视频| 少妇口诉沐足视频播放器网址| 精品婷婷| 五月丁香色情| 色情激情五月婷婷| 五月色亭丁香| 天天肏天天舔AV| 成人做爰A片免费看视频 | 五月婷婷丁香| 五月丁香婷婷综合| 五月激情站| 色伊人婷婷| 五月激情在线| 99资源在线视频| 婷婷五月天美女21p| 国精产品一区二区三区| 五月婷婷之美女图片| 六月丁香五月激情网| eeuus五月婷| 99re免费精品视频| 激情五月,色五月| 久久精品婷婷| 激情综合网络插| j久久性爱视频| 久久中文人妻系列| 婷婷五月欧美综合| 日本激情五月| 久久五月天婷婷| 丁香五月成人社区| 久99久热| 六月丁香五月婷婷| 久久精品一区二区三区四区| 日本WwW色偷偷丁香花久久久京东热| 色五月在线播放| 日韩成人av在线| 中文字幕黄色片| 色婷婷电影网| 无遮挡国产高潮视频免费观看| 伊人色综合网| 丁香九月激情在线视频| 婷婷色中文| 色娸娸综合网| 婷婷综合激情五月中文字幕| 五月成人网天天| 五月婷婷六月婷| 六月丁香成人网| 五月婷婷激情综合av| 丁香婷婷色色| 国产精品大香蕉| 国外亚洲成AV人片在线观看| 九色1区视频在线| www.久久9| PORNY九色9l自拍视频成人| 婷婷五月深情丁香深爱日韩| 五月丁香婷婷激情久久| 五月丁香婷婷综合网| 综合狠狠干| 色五月网址| 成AV人片一区二区三区久久| 夫妻超碰在线| 天天做天天爱天天搞| 五月婷婷六月丁香综合视频在线| 天天爽夜夜爽天天爽夜夜爽| 久9久9久9久9久9久9| 色情综合网| 精品国产AV色一区二区深夜久久 | 再綫Av免费視品| 五月婷婷久久内射| 日日操夜夜爽| 免费观看18视频网站| 男人大jjc女人免费视频| 色月丁| 97福利视频| www激情网| 婷婷五月天美女21p| 大香网伊人久久综合| 国外亚洲成AV人片在线观看| 色婷婷瘦婷婷日韩| 桃色激情婷婷伊人网| 亚美欧色影院| 国产免费一区二区在线A片视频| 97色干| 日日操夜夜操中国无码| 就要爱综合| 人人人舔人人人操人人人摸人人人97| 丁香色五月天| 婷婷五月六月| 人人摸人人射| 亚洲天堂色色| 九月久久婷婷| 丁香五月 六月婷婷首页| 丁香色成人| 婷婷的五月天另类视频| 激情五月综合网| 玖玖资源站中文| 9色在线| 超碰人人99| 丁香六月婷婷综合麻豆| 狠狠插狠狠插| 中文字幕av在线播放| www好屌操| 狠狠色噜噜狠狠狠狠综合| 91丁香综合| 激情五月天第四色| 我要射综合| 思思热精品在线| 在线99色| 久久婷婷五月综合色和| 国产精品第一国产精品| 综合久久婷婷五月丁香| 久婷婷婷| 99九九中文字幕视频| 激情丁香五月激情婷婷| www.色婷婷.com| 亚洲天99| 五月天丁香婷婷社区| 成人五月丁香花| 五月天激情播播网| 99操逼| 亚洲AVDVD| 激情五月婷婷综合色播小说| 中文字幕日产A片在线看| 婷婷五月激情图片| 国产成人AV在线| 狠色色狠网| 全部老头和老太XXXXX| 色综合婷婷| 91青娱乐青青草| 九九精品碰| 另类小说五月天综合网| 一本色综合色| 思思热在线视频99| 日本婷婷激情四射中文字幕在线观看| 26uuu激情五月天| 色噜噜综合网| 日本天天综合| 国产AV一区二区三区最新精品| 亚洲综合在线视频| 大香蕉五月天婷婷| 电影爱拉战争免费观看| 999激情视频| 97爱综合| 美欧日韩国产成人在战| 日本三级日本三级三级人妇四虎| 五月丁香久久网| 九九色大香蕉| 9l视频自拍9l九色成人| 91久久婷婷| 俺去也五月| 六月丁香啪啪| 天天弄天天操| 久久婷婷婷婷伊人| www.91AV.com| 色色色在线观看| 九九99男女视频在线观看| 婷婷激情视频欧美视频自拍视频欧美剧 | 99久久国产宗和精品1上映| 久久停停超碰| 91Chinese在线| 亚洲中文无码成人| 色吧网91| www.狠狠操| 91久久国产自产拍夜夜91久久精品文字>91麻豆精品国产 | 色婷婷综合电影| 月婷婷婷婷五月| 久久99综合网| 久久婷婷五月天| 天天在线久久综合 | 婷婷 伊人 久久| 久婷婷婷| 亚洲一色色色色色色色色| 嫩草AV久久伊人妇女超级A| 欧美婷婷五月天综合| WWW色色色COM| 大香蕉综合在线| 激情综合五月激情XXXX| 久久成人亚洲欧美电影| www..999热久| 天天爽日日搞| 欧美啪啪网| 色碰碰视频| aaaaaa片| 97操碰免费视频| 天堂综合久久| 婷婷五月 丁香六月| 久久久高清| 丁香婷婷性久久| 五月丁香婷婷综合| www.99色在线| 五月丁香婷婷基地| 九九视频免费| 丁香五月激情啪啪啪| 色五月婷婷操逼| 亚洲另类婷婷五月丁香在线播放| 九九色插| 亚洲无码99| 国精产品一区二区三区| 日韩AV片| 韩国不卡AC视频| 人人操人人干AV| 五丁香激情综合| 高清国产一级婬片a免费| 色色五月天激情| 五月丁香久久久| 色婷婷a| 成 人片 黄 色 大 片| 五月婷亚洲精品| www.婷婷| 婷婷终合色图| 色无婷婷| 日日噜噜夜夜狠狠久久丁香五月| 思思re视频在线| 狠狠爱婷婷| 亚洲精品V天堂中文字幕| 人人爱人人草| 夜夜人妻五月天| 婷婷之玖玖| 99亚洲精品| 九九热在线视频| 国产精品噜噜在线视频| 超碰人人操人人干| 996热re视频在线观看视频| 这里只有精品视频免费在线观看| 五月丁香六月玩女人| 99热这是里只有精品| 久久久久久久8| 九九一区| 色五月五月婷婷| 丁香九月婷婷色| 五月丁香激情片| 99爱爱网| 99啪视频在线观看| 性欧美大战久久久久久久83| 久久99网| 日韩黄黄| 婷婷婷婷婷婷婷五月丁香| WWW、日本色丁香co m| www.婷婷.com| 97人人看一| #NAME?| 少妇人妻丰满做爰XXX| 四色永久成人网站| 九九精品热播| 99热这里只有精品55| www狠狠| 婷婷区日本| 97人人干| 91日韩在线| 丁香五月综合激情啪啪| 色播五月综合网| 大香伊人婷婷影院| 成人 AV播放| 婷婷五月综合性爱| 亚洲AV日韩在线观看| 天天综合网站| 婷婷丁香人妻天天爽| 婷婷99中文字幕| 色99色| 成人视频婷婷| 激情五月天激情小说| 五月宗合激情网| 精品婷婷五月天| 五月丁香色色综合| 国产精品五月丁香| 五月婷婷co.m| 色婷婷色五月综合| www色综合| 婷婷激情五月天视频在线| 天天日夜夜操五月| 日日夜夜小色哥| 久久这里只有欧美| 人人射人人高潮| 日本色视| www,色婷婷| 亚洲综合五月天婷婷丁香| 丁香五月色五月| AV色婷婷| 强伦轩人妻一区二区电影| 欧美色五月| 五月天精品视频| www.五月天婷婷| 色优久久| 九热网站| 99日精品视频| 婷婷五月丁香综合亚洲 | 17.c黄色| 欧美成人精品A片免费一区99| 神马欧美精| 九九操操| 亚洲无AV在线中文字幕| www...com黄在线观看| 91 久热| 操日本三片99| 久久永久网址| 亚洲五月丁香综合网| 六月婷婷无码观看| 丁香六月伊人| 91人人爽久久涩噜噜噜| 婷婷激情在线| 免费看欧美成人A片无码| 丁香五月天AV在线 | 婷婷五月俺要去| 丁香六月无码| 色综合久久88色综合天天99| 婷婷色五月激情| 无码一区精品一区视频| 9久久久| www.五月婷婷.com| 五月丁香少妇A| 婷婷日日夜夜| 丁香五月婷婷六月丁香| h在线看免费版在线看| 日韩黄在免| 久久久精品婷婷五月天| 色婷婷五月在线| 五月婷婷六月丁| 全国最新疫情| 手机旧版看人妻1025| 九九综合| 黄色网址五月婷婷| 丁香激情久久| 色五月婷婷天天操夜夜操| 亚洲熟妇无码乱子AV电影| www.日日夜夜.com| 九九综合网| 日本色色图| 狠狠撸激情综合丁香五月天俺来啦| 97干视频在线| 激情五月天天| 婷婷伊人綜合中文字幕| 亚洲色情网站| 激情五月婷| a在线免费v| 天天肏天天插| 色五月天丁香| 亚洲AV无码成人电影| 97操操| 狠狠草狠狠草| 国产午夜伦鲁鲁| 人人操插| 色婷婷亚洲在线| 久久女婷| 97人人看一| 五月综合777| 五月婷婷色色色| 99精彩视频在线观看| 五月综合视频在线| 99精品在线观看视频| 99精彩视频网站在线| 狼人久草| 久99久热| 免费操超碰| 六月丁香婷婷开心综合基地| 久久总和99| 五月刺激丁香月综合| 少妇丁香婷婷 | www.com亚洲网站在线免费| 秋霞电影理论| 操一区| 4399在线日本A片| 开心激情网在线| 一本色道久久88综合日韩精品| 午夜天堂啪啪| 婷婷五月综合社区| 国产操肏网站| 另类激情五月| 精国产品一区二区三区A片| 色婷婷久久久| 五月婷婷激情性爱| 超碰国产av| 狠狠做深爱婷婷久久综合一区| 国产日产亚洲系列最新| 这里只有精品视频在线观看免费| 五月婷婷色色| 亚洲中文字幕av| 免费国产视频| 99视频在线播放大全| 99热激情| 青青久久五月天丁香婷婷| 丁香六月婷婷高清| 国产午夜精品一区二区三区嫩草| av在线超清中文| 丁香六月婷| 思思热天天看| 色五月亚洲| 狠狠搞五月天| 色吧五月| 婷婷爱综合| 色色色热| 精品综合久久久久久五月天| 99re6在线视频精品免费| 天天 青草 制服丝袜 在线 | 五月婷婷在线播放| CAoub青青超碰| 久久精品人妻| 亚洲性爱电影| 啪啪啪综合网| 婷婷五月蜜桃成人桃色丁香| 激情五月婷| 激情五月天综合图片小说网站| 激情五月婷婷| 五月丁香色婷婷基地| 亚洲狠狠爱婷婷| site:esunnet.com| 最近免费中文字幕大全高清大全1| 丁香狠狠| 99re资源在线视频导航| 天天干天天干天天操| 色五月婷婷激情基地| 国产午夜一区二区三区| 在线不卡中文字幕| 五月婷在线观看| 性色欲情 网站| 粉嫩AV久久一区二区三区| 亚洲久久婷婷| 天天色综| 人人爽天天爽| 天天综合天天玩夜夜玩天天玩夜夜玩| 国产精品成av人在线视午夜片| 久久一热| 综合色图区| 内射爽无广熟女亚洲| 五月天激情小说婷婷基地| 丁香激情五月天| 婷婷五月色综合| 人妻久久久久久久久妻久久久久久久久| www色色色com| 久久视频这里99| 中文字幕精品在线观看| 九九色逼| 这里只有精品久| 五月婷婷导航| 色婷婷影院| 五月天激情亚洲| 超碰激情网| 伊人在线视频| 成人网在线视频| 五月天激情在线视频| 91伦| 狠狠色色| 97超级碰碰碰久久久| 日韩成人无码人妻| 欧洲婷婷五月天| 99在线综合视频| 玖玖在线视频| 天天插天天操| 五月天天丁香婷婷在线中| 97操碰在线97| 九九热精品| 五月丁香在线看| 久久五月婷婷电影| 日本在线观看91| 激情四射五月天| 色色性爱视频| 五月丁香综合久久| 婷婷九月亚洲| 黄色片avv| 99精品热| 久久丁香五月天| 午夜丁香六月婷| 日韩av在线免费观看| 超碰免费成人网站| 91婷婷丁香| 五月婷婷在线综合| 99视频地址| 97人人操人人| 色综合久久8| 日本熟妇乱妇熟色A片蜜桃| 99毛片| 99日韩网站| 丁香婷婷久久 | 婷婷丁香六月天| 少妇综合网| tingtingzonghewang| 大香蕉久艹| 久久99三级在线视频| 影音先锋美国A| 五月天婷婷在线观看| 丁香五月Av| 蜜臀九九九九| 人妻性爱| 丁香五月天导航| 69久久99精品久久久久| 五月激情综合婷婷| 色五月丁香婷婷| 免费97碰碰| 激情综合丁香五月| 丁香五月天综合网| 国产亚洲精品久久久久久久久动漫 | 97操操| 亚洲成人综合在线| 激情综合色婷婷啪啪六月天| 婷婷色丁香六月| 99热99免费| 九九成人| 久热一本| 五月婷婷七月丁香| 久久久久五月丁香| 国产人妻777人伦精品HD| 成人av免费观看| 99色五月| 五月狠狠| 人人操人人干AV| 色综合综合色| 日本在线噜噜| 色五月婷婷丁香婷婷| 亚色网站小视频| tingtingjiqingwuyue| 色99在线| 亚洲久热| 99热只有精品在线播放| 蜜臀丁香黄色婷婷五月天| 亚洲国产成人综合| 99在线观看视频| 无码人妻激情| 99久久亚洲精品视频| 99久久久免费| 久久免费精品小视频| 91久久久久久久久| 五月天激情综合网俺也去| 超碰亚洲天堂| 久久五月天色婷婷| 色情·com| 综合xx网| www.minyis.com【JT】币址百万U预算可预付QQ2101460746 | 永久免费一区二区三区| 秋霞AV淫| 婷婷五月天av| 99无码| 麻豆AV一区二区三区| 拍真实国产伦偷精品| 欧美精品中文字幕亚洲专区| 狠狠色噜噜狠| 婷婷丁香黄色| 色婷婷狠狠久久YY| 婷婷五月天综合网| 五月婷婷激情综合在线| 狠狠干五月丁香| 国产色五月婷婷| 丁香五月激情在线| 九九re精品视频在线观看| 亚洲AV成人片无码网站| 丁香激情网| 日本乱子人伦在线视频| 97成人丁香| 天天干天天操天天射| 日本超碰在线| 激情WWW| 久久久这里有精品| 噜噜干日本| WWW久久久| 国产精自产拍久久久久久蜜| 久久丁香网| 激情五月九九九| 激情综合五| 日韩狠狠色婷婷| 五月婷婷啪啪啪啪| 婷婷久久五月天丁香| 五月天另类激情在线| 草了bav视频在线观看| 中文字幕成人日韩| 日本久热| 国产热精品| 色狠狠色狠狠| 91综合色| 欧美私人家庭影院| 五月婷狠狠| 大香蕉伊人99| 欧洲亚洲欧洲99久久| 色婷婷激情| 亚洲无码99| 99啪在线| 青草网在线观看| 丁香五月婷在线| 91色色色| 久婷婷久草| 97香蕉碰碰人妻国产欧美| 天天开心AV色综合婷婷五月天| 久热免费| 少妇高潮呻吟A片免费看软件 | 四射综合网| 丁香五月婷婷婷婷欧美综合| AV五月婷婷露脸| 色色射| www.9色色色| 99er这里只有精品视频| 天天综合精品| H亚洲| 免费AV黄在线播放| 亚洲区视频| 色色五月综合| 六月丁香激情婷婷| 五月婷视频| 大香蕉精品视频| 九九这里只有精品| 国产特黄色精品一区二区三区精品无广告| 人妻狠狠操| 丁香综合婷婷五月天| 少妇真实被内射视频三四区| 国产五月天婷婷| 九九热精品视频九九| 天天爽天天干| www.婷婷,com| 丁香五月婷婷色| 亚洲va综合va国产va中文| 五月婷婷福利| 99热精品在线播放| 色99婷婷五月天| 五月开心激情网| 天天干天天做| 欧美人久久| 激情婷婷啪啪| 九九一区| 婷婷,五月天,丁香,第一| 五月婷婷成人| 婷婷丁香综合色AV| 狠狠插日日干撸| 艹B高清无码| 综合激情综合啪啪| 国产欧美熟妇另类久久久 | 丁香五月性爱| 五月婷精品| 激情久久肏屄视频| 色情五月天丁香社区| 婷婷综合五月天| 9超碰在线| 99精品综合视频| 99热全是精品| 婷婷激情综合| www.99精品视频| 2020日日干| 亚洲不卡欧洲| 男人天堂99| 激情五月天视频| www.minyis.com【JT】实力收量可预付QQ2101460746 | 日韩成人五月天| 亚洲国产精品SUV| 色天天久婷婷| 亚洲色图欧美色图日本视频| 日本va视频| 丁香婷婷浪潮AV久久综合| 欧美日韩aaaa| 丁香五月婷婷综合91| 亚洲综合色网| 天堂资源欧日浪女在线播放| 大香蕉啪啪| 婷婷五月天在线看| 婷婷色综合| 亚洲 在线 性爱| 嫩草免费视频| www天天色天天射| 偷拍91九色| 丁香五月婷婷色| 亚洲avjiujiur91| 爆乳熟妇一区二区三区四区| www,婷婷| 综合久久高清| 五月激情六月丁香| 色婷婷丁香五月丁香| 成人免费超碰| 色日本综合| 欧美色色色| 人妻熟人中文字幕一区二区| 91久久婷婷人人澡草| 欧美大道不卡| 99热这里有精品| 五月综合激情综合久| 青青草网武则天| 婷婷九月激情| 狠狠色丁香99| www,99色| 九九热精品| 久久久五月激| 99re热在线视频观看| 色五月天电影| 色射婷婷五月天| 五月婷婷婷| 99热色精品| 国产成人99久久亚洲综合精品| 色婷婷www| 97操操| 综合色五月亭亭| 久久九九@| 激情六月五月婷婷综合网| 91在线人| 人妻无码精品一区| 五月开心激情网| 极品色丁香| 久久精品国产一区二区三区四区| 丁香激情五月少妇| 九九久久精品| 狠狠婷婷日韩| 九九99精品视频在线观看| 思思热热久久| aa久久| 综合六月久久| 九色视频91| 五月天激情视频五月天| 五月天激情四射| 九九色网| 婷婷久久网| 天天爱综合网| 欧美久久五月婷婷| 狼友超碰| 久久九九思思| 婷色五月天| 五月激情影院| 五月婷婷久久网| 996热| 青青色com久久| 婷婷五月天av| 97人人搞| 激情五月天激情综合网| 色五月xxx| 久一网站| 色五月天婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷 | 激情婷婷丁香五月天| 永久地址 色| 久久永久网址| 丁香五月开心亚洲| 97色 五月天丁香| 婷婷久久色| 久久精品系列| 女人天堂 AV| 色婷婷成人在线| 99视频精品| 99.N在线视频| 99精彩视频在线观看| 少妇大叫太大太粗太爽了A片| 五月丁香好婷婷A片网| 久 久9 9 热 视 频| 激情五月天之六月婷婷| 色色色综合网| 婷婷色色丁香五月天| 丁香婷婷综合喷| 久久精品无码一区| 激情五月天综合网| 色色婷婷五月天| 色在线99| 性色五月天| 色婷婷久久综合丁香五月| 色播五月丁香婷婷| 五月丁香激情片| 超碰亚洲天堂| 人人妻人人澡| 久久婷婷丁香视频网| 五月婷婷黄网站大全| 亚洲第一成人无码A片| 久久亚洲婷婷| 丁香五月人妻| 色激情五月| 五夜婷婷| 五月天啪啪视频| 欧美久久网| 超碰人人99| 久久思思热| 亚洲色五月婷婷| 丁香狠狠色婷婷久久无码视频| 狠狠狠狠操| 婷婷五月天成人影片| 国产精品色色色色| 五月婷婷综合色拍| 内射丰满人妻| 五月天五月婷五月激情网| 婷婷丁香六月激情综合| 黄涩毛片| 婷婷五月天手机版视频| 玖玖九九99| 综合网五月天123| 国产色五月| 色丁香影院| 丁香五月电影| 成年人丁香五月| 夜夜干天天操| 91碰超| 色婷婷丁香| XX色综合| 日本精品久久久久中文字幕| 国产精品99久久久久久久女警| 夜精品无码A片一区二区蜜桃| 蜜桃成语时李时珍 免费| 亚洲妇女熟BBW| 这里只有精品96| 五月丁香狠狠爱婷婷综合| 欧美人人草草| 五月丁香综合中文| 九色91国产| 婷婷丁香五月天综合AV| 99久久99热| 婷婷中文字幕版| 91久久婷婷人人澡草| 夜夜谢天天干| 五月丁香久久网| 99色| 婷婷五月天天| 99免费青青蜜臀| 中文精品在| 深爱五月激情网| 99成人无码| 五月天天视频| 97久久视频| 蜜臀AV在线观看| 丁香99| 91碰超| 第2色五月婷| www.六月丁香看AV| 五月丁香综合中文| 亚洲色频| 婷婷五月综合性爱| 日熟女| 五月花综合| 婷婷涩五月天综合| 操逼巨乳91| 五月丁香影院| 丁香五月玖玖| 影音先锋一区| 就爱干 在线| 人人操av| 丁香五月久久| 国产黄色大片| 久久色区| 激情综合亚洲色婷婷五月| 亚洲第一综合| 午夜丁香| 操逼五月天| 天天艹天天综合网| 狠狠色丁香久久婷婷综合五月| 无码髙清| 国产99久久久国产精品免费看| 无语停婷丁香网| 第四色激情网| 婷婷五月天激情综合网| 亚洲天堂大香蕉| 成人午夜视频精品一区| Caop在线| 亚洲熟妇AV综合网五月丁香伊人| 久机视频这只有精品| 五月天婷婷色综合| 日本97在线看片| 日日骑夜夜撸| 成人丁香婷婷| 99热这里只| 秋霞午夜理论| 婷婷丁香18| 婷婷五月天基地| 婷婷五月丁香A∨| 欧美综合婷婷欧美综| 五月天婷婷综合网| 亚洲第一成人无码A片| 欧美超级视频97| 丁香久久五月天视频在线观看| 91久久九久久九久久九久久九久久 | 麻豆科斗777| 九九热在线精品| 熟女人妻一区二区三区免费看| 五月丁香六月婷婷久久肏| 丁香五月深爱五月婷婷| 日本啪啪天堂| 超爽内射| 五月天婷婷色播| 久久激情综合| 人碰91| 五月丁香 啪啪啪| 夜夜爽天天干| 亚洲婷婷激情综合激情999精品| 五月婷婷伊人网| 9久精品| 91色干| 精品无码99| 天天插天天插| 91九色首页| 影音先锋天天日| 狠狠色中色| 97婷婷丁香五月天激情图片| 亚洲色五月| 99热在线资源| 丁香五月婷婷在线观看| 99婷婷精品推荐在线视频| 婷婷五月天成人导航| 五月激情小说| 婷婷性爱五月天丁香网| 日本熟妇人妻在线| 婷婷五月天社区| 久久免费9| 婷婷中文字幕| 99视频日韩| 色婷婷亚洲在线| 粉嫩AV久久一区二区三区| 久久九九视频网站| 久久草大香蕉| 一区视频网站| www.婷婷.com| 丁香激激情网| 超碰v| 色色色综合视频| 久久精品这里只有精品免费首页| 色碰干| 991国产精选视频在线播放下载| 婷婷干六月综合旧址| 婷婷五月色亚洲| 欧美成人在线观看| 激情五月婷婷色综合| www99热| 4399在线观看免费高清电视剧| 五月天狠狠| 五月丁香亚洲校园欧美| 丁香五月性| 色综合色色| 久热婷婷| 五月婷婷色色| 亚洲第一第二网站| wwwss在线观看| 五月天成人综合| 日日夜夜狠狠婷婷色| 深爱五月天| 99超在线| 蜜桃成语时李时珍 免费| 开心深爱五月天| 性无码专区无码| 26uuu亚洲色| 久久精品无码一区| 国产乱妇乱子伦| 91人人人人人人人| 九九99久久| 草榴视频网| 大香蕉婷婷五月天| 99成人网一区| 99操99| 亚洲 在线 性爱| 天天日色情| 天天操天天操天天操天天操天天操天天操天天操天天操天天操 | 大战熟女丰满人妻AV| 天堂五月婷婷| 久久99大| 思思久久99| 综合AV在线| 日韩婷婷| 婷婷五月天日日日干干干| 99视频综合网| 婷婷在线视频| 亚洲综合激情五月久久| 婷婷五月天激情小说| 99色在线观看| 六月婷婷最新网址| 色五月天堂| 亚洲激情丁香五月天色| 日韩AV免费电影在线播放| 五月婷婷说| 91色涩| 99热这里只有精品99| 色六月天| 99热在线观看99| 东京热免费视频| 色婷婷婷综合五月天| 九热av| 99在线视频精品| 亚洲俩性性爱图片久久第六页| 亚洲午夜成人av电影网| 欧美这里只有精品| 久久九九99| 婷婷无五月无码视频| 深爱五月激情五月| 99热久| 碰碰人人人| 五月婷婷久久大香蕉| 五月天第四色开心色播| 91人人爱| 99热青青草| 激情五月天之五月婷婷| 五月婷婷亚洲色图| 亚洲这里只有精品| 五月天色婷婷基地| 色99热| 亚洲V国产V欧美V久久久久久| 五月丁香婷婷五月| 婷婷五月综合婷婷| 国产女人十八水真多1| www.激情| 丁香五月激情视频| 99ri在线| 猫咪伊人AV| 91婷婷丁香| 伊人狠狠操| 综合色色网| av操B网站| 99久久婷婷| 亚洲另类噜噜| 色七色九九| 67194中文字幕|