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

Side by Side Diff: third_party/WebKit/Source/platform/image-decoders/webp/WEBPImageDecoder.h

Issue 1812273003: Eliminate copies of encoded image data (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2010 Google Inc. All rights reserved. 2 * Copyright (C) 2010 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 12 matching lines...) Expand all
23 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 23 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */ 27 */
28 28
29 #ifndef WEBPImageDecoder_h 29 #ifndef WEBPImageDecoder_h
30 #define WEBPImageDecoder_h 30 #define WEBPImageDecoder_h
31 31
32 #include "platform/image-decoders/ImageDecoder.h" 32 #include "platform/image-decoders/ImageDecoder.h"
33 #include "skia/ext/refptr.h"
f(malita) 2016/03/23 16:41:58 wtf/RefPtr.h
scroggo_chromium 2016/03/24 13:59:46 Done.
34 #include "third_party/skia/include/core/SkData.h"
33 #include "webp/decode.h" 35 #include "webp/decode.h"
34 #include "webp/demux.h" 36 #include "webp/demux.h"
35 37
36 namespace blink { 38 namespace blink {
37 39
38 class PLATFORM_EXPORT WEBPImageDecoder final : public ImageDecoder { 40 class PLATFORM_EXPORT WEBPImageDecoder final : public ImageDecoder {
39 WTF_MAKE_NONCOPYABLE(WEBPImageDecoder); 41 WTF_MAKE_NONCOPYABLE(WEBPImageDecoder);
40 public: 42 public:
41 WEBPImageDecoder(AlphaOption, GammaAndColorProfileOption, size_t maxDecodedB ytes); 43 WEBPImageDecoder(AlphaOption, GammaAndColorProfileOption, size_t maxDecodedB ytes);
42 ~WEBPImageDecoder() override; 44 ~WEBPImageDecoder() override;
43 45
44 // ImageDecoder: 46 // ImageDecoder:
45 String filenameExtension() const override { return "webp"; } 47 String filenameExtension() const override { return "webp"; }
46 bool hasColorProfile() const override { return m_hasColorProfile; } 48 bool hasColorProfile() const override { return m_hasColorProfile; }
47 void onSetData(SharedBuffer* data) override; 49 void onSetData(SegmentReader* data) override;
48 int repetitionCount() const override; 50 int repetitionCount() const override;
49 bool frameIsCompleteAtIndex(size_t) const override; 51 bool frameIsCompleteAtIndex(size_t) const override;
50 float frameDurationAtIndex(size_t) const override; 52 float frameDurationAtIndex(size_t) const override;
51 size_t clearCacheExceptFrame(size_t) override; 53 size_t clearCacheExceptFrame(size_t) override;
52 54
53 private: 55 private:
54 // ImageDecoder: 56 // ImageDecoder:
55 virtual void decodeSize() { updateDemuxer(); } 57 virtual void decodeSize() { updateDemuxer(); }
56 size_t decodeFrameCount() override; 58 size_t decodeFrameCount() override;
57 void initializeNewFrame(size_t) override; 59 void initializeNewFrame(size_t) override;
(...skipping 25 matching lines...) Expand all
83 WebPDemuxState m_demuxState; 85 WebPDemuxState m_demuxState;
84 bool m_haveAlreadyParsedThisData; 86 bool m_haveAlreadyParsedThisData;
85 int m_repetitionCount; 87 int m_repetitionCount;
86 int m_decodedHeight; 88 int m_decodedHeight;
87 89
88 typedef void (*AlphaBlendFunction)(ImageFrame&, ImageFrame&, int, int, int); 90 typedef void (*AlphaBlendFunction)(ImageFrame&, ImageFrame&, int, int, int);
89 AlphaBlendFunction m_blendFunction; 91 AlphaBlendFunction m_blendFunction;
90 92
91 void clear(); 93 void clear();
92 void clearDecoder(); 94 void clearDecoder();
95
96 // FIXME: Update libwebp's API so it does not require copying the data on ea ch update.
97 skia::RefPtr<SkData> m_encodedData;
f(malita) 2016/03/23 16:41:58 RefPtr<SkData>
scroggo_chromium 2016/03/24 13:59:46 Done.
93 }; 98 };
94 99
95 } // namespace blink 100 } // namespace blink
96 101
97 #endif 102 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698