kopia lustrzana https://github.com/fsphil/hadie
Output correct RLE length.
rodzic
2d08faf137
commit
f9a4095148
10
ssdv.c
10
ssdv.c
|
@ -220,7 +220,7 @@ static char ssdv_process(ssdv_t *s)
|
||||||
ssdv_out_jpeg_int(s, 0, s->dc[s->component]);
|
ssdv_out_jpeg_int(s, 0, s->dc[s->component]);
|
||||||
else ssdv_out_jpeg_int(s, 0, 0);
|
else ssdv_out_jpeg_int(s, 0, 0);
|
||||||
|
|
||||||
/* skip* to the next AC part immediately */
|
/* skip to the next AC part immediately */
|
||||||
s->acpart++;
|
s->acpart++;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -232,8 +232,7 @@ static char ssdv_process(ssdv_t *s)
|
||||||
}
|
}
|
||||||
else /* AC */
|
else /* AC */
|
||||||
{
|
{
|
||||||
/* Output AC codes directly */
|
s->acrle = 0;
|
||||||
//ssdv_out_huff(s, symbol);
|
|
||||||
|
|
||||||
if(symbol == 0x00)
|
if(symbol == 0x00)
|
||||||
{
|
{
|
||||||
|
@ -251,7 +250,8 @@ static char ssdv_process(ssdv_t *s)
|
||||||
{
|
{
|
||||||
/* Next bits are an integer value */
|
/* Next bits are an integer value */
|
||||||
s->state = J_INT;
|
s->state = J_INT;
|
||||||
s->acpart += symbol >> 4;
|
s->acrle = symbol >> 4;
|
||||||
|
s->acpart += s->acrle;
|
||||||
s->needbits = symbol & 0x0F;
|
s->needbits = symbol & 0x0F;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -288,7 +288,7 @@ static char ssdv_process(ssdv_t *s)
|
||||||
else /* AC */
|
else /* AC */
|
||||||
{
|
{
|
||||||
/* Output AC codes directly */
|
/* Output AC codes directly */
|
||||||
ssdv_out_jpeg_int(s, 0, i); /* RLE? */
|
ssdv_out_jpeg_int(s, s->acrle, i);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Next AC part to expect */
|
/* Next AC part to expect */
|
||||||
|
|
1
ssdv.h
1
ssdv.h
|
@ -68,6 +68,7 @@ typedef struct
|
||||||
unsigned char mcupart; /* 0-3 = Y, 4 = Cb, 5 = Cr */
|
unsigned char mcupart; /* 0-3 = Y, 4 = Cb, 5 = Cr */
|
||||||
unsigned char acpart; /* 0 - 64; 0 = DC, 1 - 64 = AC */
|
unsigned char acpart; /* 0 - 64; 0 = DC, 1 - 64 = AC */
|
||||||
int dc[COMPONENTS]; /* DC value for each component */
|
int dc[COMPONENTS]; /* DC value for each component */
|
||||||
|
uint8_t acrle; /* RLE value for current AC value */
|
||||||
unsigned char needbits; /* Number of bits needed to decode integer */
|
unsigned char needbits; /* Number of bits needed to decode integer */
|
||||||
|
|
||||||
/* Small buffer for reading SOF0 and SOS header data into */
|
/* Small buffer for reading SOF0 and SOS header data into */
|
||||||
|
|
Ładowanie…
Reference in New Issue