Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(625)

Side by Side Diff: src/images/SkImageDecoder_ktx.cpp

Issue 362413005: Check pixelRef before attempting to ktx encode. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2014 Google Inc. 2 * Copyright 2014 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #include "SkColorPriv.h" 8 #include "SkColorPriv.h"
9 #include "SkImageDecoder.h" 9 #include "SkImageDecoder.h"
10 #include "SkPixelRef.h" 10 #include "SkPixelRef.h"
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
202 class SkKTXImageEncoder : public SkImageEncoder { 202 class SkKTXImageEncoder : public SkImageEncoder {
203 protected: 203 protected:
204 virtual bool onEncode(SkWStream* stream, const SkBitmap& bm, int quality) SK _OVERRIDE; 204 virtual bool onEncode(SkWStream* stream, const SkBitmap& bm, int quality) SK _OVERRIDE;
205 205
206 private: 206 private:
207 virtual bool encodePKM(SkWStream* stream, const SkData *data); 207 virtual bool encodePKM(SkWStream* stream, const SkData *data);
208 typedef SkImageEncoder INHERITED; 208 typedef SkImageEncoder INHERITED;
209 }; 209 };
210 210
211 bool SkKTXImageEncoder::onEncode(SkWStream* stream, const SkBitmap& bitmap, int) { 211 bool SkKTXImageEncoder::onEncode(SkWStream* stream, const SkBitmap& bitmap, int) {
212 if (!bitmap.pixelRef()) {
213 return false;
214 }
212 SkAutoDataUnref data(bitmap.pixelRef()->refEncodedData()); 215 SkAutoDataUnref data(bitmap.pixelRef()->refEncodedData());
213 216
214 // Is this even encoded data? 217 // Is this even encoded data?
215 if (NULL != data) { 218 if (NULL != data) {
216 const uint8_t *bytes = data->bytes(); 219 const uint8_t *bytes = data->bytes();
217 if (etc1_pkm_is_valid(bytes)) { 220 if (etc1_pkm_is_valid(bytes)) {
218 return this->encodePKM(stream, data); 221 return this->encodePKM(stream, data);
219 } 222 }
220 223
221 // Is it a KTX file?? 224 // Is it a KTX file??
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
268 return SkImageDecoder::kUnknown_Format; 271 return SkImageDecoder::kUnknown_Format;
269 } 272 }
270 273
271 SkImageEncoder* sk_libktx_efactory(SkImageEncoder::Type t) { 274 SkImageEncoder* sk_libktx_efactory(SkImageEncoder::Type t) {
272 return (SkImageEncoder::kKTX_Type == t) ? SkNEW(SkKTXImageEncoder) : NULL; 275 return (SkImageEncoder::kKTX_Type == t) ? SkNEW(SkKTXImageEncoder) : NULL;
273 } 276 }
274 277
275 static SkImageDecoder_DecodeReg gReg(sk_libktx_dfactory); 278 static SkImageDecoder_DecodeReg gReg(sk_libktx_dfactory);
276 static SkImageDecoder_FormatReg gFormatReg(get_format_ktx); 279 static SkImageDecoder_FormatReg gFormatReg(get_format_ktx);
277 static SkImageEncoder_EncodeReg gEReg(sk_libktx_efactory); 280 static SkImageEncoder_EncodeReg gEReg(sk_libktx_efactory);
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698