summaryrefslogtreecommitdiff
path: root/fitz/filt_predict.c
diff options
context:
space:
mode:
authorTor Andersson <tor@ghostscript.com>2009-11-19 22:26:58 +0100
committerTor Andersson <tor@ghostscript.com>2009-11-19 22:26:58 +0100
commitd592309df36d2a81fbd7123cafa1a09b37137daf (patch)
tree36b4844ba9cb68c191516649c126ae6a1566c45b /fitz/filt_predict.c
parent3aec515191c29a8b70bd5e80226ecae8d09f2038 (diff)
downloadmupdf-d592309df36d2a81fbd7123cafa1a09b37137daf.tar.xz
Remove unused and largely untested encoding filters.
Diffstat (limited to 'fitz/filt_predict.c')
-rw-r--r--fitz/filt_predict.c90
1 files changed, 24 insertions, 66 deletions
diff --git a/fitz/filt_predict.c b/fitz/filt_predict.c
index 29416f0b..77e03799 100644
--- a/fitz/filt_predict.c
+++ b/fitz/filt_predict.c
@@ -19,26 +19,23 @@ struct fz_predict_s
int stride;
int bpp;
unsigned char *ref;
-
- int encode;
};
fz_error
-fz_newpredict(fz_filter **fp, fz_obj *params, int encode)
+fz_newpredictd(fz_filter **fp, fz_obj *params)
{
fz_obj *obj;
FZ_NEWFILTER(fz_predict, p, predict);
- p->encode = encode;
-
p->predictor = 1;
p->columns = 1;
p->colors = 1;
p->bpc = 8;
obj = fz_dictgets(params, "Predictor");
- if (obj) p->predictor = fz_toint(obj);
+ if (obj)
+ p->predictor = fz_toint(obj);
if (p->predictor != 1 && p->predictor != 2 &&
p->predictor != 10 && p->predictor != 11 &&
@@ -50,13 +47,16 @@ fz_newpredict(fz_filter **fp, fz_obj *params, int encode)
}
obj = fz_dictgets(params, "Columns");
- if (obj) p->columns = fz_toint(obj);
+ if (obj)
+ p->columns = fz_toint(obj);
obj = fz_dictgets(params, "Colors");
- if (obj) p->colors = fz_toint(obj);
+ if (obj)
+ p->colors = fz_toint(obj);
obj = fz_dictgets(params, "BitsPerComponent");
- if (obj) p->bpc = fz_toint(obj);
+ if (obj)
+ p->bpc = fz_toint(obj);
p->stride = (p->bpc * p->colors * p->columns + 7) / 8;
p->bpp = (p->bpc * p->colors + 7) / 8;
@@ -123,13 +123,13 @@ paeth(int a, int b, int c)
}
static inline void
-none(fz_predict *p, unsigned char *in, unsigned char *out)
+fz_predictnone(fz_predict *p, unsigned char *in, unsigned char *out)
{
memcpy(out, in, p->stride);
}
static void
-tiff(fz_predict *p, unsigned char *in, unsigned char *out)
+fz_predicttiff(fz_predict *p, unsigned char *in, unsigned char *out)
{
int left[MAXC];
int i, k;
@@ -142,16 +142,16 @@ tiff(fz_predict *p, unsigned char *in, unsigned char *out)
for (k = 0; k < p->colors; k++)
{
int a = getcomponent(in, i * p->colors + k, p->bpc);
- int b = p->encode ? a - left[k] : a + left[k];
+ int b = a + left[k];
int c = b % (1 << p->bpc);
putcomponent(out, i * p->colors + k, p->bpc, c);
- left[k] = p->encode ? a : c;
+ left[k] = c;
}
}
}
static void
-png(fz_predict *p, unsigned char *in, unsigned char *out, int predictor)
+fz_predictpng(fz_predict *p, unsigned char *in, unsigned char *out, int predictor)
{
int upleft[MAXC], left[MAXC], i, k;
@@ -161,38 +161,18 @@ png(fz_predict *p, unsigned char *in, unsigned char *out, int predictor)
upleft[k] = 0;
}
- if (p->encode)
- {
- for (k = 0, i = 0; i < p->stride; k = (k + 1) % p->bpp, i ++)
- {
- switch (predictor)
- {
- case 0: out[i] = in[i]; break;
- case 1: out[i] = in[i] - left[k]; break;
- case 2: out[i] = in[i] - p->ref[i]; break;
- case 3: out[i] = in[i] - (left[k] + p->ref[i]) / 2; break;
- case 4: out[i] = in[i] - paeth(left[k], p->ref[i], upleft[k]); break;
- }
- left[k] = in[i];
- upleft[k] = p->ref[i];
- }
- }
-
- else
+ for (k = 0, i = 0; i < p->stride; k = (k + 1) % p->bpp, i ++)
{
- for (k = 0, i = 0; i < p->stride; k = (k + 1) % p->bpp, i ++)
+ switch (predictor)
{
- switch (predictor)
- {
case 0: out[i] = in[i]; break;
case 1: out[i] = in[i] + left[k]; break;
case 2: out[i] = in[i] + p->ref[i]; break;
case 3: out[i] = in[i] + (left[k] + p->ref[i]) / 2; break;
case 4: out[i] = in[i] + paeth(left[k], p->ref[i], upleft[k]); break;
- }
- left[k] = out[i];
- upleft[k] = p->ref[i];
}
+ left[k] = out[i];
+ upleft[k] = p->ref[i];
}
}
@@ -205,40 +185,30 @@ fz_processpredict(fz_filter *filter, fz_buffer *in, fz_buffer *out)
while (1)
{
- if (in->rp + dec->stride + (!dec->encode && ispng) > in->wp)
+ if (in->rp + dec->stride + ispng > in->wp)
{
if (in->eof)
return fz_iodone;
return fz_ioneedin;
}
- if (out->wp + dec->stride + (dec->encode && ispng) > out->ep)
+ if (out->wp + dec->stride > out->ep)
return fz_ioneedout;
if (dec->predictor == 1)
{
- none(dec, in->rp, out->wp);
+ fz_predictnone(dec, in->rp, out->wp);
}
else if (dec->predictor == 2)
{
if (dec->bpc != 8)
memset(out->wp, 0, dec->stride);
- tiff(dec, in->rp, out->wp);
+ fz_predicttiff(dec, in->rp, out->wp);
}
else
{
- if (dec->encode)
- {
- predictor = dec->predictor - 10;
- if (predictor < 0 || predictor > 4)
- predictor = 1;
- *out->wp ++ = predictor;
- }
- else
- {
- predictor = *in->rp++;
- }
- png(dec, in->rp, out->wp, predictor);
+ predictor = *in->rp++;
+ fz_predictpng(dec, in->rp, out->wp, predictor);
}
if (dec->ref)
@@ -249,15 +219,3 @@ fz_processpredict(fz_filter *filter, fz_buffer *in, fz_buffer *out)
}
}
-fz_error
-fz_newpredictd(fz_filter **fp, fz_obj *params)
-{
- return fz_newpredict(fp, params, 0);
-}
-
-fz_error
-fz_newpredicte(fz_filter **fp, fz_obj *params)
-{
- return fz_newpredict(fp, params, 1);
-}
-