|  | /* | 
|  | * Copyright 2017 Google Inc. | 
|  | * | 
|  | * Use of this source code is governed by a BSD-style license that can be | 
|  | * found in the LICENSE file. | 
|  | */ | 
|  |  | 
|  | #ifndef SkStubHeifDecoderAPI_DEFINED | 
|  | #define SkStubHeifDecoderAPI_DEFINED | 
|  |  | 
|  | // This stub implementation of HeifDecoderAPI.h lets us compile SkHeifCodec.cpp | 
|  | // even when libheif is not available.  It, of course, does nothing and fails to decode. | 
|  |  | 
|  | #include <memory> | 
|  | #include <stddef.h> | 
|  | #include <stdint.h> | 
|  |  | 
|  | enum HeifColorFormat { | 
|  | kHeifColorFormat_RGB565, | 
|  | kHeifColorFormat_RGBA_8888, | 
|  | kHeifColorFormat_BGRA_8888, | 
|  | kHeifColorFormat_RGBA_1010102, | 
|  | }; | 
|  |  | 
|  | struct HeifStream { | 
|  | virtual ~HeifStream() {} | 
|  |  | 
|  | virtual size_t read(void*, size_t) = 0; | 
|  | virtual bool   rewind()            = 0; | 
|  | virtual bool   seek(size_t)        = 0; | 
|  | virtual bool   hasLength() const   = 0; | 
|  | virtual size_t getLength() const   = 0; | 
|  | }; | 
|  |  | 
|  | struct HeifFrameInfo { | 
|  | uint32_t mWidth; | 
|  | uint32_t mHeight; | 
|  | int32_t  mRotationAngle;           // Rotation angle, clockwise, should be multiple of 90 | 
|  | uint32_t mBytesPerPixel;           // Number of bytes for one pixel | 
|  | int64_t mDurationUs;               // Duration of the frame in us | 
|  | std::vector<uint8_t> mIccData;     // ICC data array | 
|  | }; | 
|  |  | 
|  | struct HeifDecoder { | 
|  | bool init(HeifStream* stream, HeifFrameInfo*) { | 
|  | delete stream; | 
|  | return false; | 
|  | } | 
|  |  | 
|  | bool getSequenceInfo(HeifFrameInfo* frameInfo, size_t *frameCount) { | 
|  | return false; | 
|  | } | 
|  |  | 
|  | bool decode(HeifFrameInfo*) { | 
|  | return false; | 
|  | } | 
|  |  | 
|  | bool decodeSequence(int frameIndex, HeifFrameInfo* frameInfo) { | 
|  | return false; | 
|  | } | 
|  |  | 
|  | bool setOutputColor(HeifColorFormat) { | 
|  | return false; | 
|  | } | 
|  |  | 
|  | bool getScanline(uint8_t*) { | 
|  | return false; | 
|  | } | 
|  |  | 
|  | int skipScanlines(int) { | 
|  | return 0; | 
|  | } | 
|  |  | 
|  | uint32_t getColorDepth() { | 
|  | return 0; | 
|  | } | 
|  | }; | 
|  |  | 
|  | static inline HeifDecoder* createHeifDecoder() { return new HeifDecoder; } | 
|  |  | 
|  | #endif//SkStubHeifDecoderAPI_DEFINED |