aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/codec/SkRawCodec.cpp
diff options
context:
space:
mode:
authorGravatar msarett <msarett@google.com>2016-04-18 16:20:00 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2016-04-18 16:20:00 -0700
commitf682d9ad70d690a343bc15e26ef321d86770be41 (patch)
treed060890436619e2f3a03789400ed8276f421e5ce /src/codec/SkRawCodec.cpp
parentbde57ed11b8a6bd6da6043189e000c58bf146422 (diff)
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
Diffstat (limited to 'src/codec/SkRawCodec.cpp')
-rw-r--r--src/codec/SkRawCodec.cpp25
1 files changed, 19 insertions, 6 deletions
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<dng_negative> fNegative;
SkAutoTDelete<dng_stream> 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) {}