diff options
author | reed <reed@google.com> | 2015-09-28 09:58:41 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-09-28 09:58:41 -0700 |
commit | c9e190ddac3d193e89e580ea3819a55c28f15e61 (patch) | |
tree | 0ed534fa007d732ad9d90f33f604e0e845ee2ce4 /src/images | |
parent | 25a5b0dd0c9e94d508b8a9f4de1f977e63775bd1 (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.cpp | 36 | ||||
-rw-r--r-- | src/images/SkImageEncoder.cpp | 10 |
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; -} - |