diff options
author | Ben Wagner <benjaminwagner@google.com> | 2017-10-18 18:09:37 +0000 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-10-18 18:09:47 +0000 |
commit | 021e5c70160c9682e8d8ab6e2c36a3cb3f57604a (patch) | |
tree | d21021d44fa49985d169bd7906c47f2bbe6a27fd /src/codec | |
parent | 7c4ce9b94b9dd7983d554874f35827cc608aa46c (diff) |
Revert "Add an Option for orientation on JPEG encodes"
This reverts commit 5411a60e0d7370a5d47b5049de845a06fe52e98b.
Reason for revert: ASAN and Coverage failing: https://chromium-swarm.appspot.com/task?id=394978f3b7d44610
Flutter_Android failing.
Original change's description:
> Add an Option for orientation on JPEG encodes
>
> Move Origin to its own header so that SkPixmap and SkJpegEncoder need
> not depend on SkCodec.
>
> Add libexif, which is already used by Android, and use it to write the
> orientation. Write a makefile based on the Android.bp in Android, minus
> warnings. (libexif has an LGPL license.)
>
> Add a test that verifies all the orientations work.
>
> Optionally enable writing the orientation (and therefore including
> libexif). Chromium does not currently need it, and Android does not
> expose an API that would allow using it. Disable on Windows, where we
> still have build errors to fix.
>
> Bug: skia:7138
> Change-Id: Iaeff44c36aebe0e639666979dc00e1b7594bbeb1
> Reviewed-on: https://skia-review.googlesource.com/60721
> Commit-Queue: Leon Scroggins <scroggo@google.com>
> Reviewed-by: Mike Klein <mtklein@chromium.org>
> Reviewed-by: Mike Reed <reed@google.com>
TBR=mtklein@chromium.org,mtklein@google.com,scroggo@google.com,reed@google.com
Change-Id: I05b7ae8d1c5bbd1de1642d9ef024943500256273
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:7138
Reviewed-on: https://skia-review.googlesource.com/61620
Reviewed-by: Ben Wagner <benjaminwagner@google.com>
Commit-Queue: Ben Wagner <benjaminwagner@google.com>
Diffstat (limited to 'src/codec')
-rw-r--r-- | src/codec/SkCodec.cpp | 5 | ||||
-rw-r--r-- | src/codec/SkCodecImageGenerator.cpp | 24 | ||||
-rw-r--r-- | src/codec/SkJpegCodec.cpp | 16 | ||||
-rw-r--r-- | src/codec/SkJpegCodec.h | 2 |
4 files changed, 23 insertions, 24 deletions
diff --git a/src/codec/SkCodec.cpp b/src/codec/SkCodec.cpp index 59978c6fdf..c3d99f2793 100644 --- a/src/codec/SkCodec.cpp +++ b/src/codec/SkCodec.cpp @@ -128,7 +128,7 @@ std::unique_ptr<SkCodec> SkCodec::MakeFromData(sk_sp<SkData> data, SkPngChunkRea SkCodec::SkCodec(int width, int height, const SkEncodedInfo& info, XformFormat srcFormat, std::unique_ptr<SkStream> stream, - sk_sp<SkColorSpace> colorSpace, SkEncodedOrigin origin) + sk_sp<SkColorSpace> colorSpace, Origin origin) : fEncodedInfo(info) , fSrcInfo(info.makeImageInfo(width, height, std::move(colorSpace))) , fSrcXformFormat(srcFormat) @@ -142,8 +142,7 @@ SkCodec::SkCodec(int width, int height, const SkEncodedInfo& info, {} SkCodec::SkCodec(const SkEncodedInfo& info, const SkImageInfo& imageInfo, - XformFormat srcFormat, std::unique_ptr<SkStream> stream, - SkEncodedOrigin origin) + XformFormat srcFormat, std::unique_ptr<SkStream> stream, Origin origin) : fEncodedInfo(info) , fSrcInfo(imageInfo) , fSrcXformFormat(srcFormat) diff --git a/src/codec/SkCodecImageGenerator.cpp b/src/codec/SkCodecImageGenerator.cpp index 741c8e393d..e8d7d3038a 100644 --- a/src/codec/SkCodecImageGenerator.cpp +++ b/src/codec/SkCodecImageGenerator.cpp @@ -15,23 +15,23 @@ #define kSwapXY SkPixmapPriv::kSwapXY const uint8_t gOrientationFlags[] = { - 0, // kTopLeft_SkEncodedOrigin - kMirrorX, // kTopRight_SkEncodedOrigin - kMirrorX | kMirrorY, // kBottomRight_SkEncodedOrigin - kMirrorY, // kBottomLeft_SkEncodedOrigin - kSwapXY, // kLeftTop_SkEncodedOrigin - kMirrorX | kSwapXY, // kRightTop_SkEncodedOrigin - kMirrorX | kMirrorY | kSwapXY, // kRightBottom_SkEncodedOrigin - kMirrorY | kSwapXY, // kLeftBottom_SkEncodedOrigin + 0, // kTopLeft_Origin + kMirrorX, // kTopRight_Origin + kMirrorX | kMirrorY, // kBottomRight_Origin + kMirrorY, // kBottomLeft_Origin + kSwapXY, // kLeftTop_Origin + kMirrorX | kSwapXY, // kRightTop_Origin + kMirrorX | kMirrorY | kSwapXY, // kRightBottom_Origin + kMirrorY | kSwapXY, // kLeftBottom_Origin }; -SkPixmapPriv::OrientFlags SkPixmapPriv::OriginToOrient(SkEncodedOrigin o) { +SkPixmapPriv::OrientFlags SkPixmapPriv::OriginToOrient(SkCodec::Origin o) { unsigned io = static_cast<int>(o) - 1; SkASSERT(io < SK_ARRAY_COUNT(gOrientationFlags)); return static_cast<SkPixmapPriv::OrientFlags>(gOrientationFlags[io]); } -static bool should_swap_width_height(SkEncodedOrigin o) { +static bool should_swap_width_height(SkCodec::Origin o) { return SkToBool(SkPixmapPriv::OriginToOrient(o) & kSwapXY); } @@ -73,12 +73,12 @@ SkData* SkCodecImageGenerator::onRefEncodedData() { bool SkCodecImageGenerator::onGetPixels(const SkImageInfo& requestInfo, void* requestPixels, size_t requestRowBytes, const Options& opts) { - const auto origin = fCodec->getOrigin(); + const SkCodec::Origin origin = fCodec->getOrigin(); const SkPixmap request(requestInfo, requestPixels, requestRowBytes); const SkPixmap* codecMap = &request; SkAutoPixmapStorage storage; // used if we have to post-orient the output from the codec - if (origin != kTopLeft_SkEncodedOrigin) { + if (origin != SkCodec::kTopLeft_Origin) { SkImageInfo info = requestInfo; if (should_swap_width_height(origin)) { info = swap_width_height(info); diff --git a/src/codec/SkJpegCodec.cpp b/src/codec/SkJpegCodec.cpp index 062f05bd01..be5c9f7942 100644 --- a/src/codec/SkJpegCodec.cpp +++ b/src/codec/SkJpegCodec.cpp @@ -45,7 +45,7 @@ static uint32_t get_endian_int(const uint8_t* data, bool littleEndian) { const uint32_t kExifHeaderSize = 14; const uint32_t kExifMarker = JPEG_APP0 + 1; -static bool is_orientation_marker(jpeg_marker_struct* marker, SkEncodedOrigin* orientation) { +static bool is_orientation_marker(jpeg_marker_struct* marker, SkCodec::Origin* orientation) { if (kExifMarker != marker->marker || marker->data_length < kExifHeaderSize) { return false; } @@ -87,8 +87,8 @@ static bool is_orientation_marker(jpeg_marker_struct* marker, SkEncodedOrigin* o uint32_t count = get_endian_int(data + 4, littleEndian); if (kOriginTag == tag && kOriginType == type && 1 == count) { uint16_t val = get_endian_short(data + 8, littleEndian); - if (0 < val && val <= kLast_SkEncodedOrigin) { - *orientation = (SkEncodedOrigin) val; + if (0 < val && val <= SkCodec::kLast_Origin) { + *orientation = (SkCodec::Origin) val; return true; } } @@ -97,15 +97,15 @@ static bool is_orientation_marker(jpeg_marker_struct* marker, SkEncodedOrigin* o return false; } -static SkEncodedOrigin get_exif_orientation(jpeg_decompress_struct* dinfo) { - SkEncodedOrigin orientation; +static SkCodec::Origin get_exif_orientation(jpeg_decompress_struct* dinfo) { + SkCodec::Origin orientation; for (jpeg_marker_struct* marker = dinfo->marker_list; marker; marker = marker->next) { if (is_orientation_marker(marker, &orientation)) { return orientation; } } - return kDefault_SkEncodedOrigin; + return SkCodec::kDefault_Origin; } static bool is_icc_marker(jpeg_marker_struct* marker) { @@ -227,7 +227,7 @@ SkCodec::Result SkJpegCodec::ReadHeader(SkStream* stream, SkCodec** codecOut, // Create image info object and the codec SkEncodedInfo info = SkEncodedInfo::Make(color, SkEncodedInfo::kOpaque_Alpha, 8); - SkEncodedOrigin orientation = get_exif_orientation(decoderMgr->dinfo()); + Origin orientation = get_exif_orientation(decoderMgr->dinfo()); sk_sp<SkData> iccData = get_icc_profile(decoderMgr->dinfo()); sk_sp<SkColorSpace> colorSpace = nullptr; if (iccData) { @@ -284,7 +284,7 @@ std::unique_ptr<SkCodec> SkJpegCodec::MakeFromStream(std::unique_ptr<SkStream> s SkJpegCodec::SkJpegCodec(int width, int height, const SkEncodedInfo& info, std::unique_ptr<SkStream> stream, JpegDecoderMgr* decoderMgr, - sk_sp<SkColorSpace> colorSpace, SkEncodedOrigin origin) + sk_sp<SkColorSpace> colorSpace, Origin origin) : INHERITED(width, height, info, SkColorSpaceXform::kRGBA_8888_ColorFormat, std::move(stream), std::move(colorSpace), origin) , fDecoderMgr(decoderMgr) diff --git a/src/codec/SkJpegCodec.h b/src/codec/SkJpegCodec.h index 41814d2ead..fd8ee63d6c 100644 --- a/src/codec/SkJpegCodec.h +++ b/src/codec/SkJpegCodec.h @@ -107,7 +107,7 @@ private: * takes ownership */ SkJpegCodec(int width, int height, const SkEncodedInfo& info, std::unique_ptr<SkStream> stream, - JpegDecoderMgr* decoderMgr, sk_sp<SkColorSpace> colorSpace, SkEncodedOrigin origin); + JpegDecoderMgr* decoderMgr, sk_sp<SkColorSpace> colorSpace, Origin origin); /* * Checks if the conversion between the input image and the requested output |