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
返回資訊列表
丁香丝袜五月| 日韩中文字幕| 天天色·欧美| 9久久久| 三级三久久线久久99久目本WW| 五月天第四色开心色播| 亚洲黄色影视| 九色91视频| 五月天婷a在线| 色婷婷综合久久久久| 婷婷丁香亚洲五月天| 啪啪 综合网| 亚洲无码 图片区| 99操| 天天插天天插天天插天天插| 停停五月色宗合| 亚洲色婷婷激情| 激情99| 欧美色片中文字幕久久久久| 色墦五月丁香| 日韩色色视频| 五月草视频| 五月婷婷深深的爱| 日韩ac不卡无码| 9久热视频| 五月在线| 五月丁香婷婷综合网| 久久久久久久久久人妻| 5月婷婷五月天| 99热在这里只有免费精品| 日本婷婷激情四射中文字幕在线观看| 一点色成人网| 国产精品日本一区二区在线播放| 99国产精品久久久久久久久久久| 狠狠色色| 欧洲第一无人区观看| 五月婷婷六月激情| 五月婷婷深深爱| 婷婷五月噜噜| 操操操AV| 婷婷丁香18| 蜜臀A∨在线水帘洞| 伊人成综合五月婷婷| 五月网站| www五月婷婷88导航| 久久久com| 亚洲欧美成人在线| 狠狠色色| 久久性爱视频网站| 色婷婷成人做爰A片免费看网站| 丁香五月综合| 狼人狠狠操| 色婷婷久久综合久色综| 波多野结衣AV无码Porn| 久99视频在线观看| 激情www| 丁香婷婷色五月| av久热| 99亚洲视频| 色噜噜狠狠色综无码久久合欧美| 欧美三日本三级少妇三99| 激情五月天婷婷在线网址发给我| 色婷婷五月综合在线| 天天插天天爽| 超碰在线观看99| 色色婷| 激情五月丁香五月| 亚洲综合网在线| 丁香五月 性爱| 色综合综合网| 夜夜操狠狠操| 国产毛片欧美毛片久久久| 日产精品久久久久久久蜜臀| 久久99免费视频网站| 丁香五月天日韩无码| 丁香六月激情国产| 99热最新精品| 色色AV色色色东莞| 亚洲人妻av| 乱岳熟女50岁| 亚洲无码成人| 。久久久久久久久久久久久久人妻| 亚洲激情免费视频| 天天操比比| 色婷青青| 久久丁香| 婷婷天天日婷婷| 91狠狠综合网| 欧美性爱丁香五月| 亚洲激情综合色站| 十一月婷婷激情四射| 91九色|疯狂|高潮|对白|| 天天爽人人综合免费7799| 婷婷综合在线网| 在线观看免费狠狠色丁香香综合| 天天干天天操天天干天天操天天干天天操 | 99日本黄站| 九九碰九九爱97| 丁香六月婷婷色XXXX| www.com任你艹| 91久久婷婷| 夜夜夜夜做天天天做无码视频| 久久久精品色色色| 99精品成人无码A片观看金桔| 久热99久热| 色丁香久久| 激情五月婷婷综合网| 婷婷五月天综合AV| 亚洲日比视频| 91五月花丁香| site:xmssd.com| 五月花丁香婷婷| 99色色网| 色五婷婷| 五月丁香六月婷婷欧美综合| 国产真实乱对白精彩| 99乱视频| 99色色视频| www.五月天| Www99热| 亚洲开心激情网| 丁香五月av| 丰满少妇猛烈A片免费看观看| 色婷婷免费观看| 婷婷激情啪啪| 五月丁香黄色| 中文字幕网伦射乱中文| 男女99免费视频| 丁香五月婷婷综合网| 91婷婷| 亚洲六月色婷婷| 人人做天天爱| 色综合久久之分久久| 成人网站在线观看视频| 亚洲欧洲国产精品| 九九综合色综合| 久久五月综合| 奇米影视777在线_在线观看午夜_h小视频在线观看_岛国大片 | 色97啪啪| 另类五月激情| 亚洲免费电影2| 91视屏在线观看com.wwwvv| 99自拍视频网站| 久久婷婷五| 日韩av干| 亚洲成人AV高清字幕| 丁香五月天啪啪| 激情久久久久久| 综合爱久久| 色婷婷九月综合| 九九色色| 五月婷人妻| 九九色色| 很操日本7| 五月婷婷六月色| 色婷五月天| 日本高清久| 色婷婷久久视屏| 亚洲色 视频| 久久婷婷五月丁香蜜桃网| 天堂爱爱| 婷婷伊人久久无码色五月| 99在线观看精彩视频| 婷婷开心激情综合五月天| 五月天开心色情网| 午夜色婷婷| 中文字幕av亚洲| se99视频| 夜夜躁婷婷AV| 丁香九月婷婷| 色97综合婷婷天天色| 丁香五月在线观看| caopeng97日韩| 黄桃AV无码免费一区二区三区| 欧美成人无码一区二区三区| 大地资源色婷婷视频在线| 欧美成性色| 91精品久久久久久综合五月天| 欧美性二区| 天天搞天天爽| 天天爽综合| 成人精品免费在线观看| 五月天天久久香| 玖玖五月丁香| 天天干,夜夜爽| 99热99在线| 全部老头和老太XXXXX| 日本ww亚洲| 香蕉AV777XXX色综合一区| 亚洲看av的网站| cao视频,现在观看| 久久99久久久久久| 国产黄大片在线观看画质优化| 婷婷五月天视频小说| 日韩AV免费电影在线播放| 婷婷五月天成人基地| 91九色PORNY肉丝在线| 夜夜干 夜夜操| 久久电影4399| AA片在线观看视频在线播放| 六月丁香激情网| 激情爱爱网站| 热91久| 九九热视频精品| 99热天堂| 人妻无码视频网| 五月天综合激情网| 九九视频网| 精品人妻一区二区三区在| 丁香五月激情图片| 99er日韩| 微拍92| 五月天激情小说| 婷婷色系婷色| av网址在线| 色天堂婷婷| 激情五月婷婷综合| 五月丁香六月婷婷免费视频| 欧美久久婷婷| 人人干人人操外国| 黄桃AV无码免费一区二区三区| 狠狠色噜噜| 丁香五月香蕉| 国产美女主播vip| 五月天色色色| 97影院一级片| 婷婷瑟瑟五月天| 九九色影视| 在线视频九色97| 99综合久久| 婷婷五月综合在线视频| 99久久精| 丁香五月AV| 99精品视频在线观看| 99精品综合视频| 五月丁香婷婷在线综合蜜桃| 任你擦免费视频| 久久久久久久久久久久久9| 99热天堂| 综合五月网| 日日天天操| 五月婷婷草| 亚洲色无码A片一区二区麻豆| 久久婷丁香五月| 99日这里只有精品| 国产淫熟妇| 人妻熟妇国产精品| 色色色地址| 久久婷婷一级片| 五月天激情综合网| 久热久| 日日天天干| WWW五月天| 日韩人妻在线观看| 91狠狠色丁香| 在线视频99| 色五月综合激情网| 99久久户外勾搭| 天天插天天日| 99热6精品| 91视频综合网| 五月天综合久久| 婷婷五月天日日日干干干| 亚洲sesesese| 激情综合色| 99WWW免费视频| 成人AV片播放| 色亭亭丁香五月天| 五月婷色丁香| 狠狠 久久| 综合福利网| 大战熟女丰满人妻AV| 91精品久久久久久综合五月天| 俺去也综合| 狠狠狠夜夜夜| 这里只有精品1| 六月丁香婷婷五月| 色婷婷狠狠| 天天免费日日夜夜夜夜| 桔色成人在线| 五月丁香偷拍| 色噜噜狠狠色综合成人网| 激情亚洲网| 激情色视频| 五月婷婷开心丁香| 久久美女五月天| 天天爽免费视频| www,婷婷| www.日本91| 丁香激情网| 五月婷婷丁香五月婷婷丁香| 成人电影AV在线观看| 综合XX网| 激情色色色| 婷婷丁香18| 99视频| 天天色粽合合合合合合合| 五月亭亭开心网| 色色色色色色色色综合网| 色婷操逼| 久热超碰| 亚洲区在线| 人人操超碰| 亚洲一区二区 成人网站戴套| 丁香五月 激情文学| 伊人大香蕉综合在线| 综合五月丁香97| 亚州操操| 99re在线观看视频| 日日舔夜夜操| 色色五月丁香婷婷| 国产成人精品亚洲线观看| 无码人妻AV久久久一区二区三区| 九色亚洲| 97视频久久| 激情网 五月天| 国产一区男女| 国产精品视频| 99性爱| 8050一级网| 91精品综合久久久久久五月天| 99久精品视频| 色啪久| 91精品国产色猫| 亚洲成人av在线| 亚洲VA欧美VA| 欧美成人色婷婷| 青青草原亚洲天堂| 久久久高清| 久久综合色情网站| 亚洲久久视频| 99免费视频| 特级西西4444www无码| 97 天堂| 夫妻超碰在线| 99爱免费在线观看| 亚洲色五月| 色婷婷久久| 91色五月在线观看| 久久丝丝热| 激情五月天网页| 婷婷色片| 丁香影院五月综合| 美女丁香五月天| 26uuu另类亚洲欧美日本一| 五月婷婷丁香大陆免费| 欧美成人AAA片一区国产精品| 久草婷婷| 大香久久伊人网| 在线播放成人网站| 热久69| 婷婷激情丁香五月天综合| 日本三级中国三级99| 色色色色色五月| 五月天激情啪啪| 99丁香五月| 。久久久久久久久久久久久久人妻| 五月天丁香啪啪综合| 九九热这里只有精品12| 色屌丝中文字幕| 狠狠狠狠青草| 五月天婷婷黄色| 色噜噜狠狠色综合日日| 久久久久98| 六月丁香婷婷尤物| 99九九精品| 狠狠色狠狠爱| 五月天激情开心网| 激情又色又爽又黄的A片| 爽极品色| 99九九在线视频| 丁香婷婷激情四射五月| 无码激情精品色婷婷久久久久| 五月综合激情| 五月丁香九九| 五月丁香六月婷婷综合网站 | 99这里只有免费的小视频在线观看| av大香蕉| 97色欧美| 久久激情五月网| 丁香五月天av| 香蕉AV777XXX色综合一区| 丁香六月激情| 六月丁香综合| 性热视频99精品| 色五月丁香六月欧美综合| 99无码| 91狠狠综合久久| 九九视屏| 大香蕉免费9| 99热这里只有在线| 欧美色激情四射| 99热久久这里只有精品| 人妻中文在线| 色婷婷激情小说网| 啪啪啪大香蕉| 五月丁香六月婷婷在线小说视频| 国产精产国品一二三在观看| 另类小说五月天综合| 五月丁香色色网| 啊V视频在线观看| www.maotanji.com| WWW99热| 久热久色| 色色色综合网| 五月天婷婷丁香蜜桃91| 99五月香婷婷丁香在线视频| 操逼棍操逼| 五月婷婷久草| 久久99激情丁香婷婷小说网| 超碰色天堂| 婷婷五月天视频亚洲| 久久五月热| 婷婷六月五月天综合| 热久综合| 激情五月天开心| 久久精品综合色| 神马欧美精| 2017人人操| 91啪啪网| 九九这里只有精品在线视频| 亚洲精品字幕| 久久久久丁香婷婷五月天| 国产99久9在线| 超碰猛烈的性猛交| 99思思在线视频| 亚洲中文字幕在线观看| 丁香五月婷婷天激情| 亚洲最大激情无码| 亚洲AV人人操| 黑人糟蹋人妻HD中文字幕| 人人爽人人爽人人爽人人爽| 激情五月天色色色| 另类专区在线观看| 森林影视大全,最好看的2019年视频 | 久热免费| 综合五月草| 99国产精品白浆在线观看免费| 日夜夜天天| 伊人激情网| 9l视频自拍9l视频自拍九色学生| 天天摸天天舔在线视频| 久久视9精| 婷婷五月天在线视频网站| 亚洲无线视频| 欧美成人在线观看| 久9免费视频| 9er热在线精品视频| 国产成人精品一区二区三区视频| 天天操婷婷| 91vip在线观看| 国产又粗又大又爽又黄| 亚洲无码另类| 综合色在线| 丁香五月激情综合| 精品婷婷五月天| 丁香五月婷婷香| 超碰九九热| 色999五月色| 综合色婷婷| 99色综合| 狠狠色综合网| 色色丁香五月婷婷| 黄网网站在线播放| 婷婷狠狠香蕉综合| 性爱综合网| 六月综合在线| 色五月aV| 99精品国产热久久91色欲| 91久久精品国产91性色TV| 五月丁香婷草| 99综合激情久久精品久久| 国产成人综合在线| 九九久久腿| 天天干夜夜谢| 玖玖五月丁香| 欧美爆乳一区二区三区| www.夜夜操.con| 超碰中文字幕在线| 色小说五月天| 五月天自拍视频| 91人人操人人| 中文字幕亚洲-区久久99婷婷| 337p大胆噜噜噜噜噜91Av| 这里有精品2| 26UUU成人网| enecarbon-materials.comWu染请涟系Bao护@wip1688 | 九九综合久久丁香婷婷,开心激情综合网| 日美三级| www婷婷色| 99亚洲精品视频| 婷婷六月丁香五月| 天天色官网| 婷婷的激情五月| 一区二区免费看| 美女视频图片久久91| 天天干天天做| 五月婷婷丁香| 欧美久热| 性高潮久久久久久-九九九九九九九九九九热-成人AV | 久久jiuwww| 免费91久久精品| 91欧美| 精品无码色欲AV| 国产成人av在线| 日本久草福利| 啪色综合| 久久亚洲无码| 高清国产一级婬片a免费| 日韩欧美成人一区二区三区| 亚洲国产精品VA在线看黑人| 欧美肉大捧一进一出免费视频| 色婷婷久久| 婷婷五月丁香超碰| 丁香五月AV| 天堂草在线看www| 亚洲中文乱字字幕线在永久| 激情婷婷丁香色情五月天| 婷婷五月天视| 日本无va视频| 激情综合激情五月| 九九热视频免费观看| 婷婷激情综合色五月久久,色婷婷丁香花,丁香婷婷五月情天,久久婷婷五月综合色 | 久久婷婷五月综合色欧美| 少妇大叫太大太粗太爽了A片| 丁香五月电影| 久久九九国产精品怡红院| www.色综合| 成人在线精品| 五月天成人综合| 五月婷婷六月丁香在线| 天天插天天插| 国产无套精品一区二区| 夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂亚洲亚洲亚洲亚洲亚洲亚洲亚洲亚洲色 | 九月婷婷色色| 超碰av在线| 99热免| 五月天开心网| 久草热久草在线视频| 色五月激情婷婷| 五月天婷婷婷| 偷偷操99| 狠狠干在线| 国产日比| 99色免费观看全部| 欧美啪啪五月天| 九色在线观看91av| 婷婷五月天久久| 色婷婷五月天激情| 五月丁香六月色情网欧美| 丁香五月在线观看综合| 激情五月,婷婷五月,丁香五月| 噜噜狠狠色综无码久久合欧美| 97色在线观看视频| 97色干| 90色免费视频| www.五月天婷婷| 99操中文视频| 森林影视大全,最好看的2019年视频 | 99re免费精品视频| EEUSS鲁片一区二区三区| 婷婷综合中文| 欧美伊人9| 超碰99在线观看| 日日爽日日操| 99热66| 亚洲综合色丁香婷婷六月| 色色色色色爱| 色女人久久| 久久小视频| 久久免费少妇高潮99精品| 99 福利 导航| 色之综合网| 五月天激情美女久久| 日日操夜夜爽| 可以免费观看的av| 激情五月狠狠喔| 97av在线视频| 99re热免费观看视频精品| 9久国产精品| 国产精品VIDEOSSEX久久发布| 91精品久| 5月色婷婷| 激情深爱综合网| 精品久久久人妻| 99色人| AV在线大香蕉| 成年人看Va免费视频| 丁香五月性爱| 97日日碰碰| 色综合爽| 色99色| 国产精品色情AAAAA片软件| 青青草99热久久精品国| www.狠狠狠.com| 婷婷五月丁香五月| 激情网五月| 99精品国产在热久久| AAA久久久AAA久久久AAA| 逼逼AV| 狼友视频在线观看18| 婷婷激情久久| 丁香六月婷婷综合色| 丁香五月播播| 在线视频区| 色色色色色色色色五月先| 激情开心五月亚洲| 久久婷婷影院| 99碰碰视频| 亭亭五月天成人| 涩五月婷婷| 日韩在线99| 99热这里只有精品最新| 熟妇人妻中文字幕无码老熟妇| 婷婷久久五月天丁香| 激情5月天天天| 99久久婷婷国产综合精品草原| 99热线观看9| 五月丁香激情深爱婷婷| 精品夜夜澡人妻无码AV| 91久久久久久| 黄网免费看| 狠狠色丁香婷婷| 狠狠色狠狠色综合日日91| 久久99网| 99碰碰| www,色婷婷| 92久操视频| 深爱激情av| 欧美色综合天天久久综合精品| 超碰chaompinm| 久久怡红院| 热久免费视频9| 玖玖精品视频99| 天天色视频| 四虎成人精品永久免费AV九九| 色婷婷五月天偷拍| 综合久久六月| 婷婷五月天电影网| 99伊人婷婷在线| 婷婷五月另类网站| 亚洲激情六月| 五月丁香婷婷综合网| 久久婷五月影院| 久久婷婷五月草视频| 免费无码毛片一区二区A片| 色色色综合视频| 婷婷五月天丁香花| 99在线er热| 精品欧美一区二区三区久久久| www.婷婷五月天,com| 久久久五月天| www.婷婷网| 99热超碰在线| 五月深爱婷婷| 综合色、色综合| 天天爽曰日爽| 免費观看aV在线网址| 99热这里只有精品18| 国产AV网页| 丁香婷婷视频| 五月婷婷影| 大香蕉精品视频| 婷婷色亚洲| 91chinese在线| 五月婷婷综合网在线播放| 久草热8精品视频在线观看| 五月丁香六月婷婷免费| 五月美女婷婷风骚| www.操.com| 99久久www| 日韩无码色色| 中文字幕簧片| 欧美色偷偷大香| 五月婷婷六月丁香| 天天五月丁香五月| 欧美性猛交99久久久久99按摩| 亚洲小说欧美激情| 综合久久综合综合| 1024日韩| 99视频精品8 | 亚洲欧洲另类| 亚洲网综合在线| 五月丁香婷婷激情视频| 亚洲无码成人| 欧美性猛交AAAA片黑人 | 99久久精品视频女神1| 久久婷婷亚洲无码一起| 婷婷六月激情| 五月婷婷久草在线视频综合| 久99热在线观看| 91超级碰| 91成人性爱视频| 超碰在线国产| 久久婷婷原创视频| 欧美精产国品一二三区| 欧美日韩成人h| 思思热在线观看| 激情网战码亚洲A| 亚洲天堂婷婷| 久久综合爱| 国产高清RV综合aVa| 五月天停停日日| www.超碰| 第四色大香蕉| 26uuu欧美亚洲日韩| 亚洲一级AV在线免费播放| 久久婷婷亚洲| 亚洲综合五月| 丁香六月激情综合网| 狠狠综合区| 天天日天天插| 五月天婷综合| 天天檫天天爽| 天天色综合天天| 99视频在线看| 日本人妻伦在线中文字幕 | 99福利导航| ss99热| 久久色婷婷| 五月刺激丁香月综合| 97人人射| 亭亭五月丁香五月天激情| 日日爽日日操| 大香蕉五月天| 日韩成人电影av| 欧美丰满熟妇BBB久久久| www.99热在线观看| 免费五月婷婷网| 久久视频这里都是精品| 9999三级片| 亚洲成人在线观看网址| 亚洲乱码日产精品BD在线观看 | 欧美天天干天天草| 他改变了拜占庭| 欧美日韩国产一区二区| 欧美 色婷婷| 久久五月天婷婷| 婷婷午夜精品久久久| 天天婷婷色六月| 五月丁香六月婷婷免费| 丁香五月天啪啪| av激情在线| 热久久婷婷| 秋霞少妇AV网站| 日韩一级片| 久久久婷婷婷| 久99热| 一本色道久久综合狠狠躁小说| 色伊人91在线视频| 婷婷五月天成人| 91丨九色丨东北熟女| 五月天婷综合| 色五月中文网| 丁香婷婷婷五月| 色情五月天A片| 五月丁香天天| 婷婷五月蜜桃成人桃色丁香| 久久曰曰| 色五月成人| 任你爽精品免费视频6| 狠狠爱夜夜| 中文在线视频久9| 成人AV片播放| 久久99大| 久9热插入| 九九99视频精品| Www.久久| 大香蕉娱乐| 久久机热探花| 9999热在线观看| 国产亚洲色婷婷久久99精品91 www.riverspirits.org www.hnnun.com www.changh | 欧美激情性做爰免费视频| 婷婷丁香成人| 亚洲激情综合| 日本欧美成人片AAAA| 日韩精品AV一区二区三区| 亚洲精品无码一区二区| 少妇被下春药玩弄A片| 亚洲乱码日产精品BD| 日本精品人妻无码77777| 人人摸人人搞| 五月天久久91| 亚洲无码11| 激情综合婷婷| 亚洲激情久久| 成人做爰A片免费看视频| 青青草国产亚洲精品久久| 日本强伦片中文字幕免费看| 激情综合网激情五月婷婷| 九九色插| 99内射视频| 久久久性爱视频| 热99国产精品| 五月婷婷色丁香| 亚洲激情综合五月婷婷啪啪| 天天做天天摸| 超碰男人色| 玖玖热视频| 国产99久久久国产精品免费看| 丰满少妇乱A片无码| www天堂99| 色色色婷婷| 久热91| 五月丁香啪啪激情| 国产午夜精品久久久观看| 丁香五月在线播放| 99这里| 九九爱激情| 十区AV| 人人色人人摸人人看| 婷婷性爱无码视频| 99热在线观看免费精品| 激情AV| 国产XXXX搡XXXXX搡麻豆| 人人操婷婷| 色狠狠999综合| 五月天婷婷一起草| 九九热这里只有精品在线观看| 色五月成人| 一本色道久久综合狠狠躁小说| 亚洲成人影视在线| 婷婷五月天中文字幕| 99re热精品视频国| 99九九精品| 97人人草| 激情婷婷激情在线不卡| 97久久人人操| 伍月婷丁香花全集| 黄网在线播放| 精品热九九| 丝袜人妻| 天天干com| 大香蕉AV在线| 亚州欧美黄色电影| 99综合| 午夜婷婷五月天| 国产成人99久久亚洲综合精品| 天天插操| 色婷婷五月天中文字幕| 久久人妻www| 天天射影院| 欧美在线视频9| 亚洲视频色色| 99狠狠| 色色婷婷综合| 91丨九色丨熟女高潮| 综合五月天完整| 综合色99| 综合狠狠干| 色五月婷婷DVD| 久草五月天| www色综合亚洲92| 色婷婷五月丁香在线观看| www夜夜操| 成人.在线日韩| 色情综合| 国产美女视频久| 色婷婷丁香女女| 久久狠狠欧美| 丁香五月婷婷综合精品素人| 99热10在线高清播放| 超碰三级秋霞| 久草视频一,二三四| 亚洲av综合在线| 99这里只有免费的小视频在线观看| www.yw色| txt五月激情四射网综合俺也来了| 亚洲久久视频| www.久久久久| 吊色AV男人的天堂| 五月激情久久| 淫五月停停| site:minyis.com| 99色在线观看| 久久9久久| 久久99热在线观看| 国产99久| 玖玖精品视频99| 在线99热| 色婷婷五月影视| 日韩狠狠色| 九草性爱| 六月丁香综合| 色丁香五月婷婷综合久久| 五月丁香色婷| 国产AV一区二区三区最新精品 | www.色99| 丁香五月区| 欧美 日韩 成人| 久久久婷婷色五月资源网| 五月天激情视频网站| 99精彩视频网站在线| a69在线视频| 超碰人妻在线| 夜夜骑日日操| 91操碰| 久久婷婷激情五月天一区二区| 激情久久久久| 日本综合色色| 91丨九色丨熟女高潮| 操B五月天| 婷婷五月天综合网| 91碰碰视频| 色播婷婷大香蕉| 超碰大香蕉网| 丁香五月电影| 玖热精品综合视频| 思思热视频在线观看| 五月天丁香六月综合| 五月婷婷成人| 亚洲色色图片| 中文字幕免费高清电视剧| 五月的丁香六月的婷婷| 成人.在线日韩| 日韩乱玛久久| 69人人操人人爽| 可以直接看的av| 伊人五月天97| AV在线观看网站| 久久五月婷| 色色五月天激情| 成人色情五月天婷婷丁香| 北京熟妇搡BBBB搡BBBB| 五月丁香网中文字幕| 激情涩播| 五月丁香六月婷婷无码| 91日韩美女被插视频| 97极品在线| 久久激情视频99| h在线看免费版在线看| 久热这里精品免费| 亚洲韩国日产综合AV| 婷婷丁香六月天| 99热偷拍| 国产成人精品一区二三区熟女在线| 综合五月天天天天天五月| 99惹 精品在线| 婷婷五月天影视首页| 91男同| 中文字幕丰满孑伦无码专区| 天天色综合网吨吧| 狠狠情色| 色五月婷婷五月| 99热只有精品在线观看| 丁香五月九九| 伊人99热| 思思热热久久| 中文字幕成人影视| 日日夜夜干| 夜夜爽天天日| 欧美日本国产欧美日本韩国99| 热久久这里只有精品| 色狠狠图片| 日韩另类在线观看| 天天弄天天操| 色色色无码| 色婷婷五月综合| 久久人妻超碰一区| 狼人婷婷久久| 手机看片日日做夜夜| 99玖玖视频| 第四色五月天| 婷婷五月成人系列| 色色操| 人人摸人人干| 亚洲色综合| www狠狠| 色婷婷久久综合| 草草色情综合网| 亲子乱AV一区二区三区下载| 婷婷中文字幕版| 超碰在线观看9| 成人无码精品1区2区3区免费看 | 色婷亚洲| 久久五月综合| 五月天婷婷激情四射综合| 伊人五月天在线| 久久色五月天综合网| 久99久视频| 婷婷日韩| 久久五月天婷婷| www.色婷婷.com| 五月婷婷丁香伦理网| 91疯狂操操操操| 四川女人毛多水多A片| 99在线精品视频| AV79| 亚州激情网| 久久久久久久8| 日本三级成人秘书精品片| 91九色国产| 五月婷婷精品无在线| 色八月婷婷| 四月婷婷五月丁香| 超碰色碰碰| 99视频在线| 国产精品视频| 欧美成人A片AAA片在线播放| 国产 A片 自拍| 色色爽爽天天| 久热re在线视频| 国产91资源在线| 一本色道久久综合狠狠躁小说| 亚洲男女激情| 夜夜撸天天日| 开心五月婷婷六月丁香| 色色免费网站| www.97干视频| 大香蕉太香蕉视频97| 情欲禁地| 97婷婷色| 午夜大香蕉| xx久久| 亚洲视频99| 综合五月天婷婷色| 婷婷五月综合欧美在线播放| 久久免费9| 超碰无码318604| 婷婷婷五月香蕉| 亚洲激情四射色| 一本大道嫩草AV无码专区| 激情五月天电影| 武则天精品久久| 天堂久久性| 中文AV网| 狠狠干综合网| 深爱激情网综合| 五月天五月婷五月激情网| 天天在线久久综合| 99热热九九| 人妻久久久久久久久妻久久久久久久久| 97人人搞| 久超超碰| 婷婷久久丁香五月| 久久免费丁香| 九月激情综合婷婷| 丁香五月天天| 狠狠九九婷婷韩| 婷婷五月天毛片| 激情啪啪五月天| 91精品丝袜久久久久久久久粉嫩| 爱狠射| 丁香五月婷婷欧美成人色图| 97ai婷婷| 色婷成人狠干| 激情综合在线播放| 五月婷婷综合影院| 182TV大香蕉| 综合色影院| 激情综合网五月| 51XX午夜影福利| 五月香婷婷| 综合激情五月四射婷婷| 天天色一道本综合婷婷| 日本va网站| 99在线视频精品| 六月丁香婷婷在线波多| 色五月丁香五月婷婷五月成人网| 久久精品亚洲一级牲爱综合 | www.婷婷五月天| 男女99免费视频| 人人摸人人摸| 这里只有精品视频在线| 少妇性按摩无码中文A片| 色吧婷婷五月亚洲| 丁香影院五月综合| 久久 无毛。| 婷婷性爱影院| 99这里只有精品8| 麻豆123区| 欧美va在线| 91肏| 狠狠操狠狠插| 三十熟女| 月丁香久久久| 欧美五月婷婷| 華人性愛AV在線| 这里只有精品99www| 丁香美女主播视频在线观看| 国产va视频| 色综合婷婷| 中文人妻AV久久人妻18| 亚洲AV成人无码精品| www,超碰| 他改变了拜占庭| 激情综合网激情五月欧美| 99久久6| 九九激情综合| 免费看欧美成人A片无码| 天天操天天国产三级片处女学生妹| 黄久久久| 在线国产精品色| www色中色综合| 欧美色色色色色色色色色色| 婷婷免费精品视频| 狠狠色激情综合| 五月婷婷激情| 色色丁香| 丁香五月综合激情久久潮喷| 久久久久久激情| 一本道综合网| 日本丁香五月| 99这里只有精品| 色婷婷丁香AV综合| 男女99免费视频| 九九九九九九九热| 日本天堂爱爱| 丰满少妇猛烈A片免费看观看 | 26uuu| 99精品视频网| 日本英国美国欧美亚洲国产精亚洲日韩精品在线观看 | 色欲天天综合| 青青草日本亚洲| 婷婷射图| 久久色大香蕉| 日韩久久视频| 噜噜噜精品欧美成人在线观看| 激情五月天啪啪| 国产毛片精品一区二区色欲黄A片| 艹天天射| 啪啪婷婷五月天激情| 99色色| 日韩在线观看网址| 97操视频| 九九色视频| 人人干av| 丁香久久九九99| 五月丁香婷色| 翔田千里 50岁 无码| 久99久在线| 9热久久在线| 丁香六月色婷婷欧美| 婷婷亚洲欧美丁香五月| www.99视频| 97色图片中文字幕视频在线观看| 婷婷 激情 五月| 中文字幕不卡+婷婷五月| 五月婷婷欧洲| se色99| 婷婷五月综合久久中文字幕| www99精品日韩| 91狠狠色丁香婷婷综合久久| 久久激情五月婷婷| 亚洲性爱AV在线| 天天射影| 超碰色综合| 日韩三级视频一区二区| 男人综合网| 色吧五月| 婷婷成人AV| 天天操电影院色狼性av| 色五月情| eeuss人妻| 激情综合网五月丁香| 开心久久网婷婷| 色色色色色色97| 婷婷六月天| 五月6香色婷婷视频| 色女人久久| 免费看片在线观看| 嫩草AV久久伊人妇女超级a| 激情六月天| www.久久| 亭亭色色五月天| 激情av在线| 77777亚洲午夜久久| 九九在线免费观看| 激情五月婷婷| www.久久久久| 五月丁香婷婷婷激情爱爱| 亚洲99一级无嗎特制在线| 99视频在线观看欧| 天天综合精品| anquye伊人| 亚洲男女激情| 大香蕉伊人久久| 97操操操| 色婷婷av在线| 亚洲午夜电影| 国产免费av在线| 婷婷五月天天天| 中文字幕婷婷在线| 人妻无码精品一区| 91主播在线| 激情小说婷婷五月| YW无码| 五月婷婷六月丁香色| 婷婷五月天久| 五月丁香六月婷婷久久| 潮汕成人AV片在线| 色在线视频网2025| 91精品综合久久久久久五月天| 啪啪亚洲综合| 久久99免费视频| 婷婷丁香18| 91久久久久久久久久| 91色吧网| 国产熟女一区二区三区五月婷| 超碰在线精品| 91啪啪视频| 人妻久久久| 婷婷美女精品视频| 欧美色一级色| 夜夜操天天爽| 欧美69色| 99九九视频精彩在线| 色三级色三级| 尔尔AV一区| 99在线视频免费| 国产视频色色色色色色色 | 色五月婷婷91| 久久综合激情| 婷婷放心五日爱| 九九碰九九爱97超碰| 色综合久久天天综合网| 婷婷福利影院| z色五月播播久久| 日本综合色色| 97人人操人人干| 激情丁香久久| 91人操人人人操人| 久久久婷| 香蕉AV777XXX色综合一区| 色综合网综合| 九月丁香八月婷婷久久综合久97| 婷婷丁香花五月天| 亚洲精品色色| 国产午夜伦鲁鲁| 亚洲热久久| 丁香五月影视| 亚洲综合五月天| 国产资源91在线| 色色色区| 久久99网站| 丁香五月欧美色综合| 2015WWW永久免费观看播放| 97色婷| 激情 婷婷 丁香五月天| 狠狠色丁香婷婷| 色色操| 激情综合丁| www.maotanji.com| 99久久综合| 婷婷五月天六点丁香五月| 9|无码久久久久久| 亚洲字幕AV一区二区三区四区| www.henhengan| 丁香五月性| 久草婷婷在线| 操操国产| 国产一级婬片毛片| 99久久99视频| 国产精品久久久久久久久久| 终合激情网| 婷婷五月天堂网| WWW色色色COM| 欧美婷婷五月丁香| 久久婷婷色五月| 精品久久99码| www.婷婷激情网.com| 激情五月综合| 婷婷五月色網站| 色综合网上班开心婷婷久久| 禁片二区| 婷婷99|