summaryrefslogtreecommitdiff
path: root/src/pkg/image/jpeg/writer.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/pkg/image/jpeg/writer.go')
-rw-r--r--src/pkg/image/jpeg/writer.go32
1 files changed, 1 insertions, 31 deletions
diff --git a/src/pkg/image/jpeg/writer.go b/src/pkg/image/jpeg/writer.go
index 52b3dc4e2..505cce04f 100644
--- a/src/pkg/image/jpeg/writer.go
+++ b/src/pkg/image/jpeg/writer.go
@@ -391,31 +391,6 @@ func toYCbCr(m image.Image, p image.Point, yBlock, cbBlock, crBlock *block) {
}
}
-// rgbaToYCbCr is a specialized version of toYCbCr for image.RGBA images.
-func rgbaToYCbCr(m *image.RGBA, p image.Point, yBlock, cbBlock, crBlock *block) {
- b := m.Bounds()
- xmax := b.Max.X - 1
- ymax := b.Max.Y - 1
- for j := 0; j < 8; j++ {
- sj := p.Y + j
- if sj > ymax {
- sj = ymax
- }
- yoff := sj * m.Stride
- for i := 0; i < 8; i++ {
- sx := p.X + i
- if sx > xmax {
- sx = xmax
- }
- col := &m.Pix[yoff+sx]
- yy, cb, cr := ycbcr.RGBToYCbCr(col.R, col.G, col.B)
- yBlock[8*j+i] = int(yy)
- cbBlock[8*j+i] = int(cb)
- crBlock[8*j+i] = int(cr)
- }
- }
-}
-
// scale scales the 16x16 region represented by the 4 src blocks to the 8x8
// dst block.
func scale(dst *block, src *[4]block) {
@@ -456,18 +431,13 @@ func (e *encoder) writeSOS(m image.Image) {
prevDCY, prevDCCb, prevDCCr int
)
bounds := m.Bounds()
- rgba, _ := m.(*image.RGBA)
for y := bounds.Min.Y; y < bounds.Max.Y; y += 16 {
for x := bounds.Min.X; x < bounds.Max.X; x += 16 {
for i := 0; i < 4; i++ {
xOff := (i & 1) * 8
yOff := (i & 2) * 4
p := image.Point{x + xOff, y + yOff}
- if rgba != nil {
- rgbaToYCbCr(rgba, p, &yBlock, &cbBlock[i], &crBlock[i])
- } else {
- toYCbCr(m, p, &yBlock, &cbBlock[i], &crBlock[i])
- }
+ toYCbCr(m, p, &yBlock, &cbBlock[i], &crBlock[i])
prevDCY = e.writeBlock(&yBlock, 0, prevDCY)
}
scale(&cBlock, &cbBlock)