/* * 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 #include #include enum HeifColorFormat { kHeifColorFormat_RGB565, kHeifColorFormat_RGBA_8888, kHeifColorFormat_BGRA_8888, }; 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 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; } }; static inline HeifDecoder* createHeifDecoder() { return new HeifDecoder; } #endif//SkStubHeifDecoderAPI_DEFINED