📄 Ȧ-
字号:
/****************************************Copyright (c)****************************************************
** Guangzhou ZHIYUAN electronics Co.,LTD.
**
** http://www.embedtools.com
**
**------File Info-----------------------------------------------------------------------------------------
** File name: jpeg extern.c
** Latest modified Date: 2008-07-19
** Latest Version: 1.0
** Descriptions: JPEG图片解码包,附加的外部函数
**
**--------------------------------------------------------------------------------------------------------
** Created by: 张展威
** Created date: 2008-07-19
** Version: 1.0
** Descriptions:
**
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
**
*********************************************************************************************************/
#include "..\HeadFile\dataType.h"//定义常用数据类型及函数返回值
#include "..\IDM\formike240x320x16_ili9320.h"//液晶显示屏驱动
#include "jpeg.h"
#ifndef __USE_IDM
boolean GbUseIDM = false;
#else
boolean GbUseIDM = true;
#endif
static INT8U GucFileReadBuf[256]; /* n Byte 文件数据缓存 */
static INT8U *__GpucInBuf; /* 缓用于存基址指针pucInBuf */
static INT32U GulJpgFileStart; /* 标记有效缓存数据的起始偏移量 */
static INT32U GulJpgFileEnd; /* 标记有效缓存数据的终止偏移量 */
static BOOLEAN GbJpgFileEOF; /* 标记文件是否读结束 */
volatile INT8U GucJpgReadPrev; /* 标记上次读文件时的字节内容 */
INT8U jpgFileReadByte(INT32U ulOffset);
void jpgReadInit(INT8U *pucInBuf);
void displayRGB( RECTANGLE *psZoon, INT16U *puiOutBuf, INT32U ulCounter);
/*********************************************************************************************************
** 函数名称: jpgFileReadByte()
** 功能描述: 从jpg文件指定偏移量处读取1Byte数据
**
** 输 入: INT32U ulOffset:文件偏移量(Bytes)
**
** 输 出: 无
**
** 返 回: 对应文件偏移量(Bytes)的一字节文件内容,溢出文件大小则返回 0
**
** 全局变量: static INT8U *__GpucInBuf :缓用于存基址指针pucInBuf
** static INT32U GulJpgFileStart :标记有效缓存数据的起始偏移量
** static INT32U GulJpgFileEnd :标记有效缓存数据的终止偏移量
** static BOOLEAN GbJpgFileEOF :标记文件是否读结束
** volatile INT8U GucJpgReadPrev :标记上次读文件时的字节内容
** static INT8U GucFileReadBuf[128]:n Bytes 文件数据缓存
**
** 调用模块: 无
**
** 作 者: 张展威
** 日 期: 2008-07-25
*********************************************************************************************************/
INT8U jpgFileReadByte(INT32U ulOffset)
{
INT8U *pucOutBuf;
INT8U *pucFp;
INT8U ucDataTmp,ucReturn;
INT16U i=0,j;
pucOutBuf = (INT8U *)&GucFileReadBuf[0];
if ((ulOffset >= GulJpgFileStart) && (ulOffset < GulJpgFileEnd)) {
ucReturn = GucFileReadBuf[ulOffset - GulJpgFileStart]; /* 读取缓存中的数据 */
} else {
if ((ulOffset >= GulJpgFileEnd) && (GbJpgFileEOF == true)) {
ucReturn = 0;
} else {
j = sizeof(GucFileReadBuf);
pucFp = __GpucInBuf + ulOffset;
for (i = 0; i < j; i++) { /* 读取一个数据块,块大小由缓 */
/* 存决定 */
ucDataTmp = *pucFp++; /* 读取一字节数据 */
*pucOutBuf++ = ucDataTmp;
if ((GucJpgReadPrev == 0xFF) && (ucDataTmp == 0xD9)) {
if (i == 0) {
if (*(pucFp-2) == 0xFF) {//重要:确保上一字节就是 0xFF
GbJpgFileEOF = true;
i++;
break;
}
} else {
GbJpgFileEOF = true;
i++;
break;
}
}
GucJpgReadPrev = ucDataTmp;
}
GulJpgFileStart = ulOffset;
GulJpgFileEnd = GulJpgFileStart + i;
ucReturn = GucFileReadBuf[0];
}
}
return ucReturn; /* 返回实际读取到的数据 */
}
/*********************************************************************************************************
** 函数名称: jpgReadInit()
** 功能描述: 初始化jpg格式图片数据读(input string)环境
**
** 输 入: INT8U *pucInBuf:存放图片的基址
**
** 输 出: 无
**
** 全局变量: static INT8U *__GpucInBuf :缓用于存基址指针pucInBuf
** static INT32U GulJpgFileStart :标记有效缓存数据的起始偏移量
** static INT32U GulJpgFileEnd :标记有效缓存数据的终止偏移量
** static BOOLEAN GbJpgFileEOF :标记文件是否读结束
** volatile INT8U GucJpgReadPrev :标记上次读文件时的字节内容
**
** 调用模块: 无
**
** 作 者: 张展威
** 日 期: 2008-07-25
*********************************************************************************************************/
void jpgReadInit(INT8U *pucInBuf)
{
GucJpgReadPrev = 0;
GulJpgFileStart = 0;
GulJpgFileEnd = 0;
GbJpgFileEOF = false;
__GpucInBuf = pucInBuf;
}
/*********************************************************************************************************
** 函数名称: displayRGB()
** 功能描述: RGB格式图片显示
**
** 输 入: RECTANGLE * psZoon:指向表示绘图区域大小及起始绘图点的结构变量
** INT16U * puiOutBuf:指向RGB颜色数据
** INT32U ulCounter :需要绘图的像素数
**
** 输 出: 无
**
** 全局变量: 无
**
** 调用模块: Formike240x320x16_ILI9320PictureFill((tRectangle *)psZoon, (INT16U *)puiOutBuf, ulCounter);
** 用颜色数据填充矩形区域,进行图像重构
**
** 作 者: 张展威
** 日 期: 2008-07-25
*********************************************************************************************************/
void displayRGB( RECTANGLE *psZoon, INT16U *puiOutBuf, INT32U ulCounter)
{
Formike240x320x16_ILI9320PictureFill((tRectangle *)psZoon, (INT16U *)puiOutBuf, ulCounter);
}
/*********************************************************************************************************
** End of File
*********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -