aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/images
diff options
context:
space:
mode:
authorGravatar reed <reed@google.com>2015-09-28 09:58:41 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2015-09-28 09:58:41 -0700
commitc9e190ddac3d193e89e580ea3819a55c28f15e61 (patch)
tree0ed534fa007d732ad9d90f33f604e0e845ee2ce4 /src/images
parent25a5b0dd0c9e94d508b8a9f4de1f977e63775bd1 (diff)
Revert of change pixel-serializer to support reencoding existing data (patchset #5 id:80001 of https://codereview.chromium.org/1373683003/ )
Reason for revert: Need to somehow get access to encoders in chrome -- link error on the roll since SkImageEncoder is not built as part of chrome. Original issue's description: > change pixel-serializer to support reencoding existing data > > Trying to evolve this interface so it can > - support rich set of backend-encoders (including ones like ETC1 that can cheaply convert to KXT > - allow for encoding images as well as bitmaps (e.g. for picture serialization) > - perhaps replace SkImageEncoder as an API (assuming we create a factory that returns a serializer given a format) > > BUG=skia: > > Committed: https://skia.googlesource.com/skia/+/13f48dc85aa68a60da66aaf39c93d527d11d1278 TBR=scroggo@google.com,msarett@google.com NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia: Review URL: https://codereview.chromium.org/1371983003
Diffstat (limited to 'src/images')
-rw-r--r--src/images/SkImageDecoder_ktx.cpp36
-rw-r--r--src/images/SkImageEncoder.cpp10
2 files changed, 15 insertions, 31 deletions
diff --git a/src/images/SkImageDecoder_ktx.cpp b/src/images/SkImageDecoder_ktx.cpp
index f903b3fd56..a95ab6f602 100644
--- a/src/images/SkImageDecoder_ktx.cpp
+++ b/src/images/SkImageDecoder_ktx.cpp
@@ -252,40 +252,34 @@ SkImageDecoder::Result SkKTXImageDecoder::onDecode(SkStream* stream, SkBitmap* b
class SkKTXImageEncoder : public SkImageEncoder {
protected:
bool onEncode(SkWStream* stream, const SkBitmap& bm, int quality) override;
- SkData* onReencodeData(SkData*) override;
private:
virtual bool encodePKM(SkWStream* stream, const SkData *data);
typedef SkImageEncoder INHERITED;
};
-SkData* SkKTXImageEncoder::onReencodeData(SkData* encoded) {
- const uint8_t* bytes = encoded->bytes();
- if (etc1_pkm_is_valid(bytes)) {
- SkDynamicMemoryWStream stream;
- if (this->encodePKM(&stream, encoded)) {
- return stream.copyToData();
- }
- }
- // Is it a KTX file??
- if (SkKTXFile::is_ktx(bytes)) {
- return SkRef(encoded);
- }
- return nullptr;
-}
-
bool SkKTXImageEncoder::onEncode(SkWStream* stream, const SkBitmap& bitmap, int) {
if (!bitmap.pixelRef()) {
return false;
}
+ SkAutoDataUnref data(bitmap.pixelRef()->refEncodedData());
+
+ // Is this even encoded data?
+ if (data) {
+ const uint8_t *bytes = data->bytes();
+ if (etc1_pkm_is_valid(bytes)) {
+ return this->encodePKM(stream, data);
+ }
- SkAutoDataUnref encoded(bitmap.pixelRef()->refEncodedData());
- if (encoded) {
- SkAutoDataUnref reencoded(this->onReencodeData(encoded));
- if (reencoded) {
- return stream->write(reencoded->bytes(), reencoded->size());
+ // Is it a KTX file??
+ if (SkKTXFile::is_ktx(bytes)) {
+ return stream->write(bytes, data->size());
}
+
+ // If it's neither a KTX nor a PKM, then we need to
+ // get at the actual pixels, so fall through and decompress...
}
+
return SkKTXFile::WriteBitmapToKTX(stream, bitmap);
}
diff --git a/src/images/SkImageEncoder.cpp b/src/images/SkImageEncoder.cpp
index 4ad12c84cd..cc1b73baa5 100644
--- a/src/images/SkImageEncoder.cpp
+++ b/src/images/SkImageEncoder.cpp
@@ -60,13 +60,3 @@ SkData* SkImageEncoder::EncodeData(const SkImageInfo& info, const void* pixels,
SkAutoTDelete<SkImageEncoder> enc(SkImageEncoder::Create(t));
return enc.get() ? enc.get()->encodeData(bm, quality) : nullptr;
}
-
-SkData* SkImageEncoder::EncodeData(const SkPixmap& pmap, Type t, int quality) {
- return EncodeData(pmap.info(), pmap.addr(), pmap.rowBytes(), t, quality);
-}
-
-SkData* SkImageEncoder::ReencodeData(SkData* encoded, Type t) {
- SkAutoTDelete<SkImageEncoder> enc(SkImageEncoder::Create(t));
- return enc.get() ? enc.get()->onReencodeData(encoded) : nullptr;
-}
-