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]);
|
||||
else ssdv_out_jpeg_int(s, 0, 0);
|
||||
|
||||
/* skip* to the next AC part immediately */
|
||||
/* skip to the next AC part immediately */
|
||||
s->acpart++;
|
||||
}
|
||||
else
|
||||
|
@ -232,8 +232,7 @@ static char ssdv_process(ssdv_t *s)
|
|||
}
|
||||
else /* AC */
|
||||
{
|
||||
/* Output AC codes directly */
|
||||
//ssdv_out_huff(s, symbol);
|
||||
s->acrle = 0;
|
||||
|
||||
if(symbol == 0x00)
|
||||
{
|
||||
|
@ -251,7 +250,8 @@ static char ssdv_process(ssdv_t *s)
|
|||
{
|
||||
/* Next bits are an integer value */
|
||||
s->state = J_INT;
|
||||
s->acpart += symbol >> 4;
|
||||
s->acrle = symbol >> 4;
|
||||
s->acpart += s->acrle;
|
||||
s->needbits = symbol & 0x0F;
|
||||
}
|
||||
}
|
||||
|
@ -288,7 +288,7 @@ static char ssdv_process(ssdv_t *s)
|
|||
else /* AC */
|
||||
{
|
||||
/* 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 */
|
||||
|
|
1
ssdv.h
1
ssdv.h
|
@ -68,6 +68,7 @@ typedef struct
|
|||
unsigned char mcupart; /* 0-3 = Y, 4 = Cb, 5 = Cr */
|
||||
unsigned char acpart; /* 0 - 64; 0 = DC, 1 - 64 = AC */
|
||||
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 */
|
||||
|
||||
/* Small buffer for reading SOF0 and SOS header data into */
|
||||
|
|
Ładowanie…
Reference in New Issue