欧美成人午夜精品久久久,国产?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
返回資訊列表
嫩草视频。| 国产精品天天狠天天看| 日本精品。999| 在线看九一V图片| 婷婷五月丁香基地| 国产激情综合五月| 69久久99精品久久久久| 亚洲日比视频| 亚洲va综合va国产va中文| 人人综合五月人人婷婷| 就要去操亚洲成人精品五月天丁香婷婷| 中文成人在线| 六月丁香五月天| 六月丁香综合网| 成人综合AV| 欧美精品18| httpwww色com日本| 91久久婷婷| 婷婷五月天激情基地| 婷婷丁香五另类网站| 成人片黄网站色大片免费毛片| 天天做天天爱| 亚洲欧美国产高清vA在线播放| 午夜成人AV在线| 91妻人人爽人人看片| 丁香六月婷| 五月天大香蕉| 99久久婷婷五月综合| 五月天久久久| 色播播五月天| 日日噜噜夜夜狠狠久久丁香六月| 国产精品成人AV在线| 婷婷丁香五月天色区| 婷婷五月大香蕉| 色九四色| 九色亚洲| 久婷婷视平| 开心激情综合| 日本99视频| 欧美人妻一区二区| 五月天亚洲综合网| 天天色视频| 26uuu国产精品| 999婷婷综合| 综合玖玖偷拍| 欧美乱码国产一级A片| 国产精品成人网址| 热婷婷在线视频| 亚洲视频在线观看| www.超碰97| 丁香婷婷六月| 五月色综合| 日本久久精品| 99精品国产在热久久| 99久久综合| 玖玖婷婷五月| 丁香婷婷啪啪| 99久久99久久综合| 青柠影视免费高清电视剧| 99re这里| 久久9热好| 精品无码久久久久久久久| 99精品视频网| 九九操屄| 久热99热| 九九热视频网站| 免费视频舔| 综合色图区| 超碰人人操在线| 狠狠人妻色综合| 9999热在线免费观看| 91大操| 九九热青草| 国产黄大片在线观看画质优化| 狠狠爱综合网| 欧美性爱专区| 色综合久久天天综合网| 午夜性爱影视一区77| 九九热思思热| 播五月开心婷婷欧美综合| 色色色热热热| 丁香六月激情| 婷婷激情五月天桃花网| 色五月偷偷| 久久电影4399| 手机激情网| 乱轮A片| 婷婷五月丁香成人| 天堂综合久| 五月天丁香综合| 丁香五月婷婷激情网| www.超碰在线| 久9热视频在线| 日韩av高清| cao久久| 亚洲碰碰碰| 97操碰视频| 99re热| 日本激情综合| 天天爽天天操| 在线看黄色| 五月婷婷久久综合| 丁香六月情| 激情久久五月天| a在线观看| 字幕网AV中文字幕| 91精品91久久久中77777| 91免费在线视频6| www.六月丁香看AV| 99视频这里有精品| 婷婷五月天在婷| 天天爱天天操| 天堂在线观看视频| 久热2025无码| 岛国AV网| 九九九九九九综合| 天天色天天爱天天爽| 日本久久精品18| 色色五月婷| 在线色婷婷| 五月丁香影院| 婷婷婷久久久| 日韩婷久| 五月天精品视频| 五月婷婷激情网| 国产成人精品一区二三区熟女在线| 香蕉中文在线| 日本激情五月天‘| www久久久久久久久久久| 97九色视频| 激情综合网,五月| 精品久久这里热66| 五月香蕉网| 婷婷丁香第一页| 日本系列_4页_777FP| 色综啪啪网| 激情小说五月天社区丁香| 九九机热| 亚洲无码影片| 99热99热| 超碰色碰碰| 性色欲情 网站| 欧洲色| 成人国产欧美大片一区| 精品人妻伦| 性欧美日本| 久久久五月天婷婷成人网| 色热久资源| 丁香激情五月| 中美月韩免费A片| 婷婷五月天激情基地| 亚洲视频在线网站| 亚洲五月天狠狠| 蜜臀AV在线观看| 成人免费在线电影| 婷婷久久亚洲| 九九久久久综合| 成人婷婷色五月天| 伊人婷婷福利网| 婷婷激情五月吧| 日本片日本片祼观看网站在线看中文版网页在线看 | 婷婷四色五月| 一级韩国产精品毛| 六月丁香中文字幕| 丁香五月婷婷久久综合激情网| 精品色色| 婷婷色中文字幕| 国产精品色婷婷99久久精品| 一区视频网站| 六月婷婷综合| 五月激情偷拍婷婷| 成人VAV视频在线观看| 久久性爱视频这里只有精品| 婷婷综合色网| 五月婷婷色播| 888久久久| 这里只有精品无码| 99热e| 97操碰碰无码视频| 婷香五月网在线| 婷婷精品| 五月色天情| 九月av在线| 天天爽天天干| 丁香五月天激情婷婷丁香六月| 99久热| 亚洲成人色五月天| 97狠狠碰| 婷婷久久综合| 六月丁香激情综合| 99热国内精品| 婷婷在线网| 激情小说视频图片网| 亚洲欧洲小视频9| 久久五月天网| 五月欧美色色五月| 99久精品视频| 香蕉人妻AV久久久久天天| 欧美激情-区二区三区| 色五月婷婷伊人| 三级三久久线久久99久目本WW| 色综合久久天天综合网| 五月丁香六月激情| 五月丁香婷婷色| 激情婷婷人妻| 桃色激情五月天| 日本三级中国三级99人妇网站| 去干网av| 丁香婷婷黄网站| 中国女人内射6XXXXX| 天天操天天爱天天玩| 9热在线观看| 五月色丁香| 91久久久久久久| 久久AAAA片一区二区| 天天日本夜夜谢| 少妇激情基地| 日韩欧美一道四区中文字幕| 色综合视频在线| 亚洲无码成人| 五月激情小说网| 99热国品免费| 另类图片激情五月| 丁香五月婷婷国产在线| 婷婷五月天成人| 人人爽欧美婷婷久久久五月丁香| 婷婷色五月综合丁香| 激情五月天.色网| 九九精品热| 色五月第四色| 婷婷色系婷色| www.五月天婷婷.com| 午夜天堂一区人妻| 99精品视频网| 九九久久99精品免费观看www| 色婷婷五月天成人网| 五月丁香综合在线| 久久综合色情网站| 亚洲蜜乳AV| 国产真人做爰视频免费| 狠狠干夜夜干| 色九网| 天天做 天天爱| 久久五月天合网| 久久久久99精品成人网站| wwwss在线观看| 色久五月天| 一个色的综合| 婷婷五六日| www超碰| 五月丁香久久综合色| 97干干干丁香| 日本久久激情| 久久看九九90| 婷婷五月天大香蕉在线视频观看| 97超级啪啪在线观看| 色婷婷99| 激情五月天婷婷| 99欧美| 99九无网码| 99热亚洲精品| 激情五月丁香婷婷| 99人妻碰碰碰久久久久视| ji'qi'luan'ren'lun| www.五月天。com| 99热这里只有精品国产免费| 日本www五月婷婷| 伊人影音无码一区二区三区| 久久婷婷五月国产激情综合片| 黄色成人网站在线播放| 亚洲蜜乳AV| 色色色五月| 人人肏逼视频在线一区二区| 婷婷五月激情综合网| 日本色色色色色色色色一色二色| 97成人操| 91日韩美女被插视频| 91av色色乱视频| 99爱在线| 五月丁香婷婷成人版| 大香蕉 伊人夜| 99久久.www| 91人人操| 亚洲国产精品五月天| 开心五月婷婷激情| 五月天婷婷色播| caopeng97日韩| 伊人五月网| 婷婷五月天激情五月天| 五月天成人综合| 亚洲综合九九| 五月婷婷综合激情小说| 九九干视频| 五月婷婷综合激情网| 欧美欧盟性爱网| 这里只有精品日韩精品| 五月丁香六月欧美综合网站| 色五月丁香婷婷| www.色婷婷.com| 丁香五月婷婷综合啪啪| 香蕉久操| 狠狠色噜噜狠狠狠狠综合| 97av在线视频| 99热99热不卡| 亚洲无码播放| 亚洲天堂制| 激情综合网色五月| 奸逼视频| 五月丁香 啪啪| 综合网色| 丁香五月天婷婷91| 另类小说五月天综合| 99er精品视频| 大香蕉综合在线| 真实的国产乱XXXX在线91| 久re在线| 亚洲五月综合色播| 伊人超碰| www.99热精品99.com| 五月丁香六月婷婷啪啪| 丁香五月天的网址。| www..999热久| 91成人看| 性爱电影科技贸易有限公司| 欧美 日韩 成人在线| 久热伊人| 99riAv1国产在线观看| 丁香狠狠| 日本色色色| 操日本99| 婷婷九月激情| 九九视频这里只有精品| 影音先锋综合网| 婷婷五月综合欧美在线播放| 色综合久久天天综合网| 操逼电影免费看| 91色婷婷综合久久中文字幕二区| 人人干人人看| 97久久综合网| 五月天色综合服务平台| www.夜夜操.com| 婷婷自拍| 十月丁香九月婷婷综合| 亚洲第一成人无码A片| 伊人久久婷| 狠狠狠夜夜夜| 丁香婷婷综合激情五月色| 黄色成人AV在线| 婷婷激情五月吧| 久久婷五月婷| 日韩色久| 9l视频自拍九色9l视频自拍九色9l社区| 性爱激情五月| 婷婷久久欧美| 亚洲综合草草| 99热精品在这里| 亚洲精品国产A久久久久久| 综合大香蕉| 91免费看片| 99在线精品视频免费观看20| 91碰免费视频| 色5月婷婷| 色域五月婷婷丁香| 1999天天操夜夜操| 97超级碰碰碰| 久久超级碰碰| xfplayav在线| 99精品久久| 超碰AV在线| 亚州操操| 五月婷丁香| 91人人操人人| 五月天色色激情综合| 六月丁香啪啪啪| 黑人熟妇一区二区三区| 毛片新网地| 丁香婷婷色情| 日韩成人AV在线| 免费啪啪亚州视频| 亚洲热视频在线| 色爱综合网| 色色综合网站| aaaaaa片| 婷婷五月天 丁香五月天 裸体| 九九视频精品在线免费| 就爱日五月天| 操日视频| 伊人丁香六月婷婷| 色综色网| 国产激情婷婷| 九月婷婷久久久| 伊人久久艹| 五月丁香猫咪久久婷婷综合视频激情四射网入口 | 奇米四色五月天| 丁香五月天综合网| 波多婷婷久久| 热99在线精品| 久久er九九| AA片在线观看视频在线播放 | 久草婷婷| 久热精品视频| 色99视频| 色色五月婷婷网| 五月丁香六月激情综合欧美| 色热久| 开心五月婷婷| 99亚洲色色| 狠狠色97| 色五月丁香五| 99九九在线观看免费| 丁香 婷婷 激情 综合 五月| 天堂成人A片永久免费网站| 婷婷综合另类小说| 大香伊人婷婷影院| 亚洲精品视频在线播放| 79精品视频在线观看,| 色色色99| 婷婷五月乱交换| 日日撸夜夜操| 天天日天天舔| 99福利视频| 站长推荐无码播放| 99久久国产综合精品五月天喷水\| 婷婷五月天视频免费在线观看| 五月丁香日本一抹本| 色色色九九九五月婷婷| 婷婷激情综合网| 婷婷五月天激情综合深爱| 六月丁香停| 色久综合| 五月丁香天堂网| 九九无码视屏| 无码激情精品色婷婷久久久久| 99色.com| 影音先锋五月婷婷| 大香网伊人久久综合| 操逼五月天| 九九香蕉网| 五月婷免费视频久久久| 日韩人妻无码专区| 69综合在线| 国产亚洲成AV人片在线观黄桃| 亚洲激情综合| 久久这里只| 色国产五月| 97九色视频| 婷婷丁香五月天综合激情| 婷婷五月色综合| 第四色首页| 色丁香在线视频| 久久综合五月天| 久xxxx| 四川女人毛多水多A片| 六月婷婷综合激情| 五月天婷婷视频小说| 热这里| 久久综合这里只有精品1| 99视频在线播放大全| 欧美韩国日本| 丁香五月激情五月| 九月婷婷久久| 五月花婷婷| www.五月丁香| 激情五月婷婷五月| 色狠狠综合| 亚洲综合成人网| 97色操| 丁香五月天色婷婷| 狠狠狠狠狠| 一级黄色尤物综合视频手机在线观看| 色永久| 久热这里只有精品视频6| 狠狠艹狠狠艹| 婷婷丁香成人在线视频| 丁香五月AV综合激情| 五月六月丁香婷婷在线观看| 五月丁香婷婷综合激情基地| 天天操夜夜玩!| 五月丁香拍拍激情综合| 97人碰人操| 成人精品视频99在线观看免费| 欧洲色色| 国产精产国品一二三在观看| 精品视频二级九九| 日韩不卡123| 五月婷婷激情| 日本片日本片祼观看网站在线看中文版网页在线看 | 天天色天天日| 国产真实乱了老女人视频 | 午夜婷婷丁香| 婷婷五月天激情综合婷婷五月天激情综合| 天干干夜夜操| 五月婷婷激情久久| 婷婷亚洲日本| 狠狠婷婷爱| 最新亚洲色色网| 99青青草| 五月久久婷婷| 国产99久久久国产精品免费看| www狠狠| 欧洲色区| 五月丁香六月激情| 夜夜爱影院| 五月婷婷啪啪啪| www久久99com| 色色综合网络| 99热.com| 91丁香婷婷综合久久欧美| 成片免费观看大全| 色狠狠激情五月| 五月丁香av在线| 亚洲综合激情五月| 狠狠干综合| 六月色丁香婷婷| 91精品人妻少妇无码影院| 欧美丁香五月| 五月色无码| 欧美人妻一区二区| 婷婷五月在线观看| 亚洲免费电影2| 五月婷婷av| 米奇影视资源777狠狠色婷婷五月天激情网 | 久久六月天| 99噜噜噜在线播放| 激情五月丁香六月综合AVXXXX| 丁香无月在线观看| 色婷婷五月中文字幕在线dvd| 五月天激情四射| 国产精品色情AAAAA片软件| 久久久A级视频| 国产xxxxx在线观看| 丁香五月天网友自拍啪啪啪视频| 九九热在线视频观看| 丁香五月影| 久青操| 五月丁香婷婷伊人| 狠狠操狠狠操| 六月丁香婷婷色狠狠久久| www.婷婷网| 五月综合视频| 久在线综合69| 丁香婷婷综合五月天| 精品人妻一区| 亚洲mm免费| 六月丁香六月婷婷欧美| 中文字幕婷婷五月天在线观看| 天干夜夜操| 国产九月婷婷| 天天 日综合| 成人丁香五月天| 五月黄色婷婷| 五月中旬婷婷丁香六| 夜夜躁爽日日| 97碰碰视频在线观看| 九九精品在线观看视频6| 丁香五月性| 9操在线| 色五月丁香伊人五月| 欧美槡BBBB槡BBB少妇| 婷婷99视频精品| 天天艹夜夜艹| 十区av| 操操操av| 色色五月天婷婷| 99热都是精品| 国产午夜一区二区三区| 五月丁香婷婷久久| 五月婷婷六月丁香综合| 十区AV| 99re鈥哸鈥唙| www九月婷婷| 欧美爆乳一区二区三区| 五月婷婷色在线| 成人五月天在线视频在线观看| 久久婷婷综合五月天| 91视频一起草| 色狠狠综合| 99热碰碰热| 六月丁香色色| 9久精品视频| 另类国产区| 六月丁香激情网| 9久热在线视频| 九色色| 97伦乱| 亚洲无码九九| 超碰色天堂| 国产美女视频久| 玖玖婷婷精品| 色色丁香| 99 色色吧| 国产毛片欧美毛片久久久| 五月天免费色| 91热久88| 久久激情天堂| 超碰99在线| 激情丁香五月| 婷婷精品在线| 综合精品啪啪| 日本婷久久| 五月婷婷三级| 国产亚洲精品AAAAAAA片| 丁香五月婷婷姐| 九月激情婷婷丁香| WWW.桔色成人.COM| 婷婷四月 成人 狠狠干| 99在线资源视频| 美女五月天| 97在线/亚洲| 九九热在线精品| 五月丁香成人| 亚洲婷婷久久综合| 婷婷六月天| 97好吊操| 97精品欧美91久久久久久久| 国产日产亚系列精品版优势| 五月婷婷六月丁香在线视频免费在线观看| 成人在线不卡| 婷婷五月天天| 99激情网| 九九亚洲小视频| 热九九九九| 91碰碰碰| 夜夜躁狠狠| 99色综合久久| 久热久| 思思精品久久艹| 久色88| 色婷婷久久| 天天爽天天草| 狠狠看狠狠| 久热9热| 思思热在线精品视频| 久久人妻在线| 五月丁香六月激情综合网| 亚洲无码影音| 婷婷深爱五月| 丁香五月婷婷五月天| 色六月丁香婷婷狠狠干| 玖色色综合| 综合网五月| 色九月激情综合网| 大香蕉五月婷婷| 色五月婷婷成人| 婷婷丁香成人| 久久久这里有精品| 秋霞影音91人妻久久| 久久98| 色99超碰| 五月婷婷色色爱| 深爱五月激情| www99精品| 色色AV色色色东莞| 六月色色婷婷| 色色色99韩| 色婷婷中文在线| 99热在线播放精品| AA片在线观看视频在线播放| 天天爽天天| 色婷婷五月婷婷五月婷婷五月| 久久久久久久97| 人人草碰| 婷婷丁香综合色AV| 岛国AAAV| 激情人妻蜜夜系列区| 色婷婷综合网| 五月丁香天堂网| 99视频在线播放大全| 99这里只有精彩视频| 丁香五月婷婷六月婷| 五月丁香猫咪久久婷婷综合视频激情四射网入口 | 91丨九色丨东北熟女| 五月婷婷视频在线观看| 婷婷综合精品视频97| 五月婷综合网| 婷婷香五月| 四色女婷婷| VA国产在线综合网站| 久久五月六月| 婷婷五月天在线观看av| 五月人人丁香婷婷五月人人丁香| 久久久久久天天日天天爱| 天天艹天天综合网| 在线va网站| 婷婷欧美偷拍综合| 日韩一级片| 丁香色色色| 国产激情久久| a色色色色色| 97色色色色色色色| 婷婷五月天777| 99er国产| 亚洲六月婷| 五月婷婷狠狠干| 99热这里只有精品18| 婷婷五月美女直播| 色五月成人| 日韩 中文 欧美| 色婷婷综合久久久久| 色热久| 色视频五月天| 久久99热免费最新版| 大香蕉久久婷婷| 人妻久热| 色999五月色| 狠狠精品干练久久久无码中文字幕| 婷婷五月花| 久久这里只有精品视频15 | 婷久久高清| 97丁香视频| 另类激情四射| 开心丁五月| 最新亚洲色色网| 五月天激情无码| 在线观看免费狠狠色丁香香综合| 淫视馆aV二区一区| 99ER热精品视频| 国产精品涩涩涩视频网站| 天天综合天综合久久网| 一起肏在线视频| 久久之人妻| 日本va视频| 丁香五月AV| 大香蕉520| 视频一区二区在线| 九九色色网| 插插干干干色| 婷婷婷婷婷婷婷婷| 极品人妻VideOssS人妻| 五月婷婷黄网站大全| 手机在线日韩视频中文字幕| 天天综合五月| 久久婷婷婷| 亚洲V国产V欧美V久久久久久| 91丨九色丨国产打屁股网站| 色色色色五月天| 婷婷丁香激情| 99免费| 中文字幕高清av| 亚洲日韩国产黑丝黑丝AVAV一区二区三区 | 五月婷久久| 99视频在线观看网址| 99热婷婷| 性爱技巧五月| 婷婷五月成人有| 欧美精品18| 9久热精品在线视频| 成人永久免费视频在线观看| 丁香五月狠狠综合欧美| 国产成人网址| 中文字幕不卡视频| 六月丁香五月激情网| 91久久久久久久久| 无码成人AAAAA毛片AI换脸| 黑人熟妇一区二区三区| 五月婷婷九月婷婷九月婷婷| 天天插天天干| 另类精品视频在线观看| 天天婷婷色六月| 国产毛片欧美毛片久久久| 色七七九九| 99爱这里只有精品免费视频| 婷婷五月天丁香| 丁香五月天婷婷91| 丁香五月婷婷激情蜜桃| 国产精品天天狠天天看| 久久久久久久综合狠狠综合| 青草激情综合| 99九九精品视频推荐| 77799热| 亚洲六月婷婷| 啪啪夜久久| 色欲一二三| 婷婷情色五月| 99热精品一| 国产精产国品一二三在观看| 色久婷婷网| 五月婷婷色| 日本91在线| 亚韩在线视频| 色婷婷激情视频| 五月丁香六月婷婷婷婷| 超级碰碰97在线| 情五月亚洲婷婷| 六月丁香网| 热热久久精品视频| 婷婷综合五月天| 丁香五月自拍| 99精品偷自拍| 开心五月婷婷六月丁香| 色婷五月| 俺也去婷婷五月天第五色| 五月丁香综合啪啪| 激情九月婷婷| 亚洲综合色婷婷| 先锋资源91| 五月丁香久| 亚洲中文字幕网| 九九综合色| 欧美性二区| 天天爽夜夜操| 99在线视频精品| 香蕉婷婷五月| 亚洲色无码| 任你日热视频| 亚洲视频二区| 玖玖资源站国产| 第九色区av天堂| www.日本久久videos| 久久9视频| hd五月婷婷在线| a性生活久久无| 久草五月天| 超级碰碰碰97免费| 欧洲亚洲精品| 性小说五月天| 婷婷酒色网| 亚洲无码99| 操91| 国精产品一区一区三区免费视频| 五月天激情中文字幕| 亚洲黄网在线| 性色天| 久久天天天| 51精品国自产在线| 亭亭五月色男人| 九热精品| 精品久久久久成人码免费动漫| www.色擼擼.com| 亚洲123区高清入口| 99热99精品| 99在线免费视| 丁香六月婷婷社区| 96丁香六月婷婷蜜桃综合久久| 午夜不卡成人一区二区| 婷婷五月天精品| 婷婷五月天激情网| 五月婷婷网站| 婷婷五月天色色| 春色激情| 亚洲九九夜夜| 国产99精品免费视频| 97性高潮久久久| 这里只有精品1| 五月激情综合深爱| 99re66热这里只有精品| AV在线免费观看不卡| 色婷婷六月天| 夜夜操狠狠操天天操| 亚欧州精品视频| 97超碰免费超级在线观看| 亚洲色婷婷激情| 草榴视频网| 四LLL少妇BBBB槡BBBB| 五月激情六月综合| ri电影在线| 国产午夜精品一区二区| 性做爰A片免费视频A片直播| 国产97色在线 | 日韩| 五月情综合| 91干视频| 大香蕉娱乐| 色五月天在线观看| 激情丁香五月| 婷婷中文字幕| 久久婷婷五月天激情四射| 日日鲁鲁夜夜爽爽| 色婷婷影院| 9999热在线免费观看| 国产成人综合亚洲| 亚洲综合五月天| 思思热在线| 亚洲激情五月婷婷日日| 91婷婷丁香| 影音先锋 一区| 亚洲AV免费在线| 久久久激情| 人碰91| 狠狠干.com| 日韩aaaaa| 久9视频| 99久久五月婷婷| 色色五月婷婷丁香| 婷婷丁香亚洲五月天| www91精品| 99啪视频在线观看| 九月性爱网| 96自拍视频九色在线观看| 免费观看的av| 噜噜噜狠狠色综合| 日韩成人中文字幕| 丁香 久久| 色综合色色| 色五月丁香五月婷婷五月成人网| www.夜夜騎夜夜狠| 久久九九99| 九九九九毛片| 五月婷婷三级| 91超碰九色| 中文字幕不卡+婷婷五月| 麻豆雪千夏| 欧洲S级在线观看| 久久久欧美精品sm网站| 欧美色偷拍| 欧美性爱日韩性爱| 久久在线大香蕉| 国产中文字幕在线视频免费观看| av婷婷丁香| 色吧网综合| 全部老头和老太XXXXX| 六月丁香五月婷婷| 亚洲欧洲中文日韩久久AV乱码| 超碰99在线观看| 欧美成人精品A片免费一区99| 五月丁香激情综合网| 五月丁香六月激情| 欧美三级巜人妻互换| 五月J香蕉婷婷| 韩国真做片在线观看| 超碰在线看| 日本婷婷五月天| 少妇被躁爽到高潮无码文| 日本精品人妻无码77777| 欧美情色一区| 九一九九黄色| 啪精品| 毛片新网地| 噜噜噜噜噜久| 激情五月丁香五月| 天天色·欧美| 久久网思思| 色情五月婷婷| 婷婷五月综合在线| 99久久国产宗和精品1上映| 婷婷丁香色五月天| 国精产品一区二区三区| 丁香五月综合婷婷| 日韩抽插操逼| 99热视精品| 这里只有精品在线看| 五月天激情视频| 91超级碰| 丰满少妇猛烈A片免费看观看| 丁香五月狠狠在线观看| 99色日本| WWW色五月天| 天天爽综合网| 亚洲久热| 99免费视频| 激情色情五月天| 狠狠干婷婷| 蜜臀嫩草| 久久久婷婷婷| 国产69精品久久久久999小说| yw.av| 日韩国产在线免费观看| 婷婷五月天激情四射五月天激情| 国精产品一区二区三区| www.狠狠| 97超碰免费超级在线观看| 久热最新视频| 蜜臀av粉嫩av懂色av| 国产亚洲在线观看| 伊人综合婷婷| 久久婷出差欧美色两性综合网| 热99这就是精品视频| 色人久久| 色五月婷婷1| 婷婷亚洲丁香五月| 综合久久五月天| 婷婷五月天av| 99久久精品国产色欲| 五月丁香五月激情综合色综合| 超碰国产在线观看| 亚洲 在线 另类| 九九狠狠干| 五月丁香在线看| 99综合网| 伊人色综合影院视频| 天天激情视频| 91超碰在线观看| 伊人五月婷| 伊人五月天日日夜夜久久久天天| 天天色天天日| 青青草婷婷五月天| 五月激情丁香五月| 噜噜狠狠色综合久| 五月丁香六月片| 久久久27操| 狠色色狠网| 中文字幕丰满孑伦无码专区| 日本久热| 开心婷婷中文字幕| 色爱爱综合网| 少妇婷婷五月天| 色五月丁香婷婷| 伦99热| 五月天六月婷婷电影| 大香蕉精品视频| 日韩操女| 五月婷婷激情久久| 在线看九一V图片| 丁香五月AV综合| 婷婷五月丁香五月| 激情床戏| 五月天伊人久久久久| 亚洲亚洲人成综合网络| 丁香久久| 涩五月婷婷| 色色色国产| 欧美色99| 性天堂久久| 久热69| 香蕉97碰碰碰超视精品| 涩涩涩五月天| 中文字幕人妻AV| 丁香五月冃欧美| .青娱乐天天操B| 激情丁香五月激情婷婷| 97在线观视频免费观看| 亚洲色婷婷网站| 免费无码毛片一区二区A片| 人人玩人人橾| 色婷婷狠狠18禁| 久久丁香五月综合六月激情红杏视频| www.色综合| 亚洲天堂热| 国产亚洲在线观看| 极品色丁香| 99综合网| 精品国产人人爱人人| 超碰av在线| 色色综合成人网| 亚洲操人| 天天天天天操| 97超级啪啪在线观看| 激情五月婷婷在线| 色碰97| 激情五月天影院| 久久久日韩特色特黄AAAA| 婷婷五月天激情免费在线观看| 激情丁香五月AV| 亚洲性爱电影| 婷婷丁香人妻天天爽| 五月婷婷在线短视频| 99婷婷| 亚洲婷婷婷| 999热视频精品99免费在线| 亚洲AV成人无码久久精品老人法拉利| 丁香五月婷婷综合激情啪啪啪| 26uuu亚洲| 丁香六月色婷婷| 色五月综合在线| 99激| 久热精彩视频98| 亚洲精品在线视频| 深爱激情中文五月天av| 久久精品国产AV一区二区三区 | 久久久久久丁香五月| 色色影院黄大片| 九九色色| Jh7Uf088VHafNm| aaa9区免费在线观看| 91狠狠综合久久久久久| 婷婷五六日| 69人人操人人爽| 丁香色六月婷婷| 99热 免费| 五月天另类小说久久小说网| 欧美日韩成人在线网| 开心六月丁香五月婷婷| 九色综合五月天婷五月| 日韩啪| 天天粽合合合合| 在线99精品| 色婷婷久久| 激情五月天婷婷丁香 | 超碰成人在线观看| 中国丰满熟女A片免费观| 五月丁香六月婷婷网| 亚州精品色情无码A片| 久久人人添人人爽添人人片αV| 丁香 亚洲 久久| 91爱操| 婷婷综合国产| 色五月天综合网| 综合色色色色色色| 婷五月丁香俺| 免费AV在线网址| 婷婷五月天激情网| 亚洲激情精品| WWW色综合| 在线成人视频免费| 欧美黄色一级录像| 色色吧综合| 六月丁香社区| 欧美日韩AAAAA| www91在线| 婷婷综合在线| 丁香六月狠狠干| 婷婷无码视频| 人人操AV| 任你干嘛免费视频播放| 国产午夜精品一区二区三区四区| 久久婷婷综合基地| 五月 婷婷 成人| 综合xx网| 五月天色图| 秋霞少妇AV网站| 日韩另类| www.天天日| 亚洲操逼片| 欧洲一区二区| 激情五月婷婷| 99视频在线| 天天爽天天摸天天爱| www天天爽| 天天色综合网1| 伊人午夜综合色啪| 五月丁香花免费视频| 激情图片婷婷| 婷婷五月天激情在线观看| 丁香婷婷五月激情综合| 丁香婷婷六月激情文学| 婷婷激情综合| 激情综合无码| 五月色婷| 日日操天堂| 婷婷五月天网| se99视频| 久/久精品99看9| 婷婷涩五月| 丁香久久五月婷综合| 俺去也综合| 五月丁香综合激情网| 巴基斯坦粉嫩无码视频| 少妇久久诱惑视频| 婷婷永久在线| 极品 少妇 内射| 激情网 五月天| 婷婷六月色丁香视频在线观看| 欧美在线看| 另类伊人婷婷| 99热这里只有精品1025| 人妻激情在线| 久久久性爱视频| 丁香五月激情棕合| 日韩999| 超碰在线99热| 99黄色在线视频精品熟女| www、丁香五月天| 久久99久久99精品免观看粉嫩| AV色婷婷| 亚洲成人综合在线| 国产综合A片| aaa9区免费在线观看| 久久看婷婷| 成人短视频在线| 五月开心婷婷极品激情| 888精品福利地址| 色的色综合| 99色看这里只有精品| 久久婷婷五月综合激情国产| 五月婷婷黄色视频| 午夜色丁香| 国产午夜精品一区二区| 人人97碰| 99热都是精品| 激情五月天网| 久久五月视频| 久草婷婷网| 涩 五月 婷婷 狠狠| 色月九九| 久久资源网五月婷| 五月丁香怕怕综合| 99亚洲大片精品永久在线观看| 丁香美女主播视频在线观看 | 99er日韩| 婷婷五月天成人网| 变态 另类 在线| 69色婷婷| 综合逼五月激情婷婷| 婷婷丁香五月激情| 日日夜夜狠狠| 国产精品24r| 色色操| 99色丁香婷婷综合网| 天天干一干| 中文成人在线| 在线观看av网站| 91啪级电影| 99热精品观看| 国精产品一区一区三区免费视频 | 性做爰A片免费视频A片直播| 97五月天婷婷综合激情网| 婷婷五月蜜桃成人桃色丁香| WWW五月| 色噜噜狠狠色综合日日| 色色丁香色五月| 五月丁香拍拍激情综合| 亚洲成人在线综合| 色色欧美。| 久久久婷婷婷| 天天五月天综合网址| 无码少妇高潮喷水A片免费| 丁香五月天婷婷91| 五月色欧洲| 97超碰综合| 天花AV无码| 色亭亭五月天网扯| 99久久久久| 9热久久| 亚洲婷婷丁香五月视频| 欧美黄色AA片哗啦啦啦| 久久久婷婷色五月资源网| 丁香五月综合福利视频导航| 在线视频另类| 久久婷婷综合拍| 午夜婷婷五月天在线| 五月丁香六月| 亚洲AV人人操| 丁香五月婷婷六月丁香| 久久五月婷综合| 婷婷五月 丁香六月| 丁香五月激情啪啪| 五月婷久久草| 久久国产色| 97人碰人操| 噜噜噜噜在线| 国产精品国产成人国产三级| 五月天激情影院| 婷婷五月天天爽| 色婷婷性爱| 中文在线视频久1| 五月丁香综合精品欧美| www.狠狠操.con| 99在线精品观看99| 亚洲操操| 91精品综合久久久久久五月丁香| 婷婷激情六月综合| 日日夜夜狠狠| 激情综合网站| 六月色播| 婷婷五月丁香激情图片| 天天爽天天干天天| 麻豆观看夏晴子| 99视频在线观看视频| 亚洲亚洲人成综合网络| 另类五月婷婷| 精品乱码久久久久| 大香蕉久久伊人婷婷五月丁香| 久久久久久综合88| 久99久精品| 91人人网| 婷婷九月丁香| 五月激情站| xxxx五月| 国产暴力强伦轩1区二区小说| 电影蜘蛛女| 亚洲亚洲人成综合网络| hd五月婷婷在线| 人人摸人人操人人爱| 五月丁香激情六月| 久久婷婷桃花五月天| 激情五月天视频| 96精品久久久久久久久|