Index: bench/DecodingBench.cpp |
diff --git a/bench/DecodingBench.cpp b/bench/DecodingBench.cpp |
deleted file mode 100644 |
index 2feb7dd3efa3c17cdaecd959f1be6ffce559525a..0000000000000000000000000000000000000000 |
--- a/bench/DecodingBench.cpp |
+++ /dev/null |
@@ -1,97 +0,0 @@ |
-/* |
- * Copyright 2015 Google Inc. |
- * |
- * Use of this source code is governed by a BSD-style license that can be |
- * found in the LICENSE file. |
- */ |
- |
-#include "CodecBenchPriv.h" |
-#include "DecodingBench.h" |
-#include "SkBitmap.h" |
-#include "SkData.h" |
-#include "SkImageDecoder.h" |
-#include "SkMallocPixelRef.h" |
-#include "SkOSFile.h" |
-#include "SkStream.h" |
- |
-/* |
- * |
- * This benchmark is designed to test the performance of image decoding. |
- * It is invoked from the nanobench.cpp file. |
- * |
- */ |
-DecodingBench::DecodingBench(SkString path, SkColorType colorType) |
- : fColorType(colorType) |
- , fData(SkData::NewFromFileName(path.c_str())) |
-{ |
- // Parse filename and the color type to give the benchmark a useful name |
- SkString baseName = SkOSPath::Basename(path.c_str()); |
- fName.printf("Decode_%s_%s", baseName.c_str(), color_type_to_str(colorType)); |
- |
-#ifdef SK_DEBUG |
- // Ensure that we can create a decoder. |
- SkAutoTDelete<SkStreamRewindable> stream(new SkMemoryStream(fData)); |
- SkAutoTDelete<SkImageDecoder> decoder(SkImageDecoder::Factory(stream)); |
- SkASSERT(decoder != nullptr); |
-#endif |
-} |
- |
-const char* DecodingBench::onGetName() { |
- return fName.c_str(); |
-} |
- |
-bool DecodingBench::isSuitableFor(Backend backend) { |
- return kNonRendering_Backend == backend; |
-} |
- |
-void DecodingBench::onDelayedSetup() { |
- // Allocate the pixels now, to remove it from the loop. |
- SkAutoTDelete<SkStreamRewindable> stream(new SkMemoryStream(fData)); |
- SkAutoTDelete<SkImageDecoder> decoder(SkImageDecoder::Factory(stream)); |
- SkBitmap bm; |
-#ifdef SK_DEBUG |
- SkImageDecoder::Result result = |
-#endif |
- decoder->decode(stream, &bm, fColorType, SkImageDecoder::kDecodeBounds_Mode); |
- SkASSERT(SkImageDecoder::kFailure != result); |
- |
- const size_t rowBytes = bm.info().minRowBytes(); |
- fPixelStorage.reset(bm.info().getSafeSize(rowBytes)); |
-} |
- |
-// Allocator which just uses an existing block of memory. |
-class TargetAllocator : public SkBitmap::Allocator { |
-public: |
- explicit TargetAllocator(void* storage) |
- : fPixelStorage(storage) {} |
- |
- bool allocPixelRef(SkBitmap* bm, SkColorTable* ct) override { |
- // We depend on the fact that this will only ever be used to |
- // decode to a bitmap with the same settings used to create |
- // fPixelStorage. |
- bm->setPixelRef(SkMallocPixelRef::NewDirect(bm->info(), |
- fPixelStorage, bm->rowBytes(), ct))->unref(); |
- return true; |
- } |
- |
-private: |
- void* fPixelStorage; // Unowned. DecodingBench owns this. |
-}; |
- |
-void DecodingBench::onDraw(int n, SkCanvas* canvas) { |
- SkBitmap bitmap; |
- // Declare the allocator before the decoder, so it will outlive the |
- // decoder, which will unref it. |
- TargetAllocator allocator(fPixelStorage.get()); |
- SkAutoTDelete<SkImageDecoder> decoder; |
- SkAutoTDelete<SkStreamRewindable> stream; |
- for (int i = 0; i < n; i++) { |
- // create a new stream and a new decoder to mimic the behavior of |
- // CodecBench. |
- stream.reset(new SkMemoryStream(fData)); |
- decoder.reset(SkImageDecoder::Factory(stream)); |
- decoder->setAllocator(&allocator); |
- decoder->decode(stream, &bitmap, fColorType, |
- SkImageDecoder::kDecodePixels_Mode); |
- } |
-} |