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

Unified Diff: src/codec/SkWebpCodec.cpp

Issue 1918873002: Remove SkEncodedInfo kUnknown_Color and kUnknown_Alpha from public API (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 4 years, 8 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 side-by-side diff with in-line comments
Download patch
« src/codec/SkWebpCodec.h ('K') | « src/codec/SkWebpCodec.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/codec/SkWebpCodec.cpp
diff --git a/src/codec/SkWebpCodec.cpp b/src/codec/SkWebpCodec.cpp
index e40c3f237792fa38454f72c1fb2d5f2e150ae672..883930b5c6cc6ee4b41ebd621e94b8182f13a712 100644
--- a/src/codec/SkWebpCodec.cpp
+++ b/src/codec/SkWebpCodec.cpp
@@ -31,7 +31,7 @@ bool SkWebpCodec::IsWebp(const void* buf, size_t bytesRead) {
// Parse headers of RIFF container, and check for valid Webp (VP8) content.
// NOTE: This calls peek instead of read, since onGetPixels will need these
// bytes again.
-static bool webp_parse_header(SkStream* stream, int* width, int* height, SkEncodedInfo* info) {
+bool SkWebpCodec::ReadHeader(SkStream* stream, SkCodec** outCodec) {
unsigned char buffer[WEBP_VP8_HEADER_SIZE];
SkASSERT(WEBP_VP8_HEADER_SIZE <= SkCodec::MinBufferedBytesNeeded());
@@ -61,7 +61,7 @@ static bool webp_parse_header(SkStream* stream, int* width, int* height, SkEncod
}
}
- if (info) {
+ if (outCodec) {
SkEncodedInfo::Color color;
SkEncodedInfo::Alpha alpha;
switch (features.format) {
@@ -98,19 +98,20 @@ static bool webp_parse_header(SkStream* stream, int* width, int* height, SkEncod
return false;
}
- *width = features.width;
- *height = features.height;
- *info = SkEncodedInfo::Make(color, alpha, 8);
+ SkEncodedInfo info = SkEncodedInfo::Make(color, alpha, 8);
+ *outCodec = new SkWebpCodec(features.width, features.height, info, stream);
}
return true;
}
SkCodec* SkWebpCodec::NewFromStream(SkStream* stream) {
SkAutoTDelete<SkStream> streamDeleter(stream);
- int width, height;
- SkEncodedInfo info;
- if (webp_parse_header(stream, &width, &height, &info)) {
- return new SkWebpCodec(width, height, info, streamDeleter.release());
+ SkCodec* outCodec;
+ if (SkWebpCodec::ReadHeader(stream, &outCodec)) {
scroggo 2016/04/25 15:10:43 Since ReadHeader is used only in this method, I do
msarett 2016/04/25 15:18:21 Of course, that's much better :).
+ // Codec has taken ownership of the stream.
+ SkASSERT(outCodec);
+ streamDeleter.release();
+ return outCodec;
}
return nullptr;
}
« src/codec/SkWebpCodec.h ('K') | « src/codec/SkWebpCodec.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698