1*c8dee2aaSAndroid Build Coastguard Worker /* 2*c8dee2aaSAndroid Build Coastguard Worker * Copyright 2024 Google LLC 3*c8dee2aaSAndroid Build Coastguard Worker * 4*c8dee2aaSAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license that can be 5*c8dee2aaSAndroid Build Coastguard Worker * found in the LICENSE file. 6*c8dee2aaSAndroid Build Coastguard Worker */ 7*c8dee2aaSAndroid Build Coastguard Worker #ifndef CodecUtils_DEFINED 8*c8dee2aaSAndroid Build Coastguard Worker #define CodecUtils_DEFINED 9*c8dee2aaSAndroid Build Coastguard Worker #include "include/codec/SkCodec.h" 10*c8dee2aaSAndroid Build Coastguard Worker 11*c8dee2aaSAndroid Build Coastguard Worker #if defined(SK_CODEC_DECODES_AVIF) 12*c8dee2aaSAndroid Build Coastguard Worker #include "include/codec/SkAvifDecoder.h" 13*c8dee2aaSAndroid Build Coastguard Worker #endif 14*c8dee2aaSAndroid Build Coastguard Worker 15*c8dee2aaSAndroid Build Coastguard Worker #if defined(SK_CODEC_DECODES_BMP) 16*c8dee2aaSAndroid Build Coastguard Worker #include "include/codec/SkBmpDecoder.h" 17*c8dee2aaSAndroid Build Coastguard Worker #endif 18*c8dee2aaSAndroid Build Coastguard Worker 19*c8dee2aaSAndroid Build Coastguard Worker #if defined(SK_CODEC_DECODES_GIF) 20*c8dee2aaSAndroid Build Coastguard Worker #include "include/codec/SkGifDecoder.h" 21*c8dee2aaSAndroid Build Coastguard Worker #endif 22*c8dee2aaSAndroid Build Coastguard Worker 23*c8dee2aaSAndroid Build Coastguard Worker #if defined(SK_HAS_HEIF_LIBRARY) 24*c8dee2aaSAndroid Build Coastguard Worker #include "include/android/SkHeifDecoder.h" 25*c8dee2aaSAndroid Build Coastguard Worker #endif 26*c8dee2aaSAndroid Build Coastguard Worker 27*c8dee2aaSAndroid Build Coastguard Worker #if defined(SK_CODEC_DECODES_ICO) 28*c8dee2aaSAndroid Build Coastguard Worker #include "include/codec/SkIcoDecoder.h" 29*c8dee2aaSAndroid Build Coastguard Worker #endif 30*c8dee2aaSAndroid Build Coastguard Worker 31*c8dee2aaSAndroid Build Coastguard Worker #if defined(SK_CODEC_DECODES_JPEG) 32*c8dee2aaSAndroid Build Coastguard Worker #include "include/codec/SkJpegDecoder.h" 33*c8dee2aaSAndroid Build Coastguard Worker #endif 34*c8dee2aaSAndroid Build Coastguard Worker 35*c8dee2aaSAndroid Build Coastguard Worker #if defined(SK_CODEC_DECODES_JPEGXL) 36*c8dee2aaSAndroid Build Coastguard Worker #include "include/codec/SkJpegxlDecoder.h" 37*c8dee2aaSAndroid Build Coastguard Worker #endif 38*c8dee2aaSAndroid Build Coastguard Worker 39*c8dee2aaSAndroid Build Coastguard Worker #if defined(SK_CODEC_DECODES_PNG) 40*c8dee2aaSAndroid Build Coastguard Worker #include "include/codec/SkPngDecoder.h" 41*c8dee2aaSAndroid Build Coastguard Worker #endif 42*c8dee2aaSAndroid Build Coastguard Worker 43*c8dee2aaSAndroid Build Coastguard Worker #if defined(SK_CODEC_DECODES_RAW) 44*c8dee2aaSAndroid Build Coastguard Worker #include "include/codec/SkRawDecoder.h" 45*c8dee2aaSAndroid Build Coastguard Worker #endif 46*c8dee2aaSAndroid Build Coastguard Worker 47*c8dee2aaSAndroid Build Coastguard Worker #if defined(SK_CODEC_DECODES_WBMP) 48*c8dee2aaSAndroid Build Coastguard Worker #include "include/codec/SkWbmpDecoder.h" 49*c8dee2aaSAndroid Build Coastguard Worker #endif 50*c8dee2aaSAndroid Build Coastguard Worker 51*c8dee2aaSAndroid Build Coastguard Worker #if defined(SK_CODEC_DECODES_WEBP) 52*c8dee2aaSAndroid Build Coastguard Worker #include "include/codec/SkWebpDecoder.h" 53*c8dee2aaSAndroid Build Coastguard Worker #endif 54*c8dee2aaSAndroid Build Coastguard Worker 55*c8dee2aaSAndroid Build Coastguard Worker namespace CodecUtils { 56*c8dee2aaSAndroid Build Coastguard Worker // Register all codecs which were compiled in. Our modular codecs set a define to signal if they 57*c8dee2aaSAndroid Build Coastguard Worker // were compiled in or not. It is safe to call this more than once, as the SkCodecs::Register 58*c8dee2aaSAndroid Build Coastguard Worker // function is idempotent. This function *cannot* go in src/ (e.g. as part of Skia proper) because 59*c8dee2aaSAndroid Build Coastguard Worker // then Skia itself would need to depend on codecs, which we want to avoid. RegisterAllAvailable()60*c8dee2aaSAndroid Build Coastguard Workerinline void RegisterAllAvailable() { 61*c8dee2aaSAndroid Build Coastguard Worker #if defined(SK_CODEC_DECODES_AVIF) 62*c8dee2aaSAndroid Build Coastguard Worker SkCodecs::Register(SkAvifDecoder::Decoder()); 63*c8dee2aaSAndroid Build Coastguard Worker #endif 64*c8dee2aaSAndroid Build Coastguard Worker #if defined(SK_CODEC_DECODES_BMP) 65*c8dee2aaSAndroid Build Coastguard Worker SkCodecs::Register(SkBmpDecoder::Decoder()); 66*c8dee2aaSAndroid Build Coastguard Worker #endif 67*c8dee2aaSAndroid Build Coastguard Worker #if defined(SK_CODEC_DECODES_GIF) 68*c8dee2aaSAndroid Build Coastguard Worker SkCodecs::Register(SkGifDecoder::Decoder()); 69*c8dee2aaSAndroid Build Coastguard Worker #endif 70*c8dee2aaSAndroid Build Coastguard Worker #if defined(SK_HAS_HEIF_LIBRARY) 71*c8dee2aaSAndroid Build Coastguard Worker SkCodecs::Register(SkHeifDecoder::Decoder()); 72*c8dee2aaSAndroid Build Coastguard Worker #endif 73*c8dee2aaSAndroid Build Coastguard Worker #if defined(SK_CODEC_DECODES_ICO) 74*c8dee2aaSAndroid Build Coastguard Worker SkCodecs::Register(SkIcoDecoder::Decoder()); 75*c8dee2aaSAndroid Build Coastguard Worker #endif 76*c8dee2aaSAndroid Build Coastguard Worker #if defined(SK_CODEC_DECODES_JPEG) 77*c8dee2aaSAndroid Build Coastguard Worker SkCodecs::Register(SkJpegDecoder::Decoder()); 78*c8dee2aaSAndroid Build Coastguard Worker #endif 79*c8dee2aaSAndroid Build Coastguard Worker #if defined(SK_CODEC_DECODES_JPEGXL) 80*c8dee2aaSAndroid Build Coastguard Worker SkCodecs::Register(SkJpegxlDecoder::Decoder()); 81*c8dee2aaSAndroid Build Coastguard Worker #endif 82*c8dee2aaSAndroid Build Coastguard Worker #if defined(SK_CODEC_DECODES_PNG) 83*c8dee2aaSAndroid Build Coastguard Worker SkCodecs::Register(SkPngDecoder::Decoder()); 84*c8dee2aaSAndroid Build Coastguard Worker #endif 85*c8dee2aaSAndroid Build Coastguard Worker #if defined(SK_CODEC_DECODES_RAW) 86*c8dee2aaSAndroid Build Coastguard Worker SkCodecs::Register(SkRawDecoder::Decoder()); 87*c8dee2aaSAndroid Build Coastguard Worker #endif 88*c8dee2aaSAndroid Build Coastguard Worker #if defined(SK_CODEC_DECODES_WBMP) 89*c8dee2aaSAndroid Build Coastguard Worker SkCodecs::Register(SkWbmpDecoder::Decoder()); 90*c8dee2aaSAndroid Build Coastguard Worker #endif 91*c8dee2aaSAndroid Build Coastguard Worker #if defined(SK_CODEC_DECODES_WEBP) 92*c8dee2aaSAndroid Build Coastguard Worker SkCodecs::Register(SkWebpDecoder::Decoder()); 93*c8dee2aaSAndroid Build Coastguard Worker #endif 94*c8dee2aaSAndroid Build Coastguard Worker } 95*c8dee2aaSAndroid Build Coastguard Worker 96*c8dee2aaSAndroid Build Coastguard Worker } // namespace CodecUtils 97*c8dee2aaSAndroid Build Coastguard Worker 98*c8dee2aaSAndroid Build Coastguard Worker #endif 99