日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

s3c6410 jpeg编码 linux,S3C6410 裸机硬件JPEG解码

發布時間:2024/7/19 linux 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 s3c6410 jpeg编码 linux,S3C6410 裸机硬件JPEG解码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

主函數的部分代碼

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

*函數? ? ? ? ?:?static PIC_ERROR OpenPictureFile(const char *FileName,u8 *buff,u32 FileMaxSize)

*功能? ? ? ? ?:?打開一張,并將數據讀取到內存

*參數? ? ? ? ?:?FileName:文件名,路徑指針;buff:讀取緩沖區;FileMaxSize:文件最大限制

*返回? ? ? ? ?:?PIC_ERROR

*依賴? ? ?: ?FATFS文件系統支持

*作者? ? ? ? ?:?cp1300@139.com

*時間? ? ?:?20121207

*最后修改時間?:?20121209

*說明? ? ?:?調用FATFS打開圖片文件

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

int OpenPictureFile(const char *FileName,u8 *buff,u32 FileMaxSize)

{

FIL file;

UINT cnt;

int status;

int error = 0;

status = f_open(&file,FileName,FA_READ);? ? //只讀方式打開文件

if(status != FR_OK)? ? ? ? ? //打開文件錯誤

{

uart_printf("open \"%s\" error!\r\n",FileName);

error = 1;

}

else

{

//獲取文件大小

uart_printf("file size : %dB\r\n",file.fsize);? //輸出文件大小

if(file.fsize > FileMaxSize)

{

uart_printf("file size > %d\r\n",FileMaxSize);

error = 2;

}

else

{

status = f_read(&file,buff,file.fsize,&cnt);?//讀取文件

uart_printf("Read File Num=%d\r\n",cnt);

if(cnt == file.fsize)? ? ? ?//判斷文件是否讀取完畢

{

uart_printf("read file end!\r\n");

error =? 0;

}

else

{

uart_printf("read file error!\r\n");

error = 3;

}

}

}

f_close(&file);

return error;

}

void YUV422ToRGB565(u8 *YUVBuff,u16 width,u16 height)

{

u16 x,y;

u32 RGBdata;

u32 cnt = 0;

u8 Y,U = 0,V = 0;

int R,G,B;

for(y = 0;y < height;y ++)

{

for(x = 0;x < width;x ++ )

{

Y = YUVBuff[cnt << 1];

if((cnt % 2) == 0)

{

U = YUVBuff[(cnt << 1) + 1];

V = YUVBuff[(cnt << 1) + 3];

}

R = Y + (1.370705 * (V - 128));

G = Y - (0.698001 * (V - 128)) - (0.337633 * (U-128));

B = Y + (1.732446 * (U - 128));

R = (R > 255) ? 255 : ((R < 0) ? 0 : R);

G = (G > 255) ? 255 : ((G < 0) ? 0 : G);

B = (B > 255) ? 255 : ((B < 0) ? 0 : B);

//RGBdata = (u32)(R << 16) | (G << 8) | B;

R >>= 3;

G >>= 2;

B >>= 3;

RGBdata = (R << 11) + (G << 5) + B;

LCD_DrawPoint(x,y,(u16)RGBdata);

//LCD_DrawPoint(x,y,RGB888toRGB565(RGBdata));

cnt ++;

}

}

}

u8 buff[10*1024*1024];

u8 image[10*1024*1024];

//主函數

int main(void)

{

OS_CPU_SR? cpu_sr;

int result;

JPEG_INFO JpegInfo;

u32 p;

u32 i;

UART0_Init(DISABLE,115200);? ? ?//初始化串口,失能中斷接收,波特率115200

LCD_Init();? ? ? ? ?//初始化LCD

LED_Init();? ? ? ? ?//初始化LED

RunTimeInit();

JPEG_Init();

result = Explorer_Init();? ? ?//初始化資源管理器

if(result == 0)

{

lcd_printf("Disk Init OK!\n");

}

else

{

lcd_printf("Disk Init Error(%d)!\n",result);

}

p = (u32)buff;

if((u32)buff % 16)

{

p = (p / 16 + 1) * 16;

}

OpenPictureFile("0:/system/ui/ico/設置.jpg",(u8 *)p,10*1024*1024);

result = JPEG_DecodeOneFrame(p,(u32)image,31654, &JpegInfo);

uart_printf("decode jpeg file %d\r\n",result);

if(result == 0)

{

YUV422ToRGB565(image,JpegInfo.Width,JpegInfo.Height);

?}

總結

以上是生活随笔為你收集整理的s3c6410 jpeg编码 linux,S3C6410 裸机硬件JPEG解码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。