ref: 7e704b4a1d2cc358ac4634f9a7329c8bb68acf0f
parent: 7b2cb295c5bb2b4fa456c0bbf9fafa0421c7352f
author: cinap_lenrek <cinap_lenrek@gmx.de>
date: Tue Aug 14 01:36:05 EDT 2012
jpg: ignore sampling factors for grayscale as colormap1() doesnt handle it
--- a/sys/src/cmd/jpg/readjpg.c
+++ b/sys/src/cmd/jpg/readjpg.c
@@ -7,7 +7,7 @@
enum {/* Constants, all preceded by byte 0xFF */
SOF =0xC0, /* Start of Frame */
- SOF2=0xC2, /* Start of Frame; progressive Huffman */
+ SOF2 =0xC2, /* Start of Frame; progressive Huffman */
JPG =0xC8, /* Reserved for JPEG extensions */
DHT =0xC4, /* Define Huffman Tables */
DAC =0xCC, /* Arithmetic coding conditioning */
@@ -322,12 +322,15 @@
case SOF2:
header->Y = int2(b, 1);
header->X = int2(b, 3);
- header->Nf =b[5];
+ header->Nf = b[5];
for(i=0; i<header->Nf; i++){header->comp[i].C = b[6+3*i+0];
nibbles(b[6+3*i+1], &H, &V);
if(H<=0 || V<=0)
jpgerror(header, "non-positive sampling factor (Hsamp or Vsamp)");
+ /* hack: colormap1() doesnt handle resampling */
+ if(header->Nf == 1)
+ H = V = 1;
header->comp[i].H = H;
header->comp[i].V = V;
header->comp[i].Tq = b[6+3*i+2];
--
⑨