欧美成人午夜精品久久久,国产?V天堂一区二区三区,欧美精品va在线观看,亚洲一区二区三区免费在线观看,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
返回資訊列表
秋霞午夜理论| 激情综合五月| 日韩1区2区| 99 热| 五月天激情网图片| 久久综合五月天| 色婷婷五月天激情| 欧美三级黄色片久久| 欧美色色色| OUMEIRIHANCHENGREN| 色婷婷丁香| 婷婷五月亚洲综合| 五月天另类图片区99| 丁香五月之久操视频| 天天撸夜夜爽| 婷婷五月综合欧美在线播放| 日韩三十六页| 国产亚洲精品久久久久久久久动漫| 99热久只有精品首页| 99精品无码| 99在线观看视频| 丁香亭亭久久| bbwcuckold精品熟妇| www.五月天| 色五月婷婷一二| av婷婷丁香 六月| 婷婷综合日本| 在线只有精品| 色色热| 色深爱五月| 天天日天天狠狠操| 五月激情丁香六月狠狠干| 九月婷婷综合| 六月婷婷色综合| 超碰国产在线观看| 亚洲色色色| 五月丁香婷婷成人网| 91视频综合网| 黄网在线免费播放| 婷色五月天| 美女视频图片久久91| 成年人丁香五月| 狠狠擼综合| 91丨九色丨大屁股| 成久综合视频| 天天做天天爰天天爽天天无遮挡| 亚洲一区二区无遮挡A片| 九九久久网| 天堂综合久| 激情综合五月色丁香婷婷| 九色地址91视频| 99热传媒| 大伊香蕉玖玖爱| 久久大香免费| 91婷婷在线| 久久婷婷五月综合啪| 五月天.com| wwwwww.色| 婷婷六月色情| 天天综合网在线| www五月天com| 男人天堂99| 婷婷五月天网| 综合网天天| 武则天精品久久| 26uuu成人网| 亚洲激情另类| 丁香六月婷婷久久综合| av人人干| 97碰碰九九视频| 97操资源婷婷| 婷婷六月啪啪| 五月婷婷激情色情网| 婷婷精品在线| 开心五月丁香婷婷| 五月丁香婷婷深深爱| 99性爱无码| 丁香五月亚洲婷婷| 五月 成人 婷婷| 综合99综合久久久久久久| 婷婷五月天亚洲综合网| www.99热| av在线色五月丁香婷区久| 丁香六月激情综合| 日日操人人操| 国产亚洲99久久精品| 婷婷狠狠干| 五月综合色| 五月婷婷黄色| 日韩无码亚欧无码| 狠狠艹狠狠艹| 欧美激情综合色综合啪啪五月| 婷婷射婷婷舔| www.99热| 五月婷婷啪啪啪| 99亚洲天堂| 色综合五月在线| 2025年最新亚洲在线欧美| 久婷婷五月激情| 色久激情在线| 五月丁香综合啪啪| 7777精品伊人久久久大香线蕉最新版| 久久久月丁香| 直接看的av| AV在线不卡播放| 无码橾| 色色色色色热| 丁香五月成人婷婷| 99久99久| 五月丁香婷婷综合激情基地| 狠狠干五月丁香综合网| 婷婷中文字幕| 天天色综| 五月婷婷丁香社区| 2015在线中文字幕| 开心五月婷婷激情网| 丁香六月婷婷高清| 五月天婷婷在线视频| 涩五月婷婷| 色婷婷丁香AV综合| 久久99成人性爱高清视频| 26uuu欧美激情另类| 久99久热只有精品国产99| 热99re| 色色五月天丁香| 成人无码髙潮喷水A片| 五月丁香成人网| 91狠狠综合久久| 婷婷五月丁香国产| 国产精品色色色色| caop视频| 伍月婷丁香花全集| 免费观看全黄做爰的视频| 蜜桃成语时李时珍 免费| 免费观看全黄做爰的视频| 久久婷婷综合五月| 五月天婷婷深深爱| 久久中文网| 天天肏夜夜肏| 五月天激情四射| 久久精品天| www.伊人天堂偷偷婷婷| 人人97碰| 天堂色婷婷| 六月激情婷婷| 9精品视频在线观看| 人妻自慰在线| 99综合网| 伦99热| 五月丁香色综合| 色综合婷婷| 五月天精品| 色色欧美色色色| 丁香六月婷婷综合激情欧美| 少妇搡BBBB搡BBB搡毛茸茸 | 亚洲AV在线免费看| 天天天摸夜夜夜玩| 99操九九网| 丁香五月婷婷深爱综合激情| 六月色婷婷| 婷婷丁香五月天操逼| 黄色片区子| 五月色色网| 激情婷婷久久| 天天肏夜夜肏| 婷婷五月天美女视频| 久久久久9| 色狠狠综合| 色婷婷久久综合| 色婷婷瘦婷婷日韩| 99免费在线视频| 婷婷香香五月| 亚洲AV日韩在线观看| 久久五月天精品视频| 五月婷婷 激情五月| 丁香六月婷婷综合激情欧美| 91久久久久久久91| 噜噜在线| 五月激情网络| www.婷婷五月| 桃色成人网| 99精品在线下载| 操逼视频网址| 五月丁香色情| 久久人妻高清中文| 天堂A∨在线| 风流少妇A片一区二区蜜桃 | 99久久久久| 99在线观看视频免费| 色播播五月天| 中文不卡一二三区| 日本一毛片| 五月激情综合网| 五月丁香综合啪啪啪啪啪| 欧美天堂久久| 婷婷五月欧美综合| 2016日日夜夜操| 五月天综合婷婷| 亚州激情在线视频| 亚洲综合999| 91超碰在线播放| 色综合久久五月| 婷婷干| 狼友超碰| 日本熟女内射| 色色成人網| 91黄址| 色五月丁香总合网| 大伊香蕉玖玖爱| 五月丁香香蕉| 丁香五月天电影| WWW.夜夜操.com| 成人五月天。COM| 久久色天堂| 天天日夜夜草进麻麻的子宫| 亚洲AV成人一区二区在线观看| 先锋资源996| 97操男人的天堂| 色综合天天| 99热这里只有精品3| 欧美日本不卡黄色片| 五月激情婷婷开心| 狠狠色丁香婷婷基地| 97精品人人A片免费看| 美女要搞搞天天搞搞搞网站| 噜噜五月天综合| 日本色婷婷| 丁香六月婷婷色XXXXX| 色99婷婷五月天| 思思热在线视频精品| 秋霞簧片| 丁香婷婷精品视频| av大香蕉| 婷婷精品视频| 丁香婷婷六月天| 免费色婷婷| www.婷婷五月| 99精品热| 五月丁香综合激情网| 色色综合无码| 婷婷91| 午夜丁香 婷婷| 国产精产国品一二三在观看| 婷婷五月色亚洲| 99精品在线观看| 一操久久| 亚洲一区二区无遮挡A片| 综合激情在线视频| 色色色色色色97| 色五月激情| 9热久久| 国内自拍97在线| 婷婷久久久| 日韩成人AV在线| 91九色欧美| 色色六月| 激情婷婷护士激情| 成人一区在线观看| 91人操| 婷婷五月天精品| 激情婷婷。| 香港九九六区八区99| 久久五月网| 五月 成人 婷婷| 婷婷色片| 五月婷婷六月色| 26uuu欧美日本| 91热爆在线| 91久久| 婷婷99狠狠| 色婷丁香| 亚洲综合在线视频| 久久婷婷五月综合色和| 1024日韩| 丁香五月婷婷色综合| 思思re99视频在线观看| 激情五月天 婷婷| 久8色色| 永久AⅤ1| 98永久精品| 激情五月天网站| 超碰国产在线观看| 色色激情| 在线成人国产| 激情综合区| 思思热天天看| 免费观看的AV| 久99久精品| 九九综合精品| 久久se 综合网 | 丁香五月婷婷88在线| 欧美久久网| 99热99精品| 国产白丝在线一区| 色婷婷丁香| 99re热视频这里只精品| 成人精品一区日本无码网 | 98色花堂98t.R| 色婷婷综合久久久久| 久久 这里只有精品1| 超碰9| 99re99在线看| 色香欲综合| 五月丁香激情综合| 色天使色综合| 国产99美少妇| 五月丁香六月婷婷色情| 伊人玖玖婷婷| 日本强伦片中文字幕免费看| 婷婷综合仓库中文| 久99久视频| 婷婷的五月天另类视频| 五月天亚洲最大成人| 丁香五月网址| 日日操夜夜爽白洁| 99色亚洲| 午夜天堂一区人妻| 超碰人人超碰| 色狠久| 能直接看的av网站| 日韩高清久久| 亚洲丁香五月在线观看| mmm1717.6dbm人人爱人人操| 婷婷五月丁香四射| 丁香久久AV| 国产综合婷婷| 一级片无码| 超碰国产在线| 99毛片| 色婷婷伊人激情在线观看| 51精品国自产在线| 五月婷婷AV| 五月婷婷激情网| 色在线99| 色情五月婷婷| 丁香五月停停av| 欧美久草在线日本一级特黄大片做受9在线观看韩国电影《两个女人》未删减-毛片 | 亚洲日日日| 丁香伊人五月色婷婷五十路| 碰碰女| 久草xx性爱视频| 天天肏夜夜肏| 亚洲综合视频网| 激情五月,婷婷五月,丁香五月| 色色色综合| 丁香性爱在线视频| 综合色天天| 色五月激情婷婷| 97se视频在线| 五月丁香六月婷婷色情| 欧美日韩中文国产一区发布| 伊人玖玖精品| AV网站免费在线| 9热在线视频| 久热中文字幕在线线观看| 色婷婷婷婷五月天| 婷婷狠狠狠爱| 丁香五月AV| 怡红院91a√| 丁香5月婷婷| 欧美情色一区| 五月婷婷视频28| 人妻丰满精品一区二区A片| 婷婷丁香综合在线| 五月天另类视频| 人人操碰| 4438激情网| 五月狠狠| 五月激情网站| 99这里只有精品|v| 都市激情五月婷婷综合| 玖玖婷婷色五月| 婷婷色六月| 婷婷开心激情| 人伦30P| 欧美久久婷婷| wwW天天干| 综合色99| 99热777| 日本大人久久| 久久精品五月天| 久久久宗合| 婷婷五月综合亚洲| 国产美女主播vip| 亚洲VA口| 激情网战码亚洲A| 色色五月丁香| 五月婷婷人妻| 99热亚洲| 色综合色色| 欧美亚洲999| 久久AAAA片一区二区| 激情五月天视频| 丁香五月婷婷影院| 久色网五月| 亚洲精品第一国产综合亚AV | 婷婷久久综合久| 全亚洲最大的婷婷五月天网站COM| 久久这里有| 性爱人人网| 成人五月天丁香| 欧洲永久精品| 美女被肏网站在线看| 综合性视频99| 九月丁香八月婷婷久久综合久97| 婷婷五月天激情开心网| 最新久久99视频网站| 五月丁香激情婷婷综合| 操日本99| 热99在线| 丁香色五月天| 人人人人人人人人人草| 日本一级淫| 色婷婷六月| 色色九九五月天| 五月色亚洲| 婷婷综合色播网| 一区二区成人电影| 成人一区在线观看| 无码少妇高潮喷水A片免费| 六月婷婷狠狠| 久久精品91视频| 少妇AB又爽又紧无码网站| 我要色综合五月婷婷| 99网| 99热最新网址| 人人色婷婷| 天天噜天天爱| 狠狠搞五月天| 99爱99操| 97超级操操| 国产片XXXXA片国语对白| 婷婷久久免费看| 国产精品色婷婷久久久精品| 五月婷婷AV| www,婷婷| 狠狠干五码| 婷婷色婷婷| 久久九⑨| AV变态另类一区二区| 婷婷成人五月天成人文学| 香蕉久久六月| 热久久色| 丁香色影院| 日韩久久成人| 日本精品人妻无码77777| 淫荡综合网| 成人网站免费在线播放| 久久在线视频免费观看| 综合在线丁香五月| 婷婷AV丁香| 粉嫩av蜜桃av蜜臀av| 99久热| 九九色逼| 六月婷婷av| 亚洲无码色色| 婷婷精品在线| 亚洲五月天伊人| 开心六月丁香五月婷婷| 成人午夜天| 99视频自拍| 99热在线精品观看| 久久女婷| 色九区| 久热 91| 99热资源在线| 久久99网址| 99久热精品在线| 99啪在线视频| 欧美人人女女精品综合五月天| 26uuu在线观看| 九九色人| 五月天婷婷影院| 看全色黄大色大片| 秋霞性爱AV| 亚洲AV人人操| 五月在线| 丁香五月五月婷婷欧美大香蕉| 26uuu欧美| 婷婷五月花| 五月婷视频在线| 这里只有精品视频| 色五月综合网| 国产精品成人AV在线观看春天| 思思热在线视频精品| 婷色成人| 久久 视频这里只有精总| 久热这里只精品| 26uuu欧美日韩| 开心亚洲久久开心| 激情小说五月欧美亚洲丁香| 狠狠狠狠狠狠狠狠狠狠狠色宗合图片| 五月天全国最大成人网| 99丁香五月婷| 人人操人av| 五月婷婷六月丁香综合| 欧美狠狠地| 婷婷五月天综合久久| 99色一| 色婷五月天激情| 在线成人视频免费| 五月综合激情婷婷六月色窝| 热久久这里只有精品| 亚洲色碰| 无码少妇高潮喷水A片免费| 丁香六月欧美| 婷婷亚洲在线| 激情九月婷婷| 天天舔天天摸天天透| 色 丁香婷婷| 一起草性爱不卡视频| 婷婷五月综合在线视频| aⅤ79成人片| 亚洲色色图片| 婷婷丁香五月综合| 成人精品一区日本无码网 | 日本色色网站| 无码髙清| 热久久这里只有精品| xxxx久| CHINESE熟女老女人HD视频| 婷婷五月天久久久| www狠狠爱com| .操區COm| 超碰在线9| 麻豆AV一区二区三区| 久久97| 伊人大香久久| 五月丁香婷婷五月色| 色婷婷成人在线| 人人干女人| 性做爰1一7伦| 超碰在线免费| 亚洲这里只有精品| 99热国品| 亚洲婷婷五月天在线激情综合网| 这里只有精品99视频| 丁香六月 人妻| 婷婷五月天BBw| 色五月丁香五月| 日韩有码久久| 亚洲第一色区| 思思久久99热只有频精品66| 综合 蜜月 婷婷| 色婷婷成人丁香| 久草热在线视频| 91精品久久久久久久久久| 九九色网| 天天天添天天操| 色五月首页| 超碰色女人| 九九性视频| 中文字幕日产A片在线看| 日韩限制级大尺度黑料泄密大尺度视频一区二区在线观看 | 天天摸人人摸| 亚洲 在线 另类| 九九成人精品免费视频| 五月丁香六月停停| www.99在线| 天天摸色吧天天摸色吧| 丁香五月Av| 91综合在线视频| 婷婷丁香十月| 六月色婷婷综合影视| 97人人干| 天堂色婷婷| 懂色av蜜臀av粉嫩av永陈冠希| 97在线视频观看| 超碰91在线| 五月天婷婷基地综合网| 丁香五月婷婷综合网| 超碰99久久| 九九热婷婷| 五月天亚洲色| 色五月婷婷大香蕉| 婷婷在线综合| 99热精品10| 五月丁香婷婷免费视频| 国产精品久久久久久喷浆| 伊人色五月| 欧美五月婷婷| 人人干女人| 五月花婷婷| 狠狠干综合网| 夜夜操夜夜操| 国产精品-第3页-91JQ就要激情网91JQ5.JQJQ926.XYZ | 五月天综合| 91一道本| 91九色视频| 99久久99视频只有精品| 婷婷久久精品| 婷婷永久在线| 五月天社区| 操射国产日本| 五月婷婷婷综合网| 深爱五月激情| 久久久久99精品成人片| 欧洲色| 亚洲成人乱码av网站| 九九热精品| 精品综合久久久久久五月天| 欧美激情五月天| 日操五月婷| 一本色道久久88加勒比| 国内裸舞二区| 久久天堂女人| 色播六月| 99色看| 高清国产一级婬片a免费| 精品欧美性爱超级爽| 无码啪啪| 伊人久久大香线蕉精品| 五月丁香久久综合精品| 中文字幕人成乱码在线观看| 五月婷婷五月丁香综合| 伊人久久婷婷| 深爱激情婷| 人妻人人操| 91Chinese在线| 激情综合网激情五月网| 久99999热视频在线观看免费| 亚洲精品乱码久久久久久按摩观| 91超级碰碰碰| 五月天婷婷高清无码| 九九九激情综合| 激情五月天小说网| 婷色成人| 丁香五月综合激情啪啪| 操操自拍| 五月丁香色婷婷熟女| 8050一级网| 超碰在线观看9| 狠狠干天天内射| 婷婷五月天AV在| 色色色网站| 六月份天丁香婷婷| 久久有码| 大香蕉啪啪啪| 九热电影av| 成人做爰A片免费看视频| wwxx日本| 丁香九九九九| 人妻中文av| 无码少妇高潮喷水A片免费| 五月丁香六月婷婷亚洲激情综合| 丁香五月婷婷社区| 八戒青柠影视剧在线观看| 99这里只有精品8| 国产精品久久久久9999小说| 99视频这里只有久久精品 | WWW,五月| 五月婷婷之综合激情| 综合色吧| 精品无码片| 激情丁香五月婷婷啪啪| 色色丁香五月天社区| 六月婷婷综合| 亚州婷婷五月激情综合| 99视频| 99亚洲色| 婷婷五月天亚洲图片| 欧美六月婷婷| 色色五月天 亚洲| 99热官网| 五月丁香大相交| 亚洲激情婷婷| 99热在这里只有精品| 精品婷婷| 91肏| 五月丁香色婷婷色| 婷婷丁香五月激情密臀av| 色五月天在线观看| 老司机伊人| 大香蕉久久久久| 天天射综合网夜夜操| 99色精品| 996精品热视频| se.久久视频在线观看| 亚洲中文乱字字幕在线永久| 99精吕视频在线观看了| 婷婷性爱| 成人婷婷五月天| 丁香五月色综合色播五月| 亚洲成人无码免费| 91婷婷五月丁香碰| 97操碰在线视频| pom538精品视频| 黄久久久| 色色色色综合网| 亚洲av网站| 欧美性二区| 丁香五月在线视频| 少妇口诉沐足视频播放器网址| 日本视频不卡123区| 91男同| 色色激情五月天| 一本色道久久综合狠狠躁小说| 99re热视频这里只精品5| 免费成人va| 丁香五月六月婷婷自拍| 久久免费9| 99久热在线精品| 久久九九视频网站| 天天日,夜夜爽| 五月婷婷丁香综合| 色五月大| 激情五月婷婷五月| 欧美叉叉叉BBB网站| 丁香六月婷婷| 91中文狠狠综合| 东北熟女视频99| 一起草无码| 五月天五月色婷婷综合| 99色婷婷视频| www.五月天性.com| 天天cha成人综合网| www。88热在线视频免费观看| 影音先锋一区| 天天做天天爱天天爽在| 综合综合色色| 婷婷六月丁| 九九色精品| 精品一二三区久久AAA片| 婷婷五月花| 99久久終合| 色五月激情综合| 激情文学天天| 操操操Av| 五月天激情国产综合婷婷婷| 国产午夜精品AV一区二区麻豆| 亚洲99综合| 天天揷综合网| 操逼六区| 婷婷丁香五月天亚洲| 色五月视频,小说| 婷婷五月丁香综合激情| 五月丁香激情综合| 日本一級黃色一級片| 激情内射人妻1区2区3区| 亚洲人妻av| 99婷婷综合| 成人噜噜网| www.婷婷五月| 欧美黑人巨大性生话| 4438亚洲欧美| 六月丁香深深爱综合网| 玖玖在线资源视频| 久99久在线观看| 色色色香蕉五月婷| 五月丁香六月久久| 99色色视频| 成人五月天综合网| 五月天综合缴情网网站0| 丁香五月天在线直播观看| 日韩欧美骚货| 色婷婷成人做爰A片免费看网站 | 丁香六月综合激情| 丁香六月啪啪| 久久婷婷丁香视频网| 五月色在线| 五月婷婷激情久久| A1片久久| 久久久精品人妻录| 国产毛片欧美毛片久久久| 丁香六月综合| 99久久成人| 99久久婷婷国产综合精品草原| 日本少妇裸体做爰高潮片| 五月天丁香花婷婷| 五月天激情网页| 久久97久久99久久综合欧美| 久七香蕉| 五月激情天| av在线不卡播放| 婷婷五月天激情五月天网站| 色女人久久| 中文字幕激情综合| Jh7Uf088VHafNm| 91丨九色丨国产打屁股| 又大又粗九一在线| 精品综合久久久久久五月天| EEUSS鲁片一区二区三区| 色色国产| 欧美噜噜免费观看| 婷婷久久内射| 九月激情婷婷丁香| 99视频精品| 色婷婷综合亚洲| 亚洲精品视频电影| 91日韩在线| 99久热这里只有精品| 99综合99| 五月婷婷开心六月激情小说| 久热九九| 久热久色| 99极品视频| www99热| 97成人丁香婷婷| av 一区三区四区| WWW.五月天9999| 欧美综合婷婷欧美综| 97婷婷狠狠| 午夜色婷婷| 性色欲情 网站| 国产xxxxx在线观看| 久久婷婷丁香| 黄网在线免费观看| 最新日本A片| 日日干五月天婷婷| 天天网站天天爽| 五月天婷爱综合| 婷婷噜噜| 色五月激情| 97色色色| 2025超碰| 丁香五月激情月| 久久久激情视频| 色五月婷婷激情综合网| 婷婷亚洲综合| 91操色| 天天夜夜六月丁香五月婷婷老师| 欧美综合激情五月丁香| 中文字幕婷婷五月天| 婷综合| 99热20| 夜夜做夜夜愛| 亚洲情a| 色五月大| 五月综合色| 久综合4| 久草五月天| 婷婷色五月婷婷姐妹| 香蕉综合网| 啪啪激情网站| 日本狠狠色| 亚洲男女激情| 国产首页在线| 99久在线精品99re8| 中文字幕在线免费| 五月天婷婷激情小说| 精品综合久久久久久五月天| 婷婷五六日| 色色亚卅| 亚洲成人AV在线观看| 五月婷婷人人人操| 亚洲中文字幕在线观看| www.99视频| 99色视频| 伊人久久大香线蕉AV最新午夜| 葵花AV在线| 天天性视频| 色丁香婷婷| 120分钟婬片免费看| 丁香婷婷大香蕉| seav天堂| 99碰超| 激情五月综合网最新 | 五月丁香激情综合| 婷婷伊人綜合中文| 五月天婷a在线| 五月综合婷婷五月| 99这里有精品视频| 9精品视频在线观看| 婷久久| www色五月天| 丁香五月天激情综合| 26uuu最新地址| 色吊丝99| www.夜夜夜| 翔田千里 50岁 无码| 五月天播播| 色色色9 9 9| 2025天天爽天天摸| 色五月综合网| 99热99| 五月天婷婷丁香蜜桃91| 婷婷五月激情天| 婷婷性爱| 婷婷久久五月丁香| 综合色激情| 五月天婷婷基地| 狼人婷婷久久| 五月婷婷色激情| 91碰碰| 在线看av| 欧美爆乳一区二区三区| 1区2区视频| 伊人在线视频| 一起草无码视频| 原琪琪色影院| 玖玖激情网| 激情婷婷丁香色五月| 夜夜大香蕉婷婷丁香| 久久久婷| 激情小说五月天| 91肏| 日韩大片艹艹| 色婷婷综合网站| 日本人妻伦在线中文字幕 | 国产九九一区二区三区| 开心五月天私房婷婷| 六月婷婷激情小说网| 国产精品色婷婷99久久精品| 另类激情综合| 九九www| 天天操夜夜橾| 大香蕉丁香五月| 思思热再线视频| 国产人妻777人伦精品HD| 九九干视频| 成人五月丁香花| 五月天三级| 九九黄色网| 五月丁香美女| 亚洲免费婷婷| www99热| 欧美婷婷成人| 五月亭久久无码视频| 六月亚洲婷婷6月中文字幕| 热久久视频99| chaopengdaxiangjiao| 色欲av伊人久久大香线蕉影院 | 久久3p| av在线免费网站 | AV亚洲在线| 在线可以看的av网址| 久久精品人妻| 少妇丁香婷婷 | 伊人综合网站| 亚洲 在线 性爱 | 色yeye欧美| 俺去也综合| 久久图色4| 亚洲va综合va国产va中文| 精品少妇人妻AV无码专区偷人 | 亚洲无码99| 色五月综合婷婷久久综合婷婷久久综合婷婷久久综合婷婷久久 | AA片在线观看视频在线播放| 美女网黄| 色五月 五月婷婷| 国产欧美婷婷| 国产视频色色色色色色色 | 五月天婷婷爱| 天天操天天干天天日| 热99玖玖99玖玖99九九| 亚洲av无码精品色午夜| 婷激情五月| 婷婷综合国产| 五月天婷婷久久| 男人天堂99| 思思精品视频| 婷婷五月色影视先锋| 香蕉久久国产AV一区二区| 最新色色五月天| 色婷婷亚洲婷婷| 丁香五月香蕉在线| 亚洲无AV在线中文字幕| 日本色婷婷| 26uuu欧美日韩| 亚洲综合丁香五月| 丁香99| 久久久ww| 青青操avbb| 亚洲正能量欧美| 婷婷色成人| 免费播放片大片| 久操大香蕉| 久久人妻高清中文| 九月婷婷综合网| 色五月天婷婷| 久久思思热视频| 天天操天天曰天天射| 五月丁香成人小说| 日本精品在线噜噜噜| 狠狠插狠狠插| 99亚洲色| 日本精品99网站| 丰满少妇猛烈A片免费看观看| 大波美女VA网站| 中文av在线观看| 色婷婷电影网| 五月天激情久久| 蜜桃婷婷丁香五月天狠狠久久综合| 人妻体体内射精一区二区| 久久五月婷婷开心网| 99riAV成人在线视频| 激情综合五月婷婷六月丁香| 性爱人人网| 国产精产国品一二三在观看| 亭亭社区五月天| 五月综合色| 久久区区一二三av| 97人人草| 婷婷色情五月| 色欲人妻综合aaaaaaaa网| 色999五月色| 亚洲va欧美va国产综合久久久| 色综合婷婷99| 99热97| 可以免费看AV网站| 丁香六月婷婷激情综合| 全部老头和老太XXXXX| 蜜臀av无码久久久久久久久| 无码免费人妻A片AAA毛片西瓜| 日撸夜撸日操| 激情五月天丁香| 91刘玥视频在线观看| 久久性操| 五月天六月婷| 就爱啪啪婷婷| 久久综合伊人77777蜜臀| 久久曰曰| 99只有这里是精品| 精品国产AV色一区二区深夜久久| 天天综合永久| 久久婷婷视频| 欧美三级视频| www.激情| 色区域网站视频| 久久亚洲A| 综久久久| www.色五月| 五月激情综合网| 可以直接看的AV网站| 第四色色六月色综合| 99re热在线观看| 色狠狠综合| 日本五月婷婷久久久六月丁香| 亚洲天堂玖玖| 成人精品视频99在线观看免费| 五月婷婷综合在线视频小说| 97人妻碰碰碰久久久久-最近国语高清| 亚洲妇女熟BBW| 26uuu欧美日本| 久久大香蕉同僚| 99热精品在这里| 天天爽天天弄| 狠狠干综合| 狠狠99| 97在线日本| 丁香五月婷婷少妇| 色婷婷综合久久| 亚州美女| 超碰成人免费| 五月天色丁香| 五月天精品| 激情婷婷五月社区| 日本特黄aaaaa| 97人人射| 日韩黄黄| 铁牛TV人妻| www.99精品视频| 这里只有精品96| 免费观看全黄做爰的视频| 久久超级碰碰| www.久久婷婷| AVV黄| 激情小说婷婷| 深爱五月婷婷| 婷婷五月丁香五月| 国产真实乱了老女人视频| 激情网五月天| 五月丁香欧美综合| 色人久久| 久久99精品视频| 99网| 天天干天天av天天射| 91丨九色丨大屁股| 久久精品国产一区二区三区四区| 久久视频婷婷视频| 亚洲综合激情五月久久| 99人妻碰碰碰久久久久视| 99久久精品视频女神1| 97色啪| 狠狠综合久久| 色激情综合狠狠婷婷| 久久女婷| 天天做天天爱天天爽在| 婷婷五月激情四月综合| 人人人操| www.99热国产| 九九机热| 五月丁香久久| 欧洲亚洲精品| 五月永久激情| 狠狠xx| 日本超碰在线| 无码免费人妻A片AAA毛片西瓜| 久久机热/这里只有精品| 另类精品视频在线观看| 极品另类| 日日干日日| 99在线视频操999| 婷婷五月无码| AV色五月婷婷| 极品五月天| 九热免费视频| 可以免费观看的AV| 92久久久| 久久99网站| av在线色五月丁香婷区久| 久久这里只有精品视频26| 一个色的综合| 丁香五月天成人网站| 伊人婷婷五月天| av人人干| 丁香五月欧美婷婷| 九九五月天| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇 | 26uuu91| 五月婷婷久久大香蕉| 亚洲综合视频网| 国产精自产拍久久久久久蜜| 国精产品一区一区三区免费视频| 97精品人人A片免费看| 91av传媒高清在线视频网| 91在线操逼视频| 五月丁香综合在线| 手机激情网| 99热日韩| 亚洲中文字幕翔田千里| 婷婷激情四射五月天| 9精品视频在线| 五月六月激情婷婷| 色婷久| 国产精品天天狠天天看| 丁香亚洲色综合| 久久久这里都是精品| 青青热久久综合| 五月天婷婷在线视频| 五夜婷婷| 91人无码久久久久久| 婷婷五月天AV在线| 人妻肉射免费观看| 婷婷五月情| 亚洲天堂婷婷| 色五月婷婷自拍| 色婷婷五月综合在线| 26UUU欧美| 日韩精品AV一区二区三区| 以及AA大片看看| site:pzdcoin.com| 四月婷婷五月丁香| 六月五月天婷婷涩播在线| 色五月中文字幕| 99亚洲欧洲| 五月色丁香| 久久久久久久久久91| 五月婷婷在线视频免费观看| 天天操天天日天天爽| 另类激情首页| 琪琪色网在线| 五月丁香六月婷婷,婷| 五月丁香久久激情网| 日本熟女一区二区| 色播五月婷婷| 日韩无码专区| 99色| 免费成片在线观看| 六月五月婷婷| WWW.桔色成人.COM| 色色操| 五月婷婷色影院| 综合精品99| 亚洲成人va| 色吧婷婷五月亚洲| 五月丁香婷成人网| 四色99久久| 另类亚洲2| 91丁香五月| 天天操五月天| 六月丁香激情网| 激情影院69| 中文字幕 久久9999| 综合另类视频| 五月丁香少妇| 婷香五月激情视频| 99ri视频在线观看| 久久色这里只有精品| 色色a| 婷婷视频网| 婷婷天堂综合| 亚洲黄色精品| 99在线资源| 亚洲精品视频电影| 99九九视频精彩在线| 综合欧美五月婷婷| 另类激情五月| 666555。COm毛片| 99热精品一区| 亚洲av| 国精产品久久| 色播jjjj| 亚艹艹| 开心久久网婷婷| 五月丁香六月婷婷欧美综合| 嫩BBB槡BBBB搡BBBB| 在线另类视频| 五月丁香婷婷色色| 热99国产精品| 99视频自拍| 五月丁香啪啪激情| 久久99久久99精品,久国产,久久精品免费,99久在线,久久久久国产精品免费网站,9 | 久久精品婷婷| AV大香蕉| 婷婷色网| 狠狠狠狠狠狠狠狠草| av大香蕉| 激情五月丁香婷婷夜夜操| 外国碰视频网站97| 午夜成人AV在线| 五月天六月色| 六月婷婷狠狠色在线观看| 色吧五月婷婷| 成人视频九九| 中文字幕1区2区。| 午夜婷婷五月天| 亚洲AV无码一区二| 99在线热| 丁香六月狠狠| 久久精品凹凸分类| 五月婷婷六月丁香色| W色综合| 五月婷婷免费在线视频| 色五月婷婷丁香凹凸| 五月天婷婷丁香视频| 国产毛片精品一区二区色欲黄A片| 超碰成人免费| 成人国产欧美大片一区| 久婷婷五月丁香在线观看| 91狠狠综合久久久久久| 久久久久8888| 亚洲天堂热| 日韩乱玛久久| 97人操人免费视频| 亚洲黄色影视| 夜夜撸天天日| 99国产99| a在线观看| 全部老头和老太XXXXX| 六月丁香久久| 一级黄在线| 久热免费| 噜噜噜噜噜久| 伊人婷婷大香蕉在线| 色天天综合成人网| 2015超碰| 一级黄色影片| 天天日天天爱天天噪| 五月婷久久综合| 大香蕉精品视频| 成人婷婷五月| 26.uuu丁香五月婷婷| 五月丁香激情四射| 六月丁香婷啪射| www.9797国产| 无码人妻AV久久久一区二区三区 | 天天干肏夜夜| 97干在线看| 中文字幕成人| 欧州色色| 伍月婷丁香婷| 中文字幕欧美日韩VA免费视频| 亚洲99视频| www.99热视频| 亚洲AV成人在线观看|