设为首页 加入收藏

TOP

S3C6410 裸机硬件JPEG解码(四)
2014-11-24 07:40:31 来源: 作者: 【 】 浏览:14
Tags:S3C6410 裸机 硬件 JPEG 解码
th*height) + (width*height>>1));
case TYPE_JPEG_400 : return(width*height);
default : return(0);
}
}



/*************************************************************************************************************************
*函数 : void JPEG_ReadClearStatus(u8* Status, u8* IrqStatus)
*功能 : 读取并清除JPEG状态
*参数 : Status:解码器状态缓冲区指针;IrqStatus:中断状态缓冲区指针
*返回 : 无
*依赖 : 底层宏定义
*作者 : cp1300@139.com
*时间 : 20120920
*最后修改时间 : 2010113
*说明 : JPGSTS和JPGIRQ;JPGIRQ读取后自动清除
* JPGIRQ: BIT6结果状态 0:不正常的处理结束; 1:正常的处理完成
* BIT4位流的错误状态。只有在解压缩期间有效。0:在被压缩的文件上,没有语法错误。1:在被压缩的文件上,有语法错误。
* BIT3标题状态。只有在解压缩期间有效。0:图像大小和取样因素值不可读。1:图像大小和取样因素值可读。
*************************************************************************************************************************/
void JPEG_ReadClearStatus(u8* Status, u8* IrqStatus)
{
*Status = JPEG->Status;
*IrqStatus = JPEG->IRQStatus & ((1<<6)|(1<<4)|(1<<3));
}



/*************************************************************************************************************************
*函数 : static JPEG_ERROR JPEG_WaitForIRQ(void)
*功能 : 等待中断,并返回状态
*参数 : 无
*返回 : 返回中断状态,见定义
*依赖 : 底层宏定义
*作者 : cp1300@139.com
*时间 : 20120922
*最后修改时间 : 2010113
*说明 : 通过判断JPGIRQ中断寄存器的值返回相应状态
*************************************************************************************************************************/
static JPEG_ERROR JPEG_WaitForIRQ(void)
{
vu32 TimeOut = WaitTimeOut; //初始化计数器值
vu8 IRQStatus,Status;
JPEG_ERROR error;

do
{
IRQStatus = JPEG->IRQStatus; //读取中断状态寄存器,并消除状态
TimeOut --; //计数器自减
}
while((IRQStatus == 0) && TimeOut); //当发生中断或者计数器为0时退出等待
IRQStatus &= ((1<<6)|(1<<4)|(1<<3));
switch (IRQStatus) //判断中断状态
{
case 0x00 : error = JPEG_WAIT_TIME_OUT;break; //超时错误
case 0x40 : error = JPEG_OK;break; //正常完成
case 0x08 : error = JPEG_HEADER_OK;break; //头分析完成,可以读取大小以及采样信息
case 0x10 : error = JPEG_BITSTRE_ERROR;break; //语法错误
case 0x18 : error = JPEG_BITSTRE_ERROR;break; //语法错误
default : error = JPEG_OTHER_ERROR;break; //其它错误
}
Status = JPEG->Status;
return error;
}



/*************************************************************************************************************************
*函数 : static void JPEG_DecodeHeader(u32 JpegAddr)
*功能 : 开始解码JPEG头部信息(软件控制解码)
*参数 : JpegAddr: jpeg图像地址
*返回 : 无
*依赖 : 底层宏定义
*作者 : cp1300@139.com
*时间 : 20120920
*最后修改时间 : 2010113
*说明 : 用于软件解码的第一步,用于获取JPEG分辨率以及采样模式信息
*************************************************************************************************************************/
static void JPEG_DecodeHeader(u32 JpegAddr)
{
JPEG->JpegAddr0 = JpegAddr;
JPEG->JpegAddr1 = JpegAddr; //jpeg图片数据地址
JPEG->Mode = 0x8; //设置为解码模式
JPEG->IRQ = ENABLE_IRQ; //使能中断
JPEG->Cntl = DISABLE_HW_DEC; //解码JPEG头部
JPEG->Misc = (NORMAL_DEC | YCBCR_MEMORY);
JPEG->Start = 1; //开始JPEG处理
}



/*************************************************************************************************************************
*函数 : static void JPEG_DecodeBody(u32 ImageAddr)
*功能 : 开始JPEG主体解码(软件控制解码)
*参数 : ImageAddr: 解码后图像地址
*返回 : 无
*依赖 : 底层宏定义
*作者 : cp1300@139.com
*时间 : 20120920
*最后修改时间 : 2010113
*说明 : 软件控制解码的第二步,一定要先调用JPEG_StartPa

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

评论

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

·Asus Armoury Crate (2025-12-26 02:52:33)
·WindowsFX (LinuxFX) (2025-12-26 02:52:30)
·[ Linux运维学习 ] (2025-12-26 02:52:27)
·HTTPS 详解一:附带 (2025-12-26 02:20:37)
·TCP/IP协议到底在讲 (2025-12-26 02:20:34)