📄 jbig_test.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 + -