diff options
author | rileya <rileya@chromium.org> | 2014-09-12 17:45:58 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-09-12 17:45:58 -0700 |
commit | abaef86f2b37d8a939506a2076da07f6db456951 (patch) | |
tree | e206bd6ee9f049c43c0ba9033c8417bb5008258c /gm | |
parent | 94c415170b6f62fa80b598fe30bf2f99f0aecf6a (diff) |
Add support for the Rec601 YUV color space to GrYUVtoRGBEffect.
R=bsalomon@google.com, senorblanco@chromium.org, sugoi@chromium.org, reed@google.com
Author: rileya@chromium.org
Review URL: https://codereview.chromium.org/516463005
Diffstat (limited to 'gm')
-rw-r--r-- | gm/yuvtorgbeffect.cpp | 57 |
1 files changed, 31 insertions, 26 deletions
diff --git a/gm/yuvtorgbeffect.cpp b/gm/yuvtorgbeffect.cpp index 12676f262e..acb6f2251b 100644 --- a/gm/yuvtorgbeffect.cpp +++ b/gm/yuvtorgbeffect.cpp @@ -35,7 +35,7 @@ protected: } virtual SkISize onISize() SK_OVERRIDE { - return SkISize::Make(334, 64); + return SkISize::Make(334, 128); } virtual uint32_t onGetFlags() const SK_OVERRIDE { @@ -93,31 +93,36 @@ protected: static const SkScalar kDrawPad = 10.f; static const SkScalar kTestPad = 10.f; - - SkRect renderRect = SkRect::MakeWH(SkIntToScalar(fBmp[0].width()), - SkIntToScalar(fBmp[0].height())); - renderRect.outset(kDrawPad, kDrawPad); - - SkScalar y = kDrawPad + kTestPad; - SkScalar x = kDrawPad + kTestPad; - - const int indices[6][3] = {{0, 1, 2}, {0, 2, 1}, {1, 0, 2}, {1, 2, 0}, {2, 0, 1}, {2, 1, 0}}; - - for (int i = 0; i < 6; ++i) { - SkAutoTUnref<GrEffect> effect( - GrYUVtoRGBEffect::Create(texture[indices[i][0]], - texture[indices[i][1]], - texture[indices[i][2]])); - if (effect) { - SkMatrix viewMatrix; - viewMatrix.setTranslate(x, y); - drawState->reset(viewMatrix); - drawState->setRenderTarget(rt); - drawState->setColor(0xffffffff); - drawState->addColorEffect(effect, 1); - tt.target()->drawSimpleRect(renderRect); - } - x += renderRect.width() + kTestPad; + static const SkScalar kColorSpaceOffset = 64.f; + + for (int space = kJPEG_SkYUVColorSpace; space <= kLastEnum_SkYUVColorSpace; + ++space) { + SkRect renderRect = SkRect::MakeWH(SkIntToScalar(fBmp[0].width()), + SkIntToScalar(fBmp[0].height())); + renderRect.outset(kDrawPad, kDrawPad); + + SkScalar y = kDrawPad + kTestPad + space * kColorSpaceOffset; + SkScalar x = kDrawPad + kTestPad; + + const int indices[6][3] = {{0, 1, 2}, {0, 2, 1}, {1, 0, 2}, {1, 2, 0}, {2, 0, 1}, {2, 1, 0}}; + + for (int i = 0; i < 6; ++i) { + SkAutoTUnref<GrEffect> effect( + GrYUVtoRGBEffect::Create(texture[indices[i][0]], + texture[indices[i][1]], + texture[indices[i][2]], + static_cast<SkYUVColorSpace>(space))); + if (effect) { + SkMatrix viewMatrix; + viewMatrix.setTranslate(x, y); + drawState->reset(viewMatrix); + drawState->setRenderTarget(rt); + drawState->setColor(0xffffffff); + drawState->addColorEffect(effect, 1); + tt.target()->drawSimpleRect(renderRect); + } + x += renderRect.width() + kTestPad; + } } GrUnlockAndUnrefCachedBitmapTexture(texture[0]); |