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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

图片播放器小项目(详解)

發(fā)布時間:2023/12/20 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 图片播放器小项目(详解) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

以下內(nèi)容源于朱有鵬《物聯(lián)網(wǎng)大講堂》課程的學(xué)習(xí)整理,如有侵權(quán),請告知刪除。


一、開始動手寫代碼

1、Makefile介紹

(1)這是一個通用的項目管理的Makefile體系,自己寫的(有子文件夾組織的)項目可以直接套用這套Makefile體系。

(2)包含三類:頂層Makefile、Makefile.build(完全不需要改動)、子文件夾下面的Makefile。

  • 子文件夾下的Makefile一般是類似下面的內(nèi)容。


(3)可以參考:http://www.cnblogs.com/lidabo/p/4521123.html。

2、使用SI建立工程


二、framebuffer基本操作代碼

顯示圖片,需要framebuffer。


三、圖片顯示原理和實(shí)踐

1、圖片顯示原理

(1)概念1:像素

(2)概念2:點(diǎn)陣(像素點(diǎn)構(gòu)成的陣列)

(3)分辨率

  • 物理分辨率:物理屏幕像素點(diǎn)的真實(shí)個數(shù);
  • 顯示分辨率:可以小于等于物理分辨率;(通過抽樣)

(4)清晰度(與分辨率和像素間距有關(guān),主觀概念)

  • 像素間距相同時(物理尺寸固定了,則像素間距就固定了),分辨率越大越清晰;分辨率相同時,像素間距越小越清晰。

(5)bpp(RGB565、RGB888)

  • 像素深度,每個像素用多少bit數(shù)據(jù)表示。
  • 一般每個像素點(diǎn)使用32bit(4個字節(jié)),但一般是24位色(高八位一般沒用或者用著其他標(biāo)識,用00或者ff填充以達(dá)到內(nèi)存對齊);
  • RGB888表示紅用8位,綠8位,藍(lán)8位。

(6)顏色序(RGB、BGR)

2、圖片點(diǎn)陣數(shù)據(jù)獲取

(1)Image2LCD軟件提取

(2)通過圖片/視頻文件直接代碼方式提取


四、圖片數(shù)據(jù)提取和顯示

1、Image2LCD提取圖片數(shù)據(jù)

(1)軟件下載:http://www.cr173.com/soft/43222.html

(2)軟件使用

  • 一般不要圖像頭數(shù)據(jù),只需要純數(shù)據(jù);
  • 一般水平掃描;
  • 一般選24位真彩色(即RGB888);
  • 選1024*600后,點(diǎn)右邊按鈕更新;
  • 輸出圖像調(diào)整中,可以調(diào)整RGB。
  • 最后點(diǎn)擊保存。

2、圖片顯示編碼與實(shí)踐

void fb_draw_picture(void) {unsigned char* pdata=gImage_1024600;unsigned int i,j,cnt;unsigned int*p=pfb;for(i=0;i<HEIGHT;i++){for(j=0;j<WIDTH;j++){cnt=i*WIDTH+j;cnt*=3;*p=((pdata[cnt+0]<<0)|(pdata[cnt+1]<<8)|(pdata[cnt+2]<<16));//可以在這里修改,達(dá)到正確的顯示(當(dāng)RB相反時)p++;}} }

五、圖片顯示的高級話題

1、RGB順序調(diào)整

(1)RGB順序有三個地方都有影響

  • 第一個是fb驅(qū)動中的排布;
  • 第二個是應(yīng)用程序中的排布;
  • 第三個是圖像數(shù)據(jù)本身排布(Image2LCD中調(diào)整RGB順序);

(2)如果三個點(diǎn)中RGB順序是一致的就會顯示正常。如果三個設(shè)置不一致就可能會導(dǎo)致顯示結(jié)果中R和B相反了;

(3)實(shí)際寫程序時,一般不去分析這東西,而是根據(jù)實(shí)際顯示效果去調(diào)。如果反了就去調(diào)正應(yīng)用程序中的RGB順序就行了,這樣最簡單。

2、顯示函數(shù)的其他寫法

void fb_draw_picture2(void) {unsigned char* pdata=gImage_1024600;unsigned int x,y,cnt;for(y=0;y<HEIGHT;y++){for(x=0;x<WIDTH;x++){cnt=y*WIDTH+x;*(pfb+cnt)=((pdata[cnt*3+0]<<16)|(pdata[cnt*3+1]<<8)|(pdata[cnt*3+2]<<0));//這里的像素矩陣和cnt有線性關(guān)系,所以可以這樣寫}} }

六、任意分辨率大小圖片顯示

(1)圖片比屏幕分辨率大

  • 這種情況下多出來的部分肯定是沒法顯示的。處理方法是直接在顯示函數(shù)中把多余不能被顯示的部分給丟掉。

(2)圖片大小比屏幕大小要小

  • 這種情況下圖片只是填充屏幕中一部分,剩余部分仍然保持原來的底色。
  • 在獲取圖片數(shù)據(jù)時,大小和圖片實(shí)際大小在這里是一致的。假如不一致呢?

void fb_draw_picture3(void) {unsigned char* pdata=gImage_500281;unsigned int x,y,cnt;unsigned int a=0;for(y=0;y<281;y++){for(x=0;x<500;x++){cnt=y*WIDTH+x;/*cnt始終都是framebuff像素點(diǎn)的編號*/*(pfb+cnt)=((pdata[a+0]<<16)|(pdata[a+1]<<8)|(pdata[a+2]<<0));a+=3;/*由于空缺一部分,像素點(diǎn)編號與像素點(diǎn)矩陣不存在倍數(shù)關(guān)系了,此時應(yīng)該三個三個地傳送進(jìn)來*/}} }

七、任意起點(diǎn)位置圖片顯示

1、小圖片任意起點(diǎn)(但整個圖片顯示沒有超出屏幕范圍內(nèi))

算法1:

void fb_draw_picture4(unsigned int x0,unsigned int y0) {unsigned char* pdata=gImage_500281;unsigned int x,y,cnt;unsigned int cnt1,cnt2;for(y=y0;y<281+y0;y++){for(x=x0;x<500+x0;x++){cnt1=y*WIDTH+x;/*cnt始終都是fb 緩沖區(qū)整體中的像素點(diǎn)的編號*/cnt2=500*(y-y0)+(x-x0);*(pfb+cnt1)=((pdata[cnt2*3+0]<<16)|(pdata[cnt2*3+1]<<8)|(pdata[cnt2*3+2]<<0));/*左值考慮當(dāng)前像素點(diǎn)在fb中的偏移量*//*右值考慮當(dāng)前像素點(diǎn)在圖像數(shù)據(jù)數(shù)組的下標(biāo)(這里是三個為一個元素的數(shù)組的下標(biāo),因此上面會*3)*/}} }

算法2:(因為每循環(huán)一次,+3)


2、起點(diǎn)導(dǎo)致圖片超出屏幕外

(1)現(xiàn)象

  • 左右超出去,會在相反方向補(bǔ)全:這是內(nèi)部for循環(huán)可能超過1024的界定(但沒有超出fb的大小)造成的。
  • 上下超出去,則會消失:因為雙緩沖進(jìn)到了另一幀。如果沒有雙緩沖,則會內(nèi)存溢出。

(2)修改代碼,使得超出部分不再顯示。

法一:

void fb_draw_picture5(unsigned int x0,unsigned int y0) {unsigned char* pdata=gImage_500281;unsigned int x,y,cnt;unsigned int a=0;for(y=y0;y<281+y0;y++){if(y>=HEIGHT)//y方向超出{a+=3;break;//最后一行已經(jīng)顯示了,剩下的不用考慮了}for(x=x0;x<500+x0;x++){if(x>=WIDTH)//x方向超出了{(lán)a+=3;continue;}cnt=y*WIDTH+x;/*cnt始終都是像素點(diǎn)的編號*/*(pfb+cnt)=((pdata[a+0]<<16)|(pdata[a+1]<<8)|(pdata[a+2]<<0));a+=3;/*因此,像素點(diǎn)矩陣也應(yīng)該三個三個地傳送進(jìn)來*/}} } 法二:

void fb_draw_picture4(unsigned int x0,unsigned int y0) {unsigned char* pdata=gImage_500281;unsigned int x,y,cnt;unsigned int cnt1,cnt2;for(y=y0;y<281+y0;y++){for(x=x0;x<500+x0;x++){if(x>=WIDTH)//x方向超出了{(lán)///a+=3;注意這里被詮釋了continue;}cnt1=y*WIDTH+x;/*cnt始終都是fb 緩沖區(qū)整體中的像素點(diǎn)的編號*/cnt2=500*(y-y0)+(x-x0);*(pfb+cnt1)=((pdata[cnt2*3+0]<<16)|(pdata[cnt2*3+1]<<8)|(pdata[cnt2*3+2]<<0));/*左值考慮當(dāng)前像素點(diǎn)在fb中的偏移量*//*右值考慮當(dāng)前像素點(diǎn)在圖像數(shù)據(jù)數(shù)組的下標(biāo)*/}} }

八、BMP圖片的顯示

1、圖片文件的本質(zhì)

(1)圖片文件是二進(jìn)制文件。

  • 文件分兩種,即二進(jìn)制文件、文本文件;


(2)不同格式的圖片文件的差別。

  • 圖片被壓縮與否的區(qū)別。

(3)BMP圖片的基本特征

  • 未被壓縮的元素位圖格式(bit map)。

2、BMP圖片詳解

(1)如何識別BMP文件?

  • 每種圖片格式都有定義好的一種識別方法,BMP圖片特征是以0x424D開頭


(2)BMP文件組成

  • 頭信息+有效信息

3、BMP文件頭信息、圖片有效數(shù)據(jù)區(qū)

見博客:https://www.2cto.com/kf/201310/252434.html

(1)文件大小

(2)有效數(shù)據(jù)開始的位置


(3)信息頭的大小:40個字節(jié)

(4)分辨率


(5)24位真彩色


(6)……

4、寫代碼解析BMP圖片

第一步:打開BMP圖片

第二步:判斷圖片格式是否真是BMP

第三步:解析頭信息,得到該BMP圖片的詳細(xì)信息

第四步:根據(jù)第三步得到的信息,去合適位置提取真正的有效圖片信息

第五步:將得到的有效數(shù)據(jù)丟到fb中去顯示

這樣實(shí)際比較繁瑣!使用結(jié)構(gòu)體比較好!

//path是bmp圖片的pathname //該函數(shù)解析path圖片,并將圖片數(shù)據(jù)丟到bmp_buf中 //返回值錯誤時返回-1,正確返回0 int bmp_analyze(unsigned char *path) {int fd=-1;unsigned char buf[54]={0};ssize_t ret=0;//打開bmp文件fd=open(path,O_RDONLY);if(fd<0){fprintf(stderr,"open %s error.\n",path);return -1;}//讀取文件頭信息ret=read(fd,buf,54);if(ret!=54){fprintf(stderr,"read file header error.\n");return -1;}//解析頭//判斷是否BMP圖片if(buf[0]!='B'||buf[1]!='M'){fprintf(stderr,"file %s is not a bmp picture.\n",path);return -1;}printf("file %s is a bmp picture.\n",path);printf("width is %d\n",*((unsigned int*)(buf+0x12)));printf("hith is %d\n",*((unsigned int*)(buf+0x16)));//成功則說明小端模式close(fd);return 0;}

5、用結(jié)構(gòu)體方式解析BMP文件頭

6、用結(jié)構(gòu)體方式解析BMP信息頭

#ifndef __BMP_H__ #define __BMP_H__typedef struct {unsigned char bfType[2];//文件類?unsigned long bfSize; //位圖大小 unsigned short bfReserved1; //位0 unsigned short bfReserved2; //位0 unsigned long bfOffBits;//到數(shù)據(jù)偏移量 }__attribute__((packed))BitMapFileHeader;//使編譯器不優(yōu)化,其大小為14字節(jié) //信息頭結(jié)構(gòu)體 typedef struct { unsigned long biSize;// BitMapFileHeader 字節(jié)數(shù)long biWidth;//位圖寬度 long biHeight;//位圖高度,正位正向,反之為倒圖 unsigned short biPlanes;//為目標(biāo)設(shè)備說明位面數(shù),其值將總是被設(shè)為1unsigned short biBitCount;//說明比特數(shù)/象素,為1、4、8、16、24、或32。 unsigned long biCompression;//圖象數(shù)據(jù)壓縮的類型沒有壓縮的類型:BI_RGB unsigned long biSizeImage;//說明圖象的大小,以字節(jié)為單位 long biXPelsPerMeter;//說明水平分辨率 long biYPelsPerMeter;//說明垂直分辨率 unsigned long biClrUsed;//說明位圖實(shí)際使用的彩色表中的顏色索引數(shù)unsigned long biClrImportant;//對圖象顯示有重要影響的索引數(shù),0都重要。 } __attribute__((packed)) BitMapInfoHeader; #endif void fb_draw(const unsigned char* ppic) {unsigned char* pdata=ppic;unsigned int x,y;unsigned int a=0;unsigned int cnt=0;a=281*500*3-3;for(y=0;y<281;y++){for(x=0;x<500;x++){cnt=y*WIDTH+x;*(pfb+cnt)=((pdata[a+0]<<16)|(pdata[a+1]<<8)|(pdata[a+2]<<0));a-=3;}//a表示每個像素的三個字節(jié)數(shù)據(jù)的首字節(jié)編號} }

//path是bmp圖片的pathname //該函數(shù)解析path圖片,并將圖片數(shù)據(jù)丟到bmp_buf中 //返回值錯誤時返回-1,正確返回0 int bmp_analyze(unsigned char *path) {int fd=-1;BitMapFileHeader fheader ;BitMapInfoHeader info;ssize_t ret=0;int i;unsigned long len;//打開bmp文件fd=open(path,O_RDONLY);if(fd<0){fprintf(stderr,"open %s error.\n",path);return -1;}ret= read(fd,&fheader,sizeof(fheader));printf("bfsize =%d.\n",fheader.bfSize);//位圖大小printf("boffsize =%d.\n",fheader.bfOffBits);//有效信息偏移量#if 0for( i=0;i<sizeof(fheader);i++){printf("%x ",*((unsigned char *)&fheader+i));}printf("\n"); #endifret= read(fd,&info,sizeof(info));/*會沿著繼續(xù)讀下去*/printf("picture resolution : %d * %d.\n",info.biHeight,info.biWidth);printf("picture bpp : %d \n",info.biBitCount);//讀取圖片有效信息//先把文件指針移動到有效信息的偏移量處(lseek函數(shù))//然后讀出info.biHeight*info.biWidth*info.biBitCount/8個字節(jié)lseek(fd,fheader.bfOffBits,SEEK_SET);//從文件開始的位置開始len=info.biHeight*info.biWidth*info.biBitCount /8;printf("len put to buff :%ld.\n",len);read(fd,bmp_buf,len);//把內(nèi)容丟到fb中去顯示fb_draw(bmp_buf);/*數(shù)據(jù)和使用image2lcd獲取的不一樣*這里會旋轉(zhuǎn)180度顛倒*即第一個像素放到最后一個像素點(diǎn)像素,依次類推了*/close(fd);return 0; }

注意:

  • 使用結(jié)構(gòu)體來解析圖片數(shù)據(jù)時,和使用image2lcd不一樣。
  • 這里會旋轉(zhuǎn)180度顛倒,即第一個像素放到最后一個像素點(diǎn)像素,依次類推了。
  • 因此在fb_draw()函數(shù)中,需要將最后一個像素點(diǎn)數(shù)據(jù)放在第一個像素處顯示,以此類推。

---------------以上代碼寫得不規(guī)整,要進(jìn)行規(guī)整--------------------

九、及時規(guī)整

1、再次強(qiáng)調(diào)規(guī)范問題

(1)函數(shù)、變量起名字要合法合理;

  • 小寫函數(shù);

(2)要寫注釋;

  • 第一步,第二步……可以先寫注釋再寫代碼;

(3)函數(shù)長短要合適;

(4)多文件組織,每個東西丟到合理的位置

2、為什么要規(guī)整項目?

(1)完全自由寫項目時不可能一步到位,只能先重內(nèi)容和功能,后補(bǔ)條理和規(guī)范;

(2)規(guī)整的過程也是一個梳理邏輯和分析架構(gòu)的過程。

3、對本項目進(jìn)行規(guī)整

(1)去掉測試顯示時頭文件形式提供的圖片顯示相關(guān)的東西

  • 即去除fb_draw_picture_n()測試函數(shù),因為我們的最終目的是解析bmp格式圖片(已經(jīng)實(shí)現(xiàn)了,因此要刪除之前的測試函數(shù))

4、一些重構(gòu)代碼的技巧

(1)用#if 0 ? #endif來屏幕不需要的代碼,不要用/* ?*/;

(2)暫時不要的代碼先不要刪除,而是屏幕掉


5、添加DEBUG宏以控制調(diào)試信息輸出

debug宏添加好后,要使能輸出可以有2種方式:

  • 第一種:在debug宏定義之前定義DEBUG宏。見http://blog.csdn.net/oqqhutu12345678/article/details/78873195
  • 第二種:在編譯參數(shù)中添加-DDEBUG編譯選項。(在makefile中添加)

6、圖片信息用結(jié)構(gòu)體來封裝傳遞

//封裝圖片各種信息 typedef struct pic_info {char* pathname;//路徑和文件名字unsigned int width;unsigned int height;unsigned int bpp;unsigned char *pData;//指向圖片有效數(shù)據(jù)存儲的buff}pic_info;

從而需要修改相關(guān)代碼。


十、jpg圖片的顯示原理分析

1、認(rèn)識jpg圖片

(1)屬于二進(jìn)制文件。

(2)有其固定的識別特征:http://www.cnblogs.com/Wendy_Yu/archive/2011/12/27/2303118.html

(3)是經(jīng)過壓縮的圖片格式。

2、jpg圖片如何顯示

(1)jpg圖片中的二進(jìn)制數(shù)并不對應(yīng)像素數(shù)據(jù)。

(2)LCD顯示器的接口仍然是framebuffer。

(3)要顯示jpg圖片必須先解碼jpg得到相應(yīng)的位圖數(shù)據(jù)

3、如何解碼jpg圖片

(1)圖片編碼和解碼對應(yīng)著壓縮和解壓縮過程

(2)編碼和解碼其實(shí)就是一些數(shù)學(xué)運(yùn)算(壓縮度、算法復(fù)雜度、時間、清晰度)

(3)軟件編解碼和硬件編解碼

  • 需要頻繁進(jìn)行編解碼的話,一般使用硬件編解碼。

(4)不同的圖片格式其實(shí)就是編解碼的算法不同,結(jié)果是圖片特征不同

(5)編程實(shí)戰(zhàn):使用開源編解碼庫


十一、libjpeg介紹及開源庫的使用方法

1、libjpeg介紹

(1)基于linux的開源軟件;

(2)C語言編寫(gcc、使用Makefile管理);

(3)提供JPEG圖片的編解碼算法實(shí)現(xiàn);

2、libjpeg版本及下載資源

(1)經(jīng)典版本v6b:https://sourceforge.net/projects/libjpeg/files/libjpeg/6b/

(2)最新版本v9b:http://www.ijg.org/

3、開源庫的使用方法

(1)移植(源碼下載、解壓、配置、修改Makefile、編譯或交叉編譯)

  • 移植的目的是由源碼得到三個東西:動態(tài)庫.so,靜態(tài)庫.a,頭文件.h。

(2)部署(部署動態(tài)庫so、部署靜態(tài)庫.a和頭文件.h)

  • 動態(tài)庫是程序在運(yùn)行時才需要的,編譯程序時不需要。
  • 靜態(tài)庫是靜態(tài)連接時才需要,動態(tài)鏈接時不需要。
  • 頭文件.h是在編譯程序時使用的,運(yùn)行時不需要的。
  • 靜態(tài)庫和頭文件,是在編譯鏈接過程中需要的,因此要把靜態(tài)庫.a文件和頭文件.h文件放到ubuntu的文件系統(tǒng)中。
  • 動態(tài)庫是在運(yùn)行時需要的,所以動態(tài)庫so文件要放到開發(fā)板的文件系統(tǒng)中(放的過程就叫部署),。

(3)注意三個編譯鏈接選項:-I ?-l(小L) ?-L

舉例如-I:


  • -I是編譯選項(準(zhǔn)確的是說是makefile預(yù)處理選項CFLAGS或者CPPFLAGS中指定),用來指定預(yù)處理時查找頭文件的范圍的
  • -l(小寫L)是鏈接選項(LDFLAGS中指定),用來指定鏈接額外的庫的名字(譬如我們用到了數(shù)學(xué)函數(shù),就用-lm,鏈接器就會去鏈接libm.so;那么我們使用了libjpeg,對應(yīng)的庫名字就叫l(wèi)ibjpeg.so,就需要用-ljpeg選項去鏈接)。
  • -L是鏈接選項(LDFLAGS中指定),用來指定鏈接器到哪個路徑下面去找動態(tài)鏈接庫
  • 總結(jié):-l(小寫L)是告訴鏈接器要鏈接的動態(tài)庫的名字,而-L是告訴鏈接器要鏈接的動態(tài)庫的路徑。

十二、libjpeg的移植實(shí)戰(zhàn)

1、移植

(1)源碼下載、解壓至/tmp/decodeporting目錄下。

(2)編譯前的配置(分析configure文件的usage、借鑒前輩的設(shè)置,得到應(yīng)該執(zhí)行下面命令)

  • ./configure --prefix=/opt/libcode --exec-prefix=/opt/libcode --enable-shared --enable-static-build=i386 -host=arm
  • ? ? ? ? ? ? ? ? ? 指定編譯結(jié)果放置的目錄(如果沒有則需要先建立相應(yīng)的目錄)
  • 配置生成了makefile文件,通過查看知道需要在/opt/libcode中創(chuàng)建include、bin、lib目錄。

(3)Makefile檢查,主要查看交叉編譯設(shè)置是否正確

  • CC=gcc 改為 CC=arm-linux-gcc //編譯器,如果不改,只能在ubuntu使用,不能在開發(fā)板使用。
  • AR=ar rc 改為 AR=arm-linux-ar rc
  • AR2=ranlib 改為 AR2=arm-linux-ranlib

(4)編譯:執(zhí)行make命令。

(5)安裝

  • 執(zhí)行make install-lib;
  • 安裝就是將編譯生成的庫文件、頭文件、可執(zhí)行文件分別裝載到--prefix ?--exec-prefix所指定的那些目錄中去。

2、部署

前面只是完成移植,相關(guān)文件都在ubuntu上。我們要把動態(tài)鏈接庫(.so文件)放到開發(fā)板的根文件系統(tǒng)中(/root/rootfs/),可以考慮三者之一:

  • 第一個:/lib
  • 第二個:/usr/lib(前兩個在程序運(yùn)行時,可以自動找到。后面任意目錄時,需要在程序中指定)
  • 第三個:任意指定目錄


十三、使用libjpeg解碼顯示jpg圖片

1、如何使用一個新的庫

(1)思路一:網(wǎng)絡(luò)上找別人使用過后寫的文檔、博客等作為參考。

(2)思路二:看庫源碼自帶的文檔(說明文檔和示例代碼)。我們從思路二出發(fā)。

2、libjpeg說明文檔和示例代碼

(1)說明文檔:README和libjpeg.doc

(2)示例代碼:example.c

3、結(jié)合說明文檔來實(shí)踐


4、解讀example.c和移植


5、代碼問題

(1)測試代碼,先試圖讀取jpg圖片頭信息。

(2)問題排除
  • 編譯時問題:主要就是頭文件包含,除了在代碼中包含頭文件外,還要注意指明頭文件的路徑
  • 因為盡管包含了頭文件,但只會在當(dāng)前的目錄和path指定的路徑中尋找。我們應(yīng)該在總Makefile中指定。




  • 注意-I、-l、-L三個編譯鏈接選項的使用

6、部署動態(tài)庫以使程序運(yùn)行起來


(1)一般放到開發(fā)板根文件系統(tǒng)/lib或者/usr/lib下

  • 這樣不需要給系統(tǒng)指定庫路徑,就能自動找到。
  • 強(qiáng)調(diào)一下是開發(fā)板根文件系統(tǒng)下的路徑,千萬不要弄成了ubuntu的根文件系統(tǒng)下的目錄。

(2)放到自定義的第三方的目錄

  • 將該自定義第三方目錄導(dǎo)出到環(huán)境變量LD_LIBRARY_PATH下即可。

  • 可以使用echo $LD_LIBRARY_PATH查看當(dāng)前的路徑環(huán)境變量包含哪些路徑。
  • 可以把上述操作寫進(jìn)到run.sh文件中,省得每次都要這樣操作。

7、測試讀取頭信息


十四、解決解碼顯示中的問題

1、問題分析及解決記錄

(1)根據(jù)LCD錯誤的顯示狀態(tài),分析有可能是顯示函數(shù)fb_draw中的圖片寬高數(shù)據(jù)有誤,于是在fb_draw函數(shù)中添加debug打印出寬和高來。結(jié)果發(fā)現(xiàn)是對的。

(2)顯示函數(shù)中的圖片寬高和fb寬高都是對的,結(jié)果顯示時還是只有一溜(其余位置黑屏),可能的一個原因就是:顯示數(shù)據(jù)本身不對,很多都是0。

  • 如何驗證?只要把顯示數(shù)據(jù)打印出來看一看就知道了。
  • 結(jié)果發(fā)現(xiàn)打印出的待顯示數(shù)據(jù)果然是很多0,說明給顯示函數(shù)的待顯示數(shù)據(jù)就是錯的。


(3)這些待顯示數(shù)據(jù)為什么會錯?

  • 第一種可能性就是libjpeg解碼出來的數(shù)據(jù)就是錯的;
  • 第二種可能性是解碼一行出來暫存到buffer的時候,或者memcpy從暫存的buffer拿出來給pData指向的空間的時候給搞錯了。
  • 相對來說第二種很好驗證而第一種不好驗證。只需要在jpeg_read_scanlines函數(shù)后面直接打印顯示解碼出來的一行數(shù)據(jù),就可以知道是不是第二種情況。
  • 結(jié)果打印出來好多0,說明是第一種情況。

(4)截至目前已經(jīng)鎖定問題,就是jpeg_read_scanlines解碼出來的數(shù)據(jù)本身就不對。

(5)可能的問題

  • 有可能是libjpeg本身就有問題;
  • 有可能我們對libjpeg的部署不對導(dǎo)致他工作不對;
  • 有可能我們寫的代碼不對,也就是說我們沒用正確的方法來使用libjpeg。

(6)沒有思路怎么辦

  • 去網(wǎng)上找一些別人寫的libjpeg解碼顯示圖片的示例代碼,多看幾個,對著和我們的關(guān)鍵部位對比,尋找思路。
  • 如果在網(wǎng)上找不到相關(guān)資料,這時候就只有硬著頭皮去看源碼了。譬如去libjpeg的源碼中查看:jpeg_read_scanlines、cinfo.mem->alloc_sarray等。

(7)解決了buffer申請導(dǎo)致的問題之后,我們再來解決2個遺留的問題

  • 一個就是RGB順序問題,另一個是圖像轉(zhuǎn)了180度的問題。

(8)添加了fb_draw2函數(shù)并且調(diào)用后,2個遺留問題徹底解決。至此,jpg圖片顯示完美實(shí)現(xiàn)。

2、結(jié)束jpg圖片部分

(1)加上jpg圖片格式識別:判斷開頭和結(jié)尾的特征字節(jié)。

(2)對外封裝好用的jpg圖片顯示函數(shù)

(3)對外封裝好用的bmp圖片顯示函數(shù)




十五、解碼顯示png圖片

1、思路分析

(1)png更像是jpg而不像是bmp;

(2)png和jpg都是壓縮格式的圖片,都是二進(jìn)制文件,不同之處是壓縮和解壓縮的算法不同。

(3)通過libjpeg來編解碼jpg圖片,那么同樣有一個libpng用來編解碼png圖片。

(4)工作思路和順序

  • 找到并移植并部署libpng,然后查readme和其他文檔示例代碼等來使用libpng提供的API來對png圖片進(jìn)行解碼,并將解碼出來的數(shù)據(jù)丟到framebuffer中去顯示。

2、libpng移植

(1)下載源碼包:

(2)解壓、配置、修改Makefile、編譯、部署。注意實(shí)際路徑。

  • ./configure --host=arm-linux --enable-shared --enable-static --prefix=/opt/libdecode

(3)配置出錯,報錯信息:configure: error: zlib not installed

  • 分析問題是因為libpng依賴于zlib庫,所以要先移植zlib庫才可以。

(4)移植了zlib后再過來配置,還是報錯,原因是因為沒有導(dǎo)出相關(guān)環(huán)境變量,所以libpng在配置的時候找不到剛才移植的zlib庫的庫文件和頭文件。

(5)解決方案就是使用epport臨時性的導(dǎo)出,在scrt中輸入:

# export LDFLAGS="-L/opt/libdecode/lib" # export CFLAGS="-I/opt/libdecode/include" # export CPPFLAGS="-I/opt/libdecode/include"

(6)導(dǎo)出后再次配置就過了,然后編譯和安裝

(7)make && make install

3、zlib移植

(1)下載:http://www.zlib.net/,并解壓

(2)配置:export CC=arm-linux-gcc ? ? ?

./configure -shared --prefix=/opt/libdecode

(3)make && make install

(4)make install后/opt/libdecode目錄下的lib和include目錄下就有了zlib的靜態(tài)庫動態(tài)庫和頭文件了,然后再回去繼續(xù)libpng的移植。


4、參考源碼包自帶的資料開始編程

(1)readme

(2)libpng-manual.txt

(3)example.c 和 pngtest.c


十六、圖片文件的管理和檢索

1、圖片文件的管理

(1)在物理磁盤存儲層次上,用一個文件夾來管理;

(2)在程序中,用數(shù)據(jù)結(jié)構(gòu)來管理。

  • 用數(shù)組管理
  • 用鏈表管理

(4)編程實(shí)戰(zhàn)(細(xì)節(jié)見代碼,下面是關(guān)鍵點(diǎn))

a、新建一個文件夾,記得要在makefile中添加新建的文件夾路徑,以及在新建文件夾中新建makefile來管理文件。

b、文件夾的打開操作、讀取操作


2、圖片信息的自動檢索

(1)讀取文件類型

(2)普通文件和文件夾分類處理

(3)普通文件區(qū)分,將其中的圖片按格式存儲到圖片管理數(shù)組/鏈表中

typedef enum image_type {IMAGE_TYPE_BMP,IMAGE_TYPE_JPG,IMAGE_TYPE_UNKNOWN, }image_type_e;typedef struct image_info {char pathname[PATHNAME_LEN];image_type_e type; }image_info_t;

int scan_image2(const char *path) {// 在本函數(shù)中遞歸檢索path文件夾,將其中所有圖片填充到iamges數(shù)組中去DIR *dir;struct dirent *ptr;char base[1000];struct stat sta;if ((dir = opendir(path)) == NULL){perror("Open dir error...");exit(1);}// readdir函數(shù)每調(diào)用一次就會返回opendir打開的basepath目錄下的一個文件,直到// basepath目錄下所有文件都被讀完之后,就會返回NULLwhile ((ptr = readdir(dir)) != NULL){if(strcmp(ptr->d_name, ".")==0 || strcmp(ptr->d_name, "..")==0) ///current dir OR parrent dircontinue;// 用lstat來讀取文件屬性并判斷文件類型memset(base,'\0',sizeof(base));//strcpy(base,path);strcat(base,"/");strcat(base,ptr->d_name);lstat(base, &sta);if (S_ISREG(sta.st_mode)){//printf("regular file.\n");//printf("d_name:%s/%s\n", path, ptr->d_name);// 如果是普通文件,就要在這里進(jìn)行處理:// 處理思路就是 先判定是否屬于已知的某種圖片格式,如果是則放到images數(shù)組中// 如果都不屬于則不理他if (!is_bmp(base)){strcpy(images[image_index].pathname, base);images[image_index].type = IMAGE_TYPE_BMP;}if (!is_jpg(base)){strcpy(images[image_index].pathname, base);images[image_index].type = IMAGE_TYPE_JPG;}image_index++;}if (S_ISDIR(sta.st_mode)){//printf("directory.\n");//printf("d_name:%s/%s\n", path, ptr->d_name);scan_image2(base);}} } void show_images(void) {int i;for (i=0; i<image_index; i++){switch (images[i].type){case IMAGE_TYPE_BMP:display_bmp(images[i].pathname); break;case IMAGE_TYPE_JPG:display_jpg(images[i].pathname); break;default:break;}sleep(2);} }

十七、添加觸摸翻頁功能

1、讀取觸摸坐標(biāo)數(shù)據(jù)

  • 開發(fā)板上的觸摸屏是/dev/input/event2(我這里是event2)

2、使用觸摸坐標(biāo)判斷并執(zhí)行翻頁操作

(1)執(zhí)行./run.sh后會阻塞,如果點(diǎn)擊觸摸屏,會在scrt中顯示測試的內(nèi)容。

  • code 0表示x坐標(biāo),value為x的值;code 1表示y坐標(biāo),value為y的值。

(2)在不同區(qū)域點(diǎn)一下,有不同的效果。



十八、總結(jié)與回顧

1、bug解決

2、項目總結(jié)

(1)項目描述:軟硬件平臺等

(2)重點(diǎn)和難點(diǎn)

3、項目展望與擴(kuò)展功能

(1)劃屏翻頁

(2)圖片放大與縮小顯示

(3)動畫

(4)開機(jī)畫面

(5)背景音樂


總結(jié)

以上是生活随笔為你收集整理的图片播放器小项目(详解)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

蜜桃av久久久亚洲精品 | 97人人超碰在线 | 欧美日韩在线观看不卡 | 永久免费在线 | 欧美黑人xxxx猛性大交 | av官网在线 | 国产成人av电影在线 | 婷婷日 | 国产免费成人 | 又长又大又黑又粗欧美 | 欧美性猛片, | 亚洲国产无 | 精品国产一区二区三区av性色 | 中文字幕在线看片 | 搡bbbb搡bbb视频| av丁香 | 九九九毛片| 国产原创av在线 | 久久理伦片 | 狠狠干天天操 | 国产成人一区二区三区影院在线 | 中文字幕一区二区三区四区在线视频 | 特级a老妇做爰全过程 | 美女精品国产 | 97在线观看 | 日本激情视频中文字幕 | 97成人精品视频在线播放 | 97超级碰碰碰视频在线观看 | 国产资源网 | 日韩大陆欧美高清视频区 | 欧美成人视 | 在线国产黄色 | 久久人人看 | 国产h在线观看 | 日日干夜夜操视频 | 免费视频一级片 | 国产区精品视频 | 久一网站| 国产亚洲精品久久久久5区 成人h电影在线观看 | 久久久片| 久久久免费av | 国产一区二区三区免费在线观看 | 久草在线视频网站 | 欧美成人一区二区 | 国产91精品久久久久久 | 亚洲欧洲精品一区二区精品久久久 | www四虎影院 | 成人av资源网站 | 日本中文字幕在线电影 | 91精品国自产在线偷拍蜜桃 | 在线免费观看av网站 | 96看片 | 久久久久影视 | 九九九热精品免费视频观看网站 | 久久a级片 | 夜色资源网 | 亚洲成人家庭影院 | 免费久久久 | 久久夜视频 | 亚洲人人网 | 国产超碰在线观看 | 亚洲一区二区精品 | 日韩久久视频 | 成人av在线网址 | 久久精品国产一区 | 国产精品视频久久久 | 日韩大片在线免费观看 | 狠狠色伊人亚洲综合网站野外 | 精品国产一区二区三区噜噜噜 | 久久99国产综合精品免费 | 精品久久久久免费极品大片 | 最近中文字幕视频完整版 | 亚洲综合精品视频 | 一区二区三区电影在线播 | 超碰人人射 | 国产精品免费视频一区二区 | 国产不卡网站 | 啪啪凸凸 | 天天天天天天干 | 麻豆国产视频 | 日本精品久久久久中文字幕 | 国产一区二区高清 | 亚洲综合在线播放 | 日日操狠狠干 | 精品国产一区二区三区蜜臀 | 亚洲精品女| 九色视频网站 | 五月天婷婷在线视频 | 国产精品久久久久国产精品日日 | 欧美在线不卡一区 | 亚洲一二三区精品 | 91热这里只有精品 | 在线观看91精品国产网站 | 免费av小说| 人人爱人人爽 | 天天操网站| 黄色小说在线观看视频 | 国产福利91精品张津瑜 | 91少妇精拍在线播放 | 亚洲狠狠婷婷综合久久久 | www.狠狠操.com | 欧美日韩性生活 | 成人一级影视 | 五月色综合 | 国产精品久久久视频 | 91九色在线观看 | 日韩在线观看你懂的 | 亚洲日本va中文字幕 | 久久婷婷五月综合色丁香 | 精品一区精品二区 | 射射射综合网 | 麻豆91视频| 久久久久久片 | 成人av电影在线观看 | 免费看特级毛片 | 在线视频一区观看 | 久久99精品热在线观看 | 国产精品毛片一区二区在线看 | 欧美日韩国产一区二区在线观看 | 91成年人在线观看 | 国产精品福利在线观看 | 亚洲欧美精品在线 | 日本三级在线观看中文字 | 天天综合网 天天 | 天天操天天操天天操天天操天天操 | 91理论片午午伦夜理片久久 | 久久精品视频在线观看 | 欧美乱淫视频 | 亚洲综合情| 久久久国产在线视频 | 视频一区二区视频 | 波多在线视频 | 欧美日韩一区二区免费在线观看 | 欧美一区二区三区四区夜夜大片 | 亚洲视频免费 | 久久精品站 | 久久九九视频 | 国产精品久久久久久久久久久久午夜 | 亚洲精品免费观看视频 | 国产 在线 高清 精品 | 午夜精品久久久久久久久久久 | 成人小视频在线 | 久久精品国产免费看久久精品 | 毛片随便看| 九九热只有这里有精品 | 97成人精品视频在线观看 | 久久久久激情视频 | 免费在线观看成人 | 黄色大片国产 | 成人一级黄色片 | 黄在线免费看 | 日韩激情免费视频 | 久精品视频在线观看 | 久久久国产一区二区三区四区小说 | 国产黄a三级| 日日夜夜精品免费视频 | 国产精品色婷婷视频 | 精品一区电影国产 | 中文字幕成人av | 日本黄色免费电影网站 | 美女在线免费视频 | 最新av电影网址 | 四虎免费在线观看 | 日韩一区二区三区观看 | 国产第一福利 | 久久久久成人精品 | 亚洲精选99 | 成人在线免费观看视视频 | 久久99精品国产麻豆宅宅 | 一区二区三区四区不卡 | 中文字幕av一区二区三区四区 | 亚洲视频,欧洲视频 | 深爱激情综合网 | 99精品成人 | 天天操天天干天天 | 久久99精品久久久久久久久久久久 | 精品国产亚洲日本 | 久久69精品久久久久久久电影好 | 国产亚洲精品av | 天天色欧美 | 色婷婷综合视频在线观看 | 激情综合网五月激情 | 国产成人精品一区二区三区福利 | 中文字幕乱码在线播放 | 欧美日本在线观看视频 | 美女网站在线观看 | 欧美成天堂网地址 | 91精品视频免费看 | 亚洲国产中文在线观看 | 日韩精品免费在线视频 | 亚洲精品一区二区在线观看 | 日产乱码一二三区别在线 | 天天爱天天插 | 91成人久久| 久久久久亚洲国产精品 | 久久久精品亚洲 | 中文字幕在线日 | 久久综合九色综合久久久精品综合 | se视频网址 | 免费av网站在线看 | 麻豆91精品91久久久 | 超碰在线观看99 | 成人a视频 | 久久久久久久久影视 | 日韩一区二区三 | 91在线91 | 久久伦理 | 日韩综合视频在线观看 | 91成年人在线观看 | 中文字幕在线观看网址 | 亚洲九九影院 | 久久免费精品国产 | 综合色站导航 | 91免费高清观看 | 国产精品精品久久久久久 | 国产精品美女久久久久久久 | 又黄又爽又无遮挡免费的网站 | 韩国av免费 | av先锋影音少妇 | ,午夜性刺激免费看视频 | 成人网看片| 国产精品岛国久久久久久久久红粉 | 日韩欧美大片免费观看 | 香蕉影院在线播放 | 精品国产欧美一区二区 | 久久综合欧美精品亚洲一区 | 免费色网站| .国产精品成人自产拍在线观看6 | 国产韩国精品一区二区三区 | 亚洲精品久久久久久国 | 美女黄频视频大全 | 久久九九影视 | www视频在线播放 | 久久综合视频网 | 国产精品久久伊人 | 亚洲激情婷婷 | 亚洲精品91天天久久人人 | 日韩在线网址 | 色诱亚洲精品久久久久久 | 久久久国产影视 | 国产成人免费观看久久久 | 国产高清在线观看av | 久久精品人人做人人综合老师 | 蜜臀av夜夜澡人人爽人人 | 美腿丝袜一区二区三区 | 久久久国产在线视频 | 热久久免费视频精品 | 99在线观看免费视频精品观看 | 人人天天夜夜 | 亚洲免费小视频 | 中文字幕av有码 | 欧美一级电影 | 日韩xxx视频 | 精品久久久久_ | 日本aaaa级毛片在线看 | 在线观看中文字幕网站 | 五月激情丁香图片 | 黄色成人91 | 在线影院中文字幕 | 久久97久久 | 日本黄色黄网站 | 日本久久久久久科技有限公司 | 日韩网站中文字幕 | 激情 一区二区 | 狠狠狠狠狠狠狠干 | 91精品国产一区二区在线观看 | 中文字幕在线观看视频免费 | 精品久久久久久久久亚洲 | 午夜视频在线瓜伦 | 在线视频 影院 | 欧洲色综合 | 精品国产一二三四区 | 婷婷久久亚洲 | 国产小视频福利在线 | 天天操夜夜操天天射 | 蜜桃视频在线观看一区 | 日韩va亚洲va欧美va久久 | 欧美韩国日本在线观看 | 9999毛片 | 人成在线免费视频 | 精品久久久久久久久久岛国gif | 成人av在线亚洲 | 国产精品一区二区视频 | 亚洲人成人天堂h久久 | 色干干 | 在线一区观看 | 日本巨乳在线 | 中文字幕在线视频一区二区三区 | av亚洲产国偷v产偷v自拍小说 | 91免费网| 天堂av在线网 | 久久国产精品一二三区 | 美女视频黄在线观看 | 天天激情综合 | 欧美大片在线观看一区 | 99re久久资源最新地址 | 中文字幕一区二 | 国产黄色av | 欧美日韩国产高清视频 | 成人精品999 | 久久成人高清 | 国产美女精品人人做人人爽 | 欧美精品v国产精品 | 看国产黄色片 | 国产成人av电影在线 | 亚洲精品美女在线观看 | 久久夜色精品国产欧美一区麻豆 | 全黄色一级片 | 麻豆国产精品永久免费视频 | 探花视频免费观看 | 一二三区视频在线 | 国产福利久久 | 日韩午夜小视频 | 玖玖玖影院| 成人av午夜| 碰超在线97人人 | 国产成人久久av | 欧洲在线免费视频 | 草久在线观看 | 国产精品久久久久三级 | 欧美色黄 | 色姑娘综合网 | 999久久久久| 福利二区视频 | 天天射射天天 | www.看片网站 | 免费在线观看成人小视频 | 国产五月色婷婷六月丁香视频 | 在线中文字幕电影 | 999久久a精品合区久久久 | 国产美女免费视频 | 久久久久久毛片 | 久久看毛片 | 99久久精品国产亚洲 | 国产成人av一区二区三区在线观看 | 欧美日韩不卡一区二区三区 | 免费成人黄色av | 在线观看一级视频 | 国产精品淫 | 国产精品高清在线观看 | 亚洲国产成人精品在线观看 | 亚州成人av在线 | 久久久久成人精品免费播放动漫 | a亚洲视频 | 麻豆影音先锋 | 九九免费在线看完整版 | 国产一级片一区二区三区 | 国产伦理久久精品久久久久_ | 91视频免费看 | 亚洲视频高清 | 成人免费网站在线观看 | 久久成人国产精品入口 | 波多野结衣视频一区二区 | 特级西西444www大胆高清无视频 | 精品专区| 狠狠综合久久av | 在线观看免费91 | 超碰在线最新网址 | 草久视频在线观看 | 激情欧美xxxx | japanesefreesex中国少妇 | 中文字幕 成人 | 在线国产激情视频 | 色综合久久精品 | 丁香婷婷网 | 91在线视频免费观看 | 日韩二区精品 | 国产在线色视频 | 欧美日本一区 | 国内免费久久久久久久久久久 | 亚洲天堂网在线视频观看 | 国产日韩三级 | 国产91精品一区二区绿帽 | 成人久久18免费网站图片 | 丁香六月国产 | 国产精品毛片一区二区在线看 | 91av在线免费观看 | 国产 一区二区三区 在线 | 国产日产精品久久久久快鸭 | 91视频在线播放视频 | 久久精品99国产国产 | 日本高清免费中文字幕 | 成人免费影院 | www.av在线.com| 中文字幕在线观看视频免费 | 日本丶国产丶欧美色综合 | 久久免费视频3 | 欧美 高跟鞋交 xxxxhd | 日韩中文字幕在线不卡 | 国产手机av在线 | 国产精品免费人成网站 | 中文字幕二区三区 | 一区二区三区四区久久 | 国产黄a三级三级 | 国产色秀视频 | 久久精品香蕉 | 成人宗合网 | 久久午夜影院 | 99久久婷婷国产 | 久久不卡视频 | 成人在线黄色 | 深爱综合网 | 人人澡人人草 | 成人网在线免费视频 | 久久优 | 在线免费91 | 亚洲精品欧美视频 | 精品久久久久一区二区国产 | 综合网成人 | 伊人狠狠操| 国产精品v欧美精品 | 美女黄色网在线播放 | 久久婷婷久久 | 91精品国产高清自在线观看 | 久久精品第一页 | 久久激情视频 久久 | 国产一级二级视频 | 豆豆色资源网xfplay | 狠狠躁18三区二区一区ai明星 | 日韩av午夜 | 欧美一级在线 | 久久久免费精品国产一区二区 | 婷婷草| 国产专区精品 | 国产糖心vlog在线观看 | 久久视频6 | 国产一线天在线观看 | 免费在线观看污 | 久久激情视频免费观看 | 婷婷五综合 | 人人爽人人爽人人片av | 日韩一二区在线观看 | 五月婷婷激情 | 日韩电影黄色 | 91传媒91久久久 | 国产日韩精品一区二区三区 | 首页中文字幕 | 久久久久久久综合色一本 | 国产精品久久久久久久久久久久 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 成人高清在线观看 | a级国产乱理伦片在线观看 亚洲3级 | 中文字幕在线观看免费 | 91视频久久 | 国产日产精品久久久久快鸭 | 97精品国产97久久久久久 | 91最新中文字幕 | 日本性视频 | 激情综合网在线观看 | 婷婷激情五月 | 在线之家官网 | 久久黄色免费视频 | 日本在线观看一区二区三区 | 97超碰站 | 日韩三级精品 | 亚洲在线精品视频 | 91视频在线 | 亚洲日韩精品欧美一区二区 | 欧美人zozo | 欧美 亚洲 另类 激情 另类 | 天天操夜夜操 | 五月婷婷综合在线视频 | 亚洲免费在线播放视频 | 国产成年人av | 日韩三级在线观看 | 在线国产91| 91亚洲视频在线观看 | 国产视频久 | 日本激情视频中文字幕 | 黄污视频网站大全 | 亚洲 欧美 另类人妖 | 久久草av | 日日操夜| 日韩高清激情 | 久久久午夜剧场 | 久久久免费看视频 | 麻豆91网站| 超碰在线cao | 天天激情综合 | 欧美日韩午夜在线 | 性色视频在线 | 91成人黄色 | 亚洲精品乱码久久久一二三 | 久草在线国产 | 亚洲蜜桃在线 | 国内久久久 | 久久久久久综合网天天 | 久久久久综合 | 久久字幕精品一区 | 国产欧美精品一区二区三区 | 一本一道波多野毛片中文在线 | 婷婷丁香色综合狠狠色 | 欧美日韩在线第一页 | 99久高清在线观看视频99精品热在线观看视频 | 久久国内免费视频 | 日韩成人xxxx | 日韩欧美高清一区二区三区 | 九九热精品视频在线播放 | 特级毛片在线 | 最新超碰在线 | 中文字幕精品www乱入免费视频 | 久久开心激情 | 久久久久久久免费看 | 国产a免费 | 日韩av一卡二卡三卡 | 国产成人精品一区二区三区福利 | 国产又粗又硬又长又爽的视频 | 黄网站色视频 | 久久综合九色欧美综合狠狠 | 天堂激情网 | 国产69精品久久久久久久久久 | 久久五月婷婷丁香 | 亚洲成人二区 | 欧美一级久久 | 久久久久久国产精品999 | 国产精品一区二区视频 | 毛片网站在线看 | 91麻豆精品国产91 | 在线蜜桃视频 | 99色在线观看 | www.国产高清 | 国产高清综合 | 中文电影网 | 婷婷六月丁香激情 | 国产精品一区专区欧美日韩 | 91免费看黄色 | 国产精品毛片一区二区 | 婷婷网五月天 | 麻豆视频91 | 免费特级黄色片 | 青青久草在线视频 | 国内成人精品2018免费看 | 精品久久一区 | 911在线 | 国产精品密入口果冻 | 国产五码一区 | 天天草天天干天天射 | 日韩一区二区在线免费观看 | 激情片av | 五月婷婷开心中文字幕 | av中文字幕网址 | 久久夜色精品国产欧美乱极品 | 狠狠色丁香婷婷 | 草久久久 | av电影在线免费观看 | 中文字幕视频免费观看 | 日韩激情在线视频 | 亚洲精品小视频在线观看 | 特级毛片网 | 亚洲精品免费在线视频 | 天天干夜夜 | 91九色网站| 久久精品亚洲精品国产欧美 | 黄色精品一区二区 | 久久视频6 | 中文在线a√在线 | 成人黄色在线看 | 国产污视频在线观看 | 97碰碰精品嫩模在线播放 | 91av视频在线观看 | 婷婷伊人综合亚洲综合网 | 日韩欧美一区二区三区在线 | 亚洲成av人影片在线观看 | 黄色av网站在线免费观看 | 久久久亚洲国产精品麻豆综合天堂 | 伊人婷婷在线 | 麻豆国产在线视频 | 最近高清中文字幕在线国语5 | av免费在线网站 | 国语自产偷拍精品视频偷 | 日韩av看片 | 国产 日韩 欧美 中文 在线播放 | 国产真实在线 | 欧美大码xxxx | 丁香婷婷综合激情五月色 | 月下香电影 | 日韩性xxxx| 九九久久久久久久久激情 | 四虎在线免费观看 | 天天干天天射天天插 | 又黄又爽又湿又无遮挡的在线视频 | 97视频精品| 黄网站app在线观看免费视频 | 精品欧美小视频在线观看 | 亚洲天堂香蕉 | 欧美天堂久久 | 国产老太婆免费交性大片 | 五月综合久久 | 人人爱人人射 | 国产精品黄 | 99久久综合狠狠综合久久 | av大全免费在线观看 | 国产字幕av | 在线观看免费成人av | 91av电影在线观看 | 99热日本| 伊人久久五月天 | 日韩黄色在线观看 | 97国产视频 | 最近中文字幕在线播放 | 96av视频 | www.xxxx欧美| 在线视频观看成人 | 欧美高清视频不卡网 | 国产精品第54页 | 超碰在线人 | 亚洲国产999 | 久一在线| 亚洲午夜精品一区二区三区电影院 | 色网站在线免费 | 国产午夜三级 | 97香蕉久久国产在线观看 | 久久久久麻豆v国产 | 免费在线视频一区二区 | 狠狠网 | 爱爱av网站 | 国产福利网站 | 91精品视频在线 | 国产成人精品一区二区三区免费 | 一区二三国产 | 五月色婷 | 不卡的av电影 | 91丝袜美腿| 亚洲国产精品女人久久久 | 在线观看岛国片 | 99久久婷婷 | 91在线视频播放 | 久久超碰97| 伊人久久av| 中文字幕在线中文 | 伊人五月天婷婷 | 韩日在线一区 | 午夜婷婷在线播放 | 在线观看成人一级片 | 精品婷婷| 99综合影院在线 | 午夜国产一区 | 天天操天天操天天操天天 | 黄色在线观看网站 | av网站在线免费观看 | 天天爽人人爽 | 久久午夜网 | 91九色蝌蚪| 日本激情动作片免费看 | 在线日韩视频 | 五月天中文在线 | 久久久久免费网 | 午夜三级毛片 | 国产久草在线 | 在线免费91| 中文在线a∨在线 | av高清一区二区三区 | 国产精品岛国久久久久久久久红粉 | 成年人免费在线看 | 激情久久五月 | 美女网站色在线观看 | 久久黄色美女 | 久草www | 久久综合影视 | 国产精品一区二区美女视频免费看 | 深夜国产在线 | 欧美肥妇free | 免费看一级特黄a大片 | 69久久夜色精品国产69 | 久久综合中文字幕 | 日韩有码在线观看视频 | 国产在线免费av | 日韩久久久 | 99视频免费 | 国产第一页在线播放 | 亚洲精品视频一 | 精品国产福利在线 | 久久99视频免费观看 | 99久久国产免费,99久久国产免费大片 | 久久久免费国产 | 99久久999久久久精玫瑰 | 国产精品久久久久久a | 99精品在线视频播放 | 精品一二三区视频 | 一区二区三区精品在线视频 | 香蕉视频网站在线观看 | 麻豆免费视频网站 | 最近中文字幕完整视频高清1 | 久久精品这里都是精品 | 国产精品久久久久久久久久直播 | 伊人婷婷在线 | 午夜久久精品 | 久久国产精品免费视频 | 少妇自拍av| 99视频精品在线 | 天天躁天天躁天天躁婷 | 亚a在线 | aaa日本高清在线播放免费观看 | 国产精品一区二区在线观看 | 国产免费黄视频在线观看 | 四虎永久网站 | 激情综合亚洲 | 手机av在线不卡 | 国产青春久久久国产毛片 | 久久怡红院 | 四川bbb搡bbb爽爽视频 | 亚洲综合在线播放 | 亚洲伦理电影在线 | 国产手机在线观看 | 97福利视频| 99中文字幕在线观看 | 香蕉97视频观看在线观看 | 99一区二区三区 | 97看片| 成人黄色资源 | 91亚洲在线| 日韩特黄av| 久草在线资源免费 | 啪啪动态视频 | 亚洲日本激情 | 国产在线不卡一区 | 国产又粗又长又硬免费视频 | 婷婷精品视频 | 欧美大片大全 | 精品免费一区二区三区 | a久久免费视频 | 欧美analxxxx | 国产一级电影 | 亚洲狠狠操 | 激情视频在线高清看 | 91精品综合在线观看 | 日韩激情在线 | 日韩字幕 | 国产aa精品 | 亚洲国产黄色 | 欧美日韩高清免费 | 丁香六月欧美 | 国产免费美女 | 国产成在线观看免费视频 | 91大神精品视频在线观看 | 手机av在线免费观看 | 69国产精品视频免费观看 | 九九免费精品视频在线观看 | www黄色软件 | 国产香蕉97碰碰碰视频在线观看 | 黄色av一级| 99r在线播放 | 欧美激情视频免费看 | 999久久久国产精品 高清av免费观看 | 999久久国产精品免费观看网站 | 精品亚洲在线 | 91精品视频免费 | 国产在线观看你懂的 | 91麻豆精品国产91久久久无限制版 | 天天天在线综合网 | 国产精品久久久久av福利动漫 | 不卡中文字幕av | 超碰在线97免费 | 亚洲精品tv久久久久久久久久 | 特级黄色一级 | 综合久久婷婷 | 成人国产网址 | 久久久亚洲精华液 | 四虎影视www | 最近中文字幕第一页 | 欧亚日韩精品一区二区在线 | av在线播放中文字幕 | 91亚洲精品乱码久久久久久蜜桃 | 国产亚洲欧美一区 | 久一在线| 久久久精品二区 | 三级性生活视频 | 亚洲一区二区天堂 | av成人黄色 | 亚洲欧洲精品视频 | 国产精品久久久久免费a∨ 欧美一级性生活片 | av福利第一导航 | 亚洲人毛片 | 亚洲一区不卡视频 | 久久精品一区二区三区四区 | 操操操天天操 | 999久久久精品视频 日韩高清www | 国产精品theporn | 日韩精品不卡在线 | 丁香av | 九九视频网站 | 久久人人添人人爽添人人88v | 中文字幕丰满人伦在线 | 亚洲欧美激情精品一区二区 | 欧美精品亚洲精品 | 色综合中文字幕 | 99色人| 91精品一区二区三区蜜臀 | 在线欧美小视频 | 婷婷六月综合亚洲 | 亚洲黄污 | 一区二区三区在线免费观看 | 深夜国产福利 | 天天色天天干天天色 | 中文字幕在线专区 | 国产品久精国精产拍 | 波多野结衣一区二区三区中文字幕 | 天天夜操 | 国产天天爽 | 久草在线视频首页 | 在线国产片 | 欧美在线视频精品 | 国产一区视频导航 | 91大神在线观看视频 | 九色精品在线 | 国产中文视 | 91香蕉国产在线观看软件 | 999久久a精品合区久久久 | 天天操天天综合网 | 国产黄a三级三级三级三级三级 | 国产精品视频app | 久久在线精品 | 96精品在线 | 国产精品久久久久久久久久久久久久 | 国产成人一区二区三区在线观看 | 国产91aaa| 91在线蜜桃臀 | 久久久久久毛片 | 久久电影色 | 又色又爽又黄高潮的免费视频 | а中文在线天堂 | 国产在线播放不卡 | 日韩精品免费在线视频 | 日韩精品aaa | www91在线观看 | 亚洲一区天堂 | 久久国产精品一国产精品 | 中文字幕在线观看一区 | 精品在线免费观看 | 亚洲国产美女精品久久久久∴ | 视频在线观看国产 | 美女网站免费福利视频 | 色99网 | 天天干天天怕 | 国产精品免费人成网站 | 黄色一及电影 | 国产18精品乱码免费看 | 中文字幕资源在线观看 | 国产打女人屁股调教97 | 国产做aⅴ在线视频播放 | 91亚洲精品久久久中文字幕 | 国产精品区二区三区日本 | 国产黄色一级大片 | 97超碰色 | 91污在线观看 | 日本中文字幕网站 | 91成人在线观看高潮 | 国内偷拍精品视频 | 91完整视频 | 999久久久| 国产精品女 | 久久综合射 | 国内视频 | 99久久精品国产免费看不卡 | 欧美极品少妇xxxx | 在线看欧美 | 国产小视频在线观看 | 天天爱天天| 99c视频在线| 在线视频观看亚洲 | 超碰在线中文字幕 | 中文字幕资源在线观看 | 日韩高清在线不卡 | 美女网站视频色 | 国产精品黄色影片导航在线观看 | 色成人亚洲| av观看久久久 | 国产第一福利 | 在线国产视频一区 | 狠狠狠色丁香婷婷综合久久五月 | 国产最新视频在线观看 | 97碰碰碰 | 亚州国产精品视频 | 亚洲一区二区三区四区在线视频 | 久草精品视频在线看网站免费 | 狠狠躁夜夜躁人人爽视频 | 久久综合在线 | 日韩激情视频在线观看 | 日韩视频免费在线观看 | 成人三级av| 特黄特黄的视频 | 亚洲开心色 | 91九色蝌蚪 | 亚洲欧洲久久久 | 国产在线精品观看 | 99视频免费观看 | 天天色天 | 国产自制av| 日日操网 | 国产一区二区在线精品 | 日韩高清国产精品 | 四虎影视精品成人 | 9999精品视频 | 久久国产午夜精品理论片最新版本 | 91亚洲国产成人久久精品网站 | 99久久精品久久久久久清纯 | 中文字幕av一区二区三区四区 | 中国精品少妇 | 中文字幕视频三区 | 国产麻豆剧果冻传媒视频播放量 | 国产91精品久久久久久 | 久久国产精品99精国产 | 国产精品久久一区二区三区不卡 | 超碰在线人人艹 | 日本在线成人 | 久久精品国产精品 | 亚洲三级影院 | a√天堂中文在线 | 五月天久久久久久 | 96久久久 | 在线免费观看av网站 | 激情丁香综合五月 | 国产成人综合图片 | 国产视频丨精品|在线观看 国产精品久久久久久久久久久久午夜 | 三级动态视频在线观看 | av爱干 | 天天看天天操 | 一区二区三区日韩视频在线观看 | 日韩精品在线免费播放 | 99久久久国产精品免费观看 | 久久9精品 | 66av99精品福利视频在线 | 98超碰在线 | 日韩高清一 | 国产精品一区免费在线观看 | 在线亚洲精品 | 日韩欧美一区二区三区免费观看 | 中文字幕91 | 天天曰天天曰 | 免费在线激情电影 | 亚州av网站 | 996久久国产精品线观看 | 91日韩在线播放 | 男女激情网址 | 日韩精品中文字幕久久臀 | 久久久久www| 一区三区视频 | 国产资源精品在线观看 | 亚洲作爱视频 | 久久久综合香蕉尹人综合网 | 在线观看亚洲国产精品 | 欧美成人免费在线 | 性色av香蕉一区二区 | 久久久国产影视 | 成av在线| 日韩视频免费在线 | 天天操福利视频 | 在线观看的黄色 | 中文字幕91视频 | 在线影院av | 亚洲天天摸日日摸天天欢 | 国产尤物视频在线 | 日韩偷拍精品 | 国产在线观看污片 | 国产成人精品午夜在线播放 | 808电影| 韩国av免费在线 | 久久嗨| 国产精品亚洲精品 | 天天视频色版 | 日韩大片免费在线观看 | 亚洲欧美激情精品一区二区 | 特级黄色一级 | 国产小视频在线免费观看 | 久久综合狠狠综合久久狠狠色综合 | 久久国产亚洲视频 | 欧美韩国在线 | 97超碰资源站 | 亚洲精品国产精品国 | 国产精品视频全国免费观看 | 91人人网| 国产午夜精品av一区二区 | 久久久精品日本 | www九九热 | 久久a视频| 欧美a级一区二区 | 丰满少妇在线观看资源站 | 日本爱爱免费视频 | 91丨九色丨国产在线 | 日韩久久久 | 精精国产xxxx视频在线播放 | 精品国模一区二区三区 | 亚洲 欧美日韩 国产 中文 | 久久精品精品电影网 | 97在线观看免费观看高清 | 欧美在线观看小视频 | 99久久精品免费看国产 | 免费看片网页 | 操操操com | 97成人精品视频在线观看 | 不卡的av中文字幕 | 五月婷婷伊人网 | 亚洲一区二区视频在线播放 | 成人午夜免费福利 | 久久综合婷婷 | 国产亚洲在线 | 亚洲精品一区二区三区四区高清 | 亚洲欧美成人 |