日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux bluez语音传输,Linux BlueZ PCM 音频播放器

發(fā)布時(shí)間:2024/9/27 linux 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux bluez语音传输,Linux BlueZ PCM 音频播放器 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

自己寫的簡單的實(shí)驗(yàn)代碼,貼上來看看,有興趣的話,大家可以交流

/******************************************************************************/

/**?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? **/

/**???????????????????????? MODULES USED????????????????????????????????????????????????????????????????? **/

/**??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? **/

/******************************************************************************/

#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "msgqueue.h"

/******************************************************************************/

/**?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? **/

/**???????????????????????? DEFINITIONS AND MACROS????????????????????????????????????????????? **/

/**???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????**/

/******************************************************************************/

#define DONGLE_ADDR??"00:11:67:58:D1:0F"???? /*ISSC*/

#define HEAD_SET_ADDR?"83:82:5B:00:A5:A3"???? /*NK-808 channel 1*/

#define HEAD_SET_CHAN?? 1

//#define PCM_DATA_PATH?? "/tmp/sco.dat"

//#define PCM_DATA_PATH?? "/mnt/heart.pcm"

#define PCM_DATA_PATH?? "/mnt/tianhou.pcm"

#define RECV_BUFFER???? 64

#define SEND_BUFFER???? 64

typedef pthread_t thread_T;

typedef void *(*pthread_startroutine_t) (void *);

typedef void *pthread_addr_t;

typedef void threadArg_T;

typedef void (*threadFunc_T)(void *);

/*debugging micro*/

#ifdef ENABLE_DEBUG

int DebugEnabled = 0;

#else

#define DebugEnabled??? 1

#endif

#define DDBG(fmts)? if(DebugEnabled)printf(fmts)

#define DBG(fmts,args) if(DebugEnabled)printf(fmts,args)

#define DBG2(fmts,arg1,arg2) if(DebugEnabled)printf(fmts,arg1,arg2)

/******************************************************************************/

/**?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? **/

/**??????????????????????????? TYPEDEF AND STRUCTURE????????????????????????????????????????? **/

/**??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? **/

/******************************************************************************/

struct _dongle_priv {

int hci_sock;

int sco_sock;

int device_channel;

char ag_addr[20];??/* adddress of adapter */

char hs_addr[20];

unsigned char isServiceConnected;

char isScoConnected;

char isRunning;

char callSetup;

char callAccept;

};

typedef struct _dongle_priv bt_data;

/******************************************************************************/

/**?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? **/

/**??????????????????????????? GLOBAL VARIABLES???????????????????????????????????????????????????????? **/

/**??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? **/

/******************************************************************************/

bt_data * BTd;

static sem_t?? Sem;

/******************************************************************************/

/**?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? **/

/**???????????????????????? LOCAL FUNCTIONS?????????????????????????????????????????????????????????????**/

/**?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?**/

/******************************************************************************/

thread_T thread_create(int priority, threadFunc_T startFunc, threadArg_T *arg)

{

thread_T???????????? thread;

pthread_attr_t?????? thread_attr;

struct sched_param?? param;

pthread_attr_init(&thread_attr);

/* pthread_attr_setinheritsched(PTHREAD_EXPLICT_SCHED); */

pthread_attr_setdetachstate(&thread_attr, PTHREAD_CREATE_DETACHED);

param.sched_priority = priority;

pthread_attr_setschedparam(&thread_attr, &param);

pthread_create(&thread, &thread_attr, (pthread_startroutine_t)startFunc,

(pthread_addr_t)arg);

return(thread);

}

void set_bit(int offset)

{

BTd->isServiceConnected |= (0x01

static int rfcomm_connect(bdaddr_t * src, bdaddr_t * dst, uint8_t channel)

{

struct sockaddr_rc addr;

int s;

if ((s = socket(PF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM)) < 0) {

return -1;

}

memset(&addr, 0, sizeof(addr));

addr.rc_family = AF_BLUETOOTH;

bacpy(&addr.rc_bdaddr, src);

addr.rc_channel = 0;

if (bind(s, (struct sockaddr *)&addr, sizeof(addr)) < 0) {

printf("rfcomm bind error\n");

close(s);

return -1;

}

memset(&addr, 0, sizeof(addr));

addr.rc_family = AF_BLUETOOTH;

bacpy(&addr.rc_bdaddr, dst);

addr.rc_channel = channel;

if (connect(s, (struct sockaddr *)&addr, sizeof(addr)) < 0) {

printf("rfcomm connect error\n");

close(s);

return -1;

} else{

printf("connecting successfully sock %d\n",s);

}

return s;

}

static int sco_connect(bdaddr_t *src, bdaddr_t *dst)

{

struct sockaddr_sco addr;

//struct sco_conninfo conn;

//struct sco_options opts;

int s;

if ((s = socket(PF_BLUETOOTH, SOCK_SEQPACKET, BTPROTO_SCO)) < 0) {

return -1;

}

memset(&addr, 0, sizeof(addr));

addr.sco_family = AF_BLUETOOTH;

bacpy(&addr.sco_bdaddr, src);

if (bind(s, (struct sockaddr *)&addr, sizeof(addr)) < 0) {

close(s);

return -1;

}

memset(&addr, 0, sizeof(addr));

addr.sco_family = AF_BLUETOOTH;

bacpy(&addr.sco_bdaddr, dst);

if (connect(s, (struct sockaddr *)&addr, sizeof(addr)) < 0 ){

close(s);

printf("sco connecting failed\n");

return -1;

}

return s;

}

static int start_rfcomm_link(char *dst , char *src , int channel)

{

bdaddr_t usb_dongle_addr,head_set_addr;

int fd;

if (!dst||!src){

return -1;

}

str2ba(src,&usb_dongle_addr);

str2ba(dst,&head_set_addr);

fd = rfcomm_connect(&usb_dongle_addr,&head_set_addr,channel);

return fd;

}

static int start_sco_link(char *dst , char *src)

{

bdaddr_t usb_dongle_addr,head_set_addr;

int fd;

//uint16_t sco_handle, sco_mtu;

if (!dst||!src){

return -1;

}

str2ba(src,&usb_dongle_addr);

str2ba(dst,&head_set_addr);

fd = sco_connect(&usb_dongle_addr,&head_set_addr);

return fd;

}

static int cind_cmd_str(char *cmd)

{

if (!cmd){

return -1;

}

memset(cmd,0,sizeof(cmd));

strcpy(cmd,"\r\n+CIND:(\"service\",(0,1)),(\"call\",(0,1)),(\"callsetup\",(0,3)),(\"signal\",(0-5)),(\"roam\",(0-1))\r\n");

return 0;

}

static int at_rx(int fd_at, char *receive)

{

int retval,ret;

fd_set rfds;

struct timeval tv;

FD_ZERO(&rfds);

FD_SET(fd_at, &rfds);

tv.tv_sec = 0;

tv.tv_usec = 5000;

if (!receive){

return -1;

}

memset(receive,0,sizeof(receive));

if ((retval = select(fd_at+1, &rfds, NULL, NULL, &tv)) > 0){

memset(receive,0,RECV_BUFFER);

ret = read(fd_at,receive,RECV_BUFFER);

if (ret > 0){

DBG("recving from headset %s\n",receive);

} else if (-1 == ret){

close(fd_at);

BTd->isRunning = 0;

}

} else if (!retval){

//DDBG("time out\n");

}

return 0;

}

static int at_tx(int fd_at,char* send)

{

if (strlen(send)){

DBG("AG Sending %s\n",send);

write(fd_at,send,strlen(send));

}

return 0;

}

static int at_txrx(int fd_at,char* send, char *receive)

{

int ret = 0;

fd_set rfds;

struct timeval tv;

int retval;

FD_ZERO(&rfds);

FD_SET(fd_at, &rfds);

tv.tv_sec = 3;

tv.tv_usec = 0;

memset(receive,0,sizeof(receive));

if (strlen(send)){

DBG("AG Sending %s\n",send);

write(fd_at,send,strlen(send));

}

if ((retval = select(fd_at+1, &rfds, NULL, NULL, &tv)) > 0){

memset(receive,0,RECV_BUFFER);

ret = read(fd_at,receive,RECV_BUFFER);

if (ret){

DBG("[at_rxtx]recving from headset %s\n",receive);

}

} else if (!retval){

//DDBG("time out\n");

}

return 0;

}

static void monitor_headset(int fd_rfcomm)

{

char recv_buf[RECV_BUFFER] = {0};

char send_buf[SEND_BUFFER] = {0};

while (1 == BTd->isRunning){

at_rx(fd_rfcomm, recv_buf);

if (strstr(recv_buf,"AT+BRSF")){

at_tx(fd_rfcomm,"\r\n+BRSF:49\r");

at_tx(fd_rfcomm,"\r\nOK\r\n");

set_bit(0);

continue;

}

if (strstr(recv_buf,"AT+CIND=?")){

cind_cmd_str(send_buf);

at_tx(fd_rfcomm,send_buf);

at_tx(fd_rfcomm,"\r\nOK\r\n");

set_bit(1);

continue;

}

if (strstr(recv_buf,"AT+CIND")){

at_tx(fd_rfcomm,"\r\n+CIND:1,0,0,2,0\r\n");

at_tx(fd_rfcomm,"\r\nOK\r\n");

set_bit(2);

continue;

}

if (strstr(recv_buf,"AT+CMER")){

at_tx(fd_rfcomm,"\r\nOK\r\n");

set_bit(3);

continue;

}

//Standard call hold and multiparty handling AT command

if (strstr(recv_buf,"AT+CHLD")){

at_tx(fd_rfcomm,"\r\n+CHLD:0\r\n");

at_tx(fd_rfcomm,"\r\nOK\r\n");

set_bit(4);

continue;

}

//Standard “Call Waiting notification” AT command

if (strstr(recv_buf,"AT+CCWA")){

at_tx(fd_rfcomm,"\r\nOK\r\n");

set_bit(5);

continue;

}

//volume setting

if (strstr(recv_buf,"AT+VGS")){

at_tx(fd_rfcomm,"\r\nOK\r\n");

set_bit(6);

continue;

}

//volume setting

if (strstr(recv_buf,"AT+VGM")){

at_tx(fd_rfcomm,"\r\nOK\r\n");

set_bit(7);

continue;

}

if (strstr(recv_buf,"ATA")){

//CallingAccept = 1;

BTd->callAccept = 1;

DDBG("ATA is received\n");

at_tx(fd_rfcomm,"\r\nOK\r\n");

at_tx(fd_rfcomm,"\r\n+CIEV=2,1\r\n");

continue;

}

}

}

static void audio_loop(int fd_sco)

{

char recv_buf[RECV_BUFFER] = {0};

int retval,ret;

fd_set rfds;

struct timeval tv;

FD_ZERO(&rfds);

FD_SET(fd_sco, &rfds);

tv.tv_sec = 3;

tv.tv_usec = 0;

memset(recv_buf,0,RECV_BUFFER);

if ((retval = select(fd_sco+1, &rfds, NULL, NULL, &tv)) > 0){

ret = read(fd_sco,recv_buf,1023);

if (ret){

//DBG("recving from headset %s\n",receive);

//DBG("recv_length %d\n",ret);

//DBG("%x\n",recv_buf);

}

write(fd_sco,recv_buf,ret);

} else if (!retval){

//DDBG("time out\n");

}

}

static int get_file_size(char *file_path)

{

FILE * fd;

int start,end,fileLen;

fd = fopen(file_path,"r");

if (fd){

fseek(fd, 0, SEEK_SET);

start = ftell(fd);

fseek(fd, 0, SEEK_END);

end = ftell(fd);

fileLen = end - start + 1;

/*move to the head*/

fseek(fd, 0, SEEK_SET);

DBG("audio fileLength %d\n",fileLen);

fclose(fd);

return fileLen;

} else{

return -1;

}

}

static unsigned char * fill_pcm_buffer(char * pcm_file_path,int *length)

{

int size = 0;

FILE *fd;

unsigned char * pcmDataPtr;

if (!pcm_file_path){

return NULL;

}

size = get_file_size(pcm_file_path);

if (size > 0){

*length = size;

pcmDataPtr = (unsigned char *)malloc(size);

if (!pcmDataPtr){

DDBG("can't allocate memory\n");

return NULL;

}

memset(pcmDataPtr,0,size);

fd = fopen(pcm_file_path,"r");

if (!fd){

return NULL;

}

fread(pcmDataPtr,1,size,fd);

fclose(fd);

return pcmDataPtr;

} else{

return NULL;

}

}

static bt_data * init_bt_para()

{

bt_data * btd;

btd = (bt_data *)malloc(sizeof(bt_data));

if (!btd){

printf("opps can't allocate resource!\n");

exit(-1);

}

memset(btd,0,sizeof(*btd));

strcpy(btd->ag_addr,DONGLE_ADDR);

strcpy(btd->hs_addr,HEAD_SET_ADDR);

btd->device_channel = HEAD_SET_CHAN;

btd->callSetup = 0;

btd->callAccept = 0;

btd->isRunning = 0;

btd->isServiceConnected = 0;

btd->isScoConnected = 0;

btd->hci_sock = -1;

btd->sco_sock = -1;

return btd;

}

static int ring_headset(int fd_rfcomm)

{

char recv_buf[RECV_BUFFER] = {0};

sem_wait(&Sem);

at_txrx(fd_rfcomm,"\r\nRING\r\n",recv_buf);

while (!strstr(recv_buf,"ATA")&&!BTd->callAccept){

at_txrx(fd_rfcomm,"\r\nRING\r\n",recv_buf);

}

at_tx(fd_rfcomm,"\r\nOK\r\n");

at_tx(fd_rfcomm,"\r\n+CIEV:2,1\r\n");

sem_destroy(&Sem);

return 0;

}

static void play_pcm_audio(int fd_sco,unsigned char * pcm_buffer,int max_length,int times)

{

#define OFFSET? 48

int i;

int cur = 0;

int retval;

unsigned char *pdata;

unsigned char buffer[64];

fd_set rfds,wfds;

struct timeval tv;

unsigned int sector = 300*1024;

if (!pcm_buffer){

return -1;

}

FD_ZERO(&rfds);

FD_SET(fd_sco, &rfds);

FD_ZERO(&wfds);

FD_SET(fd_sco, &wfds);

tv.tv_sec = 0;

tv.tv_usec =8000;

pdata = pcm_buffer;

for (i = 0 ; i < times ; i++){

while (cur < max_length){

if ((retval = select(fd_sco+1, NULL, &wfds, NULL, &tv)) > 0){

//fread(receive,1,OFFSET,fd_music);

//memset(buffer,0,sizeof(buffer));

//memcpy(buffer,pdata,OFFSET);

printf("twins\r\n");

//printf("twins\r\n");

//usleep(1);

//printf("\r\n");

write(fd_sco,pdata,48);

cur += OFFSET;

pdata += OFFSET;

if (cur > sector){

sleep(5);

sector += 300*1024;

}

}

}

printf("music data is finished\n");

sleep(2);

pdata = pcm_buffer;

cur = 0;

sector = 300*1024;

}

//close(fd_sco);

free(pcm_buffer);

printf("audio transfer over\n");

return;

}

void init_hcid_conf()

{

system("hcid -f /etc/bluetooth/hcid.conf");

}

int main()

{

int fd_rfcomm,fd_sco;

unsigned char * pcm_buffer;

int max_length;

bt_data *btd;

init_hcid_conf();

btd = init_bt_para();

BTd = btd;

fd_rfcomm = start_rfcomm_link(btd->hs_addr, btd->ag_addr, btd->device_channel);

if (fd_rfcomm < 0){

exit(-1);

}

btd->isRunning = 1;

btd->hci_sock = fd_rfcomm;

thread_create(50, (threadFunc_T)monitor_headset, (threadArg_T *)btd->hci_sock);

thread_create(50, (threadFunc_T)ring_headset, (threadArg_T *)btd->hci_sock);

pcm_buffer = fill_pcm_buffer(PCM_DATA_PATH, &max_length);

while (1){

if (btd->isServiceConnected == 0xff&&!btd->callSetup){

//printf("service level connection finished\n");

//ready to make/accept a call

at_tx(fd_rfcomm,"\r\n+CIEV=3,1\r\n");

sem_post(&Sem);

//CallSetup = 1;

btd->callSetup = 1;

}

if (0 == btd->isScoConnected){

fd_sco = start_sco_link(btd->hs_addr,btd->ag_addr);

}

if (fd_sco > 0){

//printf("sco link successfully!\n");

btd->sco_sock = fd_sco;

btd->isScoConnected = 1;

}

if (btd->callAccept == 1){

play_pcm_audio(btd->sco_sock, pcm_buffer, max_length,1);

break;

}

}

//sleep(80);

close(btd->sco_sock);

close(btd->hci_sock);

}

總結(jié)

以上是生活随笔為你收集整理的linux bluez语音传输,Linux BlueZ PCM 音频播放器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

黄色综合 | 久草在线综合 | 在线激情影院一区 | 亚洲亚洲精品在线观看 | 91看片淫黄大片在线播放 | 欧美一区二视频在线免费观看 | 国产一区二区在线播放 | 国产一区二区在线播放视频 | 国产欧美精品一区aⅴ影院 99视频国产精品免费观看 | 亚洲四虎影院 | 国内精品视频一区二区三区八戒 | 国产精彩在线视频 | 日本一区二区三区免费看 | 在线观看黄色的网站 | 国产精品久久久久高潮 | www.色婷婷| 午夜精品久久久久久久99热影院 | 亚洲年轻女教师毛茸茸 | 国产精品白虎 | 91av视频免费观看 | 最新国产中文字幕 | av在线一| 欧美伦理电影一区二区 | 中文字幕一区二区三 | 国产精品一区一区三区 | 国产亚洲精品久久久久秋 | 国产探花在线看 | 久久国产精品一国产精品 | 精品一二三区视频 | 色婷婷狠狠操 | 在线看毛片网站 | 国产专区视频在线 | 国产伦精品一区二区三区四区视频 | 成人免费大片黄在线播放 | 91麻豆精品91久久久久同性 | 亚洲黄色免费电影 | 国内精品在线一区 | 香蕉视频国产在线 | 99精品福利 | 日韩二区精品 | 日本性生活一级片 | 久久99久久99精品免费看小说 | 中文字幕日韩av | 国产成人av一区二区三区在线观看 | 国产 日韩 欧美 中文 在线播放 | 99久久国产免费,99久久国产免费大片 | 久久久久久久久久久久久久电影 | 亚洲最新av在线网址 | 97人人澡人人添人人爽超碰 | avhd高清在线谜片 | 成人影片在线免费观看 | 国产一级免费片 | www.99热精品 | 亚洲综合在线五月天 | 久久精品一区二区三 | 超碰在线97免费 | 99久久久久国产精品免费 | 国模一区二区三区四区 | 日韩高清免费在线观看 | 久久香蕉电影 | 亚洲成av人电影 | 日产乱码一二三区别在线 | 视频高清 | 成人av免费电影 | 天天五月天色 | 中文字幕在线不卡国产视频 | 婷婷在线免费视频 | 国产999精品视频 | 亚洲国产精品成人av | 国产在线精品区 | 亚洲午夜精品久久久久久久久久久久 | 欧美日韩另类视频 | 欧美一级免费片 | 国产一区在线精品 | 韩国精品视频在线观看 | 国产精品18videosex性欧美 | 国产日韩欧美综合在线 | 日韩高清三区 | 日韩精品视频在线观看免费 | 国产激情电影综合在线看 | 欧美一区二区精品在线 | 色99导航| 黄色a大片| av免费观看高清 | 久久久久成人精品免费播放动漫 | 91精品久久久久久久久久入口 | 一级免费片 | 婷婷av电影 | 久久国产精品电影 | 久久伦理电影网 | 成人国产精品电影 | 日本中文字幕观看 | 久久天天躁夜夜躁狠狠躁2022 | 国产麻豆精品在线观看 | 久久久久久综合网天天 | 毛片一级免费一级 | 日韩久久精品 | 免费黄在线观看 | 日本公妇在线观看 | 91在线精品秘密一区二区 | 91成人午夜 | 99热都是精品 | 久久爱www. | 2022国产精品视频 | 国内精品小视频 | 日韩在线视频线视频免费网站 | 中文字幕在线观看你懂的 | 一本一道久久a久久精品蜜桃 | 在线电影中文字幕 | 免费在线观看av网址 | 人人射人人爽 | 久草在线最新 | 在线 成人 | 丝袜美女视频网站 | 国产精品ⅴa有声小说 | 人人爽久久久噜噜噜电影 | 波多野结衣在线播放视频 | 99麻豆视频| 黄色免费观看视频 | 久久精品国亚洲 | 一级欧美黄 | 亚洲电影在线看 | 成人h视频在线播放 | 美国三级黄色大片 | 久久精品中文字幕一区二区三区 | 国产视频丨精品|在线观看 国产精品久久久久久久久久久久午夜 | 久久久久久久久久久网站 | 六月激情网| 激情六月婷婷久久 | 色亚洲激情 | 又粗又长又大又爽又黄少妇毛片 | 香蕉视频网站在线观看 | 欧美一级特黄aaaaaa大片在线观看 | 久久天天躁狠狠躁夜夜不卡公司 | 欧美午夜久久 | 中文亚洲欧美日韩 | 91av中文| 欧美中文字幕久久 | 中文在线字幕观看电影 | 人人澡人人舔 | 亚洲一区日韩精品 | 国产裸体视频网站 | 亚洲 欧美 精品 | 91视频这里只有精品 | 91av网站在线观看 | 在线 国产一区 | 国产一级不卡毛片 | 久久精品视频在线免费观看 | 中文字幕一区二区三区久久 | 日韩高清在线看 | 丁香花中文在线免费观看 | 免费av在线网 | 日韩久久精品一区二区三区下载 | 日韩视频一区二区三区 | 91高清视频免费 | 精品国模一区二区 | 亚洲视频免费在线观看 | 在线视频一区观看 | 国产综合久久 | 日本高清xxxx | 日韩av一区二区三区在线观看 | 日韩激情在线视频 | 久久99精品久久久久久久久久久久 | 激情伊人| 91亚洲视频在线观看 | 在线播放国产一区二区三区 | 在线亚洲天堂网 | 精品久久久久久亚洲综合网站 | 四虎影视4hu4虎成人 | av性网站| 日韩美在线观看 | 国产伦理久久精品久久久久_ | 麻豆视频在线免费 | 久草在线视频免费资源观看 | 久久久久电影网站 | 久久一区二区三区日韩 | 色就干| 免费观看特级毛片 | 在线免费观看黄网站 | 久久夜靖品 | 久久国产影院 | 丁香婷婷综合激情五月色 | 97超碰.com| 日韩专区一区二区 | 人人草天天草 | 国产又黄又硬又爽 | 亚洲电影影音先锋 | 欧美精品国产精品 | 欧美国产日韩中文 | 亚洲精品国偷自产在线99热 | 欧美另类v | 99综合电影在线视频 | 国产一区观看 | 国产伦理久久精品久久久久_ | 成人网色| 欧美成人黄色片 | 久久视频这里有精品 | 国内一区二区视频 | 国产亚洲精品久久网站 | 天天做天天爱天天综合网 | 婷婷色在线视频 | 亚洲欧美视频一区二区三区 | 五月综合在线观看 | 一区在线播放 | 亚洲天天在线日亚洲洲精 | 日韩午夜视频在线观看 | 亚洲精品美女久久 | 日韩电影在线视频 | 激情综合一区 | 国产欧美综合在线观看 | 欧美一级片免费在线观看 | 99热这里有 | 欧美性生活免费 | 黄色激情网址 | 521色香蕉网站在线观看 | 摸bbb搡bbb搡bbbb| 国产护士av | 黄色一级动作片 | 天天激情 | 久草久热| 色.www | 久草在线99| 亚洲国产色一区 | 中文在线字幕免 | 五月天丁香视频 | 久久久久亚洲精品男人的天堂 | 成人免费在线电影 | 97热在线观看 | 日韩精品不卡在线 | 九九九九热精品免费视频点播观看 | www.com久久久 | 深夜福利视频在线观看 | 91精品国产99久久久久久红楼 | 久久久免费精品视频 | 国产免费一区二区三区网站免费 | a在线观看免费视频 | 日韩在线色 | 日日干天天爽 | 二区视频在线观看 | 久久在线播放 | 在线观看中文字幕2021 | 日韩国产精品一区 | 亚洲黄色成人网 | 国产一区二区在线免费观看 | 丝袜美腿亚洲 | 99精品在线看 | 久久99精品一区二区三区三区 | 黄色片免费在线 | 99精品久久久久久久 | 日韩电影在线看 | 久久精品国产免费看久久精品 | 精品产品国产在线不卡 | 欧美一区二区在线免费观看 | 久久黄页 | 日韩高清在线一区二区 | 亚洲欧美少妇 | 婷婷丁香视频 | 日本久久中文 | 日韩av不卡在线播放 | 久久国产精品影视 | 久久天天躁狠狠躁夜夜不卡公司 | 中文字幕色综合网 | 成人午夜电影网站 | 麻豆一二三精选视频 | 高清久久久 | 91在线视频精品 | 黄色软件视频大全免费下载 | 黄色免费观看网址 | 91一区一区三区 | 国产精品欧美精品 | 国产午夜精品在线 | 国产成人精品综合久久久久99 | 在线v片 | 九色porny真实丨国产18 | 伊人狠狠色 | 精产嫩模国品一二三区 | 麻豆一区二区三区视频 | 日韩一区正在播放 | 毛片视频网址 | 亚洲黄色在线免费观看 | 国产视频97 | 国产在线va | 黄色免费在线看 | 91精品国产综合久久福利 | 亚洲黄网站 | 美女在线黄 | 九九热精品在线 | 久日视频| 欧美久久久久久久久中文字幕 | 国产视频久久 | 久久久亚洲国产精品麻豆综合天堂 | 一区在线播放 | 精品在线视频一区 | 国产成人精品亚洲a | 99久久久久久久 | 中文字幕在线观看免费高清电影 | 在线观看av大片 | 国产91对白在线播 | 女人18精品一区二区三区 | 福利电影一区二区 | 一区二区中文字幕在线播放 | 国产1区在线观看 | 精品超碰 | 蜜臀av麻豆 | 九九视频在线观看视频6 | 精品久久久久久一区二区里番 | 黄污视频网站 | 在线国产福利 | 国产精品视频永久免费播放 | 亚洲精品美女免费 | 日韩欧美高清一区二区三区 | 成人av网站在线观看 | 欧美一级大片在线观看 | 亚洲在线精品视频 | 97碰在线视频| 亚洲国产成人av网 | 在线观看成人小视频 | 欧美一级特黄aaaaaa大片在线观看 | 亚洲成av人片在线观看www | 91精品国产欧美一区二区 | 精品久久久久久亚洲综合网 | 婷婷国产一区二区三区 | 有码中文字幕在线观看 | 免费日韩 精品中文字幕视频在线 | 91精品国产欧美一区二区成人 | 久久国产高清视频 | 成人一级片视频 | 天天操夜夜曰 | 999视频网站 | 久久精品一区二区三区视频 | 五月婷婷在线综合 | 欧美91在线| 999亚洲国产996395 | 99久久er热在这里只有精品66 | 久久夜色网 | 色wwww| 国产美女免费视频 | 亚洲国产偷 | 国产无遮挡又黄又爽在线观看 | 亚洲欧美色婷婷 | 美女网站视频一区 | 欧美大片在线观看一区 | 亚洲精品三级 | 在线观看中文字幕一区二区 | 色视频网站在线观看一=区 a视频免费在线观看 | 国产破处视频在线播放 | 91在线视频免费91 | 欧美 亚洲 另类 激情 另类 | 日韩高清不卡一区二区三区 | 99精品视频在线看 | 日韩最新在线视频 | 欧美黑人猛交 | 极品久久久久 | 91精品在线免费观看视频 | 香蕉在线视频播放网站 | 婷婷精品国产欧美精品亚洲人人爽 | 成人av在线直播 | 国产中文字幕一区 | 久久国产品 | 日日干网址| 狠狠网亚洲精品 | 欧美日韩国产二区三区 | 一区二区精品久久 | 国产一级特黄毛片在线毛片 | 国产精品久久久久av福利动漫 | 国产黄影院色大全免费 | 91女神的呻吟细腰翘臀美女 | 一区av在线播放 | 麻豆视频国产 | 国产高清在线不卡 | 一区二区三区不卡在线 | 亚洲一区在线看 | 亚洲精品国产精品国自产观看 | 婷婷色av| 日本中文字幕视频 | 91福利视频免费观看 | 国产一级片播放 | 天无日天天操天天干 | 亚洲午夜久久久久久久久久久 | 激情欧美xxxx | 蜜臀av免费一区二区三区 | 国产老太婆免费交性大片 | 免费在线观看国产精品 | 国产女人18毛片水真多18精品 | 高清一区二区三区av | 99久久99久国产黄毛片 | 最近中文字幕完整视频高清1 | 激情婷婷 | 亚洲精品在线观看视频 | 国产美腿白丝袜足在线av | 日本黄色特级片 | 五月天综合色 | 99视频免费观看 | 国产在线色视频 | 亚洲精品免费视频 | 国产一区免费在线观看 | 99亚洲精品视频 | 亚洲午夜不卡 | a v在线观看 | 国产一区免费在线观看 | 日批视频在线播放 | 亚洲最大在线视频 | 亚洲成av人片在线观看 | 成人国产精品av | 国产91影院 | 97av.com| 久久国产影院 | 精品久久免费 | 亚洲电影免费 | 性色av一区二区三区在线观看 | 一区二区三区日韩精品 | 97精品国产91久久久久久 | 免费在线观看一级片 | 久草.com | 特片网久久 | 日本不卡123区 | 不卡的av在线 | 国产精品免费在线播放 | 欧美夫妻生活视频 | 91视频传媒 | 深爱开心激情 | 日日日操操 | 久久er99热精品一区二区 | 欧美另类亚洲 | 99色在线 | 最近中文字幕在线播放 | 亚洲黄色影院 | 人人澡人摸人人添学生av | 中文字幕高清在线 | 久久精品91视频 | 成人免费视频网站在线观看 | a天堂免费 | 国产亚洲91 | 国产一区二区视频在线播放 | 成人免费观看视频大全 | 欧美日韩中字 | 国产在线不卡一区 | 国产五月| 91在线91 | 中文字幕在线播放日韩 | 夜夜视频资源 | 日韩一区二区三免费高清在线观看 | 一级片免费视频 | 色多多视频在线观看 | 黄色软件在线观看免费 | 日韩三区在线观看 | 亚洲精品www | 99在线看 | 亚洲精品乱码久久久久久久久久 | 亚洲精品免费在线观看视频 | 日韩免费播放 | 国内精品视频一区二区三区八戒 | 久久久久麻豆v国产 | 亚洲天天在线 | 国产黄色a | 丰满少妇在线观看 | www.色国产| 麻豆免费视频观看 | 91在线日本| 久久精品99| 欧美色图亚洲图片 | 欧美色综合天天久久综合精品 | 欧洲精品视频一区二区 | 欧美日韩中文在线视频 | 综合国产在线观看 | 久草在线播放视频 | 黄色三级在线观看 | 国产特级毛片aaaaaa高清 | 亚洲五月婷 | 91av欧美| 日日干天天爽 | 免费高清国产 | 九九九九精品 | 96av视频 | 在线观看成年人 | 日韩免费区 | 国产原创在线观看 | 亚洲一级二级三级 | 人人舔人人爽 | 亚洲精品一区二区三区高潮 | 五月天亚洲综合小说网 | 色综合天天天天做夜夜夜夜做 | 欧美成人亚洲成人 | av在线色 | 美女视频网站久久 | 91看片在线看片 | 日韩精品一区二区三区水蜜桃 | 日本久久电影 | 人人干人人艹 | 亚洲最快最全在线视频 | 人人爽人人爽人人片av | 99热高清| 中文字幕av日韩 | 黄色a视频免费 | 日本在线观看中文字幕 | 日本久久久久久科技有限公司 | 黄色片免费看 | 天天玩天天干天天操 | 精品久久久久久久久久久久久久久久久久 | 国产男女免费完整视频 | 国产原创中文在线 | 中文字幕4 | 日韩电影精品 | 国产成人av网站 | 中文字幕电影在线 | 国产在线精 | 91亚洲国产 | 开心激情综合网 | 黄色aaa毛片| 又黄又爽又色无遮挡免费 | 久久男人视频 | 美女免费网站 | 国产精品完整版 | 麻豆影视在线播放 | 国产精品一区在线 | 国产成人一二三 | 久久久免费高清视频 | 五月婷婷一级片 | 2024国产精品视频 | 中文字幕精品一区久久久久 | 午夜精品久久久久久 | 深爱激情综合网 | 日韩欧美视频在线播放 | 麻花传媒mv免费观看 | 国产精品久久久久国产a级 激情综合中文娱乐网 | 国产一级一片免费播放放a 一区二区三区国产欧美 | 97超碰精品| 日韩高清免费观看 | 久久久精选 | 国产日韩欧美视频 | 一区二区电影在线观看 | 久久激情电影 | 国产三级精品三级在线观看 | 黄色1级毛片 | 成年人在线免费看视频 | 狠狠狠狠狠狠操 | av网站有哪些 | 99亚洲天堂| 欧美极品一区二区三区 | av免费线看| 日韩欧美第二页 | 欧美男男激情videos | 中文字幕av全部资源www中文字幕在线观看 | 激情欧美一区二区免费视频 | 成人国产精品久久久 | 亚洲成人资源在线观看 | 亚洲爱爱视频 | 国产成人免费精品 | 国产美女网 | 91香蕉视频在线下载 | 成人免费视频a | 欧美ⅹxxxxxx | www激情久久| 久久这里只有精品23 | 在线小视频国产 | 久久电影网站中文字幕 | 亚洲精品久久久久中文字幕m男 | 欧美伦理一区二区 | 色综合久久久久网 | 成人黄色大片 | 综合久久精品 | 欧美精品一区二区在线播放 | 日韩在线观看视频一区二区三区 | 久久99热这里只有精品国产 | 亚洲一区二区视频在线 | 综合色亚洲 | 国产中文字幕91 | 久久亚洲综合国产精品99麻豆的功能介绍 | 麻豆视频免费网站 | 五月香婷 | 五月花丁香婷婷 | 国产99久久久国产精品成人免费 | 亚洲视频精选 | 久久美女精品 | 亚洲最快最全在线视频 | 久久另类小说 | 天天看天天干天天操 | 狠狠干天天操 | 美女网站色 | 亚洲综合在线发布 | 在线免费观看视频a | 日韩欧美中文 | 天堂在线一区二区 | 久久99这里只有精品 | 欧美一区日韩一区 | 91一区啪爱嗯打偷拍欧美 | 成人观看 | 成人精品福利 | 91精品电影 | 久久精品91久久久久久再现 | 日韩在线视频线视频免费网站 | 黄色免费看片网站 | 免费h精品视频在线播放 | 涩涩网站在线看 | 久草香蕉在线视频 | 美女久久一区 | 97视频免费在线看 | 欧美成人91| av在观看 | 麻豆播放| 免费视频二区 | 亚洲乱码在线 | 久草观看视频 | 午夜精品一区二区国产 | 成人在线视 | 激情开心| 日韩电影中文字幕在线 | 久久久久久亚洲精品 | 国产成人精品久久久久 | 91在线视频在线 | 久久9999久久免费精品国产 | 91九色蝌蚪 | 一区二区三区高清在线 | 欧美一二在线 | 久久免费99精品久久久久久 | 日韩高清网站 | 成人性生交大片免费观看网站 | 99久久久久久久 | 久草在线资源观看 | 天天操天天干天天 | 久久夜色精品亚洲噜噜国4 午夜视频在线观看欧美 | 欧美一区二区在线 | www.久久色 | 一区二区三区 中文字幕 | 伊人电影在线观看 | 国产一区二区在线播放 | 欧美性直播 | 日韩精品一区二区三区丰满 | 狠狠色丁香婷婷综合欧美 | 91经典在线 | 精品视频一区在线 | 成人在线免费观看视视频 | 久久99精品久久久久婷婷 | 成人播放器 | 中文字幕视频一区二区 | 日韩欧美一区二区三区视频 | 国产黄色网 | 久久精品精品 | 亚洲欧美激情精品一区二区 | 欧美成人性战久久 | 国产不卡精品 | 456免费视频 | 亚洲丁香日韩 | 国产在线精品播放 | 欧美激情视频一区二区三区 | 免费观看第二部31集 | 色综合婷婷久久 | a天堂免费| 色a综合 | 国产小视频在线免费观看视频 | 91精品久久久久久久99蜜桃 | 欧美激情第一区 | 亚洲清纯国产 | 天天综合网 天天综合色 | 中字幕视频在线永久在线观看免费 | www.色五月.com | 91视频在线免费看 | 美女黄频视频大全 | 亚洲最新精品 | 午夜精品999 | 成人在线一区二区 | 久久久久久久综合色一本 | 成人午夜在线观看 | 国产免费又粗又猛又爽 | 美女免费电影 | 在线免费看黄网站 | 黄色三级网站在线观看 | 91高清完整版在线观看 | 日本免费久久高清视频 | 69视频国产 | 国产精品女主播一区二区三区 | 在线视频18在线视频4k | 黄色片软件网站 | 最近日本mv字幕免费观看 | 97在线影院| www.狠狠插.com | 久久精品a| 安徽妇搡bbbb搡bbbb | 久久久久国 | 97成人在线观看 | 久国产在线播放 | 国产精品久久久久久久99 | 欧美视频日韩视频 | 成年人黄色免费看 | 九九电影在线 | 九九久久精品视频 | 国产一区欧美在线 | 亚洲精品国产品国语在线 | 黄网站色视频 | 国产精品午夜免费福利视频 | 久热免费| 日韩精品1区2区 | 成人av免费网站 | 久久精品小视频 | 久操中文字幕在线观看 | 中文字幕激情 | 91精品夜夜 | 97夜夜澡人人爽人人免费 | 狠狠操天天干 | 在线日韩一区 | 日日操天天操夜夜操 | 天堂入口网站 | 88av视频 | av日韩av | 99精品一区二区 | 激情视频一区二区三区 | 免费国产ww | 国产97色在线| 午夜精品一区二区三区免费视频 | 97在线观看视频免费 | 中文字幕在线免费看 | 国产97碰免费视频 | 亚洲精品视频二区 | 精品a级片 | 日韩小视频网站 | 激情视频一区 | 精品播放 | 国产 日韩 欧美 自拍 | 99人久久精品视频最新地址 | 国产麻豆成人传媒免费观看 | 免费久久网站 | 国产中文字幕视频在线观看 | 欧美韩日在线 | 国产亚洲精品成人 | 精品av网站| 亚洲最新av在线网站 | 亚洲有 在线 | 国产精品精品国产婷婷这里av | 欧美精彩视频 | 天天操天天操天天操天天操天天操 | 五月开心六月伊人色婷婷 | 日韩精品免费一区二区在线观看 | 中文字幕高清免费日韩视频在线 | 欧美日韩在线观看一区 | 欧美日本不卡 | 人人添人人澡 | 精品国产乱码 | 免费在线激情电影 | 色婷丁香 | 欧美日韩视频在线观看一区二区 | 色偷偷男人的天堂av | 亚洲视频免费视频 | 色在线视频| 特级xxxxx欧美 | 天天草视频 | 日韩欧美在线一区二区 | 亚洲欧洲在线视频 | 91精品视屏| 色综合色综合久久综合频道88 | 狠狠狠狠狠操 | 少妇性色午夜淫片aaaze | 在线免费91 | 蜜臀av性久久久久蜜臀aⅴ涩爱 | 五月情婷婷 | 99亚洲精品视频 | 久久精品爱爱视频 | 日韩视频一区二区三区 | 久久激情网站 | 中文字幕制服丝袜av久久 | 在线小视频你懂得 | 99re国产视频 | 日日夜夜精品视频天天综合网 | 9999在线视频 | 在线看小早川怜子av | 麻豆一区二区 | 久久精品三级 | 激情五月婷婷丁香 | 看全黄大色黄大片 | 奇米网8888 | 成年人国产在线观看 | av一级一片 | 亚洲精品视频在线播放 | 婷婷色视频| 天堂网一区 | 五月视频 | 亚洲电影自拍 | 欧美日高清视频 | 亚洲免费观看在线视频 | 五月婷婷六月丁香 | 最近日本韩国中文字幕 | 成片免费观看视频999 | 96久久欧美麻豆网站 | 欧美一区二区视频97 | 亚洲播放一区 | 6699私人影院 | 久久男人中文字幕资源站 | 久久久久草 | 久久精品视频日本 | 黄色精品一区二区 | 国产精品久久久久久婷婷天堂 | 日产乱码一二三区别免费 | 国产精品一区二区三区免费看 | 国产日产精品久久久久快鸭 | 天天操天天操天天操天天操 | 亚洲中字幕| 97人人模人人爽人人少妇 | 玖玖999| 久久久www成人免费毛片麻豆 | 亚洲综合视频在线 | 久久爱资源网 | 国产成人在线播放 | 在线观看免费观看在线91 | 免费看的黄网站 | 日韩欧美观看 | 天天天天爱天天躁 | 黄色日本免费 | 日本大尺码专区mv | 91成人在线观看喷潮 | 蜜桃视频在线视频 | 日日麻批40分钟视频免费观看 | 美国三级黄色大片 | 久久精品欧美一 | 久久er99热精品一区二区 | 友田真希x88av | 久久免费看av | 免费激情网 | 免费色视频 | 欧美日韩中文视频 | www.伊人色.com | 国产字幕在线看 | 欧美少妇18p | 久久久久久国产精品久久 | 欧美动漫一区二区三区 | 免费在线黄色av | 天天做夜夜做 | 欧美在线a视频 | 在线观看日韩精品 | 中文字幕在线免费观看 | 日韩欧美高清一区二区三区 | 在线视频手机国产 | 色综合久久88色综合天天 | 色综合久久88色综合天天免费 | 久久婷婷精品视频 | 亚洲精品在线观看中文字幕 | 欧美黄色特级片 | 婷婷六月天丁香 | 私人av | 久久精品国产亚洲精品2020 | 香蕉久草 | 欧美日韩中文字幕综合视频 | 国产视频在线观看一区二区 | 成人综合婷婷国产精品久久免费 | 2024国产精品视频 | 最新av中文字幕 | 国产高清久久久 | 久草国产在线 | 久草久 | 国产精品一区二区av麻豆 | 韩国av免费在线观看 | 欧美精品久久久久久久久久丰满 | 国产精品亚| av免费电影在线 | 久久精品三级 | 久久高视频| 久久欧美视频 | 中文字幕你懂的 | 91欧美国产| 免费在线播放 | 欧美成年黄网站色视频 | 亚洲六月丁香色婷婷综合久久 | 国内精品久久久久久久久久久 | 成人久久免费视频 | 激情大尺度视频 | 日韩a级免费视频 | 九九一级片 | 一级久久精品 | 91污视频在线观看 | 国产原创av片 | 一区二区三区日韩视频在线观看 | 国产成在线观看免费视频 | 日本不卡视频 | 亚洲精品视频免费看 | 国产精品久久久久永久免费看 | 日韩午夜精品 | 国产99久久久国产精品成人免费 | 国产精品自在线拍国产 | 久草在线一免费新视频 | 奇米网在线观看 | 狠狠躁日日躁狂躁夜夜躁 | 亚洲国内精品在线 | www国产亚洲精品久久网站 | 天天激情在线 | a成人v在线 | 色香蕉在线视频 | 国产成人高清在线 | 日韩欧美成| 在线观看av不卡 | 日韩69视频| 久久tv| 国产精彩在线视频 | 美女福利视频一区二区 | 国色天香av | 97av在线视频 | 亚洲一区 av| 精品国产成人 | 97色涩| 91大神在线观看视频 | 久久亚洲影院 | 国产一级片久久 | 亚洲国产视频在线 | 久久精品xxx | 97影视| 成 人 黄 色 片 在线播放 | 精品国内自产拍在线观看视频 | 久久噜噜少妇网站 | 一区二区三区在线观看免费视频 | 国产免费精彩视频 | 日日夜夜91 | 国产精品一区二区三区在线免费观看 | 美女网站在线观看 | 日韩欧美电影 | www.香蕉视频在线观看 | 国产成人久久精品一区二区三区 | 日日精品 | 欧美日韩高清在线一区 | 2023av| 手机在线视频福利 | 日本三级香港三级人妇99 | 久久国产欧美日韩 | 中文字幕在线观看完整 | 亚洲一区二区三区四区在线视频 | 欧美日本高清视频 | 国产精品不卡在线播放 | 精品中文字幕在线观看 | 国产免费又爽又刺激在线观看 | 久久只精品99品免费久23小说 | 免费精品视频在线观看 | 欧美精品一区二区免费 | av免费电影在线观看 | 国产精品一区二区三区视频免费 | 国产精品资源 | 午夜999 | 亚洲成人午夜在线 | 成人黄色电影免费观看 | 最新av网站在线观看 | 六月激情婷婷 | 欧美性爽爽 | 狠狠干夜夜操天天爽 | 久久一区91 | 国产精品理论片在线观看 | 国产四虎在线 | 丁香免费视频 | 91精品国产自产老师啪 | 亚洲天天做 | 日韩在线第一 | 国产明星视频三级a三级点| 9在线观看免费高清完整版在线观看明 | 99久久精品一区二区成人 | 国产精品久久久久久久久蜜臀 | 日韩网站一区二区 | 精品国产aⅴ麻豆 | 午夜在线免费观看视频 | 在线观看黄 | 国产精品久久久av | 亚洲国产欧洲综合997久久, | 亚洲午夜久久久久久久久久久 | 免费av试看| 精品主播网红福利资源观看 | 国产一级一级国产 | 免费婷婷 | 婷婷国产一区二区三区 | 丁香六月激情 | av中文字幕在线免费观看 | 成人国产精品久久久久久亚洲 | 成人av教育| 在线观看国产日韩欧美 | 亚洲人成免费网站 | 久久调教视频 | 久久激情五月婷婷 | 久久久久久久久久网 | 色悠悠久久综合 | 久久精品久久精品久久精品 | 中文区中文字幕免费看 | 久久草草热国产精品直播 | 国产一区在线视频 | 亚洲,国产成人av | 91x色| 天天狠狠 | 国内精品美女在线观看 | 在线观看视频97 | 亚洲精品久久久久久久蜜桃 | www.色午夜,com | www.五月婷| 97精品欧美91久久久久久 | 精品久久久久久亚洲综合网站 | 国产黄色大片免费看 | 亚洲在线精品 | 狠狠操.com| 最新中文字幕在线观看视频 | 免费在线观看日韩欧美 | 欧美巨乳波霸 | 国内久久视频 | 婷婷在线网 | 天堂网一区二区 | a午夜电影 | 一级a性色生活片久久毛片波多野 | 免费在线一区二区三区 | 久久午夜国产精品 |