设为首页 加入收藏

TOP

S3C6410 裸机硬件JPEG解码(七)
2014-11-24 07:40:31 来源: 作者: 【 】 浏览:7
Tags:S3C6410 裸机 硬件 JPEG 解码


switch(jpegType){
case TYPE_JPEG_400 :
case TYPE_JPEG_444 :
{
if((*width % 8 == 0) && (*height % 8 == 0))
result = TRUE;
if(*width % 8 != 0)
*width += 8 - (*width % 8);
if(*height % 8 != 0)
*height += 8 - (*height % 8);

}break;
case TYPE_JPEG_422 :
{
if((*width % 16 == 0) && (*height % 8 == 0))
result = TRUE;
if(*width % 16 != 0)
*width += 16 - (*width % 16);
if(*height % 8 != 0)
*height += 8 - (*height % 8);
}break;
case TYPE_JPEG_420 :
case TYPE_JPEG_411 :
{
if((*width % 16 == 0) && (*height % 16 == 0))
result = TRUE;
if(*width % 16 != 0)
*width += 16 - (*width % 16);
if(*height % 16 != 0)
*height += 16 - (*height % 16);
}break;
default : break;
}

return(result);
}




/*************************************************************************************************************************
*函数 : static void JPEG_WriteHeader(u32 JpgAddr, u32 fileSize, u16 width, u16 height)
*功能 : 重写jpeg头部信息
*参数 : JpgAddr: jpeg文件的起始指针
* fileSize: jpeg文件大小
* width: jpeg文件宽度,需要重写的宽度
* height: jpeg文件高度,需要重写的宽度
*返回 : 无
*依赖 : 无
*作者 : cp1300@139.com
*时间 : 20130113
*最后修改时间 : 20130113
*说明 : 重写的只是内存中的数据
*************************************************************************************************************************/
static void JPEG_WriteHeader(u32 JpgAddr, u32 fileSize, u16 width, u16 height)
{
u32 i;
u8 *ptr = (u8 *)(JpgAddr + fileSize);
u8 *ptr2;
u8 *SOF1;
u8 *header;


jpeg_debug("DD::Header is not multiple of MCU\r\n");
for(i=0; i < fileSize; i++)
{
ptr--;
if(*ptr == 0xFF)
{
ptr2 = ptr+1;
if((*ptr2 == BASELINE) || (*ptr2 == EXTENDED_SEQ) || (*ptr2 == PROGRESSIVE))
{
jpeg_debug("jpeg match FFC0(i : %d)\r\n", i);
SOF1 = ptr2+1;
break;
}
}
}
jpeg_debug("jpeg start header correction\r\n");
if(i <= fileSize){
//header = (SOF2 == NULL) (SOF1) : (SOF2);
header = SOF1;
jpeg_debug("header: %x %x %x\r\n", header[0], header[1], header[2]);
header += 3; //length(2) + sampling bit(1)
*header = (height>>8) & 0xFF;
*header++;
*header = height & 0xFF;
*header++;
*header = (width>>8) & 0xFF;
*header++;
*header = width & 0xFF;


}
}



/*************************************************************************************************************************
*函数 : static void JPEG_MemMove(u8* dest, u8* src,u32 count)
*功能 : 由src所指内存区域复制count个字节到dest所指内存区域
*参数 : src: 源地址
* dest: 目标地址
* count: 数据数量
*返回 : 无
*依赖 : 无
*作者 : cp1300@139.com
*时间 : 2013014
*最后修改时间 : 2013114
*说明 : 内存复制,8bit对齐,为了减少外部函数的依赖
*************************************************************************************************************************/
static void JPEG_MemMove(u8* dest, u8* src,u32 count)
{
u32 i;

for(i = 0;i < count;i ++)
{
dest[i] = src[i];
}
}



/*************************************************************************************************************************
*函数 : static void JPEG_WriteYUV(u32 ImageAddr, u16 width, u16 orgwidth, u16 height, u16 orgheight)
*功能 : 重写YUV数据,将数据对齐
*参数 : ImageAddr: 解码后图像地址
* width: 图像对齐后的宽度
* orgwidth: 图像原始宽度
* height: 图像对齐后的高度
* orgheight: 图像原始高度
*返回 : 无
*依赖 : 无
*作者 : cp130

首页 上一页 4 5 6 7 下一页 尾页 7/7/7
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇OK6410汇编程序练习 下一篇S3C6410 硬件JPEG解码无关代码影..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·PostgreSQL 索引 - (2025-12-25 22:20:43)
·MySQL Node.js 连接 (2025-12-25 22:20:41)
·SQL 撤销索引、表以 (2025-12-25 22:20:38)
·Linux系统简介 (2025-12-25 21:55:25)
·Linux安装MySQL过程 (2025-12-25 21:55:22)