Chromium Code Reviews| Index: third_party/WebKit/Source/platform/image-decoders/ImageDecoder.h |
| diff --git a/third_party/WebKit/Source/platform/image-decoders/ImageDecoder.h b/third_party/WebKit/Source/platform/image-decoders/ImageDecoder.h |
| index 05388ef8f7154c63814a8deec632e04155820730..dfee0fe16c9172da9366fd348b80d7ab150b6702 100644 |
| --- a/third_party/WebKit/Source/platform/image-decoders/ImageDecoder.h |
| +++ b/third_party/WebKit/Source/platform/image-decoders/ImageDecoder.h |
| @@ -168,7 +168,7 @@ public: |
| // Decodes as much of the requested frame as possible, and returns an |
| // ImageDecoder-owned pointer. |
| - ImageFrame* frameBufferAtIndex(size_t); |
| + ImageFrame* frameBufferAtIndex(size_t, ImageFrame::ColorType = ImageFrame::N32); |
|
scroggo_chromium
2015/12/03 21:47:21
It seems odd to me that the client asks for a part
aleksandar.stojiljkovic
2015/12/04 00:07:34
1st Reason is in discussion we had here: https://c
|
| // Whether the requested frame has alpha. |
| virtual bool frameHasAlphaAtIndex(size_t) const; |
| @@ -292,6 +292,10 @@ public: |
| virtual bool canDecodeToYUV() { return false; } |
| virtual bool decodeToYUV() { return false; } |
| virtual void setImagePlanes(PassOwnPtr<ImagePlanes>) { } |
| + virtual bool canDecodeTo(size_t index, ImageFrame::ColorType outputType) |
| + { |
| + return outputType == ImageFrame::N32; |
| + } |
| protected: |
| // Calculates the most recent frame whose image data may be needed in |
| @@ -328,6 +332,15 @@ protected: |
| // Decodes the requested frame. |
| virtual void decode(size_t) = 0; |
| + // Decodes the requested frame to specified color type output. |
| + virtual void decodeTo(size_t index, ImageFrame::ColorType outputColor) |
|
scroggo_chromium
2015/12/03 21:47:21
If we need to pass outputColor, why not merge this
aleksandar.stojiljkovic
2015/12/04 00:07:34
Didn't want to change code in other decoders, that
|
| + { |
| + if (!canDecodeTo(index, outputColor)) |
|
scroggo_chromium
2015/12/03 21:47:21
So the subclass can override decodeTo and not call
aleksandar.stojiljkovic
2015/12/04 00:07:34
This would keep the existing decoders unchanged, j
|
| + return; |
|
scroggo_chromium
2015/12/03 21:47:21
So this will silently fail?
aleksandar.stojiljkovic
2015/12/04 00:07:34
If there is no frame in cache, ImageFrameGenerator
|
| + // this is the default implementation that is just wrapping decode(). |
| + // subclasses need to override this and canDecodeTo for supported colorTypes. |
| + decode(index); |
| + } |
| RefPtr<SharedBuffer> m_data; // The encoded data. |
| Vector<ImageFrame, 1> m_frameBufferCache; |