From f682d9ad70d690a343bc15e26ef321d86770be41 Mon Sep 17 00:00:00 2001 From: msarett Date: Mon, 18 Apr 2016 16:20:00 -0700 Subject: Add SkEncodedInfo to report properties of encoded image data All this does is build an SkEncodedInfo for each codec, and then convert it to an SkImageInfo. In future steps I intend to: (1) Use SkEncodedInfo in place of SrcConfig in SkSwizzler. (2) Support more conversions in SkSwizzler (non-native BGRA/RGBA, 16-bit components, float, fixed point) (3) Investigate optimizing conversions from encoded data to linear color spaces. BUG=skia:4133 GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1820073002 Review URL: https://codereview.chromium.org/1820073002 --- src/codec/SkRawCodec.cpp | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) (limited to 'src/codec/SkRawCodec.cpp') diff --git a/src/codec/SkRawCodec.cpp b/src/codec/SkRawCodec.cpp index ef8ba700a4..51de2fcec0 100644 --- a/src/codec/SkRawCodec.cpp +++ b/src/codec/SkRawCodec.cpp @@ -515,8 +515,16 @@ public: } } - const SkImageInfo& getImageInfo() const { - return fImageInfo; + const SkEncodedInfo& getEncodedInfo() const { + return fEncodedInfo; + } + + int width() const { + return fWidth; + } + + int height() const { + return fHeight; } bool isScalable() const { @@ -545,8 +553,11 @@ private: return 0x2A == get_endian_short(header + 2, littleEndian); } - void init(const int width, const int height, const dng_point& cfaPatternSize) { - fImageInfo = SkImageInfo::Make(width, height, kN32_SkColorType, kOpaque_SkAlphaType); + void init(int width, int height, const dng_point& cfaPatternSize) { + fWidth = width; + fHeight = height; + fEncodedInfo = SkEncodedInfo::Make(SkEncodedInfo::kRGB_Color, + SkEncodedInfo::kOpaque_Alpha, 8); // The DNG SDK scales only during demosaicing, so scaling is only possible when // a mosaic info is available. @@ -616,7 +627,9 @@ private: SkAutoTDelete fNegative; SkAutoTDelete fDngStream; - SkImageInfo fImageInfo; + int fWidth; + int fHeight; + SkEncodedInfo fEncodedInfo; bool fIsScalable; bool fIsXtransImage; }; @@ -764,5 +777,5 @@ bool SkRawCodec::onDimensionsSupported(const SkISize& dim) { SkRawCodec::~SkRawCodec() {} SkRawCodec::SkRawCodec(SkDngImage* dngImage) - : INHERITED(dngImage->getImageInfo(), nullptr) + : INHERITED(dngImage->width(), dngImage->height(), dngImage->getEncodedInfo(), nullptr) , fDngImage(dngImage) {} -- cgit v1.2.3