Преглед изворни кода

Revert "Optimize YCbCr Conversion"
Temporary revert - more subsample ratio options introduced with Go 1.5
This reverts commit 3ab6ec550f20d497d2755ed3c48a3e45ad6b7eb9.

disintegration пре 10 година
родитељ
комит
1e48228704
1 измењених фајлова са 14 додато и 53 уклоњено
  1. 14 53
      helpers.go

+ 14 - 53
helpers.go

@@ -318,59 +318,20 @@ func Clone(img image.Image) *image.NRGBA {
 		parallel(dstH, func(partStart, partEnd int) {
 			for dstY := partStart; dstY < partEnd; dstY++ {
 				di := dst.PixOffset(0, dstY)
-				switch src.SubsampleRatio {
-				case image.YCbCrSubsampleRatio422:
-					siy0 := dstY * src.YStride
-					sic0 := dstY * src.CStride
-					for dstX := 0; dstX < dstW; dstX = dstX + 1 {
-						siy := siy0 + dstX
-						sic := sic0 + ((srcMinX+dstX)/2 - srcMinX/2)
-						r, g, b := color.YCbCrToRGB(src.Y[siy], src.Cb[sic], src.Cr[sic])
-						dst.Pix[di+0] = r
-						dst.Pix[di+1] = g
-						dst.Pix[di+2] = b
-						dst.Pix[di+3] = 0xff
-						di += 4
-					}
-				case image.YCbCrSubsampleRatio420:
-					siy0 := dstY * src.YStride
-					sic0 := ((srcMinY+dstY)/2 - srcMinY/2) * src.CStride
-					for dstX := 0; dstX < dstW; dstX = dstX + 1 {
-						siy := siy0 + dstX
-						sic := sic0 + ((srcMinX+dstX)/2 - srcMinX/2)
-						r, g, b := color.YCbCrToRGB(src.Y[siy], src.Cb[sic], src.Cr[sic])
-						dst.Pix[di+0] = r
-						dst.Pix[di+1] = g
-						dst.Pix[di+2] = b
-						dst.Pix[di+3] = 0xff
-						di += 4
-					}
-				case image.YCbCrSubsampleRatio440:
-					siy0 := dstY * src.YStride
-					sic0 := ((srcMinY+dstY)/2 - srcMinY/2) * src.CStride
-					for dstX := 0; dstX < dstW; dstX = dstX + 1 {
-						siy := siy0 + dstX
-						sic := sic0 + dstX
-						r, g, b := color.YCbCrToRGB(src.Y[siy], src.Cb[sic], src.Cr[sic])
-						dst.Pix[di+0] = r
-						dst.Pix[di+1] = g
-						dst.Pix[di+2] = b
-						dst.Pix[di+3] = 0xff
-						di += 4
-					}
-				default:
-					siy0 := dstY * src.YStride
-					sic0 := dstY * src.CStride
-					for dstX := 0; dstX < dstW; dstX++ {
-						siy := siy0 + dstX
-						sic := sic0 + dstX
-						r, g, b := color.YCbCrToRGB(src.Y[siy], src.Cb[sic], src.Cr[sic])
-						dst.Pix[di+0] = r
-						dst.Pix[di+1] = g
-						dst.Pix[di+2] = b
-						dst.Pix[di+3] = 0xff
-						di += 4
-					}
+				for dstX := 0; dstX < dstW; dstX++ {
+
+					srcX := srcMinX + dstX
+					srcY := srcMinY + dstY
+					siy := src.YOffset(srcX, srcY)
+					sic := src.COffset(srcX, srcY)
+					r, g, b := color.YCbCrToRGB(src.Y[siy], src.Cb[sic], src.Cr[sic])
+					dst.Pix[di+0] = r
+					dst.Pix[di+1] = g
+					dst.Pix[di+2] = b
+					dst.Pix[di+3] = 0xff
+
+					di += 4
+
 				}
 			}
 		})