欧美成人午夜精品久久久,国产?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
返回資訊列表
风流少妇A片一区二区蜜桃| 99色热| 激情合网婷婷| 五月婷网| 久久亚洲无码| 亚州精品成人片| 一起草av| 区美毛片子| 色色色在线免费视频| 久草九一| 五月婷婷涩涩爱| 综合啪啪| www.婷婷.com| 狠狠爱五月婷婷| 午夜不卡成人一区二区| 婷婷成人在线| 就爱啪啪婷婷| 色色99色色| 久久天堂色| 狠狠操狠狠插| 能看的av网站| 伊人婷婷五月天| 五月婷婷六月丁香综合在线| 天天色域综合网| anquye伊人| 五月婷久久久| 啪啪99| 成人性生活免费观看。| 婷婷狠狠青青| 婷婷五月天综合久久日美女| 琪琪色网址| 激情婷婷五月天| 九热免费视频| 26uuu在线观看| 91婷婷色| 日韩aaa| 五月丁香婷婷色色| 另类专区在线观看| 精品一二三区久久AAA片| 婷婷久久综| 女人天堂AV| 丁香婷婷九月在线| 麻豆AV一区二区三区| 二色AV| 在线另类视频| 亚洲中文乱字字幕在线永久| 伊人在线视频| 欧美操逼天堂| 五月天激情综合首页| 久久激情综合| 人人草成人视频| 激情五月婷婷| 激情综合网,五月| 五月婷婷伦理| 亚洲激情精品| 97干视频在线| 大香蕉AV在线| 岛囯综合激情网| 超碰在线资源| 26uuu亚洲| 97视频久久| 婷婷五月在线视频| 996er热| 丁香五月电影| 丁香五月激情图片婷婷| 性爱人人网| 亚洲有码在线视频| 丁香五月天激情网址| 96人人操人人操人人| 无码中文一区二区三区| 亚洲激情综合| 中文幕无线码中文字蜜桃| 九九在线视频| A在线观看| 性爱综合网| 丁香六月 人妻| 欧美猛片| 狠狠色婷婷7777久| 91狼友视频网页更新| 97色碰碰公开视频| 丁香色五月直播| 九九热只有精品6| 玖玖九九99| 色婷婷亚洲六月婷婷中文字幕| 久色视频| 专区无日本视频高清8| 亚洲三A| 婷婷色五月大香蕉在线观看| 伍月激情天| 天天视频亚洲| 91精品综合久久久久久五月丁香| 999九九九久久久99HD| 精品亚洲国产成AV人片传媒| 色五月天网| 俺去也婷婷| 丁香五月婷婷五月| 91激情五月开心| 美女丁香五月天| 五月丁香中文字幕| 国产免费性爱| 99久久黄色顶级视频| 亚州性爱99| 黄网在线播放| 大香蕉操操| 99这里有精品久久97| 风流少妇A片一区二区蜜桃| 1024成人免费看| 97色在线视频| 婷婷少妇激情| 高清国产一级婬片a免费| 激情五月婷婷丁香六月| 五月天丁香婷婷社区| 九九这里都是精品| 香蕉操亚洲| 丰满人妻一区三区三区| 中国丰满熟女A片免费观| 激情九九六月激情免费视频| 亚洲A色| 97人人干人人操| 婷久久综合| 天天综合久久| 婷婷成人视频| 亚洲中文字幕AV| 婷婷五月伦理网站| 五月婷婷婷色| 久热这里只有精品视频免费观看| 色135综合网| 色色色干| 六月天婷婷| 久久国产高清| z色五月播播久久| 成人做爰A片免费看视频| 九九re精品视频在线观看| 看国产探花操逼三级片| 性爱激情久久| 综合激情网激情五月。| 色五月婷婷7777| 人妻久久久久| 91婷婷| 激情AV在线| 五月天综合视频| A片试看120分钟做受图片| 色色婷婷丁香| 五月天婷婷久久| 五月婷婷av| 五月综合在线| 91热99| 91婷婷色五月| 一起草无码视频| 天天综合色| 欧洲永久精品| 伊久大香蕉| 色五月天天| 九九热在线视频| 国产99美少妇| 日韩日比视频在线| 九九热婷婷| 看全色黄大色大片| 天天日,天天插| 97狠狠色| 亚洲无AV在线中文字幕| 99热这里只有精品3| 99热欲| 久久精热| 婷婷五月天成人网| 日日夜夜九九| 色婷婷天堂| 伊人久久婷| 丁香五月综合婷婷| 亚洲激情综合五月婷婷啪啪| 五月香蕉婷婷| 色五月综合| 久99久热只有精品国产99| 亚洲成人网址在线观看| 99热国产精品| 五月丁香黄色| 热99国产精品| 色吊丝99| www.五月天婷婷| 久久丁香五月婷婷激情综合网| 国产毛片欧美毛片久久久| 午夜精品777| 97久久精品视频| 欧美日比视频| 久久草婷婷丁香网站| 婷婷色五月91啪啪| 99热精品在线播放| 99热这里只有精彩| 国产日批视频免费播放| 色色色色色综合| 日韩中文欧美| 五月在线| 丁香五月激情六月综合| 99久久婷婷| 日韩艹比| 久久激情视频| 996er热| 综合五月草| 操91综合网| 另类激情综合| hd五月婷婷在线| 久婷自拍视频| 七月丁香婷婷 色色| 婷婷六月天| 久久这里面只有精品视频| 热久久这里只有三级视频| 九九AV在线| 五月丁香天堂网婷婷| 国产免费av网站| 开心激情婷婷| 丁香九月婷| 美英法精品无码免费视频| 亚洲精品99| 精品一区久热| 夜精品无码A片一区二区蜜桃 | 欧美日韓成人亚洲精品另类| 午夜爱爱网站| 99re视频在线| 最新婷婷五月丁香| 亚洲妇女熟BBW| www.91操| 97色热| 欧美爆乳一区二区三区| 婷婷五月天熟妇| 久操大| 久久精品日| 婷婷五月激情综合| 色优久久| 色色色欧美| 婷婷六月丁香五月| 夜夜干夜夜操| 九九热这里| 婷婷五月天电影在线| 人人色人人摸人人看| 大香蕉中文| cao视频,现在观看| www久久久久久| 五月婷婷久久大片| 久久这里只有精品视频15| 日本猛少妇色XXXXX猛叫| 色五月激情综合网| 国内外色色色色色成人视频| 欧洲色色| 色狠狠色噜噜AV天堂五区| 色婷婷www| 超碰日日操| 久色婷婷200| 五月天俺去也| 激情婷婷五月| 久久婷婷久久| 日韩色色视频| 蜜桃五月天| 97精品人人A片免费看| 亚洲激情网| 久久9视频| 九九99九九99偷拍视频免费看| 国产精品色婷婷久久久精品| 狠狠色综合网站久久久久| 狼人婷婷综合| 久久综合五月| 亚洲精品国产熟女久久久| 丁香五月婷婷色| 亚洲成人免费在线| 一二线视频 另类| 日比网免费国产| 亚洲欧美在线观看| 五月婷婷亚洲综合在线| 五月丁香激情四射综合| 开心五月天私房婷婷| 男人的天堂999| 狠狠操天天操| 五月婷六月婷婷| 亚洲久久激情| 丁香色色网| 中文字幕精品无码一区二区| 久久五月天免费网站| 光棍影院日韩精品| 婷婷五月激情的图片| 99热 免费| 伊人婷婷激情| 五月婷婷六月天| 日本久久天堂| 丁香五月狠狠在线观看| 99a级片| 97婷婷色| 色女伊人| 久热91| 人人人操 超碰| 亚洲另类毛片| 综合性视频99| 99久久网站| 搡BBBB搡BBB搡18| 色综久久久| 丁香五月人妻| 不卡影院午夜理论片| 日本色色网站| 丁香六月天婷婷色| 久久xx| 久久五月网| 五月播播| 亚洲精品白浆高清久久久久久| 久久青草国| 91啪啪视频| 五月天婷婷深深爱| 激情第四色| OYIWbGcPu8H| 97超碰人人操| 狠狠色综合网站久久久久| 久久六月综合| 9999热在线免费观看| 这里只精品| 婷婷色综合av| 天天视频精品9| 深夜男女福利刺激影院一区| 五月丁香性| 五月天激情小说| 91疯狂操操操操| 亚洲一色色色色色色色色| 六月丁香五月天| 99热网站| 色999五月色| 五月丁香六月婷婷在线观看| 性色九九| 婷婷开心综合人妻小说网址| 99性爱视频| 欧美操逼天堂| 五月天婷婷7米| 在线18av | 久久久WWW| 狠狠干综合网| 99在线视频。| 五月天激情无码高清| 亚洲美女高潮久久久久久69| 九九综合网色全集| 丁香婷婷六月| 国产视频福利| 色播五月| 激情婷婷视频在线| 天天久综合| 亚洲视频一区| 五月婷在线色视频| 久99在线| 洗浴中心操B视频| 99ER热精品视频| site:hcxsz888.com| 先锋资源婷婷| 色v综合网| 亚洲欧美婷婷五月色综合| 中文不卡av| 99热这里有精品24| 日本三级第一页| 五月丁香综合伦理片| 色色色999| 久久久婷婷| 99热这里只有精品1025| 97色色婷婷| 久久99操| 热九九在线| 26uuu欧美| 全亚洲最大的婷婷五月天网站COM| 九九热欧美| 九九99九九99偷拍视频免费看| 五月天婷婷社区| 91n网站cad入口在线观看| 婷婷香五月| 伊人爱爱日本| 九九综合| 天天干,天天舔| 涩涩五月天| 99re这里只有精品国产99| 五月婷久久| 色五月天综合| 秋霞av不能| 激情五月婷婷视频一区二区三区| 综合色情网| 99热在线精品观看| 九九视频精品在线免费| www综合久久| 丁香婷婷色色| 色婷五月天亚洲| 成人婷婷色综合| 色色欧美色色| 超碰在线精品| 草草夜夜操| 日日插日日干| 五月丁香综合啪啪| 在线看AV| 五月天激情久久| 五月丁香网中文字幕| 涩涩激情五月婷婷| 色99色| 99热精这里只有精品| 色域五月丁香| 婷婷午夜天| 六月婷五月丁香| 九九热内射| 99精品在线观看视频| 亚洲av网站| 欧美大片免费播放器| 青青草原99热| 丁香五月六月久久综合| 久久日九九| 五月天播播| 快色t v在线入口| 啪啪黄页网| 色狠狠色| 亚洲色五月| 99re66热这里只有精品| 九九中文字幕九| www.婷婷| www,色婷婷| 熟女五月天久久综合| 99日视频在线| 欧美性生交XXXXX无码小说| 婷婷丁香五月激情密臀av| 日日天天天| 五月激情久久| 国产SUV精品一区二区883| 婷婷六月天激情| 成人婷婷桔色| 久久久五月天| 在线观看av网站| 精品欧美一区二区三区久久久| 七七色色综合| 丁香六月亭亭久久综合| 亚洲激情电影五月天色婷婷丁香一起草 | 天天做天天爱天天玩| 五月色婷婷在线观看| 久久精品噜噜噜成人A∨色欲 | 久久综合干| 超级碰 久久9| 欧美一级a | 久久激情五月| 中文字幕,综合,91| 欧美激情伊人| 九九精品碰| 99ER热精品视频| 亚洲另类电影| 91日韩在线| 丁香五月天啪啪| 狠狠狠激情网| 天天橾日日橾夜夜橾17| mmm1717.6dbm人人爱人人操| 六月婷婷之青青草| 久久色五月天| 丁香六月AV| 涩综合网| 亚洲AV综合在线观看| 亚州第一A片| 97日本在线播放| 午夜天堂一区人妻| 婷婷99狠狠躁天天久久久九九九| a网站免费观看| 丁香五月色| 久久99视频| 婷婷黄色| 婷婷六月啪啪| 99在线精品观看99| 色婷婷小说| 丁香六月激情综合| 精品国产乱码久久久久夜深人妻| 五月天福利影院导航| 欧美在线| 亚洲精品一二三| 色综合综合综合| 国产AV一区二区三区最新精品| 亚洲中文字幕在线观看| 激情综合色五月丁香| 婷色天堂| 青青久久大香蕉| 97色图片中文字幕视频在线观看| 91碰超| 91一起艹| 99热香港| 婷婷久久综合久色| 色欲午夜无码久久久久久张津瑜| 国产成人高清| 东京热免费视频| 青青草视频免费观看| 国产成人综合亚洲| 99视频久久久| 欧美色狠婷久| 九九无码视屏| 久久精品4| 久久精品人妻| 97干在线免费| 超碰在线国产| 91大屁股| 五月婷婷激情久久| 天天日天天舔| 亚洲国产成人AV在线 | 婷婷五月天免费| 亚洲色就是色色色| 亚洲激情四谢| www.99精品在线| 久久久人妻人伦| 丁香婷婷综合五月天| 综合激情五月丁香| 涩五月婷婷| 婷婷六月综合激情| 亚洲综合碰| 综合色五月| 日韩无码一区二区三区四区| 亚洲天天综合| 99热这里是精品| 婷婷成人基地| 超碰在线观看成人视| 丁香五月大香蕉| 天天拍久久| 九艹在线| 美女久久天堂| 五月婷婷xxx| 中文字幕色色| 婷婷久久久| 婷婷五月激情综合啪啪| 人人干天天舔| 永久免费一区二区三区| 色色三级视频| 日韩婷婷五月| 五月丁香六月婷婷激情网| 开心激情站| 九月av在线| 精品一区二区三区四区五区六区介绍 | 99色在线| 亚洲视频国产一区| 99热这里只有的精品视 | 婷婷五月成人| 91九色精品| 人妻在线中文字幕久久| 九九色影视| 五月天久久小说| 婷婷六月丁香在线| 国产在线黄色| 丁香五月综合久久综合| 激情五月婷婷丁香综合网| 啪啪91| 五月婷婷偷拍| www.操.com| 亚洲欧洲中文日韩久久AV乱码| 五月丁香激情综合啪啪| 五月婷婷激情综合网 | 俺去婷婷 丁香| 国产99精品免费视频| 91热久久| 91干在线| 婷婷八月丁香激情综合| 影院久久久| 五月丁香在线国产| 亚洲色婷婷| 91五月天| 99热这里只有精品免费| 99婷婷| 91seav| 超碰人人操| 妻久久人久久| 超碰京东热av男人的天堂| 玖玖精品资源| 久久综合婷婷激情| 激情五月六月婷婷综合啪啪| 色婷婷五月天| 色五月天成人在线| 无码激情AAAAA片-区区| 开心婷婷五月花| 五月天开心网| www婷婷色情网| 色伦专区97中文字幕| 99色最新在线视频| 性按摩玩人妻HD中文字幕| 91操色| 在线观看国产高清视频免费网站| 停停色综合伊人| 久久人妻精品| 精品九九视频| 热婷婷av| 在线视频99| 五月综合丁香婷婷| 婷婷深爱五月| 玖玖资源网站最新站| 51精品国自产在线| 色五月丁香伊人五月| 丁香五月激情啪啪啪| 九九这里都是精品| 欧美人久久| 国产99久久久| 日韩黄黄| 亚洲99一级无嗎特制在线| 夜夜谢天天干| 91啪啪视频| 99热精品在线| www.亭亭五月天| AV在线收看| 99日本黄站| 综合亚洲五月天| 丁香情色五月| 久久久婷婷五月亚洲97号色| 婷婷激情五月天网站| 久久综合99综合| 丁香婷婷成人网| 久久92| 婷婷在线视频| 五月婷婷五月丁香| 狠狠色噜噜狠狠色噜噜噜999| 全部老头和老太XXXXX| 思思热精品在线观看| 欧美色图天堂网色| 欧美内射AAAAAAXXXXX| 丁香婷婷色情社区成人小说| 在线成人网站| 婷婷六久久| 九九精品综合| 丁香五月成人在线| 色五月激情| A片试看120分钟做受视频红杏| 色 色 色综合com| 九九黄色网| 玖玖色综合色| 精品久久久人妻| 玖玖福利视频资源| 大香网伊人久久综合| 色网五月婷婷| 五月丁香啪啪| 开心五月天激情网| 深爱激情av| 五月婷婷久久综合| 97在线干| .青娱乐天天操B| 婷婷六月激情| 五月丁香人妻| 丁香五月激情六月| 99久久婷婷国产综合精品草原| 精品99*| 天天综合色| 停婷丁五月在线| 色婷婷五月丁香在线观看| 人人操操| 婷婷国产五月天17c| 国产精品美女久久久久AV超清| 人妻久热| 五月丁香六月色| 亚洲综合色丁香五月天| 《诡秘之主》在线观看| 99久久精品色老| 男人的天堂在线婷婷| 国产人妻人伦精品一区二区| 色五月开心五月激情五月| 97精品人人A片免费看| 综合色情网| 综合图片色色| 深爱激情丁香五月| WWW.夜夜| 成 久久| 天天爽—爽| 非洲一级AV| 亚洲无码AV片| 综合久久六月| 一区=区操屄高清大全av| 欧美日韩中文国产一区发布| 五月婷婷综合在线| 激情丁香五月| 久久99热这里只频精品6学生| av九九| AV在线资源| 色色五月天丁香| 五月婷婷在线观看黄| 99精在线| 丁香五月婷婷五月| 五月天久久网站| 婷婷五月婷婷| 日本九九视频| 少妇高潮一区二区三区99欧美| 婷婷色五月开心五月| 亚洲无码99| 99网99热| AV在线中文| 激情九月婷婷| 五月天另类激情在线| 激情五月小说婷婷| 中文激情网| 影音先锋女人AA鲁色资源| 久久久久久人妻| 69精品人人人人| 中文字幕人妻熟女在线| 国产熟妇乱子伦hd| 久久久潮喷-久久久九九-成人AV| 亚洲精品444久久久久久| www,99色| 国产精品成人AV在线| 色狠狠色| 五月丁香999| 久久思思热视频| 婷婷性爱五月天| 99热天堂| 亚洲精品99| 四川女人毛多水多A片| 影音先锋男士资源网一区| 4438全国最大视频成人网站在线观看| 九色地址91视频| 色啪影院| 婷婷成人综合五月| 五月激情六月丁香| 婷婷99| 色色色色欧美| 色色色色区| 色播丁香| 五月婷婷久| 国产三级片91| 夜精品无码A片一区二区蜜桃| 伊人喵咪a V| 婷婷久久18| 日本一级一级一级一级| 亚洲国产成人裸舞| 啪啪婷婷五月天激情| 婷婷亚洲综合| 久久久久久久久久久久63| 激情六月婷婷| 丁香五月网在线观看| 五月天成人免费视频| 91丨九色丨大屁股| 激情久久月| 五月色婷婷在线观看| 亚洲亚洲亚洲AAAAAA| 99人妻碰碰碰久久久久禁片| 7777国产盗摄农村女人| 久久婷婷网| 五月丁香六月停停| 亚洲操人| 日韩性爱无码| 激情五月天啪啪| 天天综合网站| 日韩在线看AV| 婷婷五月天AV| 色五月婷婷九月| 中文人妻AV久久人妻18| 国产精品电影网| 久久草婷婷丁香网站| 婷婷射综合| 91干网站| site:esunnet.com| 激情五月丁香五月| 免费观看2018www黄色操逼网站| 五月激情啪啪| 色久综合| 色婷婷yy久| 无码网| 99视频久久| 色综合播放| 色五月丁香激情视频| 在线婷婷| 免费播放片大片| 婷婷五月天欧美图片在线播放电驴| 色色色成人网| 婷婷五月综合久久中文字幕| 99精在线| 97碰碰草| 开心五月婷婷99| 婷婷午夜| 久久婷婷六月| 五月丁香六月欧美综合网站| 97综合色片| 五月婷婷中文字幕AV| 伊人大香蕉爱聚| 丁香五月激情六月综合| 久久精品99国产精品日本 | 天天舔天天摸天天透| 五月天婷婷久久| AV九九| 91九色在线| 午夜激情婷婷| 五月婷婷欧美| 婷婷丁香激情综合色情| 久草a片| 色天堂97| 日韩人妻无码精品| 91精品婷婷国产综合| 9九色首页| 久久999久久999久久999久久| 色五月综合激情| 丁香婷婷综合影院| 色五月婷婷色五月| 五月色激情综合网| 婷婷五月天电影网| 91视频五月丁香| 丁香九月综合激情| 亚洲综合99| 亚洲这里只有精品| 做爱夜夜干天天操| 免费视频WWW在线观看网站| 丁香五月 综合| 成人无码髙潮喷水A片| 最新激情五月天| 91色色五月天| 色婷婷五月天天天干天天操天天爽 | 人人干人人操外国| 99riAV国产精品视频| 中文字幕不卡+婷婷五月| 99视频在线| peg 2区三区四区的| 日本人妻伦在线中文字幕 | 人人干av| 激情五月天之六月婷婷| av操B网站| 天天综合网在线| 九九九热精品| 在线观看国产高清视频免费网站 | 五月婷婷久久网| 久热天堂| 五月玖玖| 日日干日日s| 另类亚洲电影| 婷婷综合五月天| 久久激情综合| se婷97| 欧美六月| 99色播| 丁香久月婷| 激情六月天| 常久最新免费的色吊丝| 婷婷涩五月| 亚洲成av人影院| 五月婷亚洲精品| 丁香五月天激情| 97碰碰免费.视频| 久久 婷婷 五月天| 婷婷六月插屄激情| 欧美啪啪五月天| 91狠狠综合久久久| 亚洲色爱综合| 少妇丁香婷婷 | 东京热免费视频| 激情人妻蜜夜系列区| 五月天婷婷爱| 欧洲亚洲欧洲99久久| 1024操逼视频| 影音先锋日本三级资源| 色域五月婷婷丁香| 色婷婷九月综合| 激情综合久久| 日本偷拍九九九| 99热| 五月婷婷激情中文字幕| 伊人超碰| 丁香五月婷婷基地| 激情五月婷色| 嫩草AV久久伊人妇女超级A| 天天插天天射| 五月丁香婷中文字幕| 欧美精产国品一二三区| 亚洲av电影网站| 激情深爱五月天| 久久婷婷五月综合色丁香| 天天爽曰日爽| 99色精品视频| 亚洲午夜电影| 欧美日韩精品一区二区三区钱| 五月综合久久| 91精品久久久久久久| 夜夜撸天天操| 婷婷丁香五月欧美人| 婷婷综合久久| 91视频一起草| 久久 中文 日本| 伊人久久婷婷五月综合97色| 激情五月天影院| 色婷婷偷拍| 色色色色色色网站| 。久久久久久久久久久久久久人妻| 99精品无码视频| 影音先锋一区| 久久色五月天| 97艹| 操日本色| 亚洲不卡123| 91狠狠色丁香婷婷综合久久狠丁香综合久久精品 | 99只有这里是精品| 亚洲综合丁香五月| 精品久久婷婷五月天| 99啪啪视频| 99久久婷婷五月综合| 色婷在线视频| 婷婷伊人綜合| 欧美三级级99久久| 久99精品视频| 91一道本| 另类亚洲视频| 91超级碰在线| 日韩视频女神99| 丁香六月成人网| 久婷视频| 金品在线视频99| 五月婷婷激情日本| 亚洲色色五月天| 超碰不卡在线| 久热91精品| www.色综合.com| 丁香九九九九| 色九九综合| 丁香五月成人| 六月丁香五月激情亚洲AV| 激情久久久| 国产日批视频免费播放| 色婷婷91激情小说| 五月天堂婷婷| 五月丁香花激情综合网| 国产日韩亚洲欧美在线观看| 五月天婷婷激情综合| 色五月 五月婷婷| 日韩成人AV在线播放| 99久在线精品99re8热| 色欲一区二区三区精品A片| 日本色色色| 天天日天天肏天天奸| 啪啪啪丁香五月| 九九人人看| 久9视频| 新99思思视频| 五月天婷婷视频30| 激情网五月天| 99这里只有精品|v| 日本少妇裸体做爰高潮片| 毛片九九九九九九九九18| 五月丁香婷婷老司机| 伊人9在线| jiqingtaose五月天| 欧美激情xxxXX| 天天视频亚洲| 激情综合网五月丁香| 久久婷婷影院| 中文字幕不卡网站| 大香蕉婷婷五月| 26uuu国产色| www.色五月.com| 另类视频综合| 影音先锋91在线资源站| 久久婷婷丁香五月宗合| 激情网第九色| 五月天婷婷丁香六月| 色综合久久88色综合天天99| 日本猛少妇色XXXXX猛叫| 婷婷在线日韩综合| 成人五月天丁香婷| 狠狠干在线视频| 国产精品国产| 欧美成人精品A片免费一区99| www.韩日视频| 婷婷五月四狠狠| 婷婷丁香五月在线播放| 狠狠干五月天| 婷婷激情啪啪| 婷婷爱综合| 爽天天天天天天天| 国产成人精品亚洲线观看| 97婷婷丁香五月天激情图片| 天天 青草 制服丝袜 在线| 五月丁香六月婷婷亚洲综合| 99热66| 啪精品| 六月婷婷日| 中文字幕,综合,91| 97在线观视频免费观看| 丁香五月日韩| 五月婷婷婷婷网| 国产毛片精品一区二区色欲黄A片| 性色综合网| 五月天婷婷久色| 色色狼人综合| 欧美婷婷色五月网| 婷婷五月开心中文字幕色| 九色自拍| 大香久久伊人网| 欧洲日韩一区二区三区| 婷婷99狠狠| 五月丁香婷婷啪啪网| 激情丰满熟妇五月| 五月丁香综合在线| 亚洲一级AV在线免费播放| 狠狠色狠狠色综合日日91| 久热99| 任你操精品免费| 99热这里只有精品最新网址| 777精品久无码人妻蜜桃| 999婷婷综合| 丁香五月天中文字幕| 五月天婷婷婷| 日本在线免费中文com.| 久久婷婷视频| www.91在线观看| 欧美色色网| 久久91久久精品久久| 婷婷色色综合激情| 婷婷爱五月天| 日本三级中国三级99人妇网站| 欧美日韩成人高清在线| 碰超在线九色| 五月婷婷之美女图片| 牛牛热这里只有jingpin| 六月丁香五月婷婷首页| 久久女婷| 九九热av| 亚洲高清在线| 97影院一级片| 成人五月丁香社区| 天天色丁香| 伊人久久婷| 538任你爽| 五月丁香六月婷| 六月婷婷激情| 岛国AV网| 色六月天天激情综合网| 日韩无码专区| 婷婷五月丁香狠狠| 久久久国产精品黄毛片| 婷婷五月天伦理| 图片区 小说区 区 亚洲五月 | 久久这里有精品| 久久婷婷六月| 日本天天操| 手机激情网| 毛片九九九九九九九九18| 婷婷五月丁香六月天亚洲综合| 婷婷六月激情综合| 99r这里| 婷婷丁香五月天熟女丝袜| 九九热视频这里只有精品| 激情五月婷婷啪啪| 九九热自拍| 淫荡家庭AV| 人妻熟人中文字幕一区二区 | 久久只有精品| 欧美日韩二区在线| 99热这里只有精品免费观看| 色婷婷久久视屏| 五月丁香性爱| 99热无码精品| 狠狠久久婷五月综合色| 日韩视频99| 五月天婷婷网站888| 另类视频五月天| 五月丁综合在线观看| 婷婷九九色| 99riAv1国产在线观看| 色婷婷狠狠| 专区无日本视频高清8| 激情五月婷在线精品| 亚洲XX网| 久久九色| 夜夜骑天天玩天天日| 欧美三级黄色片久久| 五月丁香婷婷综合| 青青草视频福利| 精品九九网| 婷婷另类小说| 亚洲丁香五月在线观看| 久久五月婷婷丁香| 婷婷五月天综合网| 深爱激情婷| 99色激| 色婷婷在线视频观看| 欧美97色| 俺去也在线视频| 五月色婷婷影院| 最近免费中文字幕大全高清大全1| jizzdr| 五月丁香六月婷婷,婷| 思思干精品| 97色色色色色| 狠狠干综合网| 99热精品在线观看| 蜜乳AV成人| 色香欲综合| 老司机日日夜夜青草| 在线观看五月婷婷网| 亚洲婷婷综合视频| 久久五月婷| 丁香五月开心亚洲| 91大屁股| 欧美色色色| 青青999| 国产特级毛片AAAAAAA高清| 色婷六月| 国产精品婷婷午夜在线观看| 色99在线| 热久久色| 99精品视频免费观看近期发布| 另类综合激情| 99精品小视频| 婷婷涩涩网| 国产欧美日韩性爱| 婷婷五月色情| 久久XX日本综合| 26uuu国产| 黄色三级日本| 六月丁香六月婷婷欧美| caopeng97日韩| 日本九九九九| 日韩精品一区二区亚洲AV观看| 亚洲视频在线网站| 激情小说五月天| 五月婷婷啪啪啪| 色 色 色综合com| 99.色| 激情综合色五月六月婷婷| 综合色五月| 综合色吧| 9色在线视频精品观看| 五月天婷婷色播综合在线| 亚洲成人综合在线| 亚洲综合五月天婷婷丁香| 99热激情| 激情五月丁香六月| 99国产性感视频| 国产淫熟妇| 丁香六月av| 婷婷激情五月吧| 91美女被操| 久草性爱| 丁香五月激情啪| 91日韩美女被插视频| 玖玖激情网| 在线成人av播放| 月丁香久久久| 国产色色小草视频| 伊综合蕉| avh片在线观看| 97久久综合网| 毛片九九九九九九九九18| 色五月婷婷777| 天堂久久丁香| 婷婷五月激情四射手| 俺也去五月婷婷丁| 95精品区一区二| seav天堂| 激情性爱五月天网页| 婷婷五月综合性爱| 91九色PORNY大屁股| 中文字幕成人版| 五月做爱| 99热 在线播放| 91xxxx九色| 百度4399有码精品V在线观看| 热久久色| 影音先锋一区二区三区| 五月丁香婷婷啪啪综合| 小骚穴电影| 99久热精品在线| 日韩肏屄网| 99热在线精品播放| 日韩啪啪网| 五月花婷婷在线精品视频| 色爱99| 成人色五月天| 26uuu国产激情视频| 成人精品亚洲性爱| 丁香五月婷婷偷拍| 91碰碰| 国产SUV精品一区二区6| 色婷婷色综合久久精品V| 日本nghangse中文字幕| 大香AV| 亚洲AV网站| 多精窝99在线视频| 天堂草在线观| 丁香五月开心亚洲| 丁香五月天色婷婷| 香蕉AV777XXX色综合一区| 成人AV片播放| 一区视频网站| 成人色站,在线视频,看片-SS1AV| 欧洲高清免费久久| 日本va欧美va国产激情| 五月激情啪啪| 91精品激情9| 色婷婷四色| 26uuu视频欧美| 色播丁香婷婷五月激情| 26UUU精品一区二区| 欧美这里只有精品| 免费91久久精品| 日韩av在线免费观看| 欧美在线骚货| 玖玖资源在线视频| 99热这里全是精品| 婷婷.com| 97色片| 日日操,夜夜撸| 一起草Av| 色级停停| 六月丁香啪啪啪| 大香蕉院线| 伊人久久大香网| 不卡的AV网站| 五月天激情久久| 欧美性丁香色色五月天| 91婷婷色| 婷婷五月天VI| 色婷婷大香蕉| 五月婷婷六月基地| 99热这里精品| 激情丁香五月| 激情婷婷色小说| 欧美日韩成人高清在线| 中文成人在线| 久久精典| 六月合五月婷| 欧美韩国日本| 啪啪综合| 色五月激情婷婷| 丁香五月成人| AV在线观看网站| 免费五月婷婷网| 另类少妇人与禽zOZZ0性伦| 九九人人自拍| 激情五月婷婷色播网| 激情五月综合| 踪合专区啪啪| 五月婷婷丁香综合网| 久热免费视频| 成人综合AV| 操一操插一插| 97人人干| 久久久婷婷婷| 荷兰av一级| 97色精品视频 | 五月婷婷99热| 任我肏视频精品| 伊人婷婷激情| 久久这里有精品| 亚洲啪啪网| 婷婷成年人免费视频| 九八Av| 五月婷婷激情四季| 四色永久成人网站| 久久99精品久久久久久噜噜| 色五月激情婷婷| 五月天丁香婷婷久久九| 九九综合精品| 激情开心五月天| 色色色色五月天| 亚洲AV网站在线观看| 超碰国产AV| 日本成人噜噜噜| 五月丁香色色色| 欧美在线干| 六月色色| www.六月丁香看AV| 99爱视频在线| 97五月婷婷| 欧美丁香五月| 成人五月天综合网| 777丁香六月青青草婷婷综合久月| 91九色熟女| 婷婷六月综合基地| 一级性爱视频| 九九99视频精品| 大香蕉五月丁香| 久久婷五月天| 99re思思热在线视频| 99热91| 久久作爱| 无码激情| 日韩色色色色色| 99视频久久| 五月天日日操夜夜操 | 99色在线视频| 《久久综合九色综合97婷婷| 婷婷五月天播播| www.91婷婷|