-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi,

I used prediction filtering with real images and found a great
mistake: parameters for predictor types inside PDFs are
1,2,10,11,...,14 (see ISO 32000-1) but values for writing inside the
PNG stream are 0,1,2,3,4 (see RFC-2083).

So we have to add/substract 10 (or PDF_STM_F_PREDDEC_PNG_NONE, which
is defined to 10).

A patch for this bug is attached. Please merge it.

Regards,
Georg
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.17 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk67sMcACgkQ5sLITM1qIaJhAwCbBBcok7aJHN8RzNe/UoZ+zrdS
RlMAniWDuPo8gK15cCqaScMmB84WOTig
=aTJW
-----END PGP SIGNATURE-----
# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: georg.gottleu...@uni-ulm.de-20111110105245-\
#   d7ohzvndj65f1phb
# target_branch: bzr://bzr.savannah.gnu.org/pdf/libgnupdf/trunk/
# testament_sha1: ef8ef5a99f548c69ad00afb3b849548fa9ac3d1f
# timestamp: 2011-11-10 11:59:23 +0100
# base_revision_id: jema...@gnu.org-20111011211752-3goterimb0gpbqq7
# 
# Begin patch
=== modified file 'ChangeLog'
--- ChangeLog	2011-10-11 21:17:52 +0000
+++ ChangeLog	2011-11-10 10:52:45 +0000
@@ -1,3 +1,8 @@
+2011-11-10  Georg Gottleuber <georg.gottleu...@uni-ulm.de>
+
+	base,stm: Bugfix in prediction filter.
+	* src/base/pdf-stm-f-pred.c: predictor type inside PNG with offset
+
 2011-10-11  Jose E. Marchesi  <jema...@gnu.org>
 
 	prmgt: converters to html reverted to a previous revision.

=== modified file 'src/base/pdf-stm-f-pred.c'
--- src/base/pdf-stm-f-pred.c	2011-07-30 21:08:22 +0000
+++ src/base/pdf-stm-f-pred.c	2011-11-10 10:52:45 +0000
@@ -969,6 +969,7 @@
   pdf_char_t *out_buf;
 
   pdf_size_t in_size;
+  pdf_uchar_t png_pred_type;
   PDF_ASSERT (in->wp >= in->rp);
 
   size_t tocpy;
@@ -1008,7 +1009,11 @@
             {
               /* write/read PNG predictor at first byte of a row */
               if (is_png_predictor)
-                fs->out_row_buf->data[fs->out_row_buf->wp++] = fs->predictor;
+                {
+                  /* predictor numbers inside PNG start with 0 (see RFC-2083) */
+                  png_pred_type = fs->predictor - PDF_STM_F_PREDDEC_PNG_NONE;
+                  fs->out_row_buf->data[fs->out_row_buf->wp++] = png_pred_type;
+                }
 
               curr_row = (pdf_char_t*) fs->curr_row_buf->data;
               out_buf  = (pdf_char_t*) fs->out_row_buf->data 
@@ -1143,7 +1148,11 @@
             {
               /* write/read PNG predictor at first byte of a row */
               if (is_png_predictor)
-                fs->predictor = fs->curr_row_buf->data[fs->curr_row_buf->rp++];
+                {
+                  fs->predictor = fs->curr_row_buf->data[fs->curr_row_buf->rp++];
+                  /* predictor numbers inside PNG start with 0 (see RFC-2083) */
+                  fs->predictor += PDF_STM_F_PREDDEC_PNG_NONE;
+                }
 
               curr_row = (pdf_char_t*) fs->curr_row_buf->data 
                                        + fs->curr_row_buf->rp;

# Begin bundle
IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWXpQLbIAAm3fgCA1UH///1+H
3Aq////6UAVGrxQUNrAoAASiKepmo000mmT1NoaTTTTQ0APUBhGQ0eocZMmTEYmAEyYJkANGEYAh
gEogJTT09Jkgaep6gNGmgAB6gAHqNBxkyZMRiYATJgmQA0YRgCGASSBA00E0yIptoJppGGhkmQ0D
QNGkgDSNcGzfa2kUwa/AeS35kqpSt5i1aipEy7BYQRrHPvunYzDAyeUBBghOr2Fc2kx7nmOUFVV+
dIXqj1VZGBrcFKxRr1pFIX08bchh8zgywApPXM89MxcRMRGcIrCxK+IzkmOBG0DAeQjS5NdLl+bT
V5DidaRqohUjtwxnC4+xeYxDJFApOOGAoHWbpjFQsPgVBjtA/s5c0umRuXY47kjo5rvKE0jJI+gd
Z4Gxr0bsNk/hJC2c5lvR1e4B7xJha8k9HqN6iBF48eyaBcN2A9f0OtKtq5GuAOA9FuAVsQZ0IQHd
zk9QyszgGwuK7KXgQvLFGgxQFAJhoRmeD93CVl1n4lNArLYWds4T0m8NT38bcTpaRQo806gMrmec
QaOqPayFBDEmMguDaJZvJ43lZOJxKwNpjjjnREue9XKnNeTrGHDjC5t1hHWjitjYs3YHrMwnvTpB
txtAeuLzV5w5g47i4yxqMlgVBmTqTqxncQIf5xDmRAYCJNVz1dOhhKhZSqiCdw9OqkPdQA5oxLzX
X5DFMEZpTAyM4oqOodCQSiRGpCAZF1W5nDBdMJF8if0VVB1LbVaBGq2advHv0YiZFCMjOROBa1zy
hZgOLpVzqjiX1vyJKwueN7bFv0OQ622+TDUqe+546O5DlFwNJoKpFVTNofp4Nx6TMb1OXoqXCgx5
hns3X3nSD2S9ITSJkAZVsRGoYPU1G02ELT6Rym4aOEf0KQeR9lYSEgHuiI4HkGjUdcT5TULjwLSo
qUzBksMOsolqd9dcFVBcKdOccJzZDMQjKbvBioks2UKPG2RVLKV16wrIjjtB5oN4SScF5X3m/LL2
lvgbfKMvXVf8kKhbmFfcHrA+NGNXY4nvOjQY0JV+Jyflsue8PJtwlfDcyDd8y1GnLPx062LKsQrD
xAdBEFaS4QDVIw4oqQMqwI/N/OET4jzJQQPHQOU/jzDtG7O7U1vO46zAvj5mHV4jI8sD5eUz6wxY
FoOMZ5vaO27CLNzuMD8gqX1TB7CCRSwnpq4ekYuBxtz8CJwQpoqRDsDpLjEBlMnKZh16TClstJjN
xlKAlHztI7ZkG061VixmJVwRSwYckrV52ZDEfSelMOyOY/4MQ9KRmHkDYXIXvcuoC7IDilikVnnX
doQ1QdfrRQHVwXECoHnOvcibg/3hjCRcj7UeIdEyB59+AG9XBqaaI3hYiy196ZdgsELpy6AUSJXI
ZIk4gGyiEiJR5IiZ4ykuFUBhkbEXovAg7RQVyRU0AmJmDsCwesb3n1xOcCi1rS+6s3ApnIGSJrKC
oGfoHJHqLA+xtt2zDBIO3tgzor2Iu7wMfPWY83PuG5KJmmDH5h6AqLyYy5MOANB70R6nhQAo5K3q
msFYgLsGByocYXMGMyomNXUywMUn4RkHaYyGVJnYHQhxavK2dwxUfUtLRRnZQm9jE+APMU6rto2Y
YA7IK4XXnYVoVwnJMi8IRcFdSFS4YgE0LN/APgZ6JFR6kidMFeRU0d68wFqiGAccjxOqxF6t3o1q
UfeB9Q/8XckU4UJB6UC2yA==

Reply via email to