// Copyright 2022 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CC_PAINT_SKOTTIE_SERIALIZATION_HISTORY_H_ #define CC_PAINT_SKOTTIE_SERIALIZATION_HISTORY_H_ #include "base/containers/flat_map.h" #include "base/synchronization/lock.h" #include "base/thread_annotations.h" #include "cc/paint/paint_export.h" #include "cc/paint/paint_flags.h" #include "cc/paint/paint_image.h" #include "cc/paint/skottie_frame_data.h" #include "cc/paint/skottie_resource_metadata.h" #include "cc/paint/skottie_text_property_value.h" namespace cc { class SkottieWrapper; // For each frame of a Skottie animation that uses out-of-process rasterization: // 1) The animation's state is captured in a DrawSkottieOp object. // 2) The object is serialized, transmitted over IPC, then deserialized. // 3) The animation's state is updated in the target raster process. // 4) The new frame is rendered/rasterized. // // SkottieSerializationHistory keeps track of past animation state that has // been serialized and transmitted for rasterization. This allows the pipeline // to be optimized such that only "new"/"updated" animation state is transmitted // for each frame rather than re-transmitting everything. In other words, step // 2) can use this history to filter out existing animation state that is // already reflected in the target process from a previous frame in step 3). // // This class is thread-safe. class CC_PAINT_EXPORT SkottieSerializationHistory { … }; } // namespace cc #endif // CC_PAINT_SKOTTIE_SERIALIZATION_HISTORY_H_