From 782db7fc883e3ae409b27f7b77b135d8eee81c69 Mon Sep 17 00:00:00 2001 From: Nigel Tao Date: Tue, 10 Mar 2015 19:01:44 +1100 Subject: [PATCH] image/jpeg: support chroma hv values other than 0x11. The testdata was generated by: convert video-001.png tmp1.tga cjpeg -quality 100 -sample 2x2,1x2,1x2 tmp1.tga > video-001.221212.jpeg djpeg -nosmooth -targa video-001.221212.jpeg > tmp2.tga convert tmp2.tga video-001.221212.png rm tmp1.tga tmp2.tga Change-Id: Ica241dfc19b3eb47ade150bf0432373c6006c38a Reviewed-on: https://go-review.googlesource.com/7264 Reviewed-by: Rob Pike --- src/image/decode_test.go | 12 +++- src/image/jpeg/reader.go | 69 +++++++++++++++-------- src/image/jpeg/scan.go | 42 +++++++------- src/image/testdata/video-001.221212.jpeg | Bin 0 -> 19263 bytes src/image/testdata/video-001.221212.png | Bin 0 -> 29820 bytes 5 files changed, 78 insertions(+), 45 deletions(-) create mode 100644 src/image/testdata/video-001.221212.jpeg create mode 100644 src/image/testdata/video-001.221212.png diff --git a/src/image/decode_test.go b/src/image/decode_test.go index 8b0b6e84b0..d16ef8a1a4 100644 --- a/src/image/decode_test.go +++ b/src/image/decode_test.go @@ -6,6 +6,7 @@ package image_test import ( "bufio" + "fmt" "image" "image/color" "os" @@ -32,6 +33,7 @@ var imageTests = []imageTest{ // JPEG is a lossy format and hence needs a non-zero tolerance. {"testdata/video-001.png", "testdata/video-001.jpeg", 8 << 8}, {"testdata/video-001.png", "testdata/video-001.progressive.jpeg", 8 << 8}, + {"testdata/video-001.221212.png", "testdata/video-001.221212.jpeg", 8 << 8}, {"testdata/video-001.cmyk.png", "testdata/video-001.cmyk.jpeg", 8 << 8}, {"testdata/video-001.rgb.png", "testdata/video-001.rgb.jpeg", 8 << 8}, // Grayscale images. @@ -76,6 +78,11 @@ func withinTolerance(c0, c1 color.Color, tolerance int) bool { } func TestDecode(t *testing.T) { + rgba := func(c color.Color) string { + r, g, b, a := c.RGBA() + return fmt.Sprintf("rgba = 0x%04x, 0x%04x, 0x%04x, 0x%04x for %T%v", r, g, b, a, c, c) + } + golden := make(map[string]image.Image) loop: for _, it := range imageTests { @@ -96,13 +103,14 @@ loop: } b := g.Bounds() if !b.Eq(m.Bounds()) { - t.Errorf("%s: want bounds %v got %v", it.filename, b, m.Bounds()) + t.Errorf("%s: got bounds %v want %v", it.filename, m.Bounds(), b) continue loop } for y := b.Min.Y; y < b.Max.Y; y++ { for x := b.Min.X; x < b.Max.X; x++ { if !withinTolerance(g.At(x, y), m.At(x, y), it.tolerance) { - t.Errorf("%s: at (%d, %d), want %v got %v", it.filename, x, y, g.At(x, y), m.At(x, y)) + t.Errorf("%s: at (%d, %d):\ngot %v\nwant %v", + it.filename, x, y, rgba(m.At(x, y)), rgba(g.At(x, y))) continue loop } } diff --git a/src/image/jpeg/reader.go b/src/image/jpeg/reader.go index 7293f45617..12b20a6922 100644 --- a/src/image/jpeg/reader.go +++ b/src/image/jpeg/reader.go @@ -26,6 +26,8 @@ type UnsupportedError string func (e UnsupportedError) Error() string { return "unsupported JPEG feature: " + string(e) } +var errUnsupportedSubsamplingRatio = UnsupportedError("luma/chroma subsampling ratio") + // Component specification, specified in section B.2.2. type component struct { h int // Horizontal sampling factor. @@ -303,7 +305,7 @@ func (d *decoder) processSOF(n int) error { case 6 + 3*4: // YCbCrK or CMYK image. d.nComp = 4 default: - return UnsupportedError("SOF has wrong length") + return UnsupportedError("number of components") } if err := d.readFull(d.tmp[:n]); err != nil { return err @@ -315,8 +317,9 @@ func (d *decoder) processSOF(n int) error { d.height = int(d.tmp[1])<<8 + int(d.tmp[2]) d.width = int(d.tmp[3])<<8 + int(d.tmp[4]) if int(d.tmp[5]) != d.nComp { - return UnsupportedError("SOF has wrong number of image components") + return FormatError("SOF has wrong length") } + for i := 0; i < d.nComp; i++ { d.comp[i].c = d.tmp[6+3*i] // Section B.2.2 states that "the value of C_i shall be different from @@ -328,8 +331,16 @@ func (d *decoder) processSOF(n int) error { } d.comp[i].tq = d.tmp[8+3*i] - - if d.nComp == 1 { + hv := d.tmp[7+3*i] + h, v := int(hv>>4), int(hv&0x0f) + if h < 1 || 4 < h || v < 1 || 4 < v { + return FormatError("luma/chroma subsampling ratio") + } + if h == 3 || v == 3 { + return errUnsupportedSubsamplingRatio + } + switch d.nComp { + case 1: // If a JPEG image has only one component, section A.2 says "this data // is non-interleaved by definition" and section A.2.2 says "[in this // case...] the order of data units within a scan shall be left-to-right @@ -341,27 +352,34 @@ func (d *decoder) processSOF(n int) error { // always 1. The component's (h, v) is effectively always (1, 1): even if // the nominal (h, v) is (2, 1), a 20x5 image is encoded in three 8x8 // MCUs, not two 16x8 MCUs. - d.comp[i].h = 1 - d.comp[i].v = 1 - continue - } - hv := d.tmp[7+3*i] - d.comp[i].h = int(hv >> 4) - d.comp[i].v = int(hv & 0x0f) - switch d.nComp { + h, v = 1, 1 + case 3: // For YCbCr images, we only support 4:4:4, 4:4:0, 4:2:2, 4:2:0, - // 4:1:1 or 4:1:0 chroma downsampling ratios. This implies that the + // 4:1:1 or 4:1:0 chroma subsampling ratios. This implies that the // (h, v) values for the Y component are either (1, 1), (1, 2), - // (2, 1), (2, 2), (4, 1) or (4, 2), and the (h, v) values for the Cr - // and Cb components must be (1, 1). - if i == 0 { - if hv != 0x11 && hv != 0x21 && hv != 0x22 && hv != 0x12 && hv != 0x41 && hv != 0x42 { - return UnsupportedError("luma/chroma downsample ratio") + // (2, 1), (2, 2), (4, 1) or (4, 2), and the Y component's values + // must be a multiple of the Cb and Cr component's values. We also + // assume that the two chroma components have the same subsampling + // ratio. + switch i { + case 0: // Y. + // We have already verified, above, that h and v are both + // either 1, 2 or 4, so invalid (h, v) combinations are those + // with v == 4. + if v == 4 { + return errUnsupportedSubsamplingRatio + } + case 1: // Cb. + if d.comp[0].h%h != 0 || d.comp[0].v%v != 0 { + return errUnsupportedSubsamplingRatio + } + case 2: // Cr. + if d.comp[1].h != h || d.comp[1].v != v { + return errUnsupportedSubsamplingRatio } - } else if hv != 0x11 { - return UnsupportedError("luma/chroma downsample ratio") } + case 4: // For 4-component images (either CMYK or YCbCrK), we only support two // hv vectors: [0x11 0x11 0x11 0x11] and [0x22 0x11 0x11 0x22]. @@ -375,18 +393,21 @@ func (d *decoder) processSOF(n int) error { switch i { case 0: if hv != 0x11 && hv != 0x22 { - return UnsupportedError("luma/chroma downsample ratio") + return errUnsupportedSubsamplingRatio } case 1, 2: if hv != 0x11 { - return UnsupportedError("luma/chroma downsample ratio") + return errUnsupportedSubsamplingRatio } case 3: - if d.comp[0].h != d.comp[3].h || d.comp[0].v != d.comp[3].v { - return UnsupportedError("luma/chroma downsample ratio") + if d.comp[0].h != h || d.comp[0].v != v { + return errUnsupportedSubsamplingRatio } } } + + d.comp[i].h = h + d.comp[i].v = v } return nil } diff --git a/src/image/jpeg/scan.go b/src/image/jpeg/scan.go index 420326fc15..99734c01af 100644 --- a/src/image/jpeg/scan.go +++ b/src/image/jpeg/scan.go @@ -9,26 +9,30 @@ import ( ) // makeImg allocates and initializes the destination image. -func (d *decoder) makeImg(h0, v0, mxx, myy int) { +func (d *decoder) makeImg(mxx, myy int) { if d.nComp == 1 { m := image.NewGray(image.Rect(0, 0, 8*mxx, 8*myy)) d.img1 = m.SubImage(image.Rect(0, 0, d.width, d.height)).(*image.Gray) return } + h0 := d.comp[0].h + v0 := d.comp[0].v + hRatio := h0 / d.comp[1].h + vRatio := v0 / d.comp[1].v var subsampleRatio image.YCbCrSubsampleRatio - switch { - case h0 == 1 && v0 == 1: + switch hRatio<<4 | vRatio { + case 0x11: subsampleRatio = image.YCbCrSubsampleRatio444 - case h0 == 1 && v0 == 2: + case 0x12: subsampleRatio = image.YCbCrSubsampleRatio440 - case h0 == 2 && v0 == 1: + case 0x21: subsampleRatio = image.YCbCrSubsampleRatio422 - case h0 == 2 && v0 == 2: + case 0x22: subsampleRatio = image.YCbCrSubsampleRatio420 - case h0 == 4 && v0 == 1: + case 0x41: subsampleRatio = image.YCbCrSubsampleRatio411 - case h0 == 4 && v0 == 2: + case 0x42: subsampleRatio = image.YCbCrSubsampleRatio410 default: panic("unreachable") @@ -141,7 +145,7 @@ func (d *decoder) processSOS(n int) error { mxx := (d.width + 8*h0 - 1) / (8 * h0) myy := (d.height + 8*v0 - 1) / (8 * v0) if d.img1 == nil && d.img3 == nil { - d.makeImg(h0, v0, mxx, myy) + d.makeImg(mxx, myy) } if d.progressive { for i := 0; i < nComp; i++ { @@ -158,10 +162,8 @@ func (d *decoder) processSOS(n int) error { // b is the decoded coefficients, in natural (not zig-zag) order. b block dc [maxComponents]int32 - // bx and by are the location of the current (in terms of 8x8 blocks). - // For example, with 4:2:0 chroma subsampling, the block whose top left - // pixel co-ordinates are (16, 8) is the third block in the first row: - // bx is 2 and by is 0, even though the pixel is in the second MCU. + // bx and by are the location of the current block, in units of 8x8 + // blocks: the third block in the first row has (bx, by) = (2, 0). bx, by int blockCount int ) @@ -169,8 +171,10 @@ func (d *decoder) processSOS(n int) error { for mx := 0; mx < mxx; mx++ { for i := 0; i < nComp; i++ { compIndex := scan[i].compIndex + hi := d.comp[compIndex].h + vi := d.comp[compIndex].v qt := &d.quant[d.comp[compIndex].tq] - for j := 0; j < d.comp[compIndex].h*d.comp[compIndex].v; j++ { + for j := 0; j < hi*vi; j++ { // The blocks are traversed one MCU at a time. For 4:2:0 chroma // subsampling, there are four Y 8x8 blocks in every 16x16 MCU. // @@ -197,10 +201,10 @@ func (d *decoder) processSOS(n int) error { // 0 1 2 // 3 4 5 if nComp != 1 { - bx = d.comp[compIndex].h*mx + j%h0 - by = d.comp[compIndex].v*my + j/h0 + bx = hi*mx + j%hi + by = vi*my + j/hi } else { - q := mxx * d.comp[compIndex].h + q := mxx * hi bx = blockCount % q by = blockCount / q blockCount++ @@ -211,7 +215,7 @@ func (d *decoder) processSOS(n int) error { // Load the previous partially decoded coefficients, if applicable. if d.progressive { - b = d.progCoeffs[compIndex][by*mxx*d.comp[compIndex].h+bx] + b = d.progCoeffs[compIndex][by*mxx*hi+bx] } else { b = block{} } @@ -284,7 +288,7 @@ func (d *decoder) processSOS(n int) error { if d.progressive { if zigEnd != blockSize-1 || al != 0 { // We haven't completely decoded this 8x8 block. Save the coefficients. - d.progCoeffs[compIndex][by*mxx*d.comp[compIndex].h+bx] = b + d.progCoeffs[compIndex][by*mxx*hi+bx] = b // At this point, we could execute the rest of the loop body to dequantize and // perform the inverse DCT, to save early stages of a progressive image to the // *image.YCbCr buffers (the whole point of progressive encoding), but in Go, diff --git a/src/image/testdata/video-001.221212.jpeg b/src/image/testdata/video-001.221212.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..f069c76af9c3f70a2761a74ad4bd5823d50a3aa1 GIT binary patch literal 19263 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 Bi@yK> literal 0 HcmV?d00001 diff --git a/src/image/testdata/video-001.221212.png b/src/image/testdata/video-001.221212.png new file mode 100644 index 0000000000000000000000000000000000000000..d619a6286bc2d0e35b7d16c95cf1561d0df0c325 GIT binary patch literal 29820 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 literal 0 HcmV?d00001 -- 2.48.1