⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 djpg.c

📁 jpeg快速算法,用于TI和philips的DSP开发
💻 C
字号:
/*
 *********************************************************************
 * File name: djpg.c
 * Version: 5.0(release v1.0)    Date: Jan 12, 2006
 * Author:  xiezm                Email: xiezm@wxintech.cn
 * Company: Wuxi Intech co., ltd.
 *
 * Project: Jpeg Decoder for Trio
 *********************************************************************
 */

#define DJPG_GLOBALS

#include "cf6_chess.h"

#ifdef WIN32
#include <stdio.h>
#include <stdlib.h>
#endif

#include "djpg.h"
#include "bitstream.h"

int jpegFrameSymbol=0;

void system_initial(void)
{
	bitstream_init();
	parse_initial();
}

#ifdef WIN32
int main(int argc, char **argv)
{
	int i;
	int frameCount;
	char tmp[10];
	char filename1[20];
	char filename2[20];

	if ((INPUT = fopen(argv[1], "rb")) == NULL)
	{
		fprintf(stderr, "Error: Can't open file specified %s \n",argv[1]);
		exit(0);
	}
/*	if ((BMP = fopen(argv[2], "wb")) == NULL)
	{
		fprintf(stderr, "Error: Can't open file specified %s \n",argv[2]);
		exit(0);
	}*/
	if ((OUTPUT = fopen(argv[3], "wt")) == NULL)
	{
		fprintf(stderr, "Error: Can't open file specified %s \n",argv[3]);
		exit(0);
	}
#else
int main()
{
	int i;
	int frameCount;
#endif

	system_initial();

	for(;;)
	{
		int iRet = find_ffd8();
		if(iRet!=0)
			continue;
		if(jpegFrameSymbol == 0)
			parse_header();
#ifdef WIN32
		strcpy(filename1,".\\bmp\\");
		strcat(filename1,argv[2]);
		if(jpegFrameSymbol<10)
		{
			_itoa( jpegFrameSymbol, tmp, 10 );
			strcpy(filename2,"000");
			strcat(filename2,tmp);
		}
		else if(jpegFrameSymbol<100)
		{
			_itoa( jpegFrameSymbol, tmp, 10 );
			strcpy(filename2,"00");
			strcat(filename2,tmp);
		}
		else if(jpegFrameSymbol<1000)
		{
			_itoa( jpegFrameSymbol, tmp, 10 );
			strcpy(filename2,"0");
			strcat(filename2,tmp);
		}
		else
			_itoa( jpegFrameSymbol, filename2, 10 );

		strcat(filename1,filename2);
		strcat(filename1,".bmp");
		if ((BMP = fopen(filename1, "wb")) == NULL)
		{
			fprintf(stderr, "Error: Can't open file specified %s \n",argv[2]);
			exit(0);
		}
#endif 		
		decode_initial();

#ifdef WIN32
		output_header();
#endif

		if((2==Vi[0])&&(2==Hi[0]))
		{
			for(i=1;i<=num_mcu;i++)
			{
				decode_mcu_2x2();

#ifdef WIN32
				output_mcu();
#endif

				if(dri_rst_interval)
				{
					if((!(i%dri_rst_interval)) && (i<num_mcu))
					{
						restart_decode();
					}
				}
			}
		}

		else
		{
			error(99);
		}
	
#ifdef WIN32
		write_to_bmp();
#endif
	

		//check EOI
		drop_bits(bits_left%8);
	//	if((0x00ff == get_bits(8)) && (0x00d9 == get_bits(8)))
		{
#ifdef WIN32
			fprintf(stderr,"%d\n",jpegFrameSymbol);//fprintf(stderr, "bingo!");
//			fclose(INPUT);
//			fclose(OUTPUT);
			fclose(BMP);
#endif
			//return 1;
		}
	//	else
		{
	//		error(98);
		}
		frameCount++;
frameSet:
		is_stuff = 0;
		current = 0;
		bits_left = 0;
		next = 0;
		bits_next = 0;

	}
	return 0;
}

void error(int eflag)
{
#ifdef WIN32
	fprintf(stderr, "error: %d", eflag);
	fclose(INPUT);
	fclose(OUTPUT);
	fclose(BMP);
	exit(0);
#else
	error_flag = eflag;
	while(1);
#endif
}
/********************End of file*************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -