skia: add heif decoding support
Bug: b/64077740
Change-Id: I11e0243bcc4c21c0aa5aa29a719dd0fcba7ae6f7
Reviewed-on: https://skia-review.googlesource.com/35123
Reviewed-by: Chong Zhang <chz@google.com>
Reviewed-by: Leon Scroggins <scroggo@google.com>
Commit-Queue: Chong Zhang <chz@google.com>
Commit-Queue: Leon Scroggins <scroggo@google.com>
diff --git a/src/codec/SkCodec.cpp b/src/codec/SkCodec.cpp
index 2b61082..7dc1085 100644
--- a/src/codec/SkCodec.cpp
+++ b/src/codec/SkCodec.cpp
@@ -23,6 +23,7 @@
#include "SkStream.h"
#include "SkWbmpCodec.h"
#include "SkWebpCodec.h"
+#include "SkHeifCodec.h"
struct DecoderProc {
bool (*IsFormat)(const void*, size_t);
@@ -41,13 +42,12 @@
{ SkIcoCodec::IsIco, SkIcoCodec::MakeFromStream },
#endif
{ SkBmpCodec::IsBmp, SkBmpCodec::MakeFromStream },
- { SkWbmpCodec::IsWbmp, SkWbmpCodec::MakeFromStream }
+ { SkWbmpCodec::IsWbmp, SkWbmpCodec::MakeFromStream },
+#ifdef SK_HAS_HEIF_LIBRARY
+ { SkHeifCodec::IsHeif, SkHeifCodec::MakeFromStream },
+#endif
};
-size_t SkCodec::MinBufferedBytesNeeded() {
- return WEBP_VP8_HEADER_SIZE;
-}
-
std::unique_ptr<SkCodec> SkCodec::MakeFromStream(std::unique_ptr<SkStream> stream,
Result* outResult, SkPngChunkReader* chunkReader) {
Result resultStorage;
@@ -60,9 +60,7 @@
return nullptr;
}
- // 14 is enough to read all of the supported types.
- const size_t bytesToRead = 14;
- SkASSERT(bytesToRead <= MinBufferedBytesNeeded());
+ constexpr size_t bytesToRead = MinBufferedBytesNeeded();
char buffer[bytesToRead];
size_t bytesRead = stream->peek(buffer, bytesToRead);