1*c8dee2aaSAndroid Build Coastguard Worker /* 2*c8dee2aaSAndroid Build Coastguard Worker * Copyright 2023 Google Inc. 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 8*c8dee2aaSAndroid Build Coastguard Worker #ifndef SkJpegGainmapEncoder_DEFINED 9*c8dee2aaSAndroid Build Coastguard Worker #define SkJpegGainmapEncoder_DEFINED 10*c8dee2aaSAndroid Build Coastguard Worker 11*c8dee2aaSAndroid Build Coastguard Worker #include "include/encode/SkJpegEncoder.h" 12*c8dee2aaSAndroid Build Coastguard Worker 13*c8dee2aaSAndroid Build Coastguard Worker class SkPixmap; 14*c8dee2aaSAndroid Build Coastguard Worker class SkWStream; 15*c8dee2aaSAndroid Build Coastguard Worker struct SkGainmapInfo; 16*c8dee2aaSAndroid Build Coastguard Worker 17*c8dee2aaSAndroid Build Coastguard Worker class SK_API SkJpegGainmapEncoder { 18*c8dee2aaSAndroid Build Coastguard Worker public: 19*c8dee2aaSAndroid Build Coastguard Worker /** 20*c8dee2aaSAndroid Build Coastguard Worker * Encode an UltraHDR image to |dst|. 21*c8dee2aaSAndroid Build Coastguard Worker * 22*c8dee2aaSAndroid Build Coastguard Worker * The base image is specified by |base|, and |baseOptions| controls the encoding behavior for 23*c8dee2aaSAndroid Build Coastguard Worker * the base image. 24*c8dee2aaSAndroid Build Coastguard Worker * 25*c8dee2aaSAndroid Build Coastguard Worker * The gainmap image is specified by |gainmap|, and |gainmapOptions| controls the encoding 26*c8dee2aaSAndroid Build Coastguard Worker * behavior for the gainmap image. 27*c8dee2aaSAndroid Build Coastguard Worker * 28*c8dee2aaSAndroid Build Coastguard Worker * The rendering behavior of the gainmap image is provided in |gainmapInfo|. 29*c8dee2aaSAndroid Build Coastguard Worker * 30*c8dee2aaSAndroid Build Coastguard Worker * If |baseOptions| or |gainmapOptions| specify XMP metadata, then that metadata will be 31*c8dee2aaSAndroid Build Coastguard Worker * overwritten. 32*c8dee2aaSAndroid Build Coastguard Worker * 33*c8dee2aaSAndroid Build Coastguard Worker * Returns true on success. Returns false on an invalid or unsupported |src|. 34*c8dee2aaSAndroid Build Coastguard Worker */ 35*c8dee2aaSAndroid Build Coastguard Worker static bool EncodeHDRGM(SkWStream* dst, 36*c8dee2aaSAndroid Build Coastguard Worker const SkPixmap& base, 37*c8dee2aaSAndroid Build Coastguard Worker const SkJpegEncoder::Options& baseOptions, 38*c8dee2aaSAndroid Build Coastguard Worker const SkPixmap& gainmap, 39*c8dee2aaSAndroid Build Coastguard Worker const SkJpegEncoder::Options& gainmapOptions, 40*c8dee2aaSAndroid Build Coastguard Worker const SkGainmapInfo& gainmapInfo); 41*c8dee2aaSAndroid Build Coastguard Worker 42*c8dee2aaSAndroid Build Coastguard Worker /** 43*c8dee2aaSAndroid Build Coastguard Worker * Write a Multi Picture Format containing the |imageCount| images specified by |images|. 44*c8dee2aaSAndroid Build Coastguard Worker */ 45*c8dee2aaSAndroid Build Coastguard Worker static bool MakeMPF(SkWStream* dst, const SkData** images, size_t imageCount); 46*c8dee2aaSAndroid Build Coastguard Worker }; 47*c8dee2aaSAndroid Build Coastguard Worker 48*c8dee2aaSAndroid Build Coastguard Worker #endif 49