]> git.ipfire.org Git - thirdparty/gcc.git/blobdiff - libgo/go/image/ycbcr.go
libgo: Update to current sources.
[thirdparty/gcc.git] / libgo / go / image / ycbcr.go
index c1a0b666f8308935f061e398e49137330b4fda2b..5b73bef789581e21a684362dd8deec35ab0b3dfc 100644 (file)
@@ -15,6 +15,7 @@ const (
        YCbCrSubsampleRatio444 YCbCrSubsampleRatio = iota
        YCbCrSubsampleRatio422
        YCbCrSubsampleRatio420
+       YCbCrSubsampleRatio440
 )
 
 func (s YCbCrSubsampleRatio) String() string {
@@ -25,6 +26,8 @@ func (s YCbCrSubsampleRatio) String() string {
                return "YCbCrSubsampleRatio422"
        case YCbCrSubsampleRatio420:
                return "YCbCrSubsampleRatio420"
+       case YCbCrSubsampleRatio440:
+               return "YCbCrSubsampleRatio440"
        }
        return "YCbCrSubsampleRatioUnknown"
 }
@@ -39,6 +42,7 @@ func (s YCbCrSubsampleRatio) String() string {
 //     For 4:4:4, CStride == YStride/1 && len(Cb) == len(Cr) == len(Y)/1.
 //     For 4:2:2, CStride == YStride/2 && len(Cb) == len(Cr) == len(Y)/2.
 //     For 4:2:0, CStride == YStride/2 && len(Cb) == len(Cr) == len(Y)/4.
+//     For 4:4:0, CStride == YStride/1 && len(Cb) == len(Cr) == len(Y)/2.
 type YCbCr struct {
        Y, Cb, Cr      []uint8
        YStride        int
@@ -82,6 +86,8 @@ func (p *YCbCr) COffset(x, y int) int {
                return (y-p.Rect.Min.Y)*p.CStride + (x/2 - p.Rect.Min.X/2)
        case YCbCrSubsampleRatio420:
                return (y/2-p.Rect.Min.Y/2)*p.CStride + (x/2 - p.Rect.Min.X/2)
+       case YCbCrSubsampleRatio440:
+               return (y/2-p.Rect.Min.Y/2)*p.CStride + (x - p.Rect.Min.X)
        }
        // Default to 4:4:4 subsampling.
        return (y-p.Rect.Min.Y)*p.CStride + (x - p.Rect.Min.X)
@@ -126,6 +132,9 @@ func NewYCbCr(r Rectangle, subsampleRatio YCbCrSubsampleRatio) *YCbCr {
        case YCbCrSubsampleRatio420:
                cw = (r.Max.X+1)/2 - r.Min.X/2
                ch = (r.Max.Y+1)/2 - r.Min.Y/2
+       case YCbCrSubsampleRatio440:
+               cw = w
+               ch = (r.Max.Y+1)/2 - r.Min.Y/2
        default:
                // Default to 4:4:4 subsampling.
                cw = w