blob: 3fcdc94a9c19e2ae66e26f1aeaae6d184a59e109 [file] [log] [blame]
/*
* 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