aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/codec/SkJpegCodec.cpp
diff options
context:
space:
mode:
authorGravatar msarett <msarett@google.com>2016-06-01 09:16:04 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2016-06-01 09:16:04 -0700
commit4a603fc591dcd36b3cb47344c244ecbbbaf179f4 (patch)
tree3d580f4b47ff8ac6b9843803d1ac60538d09bc4f /src/codec/SkJpegCodec.cpp
parentc4b091543b4082fd1a2f356ef3b478073c5f9418 (diff)
Revert of Create SkColorSpaceXform to handle color conversions (patchset #10 id:260001 of https://codereview.chromium.org/1952063002/ )
Reason for revert: Google3 can't find qcms Original issue's description: > Create SkColorSpaceXform to handle color conversions > > Also adds testing of qcms color correction, so we can compare > SkColorSpaceXform outputs to qcms outputs. > > BUG=skia: > GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1952063002 > > Committed: https://skia.googlesource.com/skia/+/740cc88ee3d63c75e52d31238f2a32600cc57a8c TBR=reed@google.com,scroggo@google.com,mtklein@google.com,herb@google.com,brianosman@google.com # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia: Review-Url: https://codereview.chromium.org/2023093004
Diffstat (limited to 'src/codec/SkJpegCodec.cpp')
-rw-r--r--src/codec/SkJpegCodec.cpp23
1 files changed, 7 insertions, 16 deletions
diff --git a/src/codec/SkJpegCodec.cpp b/src/codec/SkJpegCodec.cpp
index 0413f79a3c..85de356118 100644
--- a/src/codec/SkJpegCodec.cpp
+++ b/src/codec/SkJpegCodec.cpp
@@ -120,7 +120,7 @@ static bool is_icc_marker(jpeg_marker_struct* marker) {
* (1) Discover all ICC profile markers and verify that they are numbered properly.
* (2) Copy the data from each marker into a contiguous ICC profile.
*/
-static sk_sp<SkData> get_icc_profile(jpeg_decompress_struct* dinfo) {
+static sk_sp<SkColorSpace> get_icc_profile(jpeg_decompress_struct* dinfo) {
// Note that 256 will be enough storage space since each markerIndex is stored in 8-bits.
jpeg_marker_struct* markerSequence[256];
memset(markerSequence, 0, sizeof(markerSequence));
@@ -165,8 +165,8 @@ static sk_sp<SkData> get_icc_profile(jpeg_decompress_struct* dinfo) {
}
// Combine the ICC marker data into a contiguous profile.
- sk_sp<SkData> iccData = SkData::MakeUninitialized(totalBytes);
- void* dst = iccData->writable_data();
+ SkAutoMalloc iccData(totalBytes);
+ void* dst = iccData.get();
for (uint32_t i = 1; i <= numMarkers; i++) {
jpeg_marker_struct* marker = markerSequence[i];
if (!marker) {
@@ -180,7 +180,7 @@ static sk_sp<SkData> get_icc_profile(jpeg_decompress_struct* dinfo) {
dst = SkTAddOffset<void>(dst, bytes);
}
- return iccData;
+ return SkColorSpace::NewICC(iccData.get(), totalBytes);
}
bool SkJpegCodec::ReadHeader(SkStream* stream, SkCodec** codecOut,
@@ -221,14 +221,7 @@ bool SkJpegCodec::ReadHeader(SkStream* stream, SkCodec** codecOut,
SkEncodedInfo info = SkEncodedInfo::Make(color, SkEncodedInfo::kOpaque_Alpha, 8);
Origin orientation = get_exif_orientation(decoderMgr->dinfo());
- sk_sp<SkData> iccData = get_icc_profile(decoderMgr->dinfo());
- sk_sp<SkColorSpace> colorSpace = nullptr;
- if (iccData) {
- colorSpace = SkColorSpace::NewICC(iccData->data(), iccData->size());
- if (!colorSpace) {
- SkCodecPrintf("Could not create SkColorSpace from ICC data.\n");
- }
- }
+ sk_sp<SkColorSpace> colorSpace = get_icc_profile(decoderMgr->dinfo());
if (!colorSpace) {
// Treat unmarked jpegs as sRGB.
colorSpace = SkColorSpace::NewNamed(SkColorSpace::kSRGB_Named);
@@ -237,7 +230,7 @@ bool SkJpegCodec::ReadHeader(SkStream* stream, SkCodec** codecOut,
const int width = decoderMgr->dinfo()->image_width;
const int height = decoderMgr->dinfo()->image_height;
*codecOut = new SkJpegCodec(width, height, info, stream, decoderMgr.release(),
- std::move(colorSpace), orientation, std::move(iccData));
+ std::move(colorSpace), orientation);
} else {
SkASSERT(nullptr != decoderMgrOut);
*decoderMgrOut = decoderMgr.release();
@@ -258,13 +251,11 @@ SkCodec* SkJpegCodec::NewFromStream(SkStream* stream) {
}
SkJpegCodec::SkJpegCodec(int width, int height, const SkEncodedInfo& info, SkStream* stream,
- JpegDecoderMgr* decoderMgr, sk_sp<SkColorSpace> colorSpace, Origin origin,
- sk_sp<SkData> iccData)
+ JpegDecoderMgr* decoderMgr, sk_sp<SkColorSpace> colorSpace, Origin origin)
: INHERITED(width, height, info, stream, std::move(colorSpace), origin)
, fDecoderMgr(decoderMgr)
, fReadyState(decoderMgr->dinfo()->global_state)
, fSwizzlerSubset(SkIRect::MakeEmpty())
- , fICCData(std::move(iccData))
{}
/*