亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? yuv2rgb_mmx.c

?? MPEG4的壓縮和解壓縮代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/**************************************************************************
 *                                                                        *
 * This code has been developed by John Funnell. This software is an      *
 * implementation of a part of one or more MPEG-4 Video tools as          *
 * specified in ISO/IEC 14496-2 standard.  Those intending to use this    *
 * software module in hardware or software products are advised that its  *
 * use may infringe existing patents or copyrights, and any such use      *
 * would be at such party's own risk.  The original developer of this     *
 * software module and his/her company, and subsequent editors and their  *
 * companies (including Project Mayo), will have no liability for use of  *
 * this software or modifications or derivatives thereof.                 *
 *                                                                        *
 * Project Mayo gives users of the Codec a license to this software       *
 * module or modifications thereof for use in hardware or software        *
 * products claiming conformance to the MPEG-4 Video Standard as          *
 * described in the Open DivX license.                                    *
 *                                                                        *
 * The complete Open DivX license can be found at                         *
 * http://www.projectmayo.com/opendivx/license.php                        *
 *                                                                        *
 **************************************************************************/
/**
*  Copyright (C) 2001 - Project Mayo
 *
 * John Funnell 
 * Andrea Graziani
 *
 * DivX Advanced Research Center <darc@projectmayo.com>
*
**/
// yuv2rgb_mmx.c //

/*
 MMX version of colourspace conversion   

 13 Feb 2001  - John Funnell, added -height feature to invert output, fixed 24-bit overwrite
 
 TODO:
  1. Extract common part of from 32, 24 and 16 bit conversions into inline func 
     to avoid duplication of the core MMX code.
  2. Experiment with using prefetch instructions to improve performance


 Using matrix of SMPTE 170M

 This is what we're doing: 

	 Step 1.                                 
	 Y -= 16                                 
	 U -= 128                                
	 V -= 128                                

	 Step 2.                                 
	 Y /= 219                                
	 U /= 224                                
	 V /= 224                                

	 Step 3.                                 
	 now we want the inverse of this matrix: 
	  /  0.299  0.114  0.587  \              
	 |  -0.169  0.500 -0.331   |             
	  \  0.500 -0.081 -0.419  /              

	 which is, approximately:                
	  /  2568      0   3343  \               
	 |   2568   f36e   e5e2   | / 65536 * 8  
	  \  2568   40cf      0  /               
	 including the multiplies in Step 2      

*/


#include <memory.h> // for memset() & memcpy()


#include "portab.h"
#include "yuv2rgb.h"

/**
 *
**/

#define MAXIMUM_Y_WIDTH 800


#define _USE_PREFETCH



/* static constants */

/* colourspace conversion matrix values */
static uint64_t mmw_mult_Y    = 0x2568256825682568;
static uint64_t mmw_mult_U_G  = 0xf36ef36ef36ef36e;
static uint64_t mmw_mult_U_B  = 0x40cf40cf40cf40cf;
static uint64_t mmw_mult_V_R  = 0x3343334333433343;
static uint64_t mmw_mult_V_G  = 0xe5e2e5e2e5e2e5e2;


/* various masks and other constants */
static uint64_t mmb_0x10      = 0x1010101010101010;
static uint64_t mmw_0x0080    = 0x0080008000800080;
static uint64_t mmw_0x00ff    = 0x00ff00ff00ff00ff;

static uint64_t mmw_cut_red   = 0x7c007c007c007c00;
static uint64_t mmw_cut_green = 0x03e003e003e003e0;
static uint64_t mmw_cut_blue  = 0x001f001f001f001f;



/**** YUV -> RGB conversion, 32-bit output ****/
/* if height_y is negative then the output image will be inverted */
/* 
		note: _stride_out parameter is ignored in yuv to rgb conversion 
		it's assumed that stride_out = 4 * width_y for the 32 bit color bitmap
*/
void yuv2rgb_32(uint8_t *puc_y, int stride_y, 
                uint8_t *puc_u, uint8_t *puc_v, int stride_uv, 
                uint8_t *puc_out, int width_y, int height_y,
								unsigned int _stride_out) {

	int y, horiz_count;
	int stride_out = width_y * 4;

	if (height_y < 0) {
		/* we are flipping our output upside-down */
		height_y  = -height_y;
		puc_y     += (height_y   - 1) * stride_y ;
		puc_u     += (height_y/2 - 1) * stride_uv;
		puc_v     += (height_y/2 - 1) * stride_uv;
		stride_y  = -stride_y;
		stride_uv = -stride_uv;
	}

	horiz_count = -(width_y >> 3);

	for (y=0; y<height_y; y++) {
	
		_asm {
			push eax
			push ebx
			push ecx
			push edx
			push edi

			mov eax, puc_out       
			mov ebx, puc_y       
			mov ecx, puc_u       
			mov edx, puc_v
			mov edi, horiz_count
			
		horiz_loop:

			movd mm2, [ecx]
			pxor mm7, mm7

			movd mm3, [edx]
			punpcklbw mm2, mm7       ; mm2 = __u3__u2__u1__u0

			movq mm0, [ebx]          ; mm0 = y7y6y5y4y3y2y1y0  
			punpcklbw mm3, mm7       ; mm3 = __v3__v2__v1__v0

			movq mm1, mmw_0x00ff     ; mm1 = 00ff00ff00ff00ff 

			psubusb mm0, mmb_0x10    ; mm0 -= 16

			psubw mm2, mmw_0x0080    ; mm2 -= 128
			pand mm1, mm0            ; mm1 = __y6__y4__y2__y0

			psubw mm3, mmw_0x0080    ; mm3 -= 128
			psllw mm1, 3             ; mm1 *= 8

			psrlw mm0, 8             ; mm0 = __y7__y5__y3__y1
			psllw mm2, 3             ; mm2 *= 8

			pmulhw mm1, mmw_mult_Y   ; mm1 *= luma coeff 
			psllw mm0, 3             ; mm0 *= 8

			psllw mm3, 3             ; mm3 *= 8
			movq mm5, mm3            ; mm5 = mm3 = v

			pmulhw mm5, mmw_mult_V_R ; mm5 = red chroma
			movq mm4, mm2            ; mm4 = mm2 = u

			pmulhw mm0, mmw_mult_Y   ; mm0 *= luma coeff 
			movq mm7, mm1            ; even luma part

			pmulhw mm2, mmw_mult_U_G ; mm2 *= u green coeff 
			paddsw mm7, mm5          ; mm7 = luma + chroma    __r6__r4__r2__r0

			pmulhw mm3, mmw_mult_V_G ; mm3 *= v green coeff  
			packuswb mm7, mm7        ; mm7 = r6r4r2r0r6r4r2r0

			pmulhw mm4, mmw_mult_U_B ; mm4 = blue chroma
			paddsw mm5, mm0          ; mm5 = luma + chroma    __r7__r5__r3__r1

			packuswb mm5, mm5        ; mm6 = r7r5r3r1r7r5r3r1
			paddsw mm2, mm3          ; mm2 = green chroma

			movq mm3, mm1            ; mm3 = __y6__y4__y2__y0
			movq mm6, mm1            ; mm6 = __y6__y4__y2__y0

			paddsw mm3, mm4          ; mm3 = luma + chroma    __b6__b4__b2__b0
			paddsw mm6, mm2          ; mm6 = luma + chroma    __g6__g4__g2__g0
			
			punpcklbw mm7, mm5       ; mm7 = r7r6r5r4r3r2r1r0
			paddsw mm2, mm0          ; odd luma part plus chroma part    __g7__g5__g3__g1

			packuswb mm6, mm6        ; mm2 = g6g4g2g0g6g4g2g0
			packuswb mm2, mm2        ; mm2 = g7g5g3g1g7g5g3g1

			packuswb mm3, mm3        ; mm3 = b6b4b2b0b6b4b2b0
			paddsw mm4, mm0          ; odd luma part plus chroma part    __b7__b5__b3__b1

			packuswb mm4, mm4        ; mm4 = b7b5b3b1b7b5b3b1
			punpcklbw mm6, mm2       ; mm6 = g7g6g5g4g3g2g1g0

			punpcklbw mm3, mm4       ; mm3 = b7b6b5b4b3b2b1b0

			/* 32-bit shuffle.... */
			pxor mm0, mm0            ; is this needed?

			movq mm1, mm6            ; mm1 = g7g6g5g4g3g2g1g0
			punpcklbw mm1, mm0       ; mm1 = __g3__g2__g1__g0

			movq mm0, mm3            ; mm0 = b7b6b5b4b3b2b1b0
			punpcklbw mm0, mm7       ; mm0 = r3b3r2b2r1b1r0b0

			movq mm2, mm0            ; mm2 = r3b3r2b2r1b1r0b0

			punpcklbw mm0, mm1       ; mm0 = __r1g1b1__r0g0b0
			punpckhbw mm2, mm1       ; mm2 = __r3g3b3__r2g2b2

			/* 32-bit save... */
			movq  [eax], mm0         ; eax[0] = __r1g1b1__r0g0b0
			movq mm1, mm6            ; mm1 = g7g6g5g4g3g2g1g0

			movq 8[eax], mm2         ; eax[8] = __r3g3b3__r2g2b2

			/* 32-bit shuffle.... */
			pxor mm0, mm0            ; is this needed?

			punpckhbw mm1, mm0       ; mm1 = __g7__g6__g5__g4

			movq mm0, mm3            ; mm0 = b7b6b5b4b3b2b1b0
			punpckhbw mm0, mm7       ; mm0 = r7b7r6b6r5b5r4b4

			movq mm2, mm0            ; mm2 = r7b7r6b6r5b5r4b4

			punpcklbw mm0, mm1       ; mm0 = __r5g5b5__r4g4b4
			punpckhbw mm2, mm1       ; mm2 = __r7g7b7__r6g6b6

			/* 32-bit save... */
			add ebx, 8               ; puc_y   += 8;
			add ecx, 4               ; puc_u   += 4;

			movq 16[eax], mm0        ; eax[16] = __r5g5b5__r4g4b4
			add edx, 4               ; puc_v   += 4;

			movq 24[eax], mm2        ; eax[24] = __r7g7b7__r6g6b6
			
			// 0 1 2 3 4 5 6 7 rgb save order

			add eax, 32              ; puc_out += 32

			inc edi
			jne horiz_loop			

			pop edi 
			pop edx 
			pop ecx
			pop ebx 
			pop eax

			emms
						
		}
		puc_y   += stride_y;
		if (y%2) {
			puc_u   += stride_uv;
			puc_v   += stride_uv;
		}
		puc_out += stride_out;
	}
}







/**** YUV -> RGB conversion, 24-bit output ****/
void yuv2rgb_24(uint8_t *puc_y, int stride_y, 
                uint8_t *puc_u, uint8_t *puc_v, int stride_uv, 
                uint8_t *puc_out, int width_y, int height_y,
								unsigned int _stride_out) {

	int y, horiz_count;
	uint8_t *puc_out_remembered;
	int stride_out = width_y * 3;

	if (height_y < 0) {
		/* we are flipping our output upside-down */
		height_y  = -height_y;
		puc_y     += (height_y   - 1) * stride_y ;
		puc_u     += (height_y/2 - 1) * stride_uv;
		puc_v     += (height_y/2 - 1) * stride_uv;
		stride_y  = -stride_y;
		stride_uv = -stride_uv;
	}

	horiz_count = -(width_y >> 3);

	for (y=0; y<height_y; y++) {

		if (y == height_y-1) {
			/* this is the last output line - we need to be careful not to overrun the end of this line */
			uint8_t temp_buff[3*MAXIMUM_Y_WIDTH+1];
			puc_out_remembered = puc_out;
			puc_out = temp_buff; /* write the RGB to a temporary store */
		}

		_asm {
			push eax
			push ebx
			push ecx
			push edx
			push edi

			mov eax, puc_out       
			mov ebx, puc_y       
			mov ecx, puc_u       
			mov edx, puc_v
			mov edi, horiz_count
			
		horiz_loop:

			movd mm2, [ecx]
			pxor mm7, mm7

			movd mm3, [edx]
			punpcklbw mm2, mm7       ; mm2 = __u3__u2__u1__u0

			movq mm0, [ebx]          ; mm0 = y7y6y5y4y3y2y1y0  
			punpcklbw mm3, mm7       ; mm3 = __v3__v2__v1__v0

			movq mm1, mmw_0x00ff     ; mm1 = 00ff00ff00ff00ff 

			psubusb mm0, mmb_0x10    ; mm0 -= 16

			psubw mm2, mmw_0x0080    ; mm2 -= 128
			pand mm1, mm0            ; mm1 = __y6__y4__y2__y0

			psubw mm3, mmw_0x0080    ; mm3 -= 128
			psllw mm1, 3             ; mm1 *= 8

			psrlw mm0, 8             ; mm0 = __y7__y5__y3__y1
			psllw mm2, 3             ; mm2 *= 8

			pmulhw mm1, mmw_mult_Y   ; mm1 *= luma coeff 
			psllw mm0, 3             ; mm0 *= 8

			psllw mm3, 3             ; mm3 *= 8
			movq mm5, mm3            ; mm5 = mm3 = v

			pmulhw mm5, mmw_mult_V_R ; mm5 = red chroma
			movq mm4, mm2            ; mm4 = mm2 = u

			pmulhw mm0, mmw_mult_Y   ; mm0 *= luma coeff 
			movq mm7, mm1            ; even luma part

			pmulhw mm2, mmw_mult_U_G ; mm2 *= u green coeff 
			paddsw mm7, mm5          ; mm7 = luma + chroma    __r6__r4__r2__r0

			pmulhw mm3, mmw_mult_V_G ; mm3 *= v green coeff  
			packuswb mm7, mm7        ; mm7 = r6r4r2r0r6r4r2r0

			pmulhw mm4, mmw_mult_U_B ; mm4 = blue chroma
			paddsw mm5, mm0          ; mm5 = luma + chroma    __r7__r5__r3__r1

			packuswb mm5, mm5        ; mm6 = r7r5r3r1r7r5r3r1
			paddsw mm2, mm3          ; mm2 = green chroma

			movq mm3, mm1            ; mm3 = __y6__y4__y2__y0
			movq mm6, mm1            ; mm6 = __y6__y4__y2__y0

			paddsw mm3, mm4          ; mm3 = luma + chroma    __b6__b4__b2__b0
			paddsw mm6, mm2          ; mm6 = luma + chroma    __g6__g4__g2__g0
			
			punpcklbw mm7, mm5       ; mm7 = r7r6r5r4r3r2r1r0
			paddsw mm2, mm0          ; odd luma part plus chroma part    __g7__g5__g3__g1

			packuswb mm6, mm6        ; mm2 = g6g4g2g0g6g4g2g0
			packuswb mm2, mm2        ; mm2 = g7g5g3g1g7g5g3g1

			packuswb mm3, mm3        ; mm3 = b6b4b2b0b6b4b2b0
			paddsw mm4, mm0          ; odd luma part plus chroma part    __b7__b5__b3__b1

			packuswb mm4, mm4        ; mm4 = b7b5b3b1b7b5b3b1
			punpcklbw mm6, mm2       ; mm6 = g7g6g5g4g3g2g1g0

			punpcklbw mm3, mm4       ; mm3 = b7b6b5b4b3b2b1b0

			/* 32-bit shuffle.... */
			pxor mm0, mm0            ; is this needed?

			movq mm1, mm6            ; mm1 = g7g6g5g4g3g2g1g0
			punpcklbw mm1, mm0       ; mm1 = __g3__g2__g1__g0

			movq mm0, mm3            ; mm0 = b7b6b5b4b3b2b1b0
			punpcklbw mm0, mm7       ; mm0 = r3b3r2b2r1b1r0b0

			movq mm2, mm0            ; mm2 = r3b3r2b2r1b1r0b0

			punpcklbw mm0, mm1       ; mm0 = __r1g1b1__r0g0b0
			punpckhbw mm2, mm1       ; mm2 = __r3g3b3__r2g2b2

			/* 24-bit shuffle and save... */
			movd   [eax], mm0        ; eax[0] = __r0g0b0
			psrlq mm0, 32            ; mm0 = __r1g1b1

			movd  3[eax], mm0        ; eax[3] = __r1g1b1

			movd  6[eax], mm2        ; eax[6] = __r2g2b2
			

			psrlq mm2, 32            ; mm2 = __r3g3b3
	
			movd  9[eax], mm2        ; eax[9] = __r3g3b3

			/* 32-bit shuffle.... */
			pxor mm0, mm0            ; is this needed?

			movq mm1, mm6            ; mm1 = g7g6g5g4g3g2g1g0
			punpckhbw mm1, mm0       ; mm1 = __g7__g6__g5__g4

			movq mm0, mm3            ; mm0 = b7b6b5b4b3b2b1b0
			punpckhbw mm0, mm7       ; mm0 = r7b7r6b6r5b5r4b4

			movq mm2, mm0            ; mm2 = r7b7r6b6r5b5r4b4

			punpcklbw mm0, mm1       ; mm0 = __r5g5b5__r4g4b4
			punpckhbw mm2, mm1       ; mm2 = __r7g7b7__r6g6b6

			/* 24-bit shuffle and save... */
			movd 12[eax], mm0        ; eax[12] = __r4g4b4
			psrlq mm0, 32            ; mm0 = __r5g5b5
			
			movd 15[eax], mm0        ; eax[15] = __r5g5b5
			add ebx, 8               ; puc_y   += 8;

			movd 18[eax], mm2        ; eax[18] = __r6g6b6
			psrlq mm2, 32            ; mm2 = __r7g7b7
			
			add ecx, 4               ; puc_u   += 4;
			add edx, 4               ; puc_v   += 4;

			movd 21[eax], mm2        ; eax[21] = __r7g7b7
			add eax, 24              ; puc_out += 24

			inc edi
			jne horiz_loop			

			pop edi 
			pop edx 
			pop ecx
			pop ebx 
			pop eax

			emms
						
		}


		if (y == height_y-1) {
			/* last line of output - we have used the temp_buff and need to copy... */
			int x = 3 * width_y;                  /* interation counter */
			uint8_t *ps = puc_out;                /* source pointer (temporary line store) */
			uint8_t *pd = puc_out_remembered;     /* dest pointer       */
			while (x--) *(pd++) = *(ps++);	      /* copy the line      */
		}

		puc_y   += stride_y;
		if (y%2) {
			puc_u   += stride_uv;
			puc_v   += stride_uv;
		}
		puc_out += stride_out; 

	}
}







/**** YUV -> RGB conversion, 16-bit output (two flavours) ****/

/* 5 Jan 2001  - Andrea Graziani    */

static uint64_t mask_5		= 0xf8f8f8f8f8f8f8f8;
static uint64_t mask_6		= 0xfcfcfcfcfcfcfcfc;

static uint64_t mask_blue	= 0x1f1f1f1f1f1f1f1f;


/* all stride values are in _bytes_ */
void yuv2rgb_555(uint8_t *puc_y, int stride_y, 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合久久天天综合网| xf在线a精品一区二区视频网站| 欧美另类高清zo欧美| 国产三级一区二区| 手机精品视频在线观看| 成人午夜在线播放| 日韩一区二区三区精品视频 | 欧美麻豆精品久久久久久| 亚洲成人激情av| 成人久久久精品乱码一区二区三区| 欧美视频一区二区| 综合亚洲深深色噜噜狠狠网站| 久久99精品一区二区三区三区| 日本高清成人免费播放| 国产亚洲一区字幕| 久久99精品国产麻豆婷婷| 在线观看日韩一区| 亚洲免费在线观看| www.欧美日韩| 亚洲国产成人自拍| 国产福利一区在线| 国产亚洲午夜高清国产拍精品 | 欧美精品在线视频| 亚洲男同性视频| 99视频热这里只有精品免费| 国产午夜精品理论片a级大结局| 老司机免费视频一区二区三区| 欧美日韩国产小视频| 亚洲与欧洲av电影| 欧美日韩国产经典色站一区二区三区| 久久国产综合精品| 日韩一区二区高清| 麻豆高清免费国产一区| 日韩午夜三级在线| 精品一区二区日韩| 国产欧美日韩综合精品一区二区| 国产综合色在线| 欧美国产日本韩| 成人晚上爱看视频| 亚洲男人的天堂av| 欧美色手机在线观看| 亚洲成人1区2区| 91精品国产综合久久久久久| 理论片日本一区| 久久久国产午夜精品| 国产精品一二一区| 国产精品久久久久久福利一牛影视 | 国产精品久久久久精k8| 色一区在线观看| 亚洲线精品一区二区三区| 欧美电影在线免费观看| 极品尤物av久久免费看| 国产精品理论在线观看| 欧美在线999| 久久精品国产99| 中文字幕亚洲一区二区va在线| 欧洲一区在线观看| 久久成人精品无人区| 国产精品色婷婷久久58| 欧美日韩三级视频| 久久精品国产亚洲一区二区三区| 国产无人区一区二区三区| 色综合激情五月| 免费精品视频在线| 中文字幕一区二区三区av| 正在播放亚洲一区| av动漫一区二区| 日韩精品免费专区| 国产精品久久久久婷婷二区次| 欧美视频一区在线观看| 国产乱码一区二区三区| 亚洲伊人伊色伊影伊综合网| 欧美一区二区三区啪啪| 97se亚洲国产综合自在线| 石原莉奈一区二区三区在线观看| 国产亚洲欧洲一区高清在线观看| 欧美在线免费播放| 国产成+人+日韩+欧美+亚洲| 亚洲电影在线播放| 中文字幕一区视频| 337p日本欧洲亚洲大胆精品| 欧洲精品一区二区| 成人的网站免费观看| 九九**精品视频免费播放| 亚洲高清视频中文字幕| 综合自拍亚洲综合图不卡区| 久久久www成人免费无遮挡大片| 欧美日韩一本到| 91天堂素人约啪| 粉嫩一区二区三区性色av| 精品中文字幕一区二区| 婷婷开心激情综合| 亚洲影视在线观看| 中文字幕一区二区日韩精品绯色| 精品粉嫩aⅴ一区二区三区四区| 欧美军同video69gay| 色婷婷综合视频在线观看| 不卡的av网站| 国产精一区二区三区| 国内精品久久久久影院一蜜桃| 日本欧美一区二区三区乱码| 一区二区在线观看不卡| 中文字幕在线观看一区| 国产精品夫妻自拍| 国产欧美精品一区aⅴ影院| 欧美成人免费网站| 欧美一区二区三区四区视频| 欧美日韩国产高清一区二区 | 床上的激情91.| 国产一区二区三区在线观看免费| 日韩av电影天堂| 天堂成人免费av电影一区| 亚洲成人中文在线| 婷婷综合另类小说色区| 日韩高清在线观看| 美国欧美日韩国产在线播放| 日韩在线一区二区三区| 美女视频第一区二区三区免费观看网站| 亚洲亚洲精品在线观看| 亚洲小少妇裸体bbw| 五月天一区二区| 日本91福利区| 国产真实乱子伦精品视频| 高清不卡在线观看av| 波多野结衣一区二区三区 | 国产一区二区伦理片| 国产白丝精品91爽爽久久| 国产成人综合视频| 岛国av在线一区| 日本久久一区二区三区| 欧美色视频在线观看| 欧美成人伊人久久综合网| 国产夜色精品一区二区av| 日韩理论片在线| 亚洲影视在线播放| 久久精品99国产国产精| 成人精品视频.| 欧美最新大片在线看| 日韩午夜激情av| 国产精品视频你懂的| 一二三区精品视频| 毛片不卡一区二区| 成人听书哪个软件好| 欧美日韩精品欧美日韩精品| 日韩欧美一二区| 中文字幕在线观看一区| 视频一区在线播放| 国产精品888| 欧美日韩大陆一区二区| 久久噜噜亚洲综合| 亚洲国产aⅴ天堂久久| 国产自产高清不卡| 欧美日韩精品一区二区三区四区| 精品美女被调教视频大全网站| 国产精品国产三级国产aⅴ中文 | 亚洲精品第一国产综合野| 免费亚洲电影在线| av亚洲精华国产精华精华| 91精品国产麻豆| 亚洲欧美在线另类| 国内欧美视频一区二区| 欧美在线观看一区| 国产精品久久久久一区 | 91无套直看片红桃| 26uuu国产一区二区三区| 亚洲成av人片在线| 成人伦理片在线| 精品99久久久久久| 五月天欧美精品| 91在线无精精品入口| 精品sm捆绑视频| 日韩精品一级二级 | 91免费版pro下载短视频| 精品久久国产老人久久综合| 亚洲一区二区三区四区在线| 成人激情文学综合网| wwwwww.欧美系列| 婷婷开心久久网| 欧美视频一区在线观看| 亚洲黄色免费电影| 成人av资源站| 久久精品视频在线看| 麻豆国产精品视频| 日韩手机在线导航| 首页欧美精品中文字幕| 欧美撒尿777hd撒尿| 亚洲精品国久久99热| 91啪亚洲精品| 一区精品在线播放| thepron国产精品| 国产精品久久久久久久久快鸭 | 欧美精品乱码久久久久久按摩| 一区精品在线播放| 99免费精品在线| 国产精品女上位| 成人激情免费视频| 国产精品美女久久久久aⅴ | av在线一区二区三区| 国产精品毛片高清在线完整版 | 国产精品亚洲午夜一区二区三区|