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

📄 jbig_test.cpp

📁 基于ADI BLACKFIN的jbig压缩和解压缩程序
💻 CPP
字号:
#include <stdio.h>
#include <stdlib.h>

#include "configured_jbig.h"

#include "kernel.h"

#include "my_config.h"


extern "C"
{
	void JBigTest(void);
	
	void ext_tsk(void);
	
	void ImageInput(void);
	
	void exit_to_dispatch(void);
}






static unsigned char *image = (unsigned char*)0x100000;

static unsigned char *dest = (unsigned char*)0x0;

static int destIndex = 0;

static void WriteDest(unsigned char *pSrc, unsigned long size)
{
	for(int i=0; i<size; i++)
		dest[destIndex++] = pSrc[i];
}


static void WriteFile(FILE *fp, unsigned char *p, unsigned long size)
{
	unsigned long i;
	
	for(i=0; i<size; i++)
		fputc(p[i], fp);
}


#define TIMER_ENABLE	(unsigned short*)0xffc00680

#define TIMER_DISABLE	(unsigned short*)0xffc00684


struct jbg_enc_state s;

struct jbg_arenc_state se;


void ImageInput(void)
{
	unsigned long i, j, k, n=0;
	
	unsigned char c = 0x57;
	
	for(i=0; i<12; i++)
	{
		j = (i & 1)? 96 : 0;
		
		for(k=0; k<96; k++, j++)
			image[j] = (j & 9)? c : ~c;
			
		sig_sem(1);
			
		exit_to_dispatch();
		
		wai_sem(2);
	}
	
	ext_tsk();
}


void JBigTest(void)
{
	unsigned long i, j, k, n=0;
	
	unsigned char *buf = NULL;
	
	unsigned short *q = NULL;
	
	unsigned long hbpl = 0;
	
	unsigned long cur_hp = (unsigned long)image;
	
	FILE *fp;
	
	// The example of the image input is shown here.
	// 8 stripes, 8 bytes per line

	q = TIMER_ENABLE;
	
	*q |= 0x20;

	jbg_enc_init(&s, &se, 96, 51, image, dest);
	
	hbpl = s.xd >> 3;
	
	n = s.stripes;
	
	while(n--)
	{
		wai_sem(1);
		
		cur_hp = jbig_encode(cur_hp);
		
		if(cur_hp == (unsigned long)(image + 16 * hbpl))
			cur_hp = (unsigned long)image;
			
		sig_sem(2);
			
		exit_to_dispatch();
	}
	
	jbig_encode_end();
	
	q = TIMER_DISABLE;
	
	*q = 0x20;
	
	printf("The length is: %u\n", s.sde_index);

	
	fp = fopen("image.jbig", "w");
	
	for(i=0; i<s.sde_index; i++)
		fputc(dest[i], fp);
		
	fclose(fp);
	
	ext_tsk();
}

⌨️ 快捷键说明

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