add SkStubHeifDecoderAPI.h
This should let us build SkHeifCodec even without libheif. I didn't look at libheif itself, so this stub may disagree a bit with the actual interface... just flailed around until it compiled and linked. This turns on the stub in most of our internal builds. Change-Id: I62ed4993198118b2a8217ec846d92ff637cc8ab9 Reviewed-on: https://skia-review.googlesource.com/62321 Reviewed-by: Leon Scroggins <scroggo@google.com> Commit-Queue: Mike Klein <mtklein@chromium.org>
This commit is contained in:
parent
6d6d603c81
commit
36f182faa7
2
BUILD.gn
2
BUILD.gn
@ -31,7 +31,7 @@ declare_args() {
|
||||
skia_use_piex = !is_win
|
||||
skia_use_zlib = true
|
||||
skia_use_metal = false
|
||||
skia_use_libheif = false
|
||||
skia_use_libheif = is_skia_dev_build
|
||||
|
||||
skia_android_serial = ""
|
||||
skia_enable_discrete_gpu = true
|
||||
|
@ -15,7 +15,16 @@
|
||||
#include "SkImageInfo.h"
|
||||
#include "SkSwizzler.h"
|
||||
#include "SkStream.h"
|
||||
#include "HeifDecoderAPI.h"
|
||||
|
||||
#if !defined(__has_include)
|
||||
#define __has_include(x) 0
|
||||
#endif
|
||||
|
||||
#if __has_include("HeifDecoderAPI.h")
|
||||
#include "HeifDecoderAPI.h"
|
||||
#else
|
||||
#include "SkStubHeifDecoderAPI.h"
|
||||
#endif
|
||||
|
||||
class SkHeifCodec : public SkCodec {
|
||||
public:
|
||||
|
70
src/codec/SkStubHeifDecoderAPI.h
Normal file
70
src/codec/SkStubHeifDecoderAPI.h
Normal file
@ -0,0 +1,70 @@
|
||||
/*
|
||||
* 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>
|
||||
using off64_t = int64_t;
|
||||
|
||||
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 {
|
||||
int mRotationAngle;
|
||||
int mWidth;
|
||||
int mHeight;
|
||||
int mBytesPerPixel;
|
||||
|
||||
size_t mIccSize;
|
||||
std::unique_ptr<char[]> mIccData;
|
||||
};
|
||||
|
||||
struct HeifDecoder {
|
||||
bool init(HeifStream* stream, HeifFrameInfo*) {
|
||||
delete stream;
|
||||
return false;
|
||||
}
|
||||
|
||||
bool decode(HeifFrameInfo*) {
|
||||
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
|
Loading…
Reference in New Issue
Block a user