99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

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
返回資訊列表
久热一区| 99热在线精品播放| 狼人狠狠操| 婷婷情色五月天| 91超级碰| 九九热10| 五月天激情国产综合婷婷婷| 日日噜狠狠色综合久久| 亚洲精品色色| 91碰超| 欧美电影在线播放| 色色色干| 午夜激情综合| 9热精品| 狠狠va| www99久久| 91无码一区人妻A片蜜| 欧美激情VA永久在线播放| 色婷婷电影网| 伊人激情综合网| 深夜婷婷 丁香| 丁香色综合| 五月婷久久在线| 日本人妻A片成人免费看片| 大香蕉婷婷婷| 十二区无码| 狠狠CAO日日穞夜夜穞AV| 五月婷婷综合激情网| 激情小说婷婷五月| 色久天| 五五月五月| 日本三级日本三级三级人妇四虎| 99re热在线观看| www.色色色com| 色色色色网| 久久综合人妻| 97色色视频| 久久久99精品| 久久综合丁香激情五月| 久久久人妻门| 99热这里只有精品18| 丁香激惜男女| 五月丁香久久呀| 久久丝丝热| 另类 在线| 亚洲国产网址| 五月丁香自拍| 深爱五月婷婷开心中文字幕| 狠狠色官网| 26UUU| 色婷五月| 秋霞三级影视资源| 婷婷色丁香五月| 午夜丁香六月婷| 777丁香六月青青草婷婷综合久月| 66精品国产成人| 亚洲激情婷婷| 激情五月综合网| 九九精品在线视频观看| 丁香五月综合久久八| www.五月婷婷久久.com| 九九爱这里只有精品| 26uuu四色| 少妇激情五月婷婷| 久99热| 五月丁香五月婷婷在线观看| 婷婷激情人妻| 天天插天天干| 91fuliwang| 色婷婷综合在线| 日本97在线看片| 草榴成人影片| 五月婷色| 热99AV网站| 99热这里只有精品86| 日本五月婷| www.久久爱.com| 99热这里都是精品| 国产在线网| 亚洲久久天堂| 色综合激情| 都市激情蜜桃婷婷五月天| 色色色色av777| 狠狠激情五月天| 五月婷视频| 色久九| 夜夜撸夜夜骑| 丁香六月婷婷社区| 久久久婷| 婷婷五月花西瓜| 婷婷五月天天天| 九九在线精点品| 少妇人妻丰满做爰XXX| 色综合色香蕉网| 色婷婷久久视屏| 色色色欧美| 涩涩五| 99精品大片| www99精品| 婷婷91视频| 伊人五月天久久| 色999五月色| 日本天天综合| 久久99婷婷| 天天射网站| 狠狠情色| 激情色情五月天| 五月丁香综合中文| 成人免费超碰| 天天干天天干天天干天天干天天干天天 | 久久资源综合| 亚洲五月天综合| 五月天成人在线播放| 99久re热视频精品98| 北条麻妃伊人| 婷婷色香六月综合激情| 思思热在线视频精品| 激情婷婷五月社区| 丁香五月天激情综合网| 夜夜穞天天穞狠狠穞AV美女按摩| 女婷久久| 97精品在线| 亚洲成人网址在线观看| 啪啪啪五月天| 久久伊人大香蕉| 四月婷婷五月丁香| www.狠狠| 九九色黄色| 如何安全看伊人婷婷| 婷婷五月天狠狠| 欧美日韩99| 情一色一乱一伦一91A| 日日日日做夜夜夜夜无码| 第五色婷婷| 丰满少妇猛烈A片免费看观看| 97碰碰视频在线观看| 欧美黄色韩日网| 国产免费一区二区三州老师F1……| 亚洲精品乱码久久久久久按摩观| 天天骑天天操| 亚洲中文丁香| 五月丁香久久| 黄色99网| 五月婷婷玖玖综合玖玖爱| 国产欧美日韩性爱| 99热啪啪| 六月伊人婷婷| 国产av一区二区三区| 色婷婷狠狠爱| 天天干夜夜想| 开心婷婷五月激情网小说 | 婷婷金品综合视频| 99免费成人网| 亚洲偷| 亚洲五月天伊人| 久久五月视频| 五月五丁香婷婷| 欧美人与性动交CCOO| 久9久成人精品视频| 日韩在线看AV| 性综合网| 亚洲婷婷在线播放十月| 日韩av手机在线观看| 五月天激情偷拍| 91久久婷婷| 五月噜噜噜色综合| 婷婷五月色综合香五月| 丁香五月婷婷影院| 久久五月视频| a性生活久久无| 五月丁香六月婷婷手机无线| 婷婷亚洲久久| 99热在这里只有精品| 大香蕉精品视频| 中文字幕在线日亚洲9| 综激情网| 超碰免费在线| 欧美一级操逼视频| 婷婷五月激情四月综合| 五月天社区婷婷| 深爱婷婷丁香五月激情| 亚洲第一黄网| 久cao香蕉影院| 五月天色婷婷激情| 五月天丁香六月综合| 中文字幕欧美日韩VA免费视频| 久久综合网免费视频| 无码少妇高潮喷水A片免费| 大香蕉院线| 丁香激情五月天| 丁香在线视频| 五月婷久久在线| 久久综合热17c| 91丁香五月| 久久大香蕉| 五月天六月天| 二级黄色毛片| 婷婷五月激情黄色| 99热网站| 99re在线免费视频| 激情五月天综合| 五月情综合| 婷婷五月丁香99| 九九综合| RenRenSe在线视频网站| 成人Av在线大片| 色色色999| 亚洲色情网站| 亚洲国产精品五月天| 五月天开心色色网| 亚洲无码色| 天天爽夜夜爽天天爽夜夜爽| 欧美五月丁香在线| 91碰碰视频| 蜜桃成语时李时珍 免费| 婷婷丁香五月色| 99色精品视频| 久久永久视频| 色五月欧美| 国产毛多水多女人A片| 亚洲精品永久久久久久| 天天开心AV色综合婷婷五月天| 婷婷综合av| 五月丁香综合激情| 综合五月婷婷| 天天色播| 亚洲午夜av| 亚洲99手机免费看视频| 久99热| 99精彩视频在线观看| 五月天激情网图片| 99久久99九九九99九他书对| 性色婷婷| 91九色熟女| 久久婷婷七月丁香| 五月丁香亚洲综合| 九九色色网| 激情五月色在线播放| 亚洲婷婷开心五月| 五月婷婷狠天天色综合| 五月婷成人网| 久久婷婷色丁香| 成人做爰A片免费看网站找不到了| 天天艹| 欧美色片中文字幕久久久久| 久久久99精品免费观看| 欧美性猛交XXXX乱大交极品| 无码日本精品XXXXXXXXX| 久久性视频| 五月天久久网站| 99re思思久久| 婷婷五月天激情小说| 激情丁香五月婷婷啪啪| www.激情五月天| 26uuu国产精品| 婷婷综合五月天激情| 99色在线观看| 天天爽日日搞| 丁香五月婷婷色| 欧美黑人巨大猛烈cuckold| anquye伊人| 五月久久五月激情| 2023天天日夜夜爽| 欧州色色| 亚韩在线视频| 色色色热| 久久综合五月情| 丁香激情综合| 71在线精品视频一区| 久久一操| 丁香五月香蕉| 5月丁香婷婷| 激情五月伊人婷婷| 色婷婷六月天在线| 91视频一起草| 午夜69成人做爰视频| 欧美成人精品A片免费一区99| 国外亚洲成AV人片在线观看| 日韩av网站在线观看| 综激情网| 五月天婷婷开心| 久久精品凹凸分类| 日韩综合久| 久久九九玖玖| 五月丁香激情综合六月涩涩爱| 色五月色综合| 婷婷五月电影| 天堂成人A片永久免费网站| 九九九九精品精| 草榴视频黄色网| 人妻五月天激情开心网| 99色综合网| 99热这里只有精品1998| 99自拍网| 性爱111111| 男人的天堂五月丁香| 99re热精品在线视频| 九九精品这里只有| 五月丁香在线| 粉嫩AV久久一区二区三区| 精品视频二级九九| 五月天色导航婷婷资源婷婷| 人人摸人人搞| 天天做天天爱| 超碰97久久| 五月婷婷偷| 九九热经典视频在线观看| 亚洲不卡| 午夜日日| 婷婷五月天激情亚洲小说| 思思热这里只有精品| 九九这里有精品| 五月做爱| 色婷婷综合五月| 五月婷婷激情五月| 国产内射婷婷| 久热这里这里有精品| 天天色色天天| www.丁香黄色五月天人与| 亚洲综合五月天婷婷| 丁香九月激情| 99色.com| 色婷婷久综合久久一本国产AV| 91精品久久久久久综合五月天| 久久AV无码精品人妻系列试探| 日日操夜夜操无码免费| 色狠狠色噜噜噜a天堂一区| 久久新地址| 亚洲中文AV| 少妇丁香婷婷 | 九九综合色| 五月婷婷综合久久| 激情人妻蜜夜系列区| 91chinese在线| 婷婷五月天成人小说| 亚洲精品99| 亚洲99综合| 99色在线视频| 人操人人| 99这里都是精品6| 最近中文字幕大全免费版在线 | 久久五月视频| 26uuu最新地址| 色天使色婷婷| 久久久8| 日91高清无玛| 蜜臀99精品| 97se在线视频| 五月在线| 色五月婷婷影院| 这里只有精品视频在线看| 亚洲亚洲人成综合网络| 久色姿源| 69超碰在线| 99热永久在线观看| 日本三级韩三级99久久| 色播五月丁香婷婷| 激情小说色五月| 色婷婷在线综合色播网| 五月婷婷狠天天色综合| 大香蕉220| 狠狠干天天内射| 91久久99久久91熟女精品| 亚洲人妻AV| 九色视频91| 伊人久久大香线蕉av最新| 婷婷五月天国产| 综合九色| 日韩AV片| 狠狠五月激情在线| 人与禽A片啪啪| 天堂五月婷婷| 婷婷丁香五月天色色| 大地资源色婷婷视频在线| 色啦啦视频| 激情五月丁香综合网站| 色五月婷婷AV| 99爱视频在线| 天天久久综合| 色色综合热| 婷婷色五月开心五月| 一级性感黄色内射视频| 裸体做A爰片毛片A片免费| 高清无码 一区 二区 三区| 蜜桃成语时李时珍 免费| 手机AVAV天堂看网| 五月花激情网| 色播播五月天| 夜夜操天天干| 欧洲激情网站| 丁香五月久久社区| 天天精品视频免费观看| 永久地址 色| 久久久久久久久久久月丁| 激情久久综合| 99只有这里是精品| A片一曲| 香蕉久久国产AV一区二区| 人妻五月天激情开心网| 金品在线视频99| 91丨九色丨国产打屁股| 亚洲无码九九| 婷婷五月天在线看| 综合激情九月婷婷,激情综合婷婷中文字| 色婷婷丁香五月| 精品九九在线观看视频| av在线观看网址| 丁香五月播播| 日本五月视频| 中文字幕丰满乱孑伦无码专区| 伊人九热| 成人精品在线| 免费97碰碰| 五月丁香WWW| 久久婷婷综合拍| 五月婷婷深深爱| 天天操屄网| 天搞天天天天天| 久久五月热| 久久综合丁香激情五月| 欧美综合激情丁香五月六月婷| 五月婷婷在线丁香| 97超碰欧美中文字幕| 六月丁香网| 天天做天天爱天天玩| 国产永久一二一起草| 亚洲av午夜精品一区二区| 开心五月深爱五月| 99视频自拍| 久久人妻视步| 婷婷综合在线观看视频| 免費亭亭成人| 操91| 91碰| 99人人操人人操人人精| 色婷婷影视99| 综合色色五月| 蜜臀AV在线观看| 丁香久久五月婷综合| 青草热视频这里只有精品| 超碰在线91| 亚洲午夜一区二区| 5五月综合网亚洲| 99国产精品久久久久久久久久久| 开心五月深爱五月| 五月丁香激情综合网| 深爱激情五月天| jiqingliuyuetian| 狠狠插日日干撸| 日日鲁鲁夜夜爽爽| 五月婷婷香蕉| 日本噜噜色网| 26UUU亚洲欧美| 婷婷五月成人有| 五月丁香婷婷中文| 亚洲色综合| 91成人电影| 极品另类| 久草视频一,二三四| 成人片在线免费看| 九九九九九九综合| 先锋资源91| 99久久五月丁香野外| 久久日本wwww色| 欧美性生交XXXXX无码小说| 欧美激情综合| 无遮挡国产高潮视频免费观看| 婷婷五月天成人网| 99热国品| 婷婷久久爱| 1级欧美日韩| 99久| 九九热99在线视频| 五月天丁香综合久久国产| 日韩伊人大香蕉| 丁香六月婷婷开心婷婷网| 国产色香蕉精品五夜婷| 午夜成人综合| site:xmssd.com| 婷婷色激情网| 综合色综合| 99视频只有这里精品| 天天干天天色综合| 大香蕉婷婷色| 日韩一本操| 久久99网| 色综合婷婷| 国产亚洲色婷婷99精品| 五月丁香久久综合精品| 丁香五月婷婷激情中文| 国产精品视频免费看| 激情五月六月婷婷| 五月天丁香色色| 六月婷婷青青青视频| 亚洲成人另类| 亚洲综合网激情五月天| 日本色五月| 4399成人黄A片| 99∨VTV| 操碰99在线视频观看| 亚洲AV无码影院| 99操久久| 五月天精品综合| 日韩欧美成人片| 五月婷久久| 雪千夏麻豆| 色吧五月婷婷| 色丁香五月综合网| 丁香五月婷婷基地| 91色综合久久| 亚洲婷婷在线播放十月| 婷婷五月丁香六月| 成人av在线网| 国产激情综合五月久久| 色婷五月天激情| 狠狠的日| 色欧美影院| 5月丁香婷婷| 美女五月狠狠| 国产精品18久久久| 久99久精品| 97色婷婷五月天| 久久婷婷色色| 色吊丝99| 五月激情开心婷婷| 亚洲高清在线| 色色婷婷色色| 六月丁香激情综合| 色五月 五月婷婷| 大香蕉九九操| 亚洲精品午夜国产va久久成人| 激情99| 婷婷色中文| 五月丁香婷婷婷婷综合网| 丁香五月天堂网| 中文字幕无码AV| 五月婷婷丁香综合| 思思热在线| 乱乱av| 五月丁香六月婷婷啪啪综合| 丁香六月激情| 成人啪啪色婷婷久| 五月婷婷久| 99ER热精品视频| 人妻中文在线| 久99视频在线观看| 99人人干人人| 天天爱天天秀天天做| 丁香五月天堂婷婷| 综合深爱五月| 久久五月婷婷综合网| 做爱夜夜干天天操| 99热精品在线| 天天插天天狠| 特级西西4444www无码| 色婷婷丁香九月| 五月天激情婷婷久久| 午夜AV网| 天天摸色吧天天摸色吧| 超级碰碰一区| 天天干天天射色综合| 五月天丁香婷婷网| 五月欧美色色五月| 狠狠色噜噜狠| 久久久精品人妻录| 免费看片在线观看| 丁香六月婷婷五月婷婷| www色综合亚洲92| 四色99久久| 婷婷五月a| 丁香五月婷婷激情蜜桃| 亚洲AV成人无码电影| 99这里只有精品|v| 五月丁香色婷基地综合久久| 婷婷月综合| 99re在线精品视频| 日日噜噜夜夜狠狠久久丁香五月| 久久久思思热| 国产FREESEXVIDEOS性中国 | 五月丁香六月香综合激情| 五月婷婷六月激情| 很很干天天干| 中文字幕视频在线播放| 久99视频| 26UUU精品一区二区Com| 性爱网六月丁香| 五月丁香成人网| 婷婷少妇激情| 99色综合| 华人在线免费| 欧日韩成人| 99热精品无码| 色色色色av777| 色级婷婷| 97精品综合久久| 色色色综合视频| 婷婷五月综合性爱| 色香久久| 婷婷色5月天在线。| 五月婷婷丁香日韩在线| 99小视频在线观看| 亚洲性爱电影| 久久成人性爱| 开心五月婷婷综合在线精品素人| 欧美久久婷婷| 天天日日爽| 色五月激情综合| 大香蕉人妻| 六月婷婷九月丁香亚洲综合| 九九激情综合| 日本色99网站| 翔田千里 50岁 无码| 夜夜躁狠狠| AV六月丁香| 婷婷丁香五月亚洲综合网在线视频观看| 精品国产乱码久久久久夜深人妻| 色色 亚洲| 激情文学久久| 亚洲第二AV| 五月天婷婷小说| 五月天,激情四射,婷婷频道| 天搞天天天天天| 五月婷婷综合在线视频| 婷婷五月天网| 夜夜爱网站| 丁香六月婷婷综合激情欧美| 岛国操B不卡在线| 99免费视频| 五月丁香六月情| 成人必爱视| 色玖玖玖| 琪琪色网在线| 久/久精品99看9| 五月天开心婷婷激情网站| 五月激情丁香六月狠狠干| 激情婷婷。| 99婷婷| 久草大| 色综久久AV| 色婷婷精品视频| 全部老头和老太XXXXX| XX久久| 丁香五月在线看| 男人天堂伊人五月丁香| 日本不卡中文字幕| 久久婷综合网| 色五月婷婷影视| 久久精品99国产精品日本| 超碰超碰在线| 五夜丁香| 婷婷五月天色播| 深爱五月亚洲| 五月丁香成人日| 欧美精品999| 99操逼| 色高清无码视频| 琪琪秋霞| 《战争与艾拉》完整版| 99re66热这里只有精品| 国产韩日亚洲美州欧亚综合在线| 色色色地址| 成人免费视频一区| 四季日韩AV无码综合| 狠狠婷婷色综合| 公的粗大挺进了我的密道| 日本欧美在线| 激情婷婷五月| 婷婷丁香五月婷婷| 国产成人亚洲综合A∨婷婷| 狠狠干青青草| 噜噜噜精品欧美成人在线观看| 97色色色色| 丁香 婷婷 激情 综合 五月| 91日本在线观看| 人妻人人操| 久久色天堂| 成人亚洲精品| 激情综合网五月婷婷| WWW.久久久久久久| 激情久久久| 九九碰九九爱97| 高清无码.com| Se.婷婷五月天| 欧美在线骚货| 婷婷色香六月综合激情| www.lingjunshare.com| 五月天色婷婷基地| 蜜臀av粉嫩av懂色av| 97热在线精品| 99re免费精品视频| 九九热这里精品| 久久亚洲婷婷综合色五月| 国产成人VA| 天天爽,天天操。| 激情五月丁香激情综合网 | 五月丁激情| 3p日韩网站视频| 99热这里只有精品搜| 亚洲热热视频| 色碰碰视频| 99热一区| 我淫我色婷婷五月天激情四射| 久久婷婷五月天丁香| W色综合| 九色在线观看91av| 影音先锋色婷婷| 五月花综合网| 久热这里只有精品99re,久热这里只有精品7| 六月婷婷国产| 丁香激情网| 91婷婷| 拍真实国产伦偷精品| 丁香五月婷婷国产在线| enecarbon-materials.com污K127封锁请涟系@wip1688 | 色五月婷婷九月| 9久国产精品| 丁香婷婷人妻综合网| 激情五月婷在线精品| 91免费看片| www.超碰在线| 99碰碰中文| 久久丁香| 激情亚洲五月| 婷婷五月天播播| 婷婷综合精品视频97| 狠狠爱婷婷爱| 疯狂做受XXXX高潮A片| 99热色婷婷| www.激情五月天。com| 婷婷五月天偷拍| 亚洲五月婷婷| 好大好粗嗯啊-一级黄色大片免费观看-成人AV| 五月天婷婷爱| 五月丁香另类网| 久月婷婷| www:99热视频| XXXX岛国| 國語久久婷| 香蕉97碰碰碰欧美| 色欲天天综合网| 色五月视频无码播放| av色婷婷| 久久丁香婷婷色情综合| 国产成人av在线| 亚洲激情视频网| 五月婷婷激情性爱| 一区二区你懂的| 五月丁香六月综合情在线观看 | 午夜天堂啪啪| 亚洲成人无码片| 五月色丁香综合| 日韩综合久久| 艹色18p| 色情激情五月| 国产日比| 久久五月天色婷婷| www.丁香黄色五月天人与| 色色色热热热| 丁香五月婷婷欧美激情-中文天堂最新版在线观看 | 狠狠五月激情在线| 操操自拍| 成人网站av免费网站推荐| 五月激情偷拍婷婷| 五月花婷婷| 久久久久久久97| 天堂久久婷婷| 人人干人人操外国| 操人妻视频91| 教师性爱毛片| 天天舔日日肏夜夜爽| 人人爱操| 丁香五月婷婷婷婷欧美综合| 精品成人在线观看| av激情在线| 婷婷综合五月天亚洲综合| 婷婷色影音天| 婷婷五月天伊人网在线观看视频| 欧美狠狠一在草| 高清无码网址| 久久香蕉丁香| 色色色在线观看| 91久久色| 丁香五月中文字幕色播| 婷婷五月综合网| 婷婷五月激情视频网| 79色色| 国模狼狼| 色婷婷丁香特级性爱视频| 色色a| www.99热这里精品| 影音先锋偷偷色男人站| 97操| 91要啪| 激情四射婷婷| 色99网站| 18av天堂| 午夜无码熟熟妇丰满人妻| 色五月久久成人婷婷| 四LLL少妇BBBB槡BBBB| 欧洲亚洲最新精品| 一本色道久久88加勒比| 五月婷婷激情中心| 五月丁香花激情啪啪网| 丁香六月婷婷综合欧美| 久久综合婷婷五月| 久久婷婷影院| 天天 日综合| 日韩在线观看网址| 欧美丁香婷婷五月| 久热99热| 天天天天操| 人人干人人操人人摸人人做| 亚洲成人精品三区| 99综合视频| 99re在线视频精品,这里只有精品18,| 超碰人妻在线| 日日操,夜夜爽| 天天操五月天| 亚洲色久| 婷婷色丁香五月| 啪啪视频99| 久久9久| 啪啪干伊人婷婷| yiqicaoav| 婷婷午夜丁香| 六月丁香婷啪射| 亚洲欧洲一二| a在线观看| 精品三区影院| 久久人人看| 日本欧美成人片AAAA| 婷婷性福五月天| 超碰AV在线| 日本美女97在线视频| 婷婷五月婷婷| 九九视频精品这里只有| 人人97操| 做爰丰满少妇1313| 久久性爱视频网站| 激情五月天激情网| 超级97碰碰| 少妇高潮A片无套内谢麻豆传| 26uuu精品一区二区| 大香蕉婷婷| 日韩有码一区| 久久久久久久久久8888| 婷婷色导航| 丁香五月天人体| 激情九月天天天天婷婷| 荫道BBWBBB高潮潮喷| 操九色| 激情亚洲五月| 丝袜大香蕉| 亚洲正能量欧美| www色婷婷| 丁香五月六月综合欧美| 色噜噜在线| 国产在线黄色| 丁香六月亚洲| 午夜天堂一区人妻| 91碰碰碰| 97超碰在线免费观看| 丁香五月天精品| 久久五月丁香婷婷| 婷婷五月综合啪| 懂色av粉嫩AV蜜臀AV| 五月婷婷影院| www久久99| 婷婷久久色| 夜夜操天天爽| 婷婷丁香午夜综合影视| 天天性视频| 伊人色五月| 香蕉五月婷婷| 成人丁香婷婷| 国外亚洲成AV人片在线观看| 开心五月深爱五月| av在线资源| 亚洲性爱电影| 成人精品亚洲性爱| 丁香五月开心婷婷| 成功精品影院| 99爱爱| 91久久久久久| 91日本在线| 99精品在线观看| 激情五月天小说|五月天开心激情网|亚洲精品国产自在现线|黄色五月天 | 五月丁香激情婷婷| 人妻久久久久久久久| 玖热精品综合视频| 《诡秘之主》在线观看 | 99啪啪视频| www.天天干| 亚洲日韩欧美综合VA| 丁香五月六月婷婷怡红院| 五月激情综合五月| 91热99| www98日本小时间到了| 欧美色色日韩| 日韩操啪| 婷婷五月六月丁香| 久热在线观看视频9| 热婷婷在线视频| 五月天婷婷丁香成人网| 五月婷性爱| 亚洲成人精品三区| 丁香五月成人自拍| 五月丁香人妻| 91综合在线视频| 日本色图综合| 婷婷在线精品| 99热在线免费观看精品| 五月停停直播| 日韩久久这里只有精品| 五月天免费色| 丁香九月婷婷色| 色 色 色综合com| 欧美色五月| 激情五月综合网| 五月天婷婷久久视频| 色婷婷成人做爰A片免费看网站| 色五月综合| 99久| 国产黄色一级片| 怡春院久操| 大香蕉综合在线| 久久人妻久久久久| 久久婷婷婷婷伊人| 66成人网| 狠狠久久婷五月| 日韩成人免费电影| 逼特逼在线免费播放| 日本操B片| 97干在线观看视频| 久热2025无码| 国产精品国产VA片国产| 婷婷五月激情图片| 激情深爱五月天| 免费观看全黄做爰的视频| 亚洲成人无码免费| 色综合九九| 亚洲国产成人裸舞| 婷婷人人操| 无码99| 天色综合网| 日本色频| 草逼大片| 色人久久| H亚洲| www.超碰| 色五月视频,小说| 99九九在线| 五月婷婷涩涩爱| 色婷婷久久天天性爱| 色五月婷婷五月久久| www.minyis.com【JT】实力收量可预付QQ2101460746 | 五月婷婷丁香五月| 大香蕉综合| 色狠狠综合入口| 国产婷婷五月色情综合| 久久久中文| 亚洲超级碰| 天天干,噜噜色,狠狠色| 亚洲成人在线免费| 九月丁香婷婷基地| 丁香色六月| 思思热在线视频精品| 99精品在线观看| 色婷婷9| 99热这里只有精品 搜| 日日干天天爽| 五月天婷婷AV| 啪啪婷婷五月天激情| 五月丁香婷婷综合久久| 婷婷在线日韩综合| 99热福利| 丁香五月天激情视频| 亭亭玉月丁香| 日本久久人人| 天天色综合网1| 国产又色又爽又黄又免费| 99碰| 国产精品视频久久99| 丁香激情五月天| 丁香婷婷九月| 五月婷婷在线免费观看 | 69精品人人人人| av成人在线播放| 五月激情婷婷开心| 色欲一区二区三区精品A片| 99 re视频一区| 99精彩视频| 久久99人人| 深爱开心五月天| 国产精品色| 人妻性爱av网站| 99热伊人| 婷婷免费无马| 伊人玖玖婷婷| 久久天堂精品| 久播影院免费观看电视剧大全最新网| 亚洲亚洲人成综合网络| 激情六| 色墦五月丁香| 中文字幕成人| 五月丁香欧美综合| 日韩 中文 欧美| 婷婷六月啪啪| 久久的爱大香蕉| 狠狠狠狠狠狠狠狠| 五月丁香婷婷激情图片| 婷婷五月丁综合| 婷婷五月激情欧美大胆视频| 六月婷婷色宗合| 婷色天堂| 天堂草在线观| 天天操天天干天天射| 天天综合干| 国产精产国品一二三在观看| 色婷婷综合五月| 亚州美女| 开心五月婷婷激情网| 成人五月丁香花| 深爱激情五月天婷婷网| 国产av一区二区三区| 五月天激情Av| aaaa久久| 天天爱天天狠天天透| 色色色9 9 9| 国产 亚洲 在线| 丁香五月婷婷亚洲综合精品| 亚洲第一第二网站| 韩国情人在线电视剧免费观看高清版全集| 思思热99热| 天天色天天干天天插| 超碰精品在线| 日本五月丁香| 人妻激情久久| 久久婷婷综合五月天| 人妻aV在线| 99精品视频在线观看| 亚洲五月天天| 1024在线观看免费视频| 天天操夜夜玩!| 久久日本wwww色| 久久看婷婷| 九九av| 一本色道久久88加勒比| 99A片| 亚洲无码成人| 99久久婷婷国产综合精品草原| 日本欧美在线| 中国女人做爰A片| 涩综合婷婷| 大香蕉五月天婷婷| 午夜天天精品视频| 夜夜谢天天干| 99啪啪| 91狼友视频在线观看| 99精品久久久久| 九九熱最新視頻| 亚洲xx在线| 伊人婷婷色| 激情五月综合六月丁香婷婷狠狠干| 亚洲AV成人一区二区在线观看| 久色婷婷200| 色婷婷黄色网络| 久久久久久久91| av色婷婷| 日本激情五月天‘| 五月天综合久久| 青草青草视频2免费观看| 99精品热| 亚洲高清在线| 91伦| 综合色色网| 色色网站免费| 玖玖伦理电影| 97色操| 久久精品99国产精品日本| 九九视频在线观看| 六月丁香基地| 人人看人人97| 亚洲经典三级| 九热免费视频| 婷婷六月中文字幕| 99日本黄站| 五月丁香婷婷成人网| 在线观看欧美| 天天射天天射一道本日本社区 | 欧美激情五月天| 狠狠干在线视频| 亚洲综合九九| 日美三级| 亚洲精品久久久无码| 九九久久精品| 丁香五月播播| 婷婷五月激情欧美大胆视频| www.yw尤物| 婷婷五月丁香综合桃花色网| 午夜天堂一区人妻| 久婷| 五月婷婷在线视频| 国产高清精品色| 五月丁香久人妻中文| 超碰日日操| 九九综合图片网| 免费看欧美成人A片无码| 中文AV网站| 91热爆在线| 久久久这里有精品| 婷婷五月天成人网站| 激情综合网,婷婷五月天| 亚洲av免费在线| 草草影院爱爱| 婷婷综合在线视频| 丁香情色五月| 成人.在线日韩| 日本精品久久久久中文字幕| 99久在线精品99re8| 综合性爱网| 五月婷婷啪啪| 日韩欧美一级大黄网站| 密桃激情五月天综合网| www.伊人天堂偷偷婷婷| 五月丁香A片| 色色五月天婷婷| 色婷婷综合网站| 日本色图综合| 色一情一乱一乱一区91| 婷婷丁香花五月天| 色噜久| 色月丁| 婷婷久久图片| 丁香激情五月天| 色婷婷六月天| 五月丁香婷婷综合| 国产精产国品一二三在观看| 色偷偷五月天| 狠狠色婷婷777| 日日撸夜夜操| 开心深爱激情网| 丁香婷婷久久| 日产精品久久久久久久蜜臀| 激情丁香五月| 国产精品久久久爽爽爽麻豆色哟哟| 国产肥白大熟妇BBBB视频| 婷婷丁香六月| 综合狠久久| 丁香97综合| 丁香9月婷婷| 激情五月综合第一页| 欧美综合五月丁香六月婷| 成人毛片在线免费观看| 丁香激情久久| 色色色在线免费视频| 丁香婷婷五月六月天| www狠狠| 桃色五月天| 丁香六月啪| 亚洲激情另类| 六月婷婷毛片| 狠爱婷色| 91婷色| 99久热这里有精品| 欧美va亚洲va在线播放| www天天干| 丁香六月情| 欧美精品999| 被强行糟蹋的女人A片| 国产真实乱对白精彩| 色yeye色综合| 99热欧美| 五月色婷婷影视在线电影| 久久这里只有精品视频1| 激情九色| 夜夜大香蕉婷婷丁香| 一本色道久久综合狠狠躁小说| 国产精品久久久久久亚洲毛片| 色色97丁香婷婷五月天| 狠狠色丁香婷婷久久综合| 亚洲第一色色色| 五月天色社区| AV在线免费播放| 乱精品一区字幕二区| 欧美人人女女精品综合五月天| 日韩99视频| 五月香蕉综合| 天天操天天操天天操天天操天天操天天操天天操天天操天天操 | 日日干天天爽| 玖玖婷婷五月天毛片| 九九色黄色| www.99热视频| 成人五月丁香花| 九九久久精品國產| 色天天综合天天综合频道。| 五月天色网站| 99亚州综合精品成人网| 色婷婷成人做爰A片免费看网站 | 色五月在线观看| 99国产99| 六月99天天婷婷激情综合| 久久一二三视频| 91色婷婷综合久久中文字幕二区| 专区无日本视频高清8| 丁香久久在线| 色婷久久| 色播激情五月天| 精品色色| 综合五月丁香六月婷婷| 久久伊人日日夜夜| 九九热av| 久久婷婷伊人| 九色七七| 久久这里有精品视频| 五月婷婷啪啪| 殴美日韩成人| 免费观看的AV| 婷婷久草| 久久五月激情综合| 婷婷涩涩网| 丁香婷婷基地| 99亚洲精美视频在线观看| 五月天激情小说婷婷| 久9久成人精品视频| 9九九久久精品无码专区| 99热永久在线观看| 五月天久久91| 1024人妻无码中文字幕| 99久久a线观| 狠狠色丁香| 久操人| 五月丁香婷婷伊人| 图片区 小说区 区 亚洲五月| 99久久玖玖| 激情五月天小说|五月天开心激情网|亚洲精品国产自在现线|黄色五月天 | 99网址在线观看| 在线五月色播| 色丁香久久| 五月天婷婷色色| 五月天成人在线视频网站| 懂色av粉嫩AV蜜臀AV| 极品人妻videosss人妻| 六月丁香啪啪| 婷婷精品视频| 99在线观看视频| 99久久精品国产色欲| 99色亚洲| 五月婷婷激情网| 成人 在线 日韩| 狠狠色狠狠| 五月间天堂综合| 色色亚洲视频| 草榴视频网| 亚洲欧美一区二区三区四区爱爱动图| 五月天激情网站| 色播五月丁香婷婷| 国产午夜成人AV在线播放| av 一区三区四区| 久久99久久久久久| 日韩色色色色色| 无码99| 欧美精品久久久久久视频观看| 99re思思热久久| 91性人人| 九九精品综合|