Output correct RLE length.

master
Philip Heron 2010-10-02 18:08:39 +01:00
rodzic 2d08faf137
commit f9a4095148
2 zmienionych plików z 6 dodań i 5 usunięć

10
ssdv.c
Wyświetl plik

@ -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
Wyświetl plik

@ -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 */