tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

DecoderFlags.h (2182B)


      1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
      2 /* This Source Code Form is subject to the terms of the Mozilla Public
      3 * License, v. 2.0. If a copy of the MPL was not distributed with this
      4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      5 
      6 #ifndef mozilla_image_DecoderFlags_h
      7 #define mozilla_image_DecoderFlags_h
      8 
      9 #include "mozilla/TypedEnumBits.h"
     10 
     11 namespace mozilla {
     12 namespace image {
     13 
     14 /**
     15 * Flags that influence decoder behavior. Note that these flags *don't*
     16 * influence the logical content of the surfaces that the decoder generates, so
     17 * they're not in a factor in SurfaceCache lookups and the like. These flags
     18 * instead either influence which surfaces are generated at all or the tune the
     19 * decoder's behavior for a particular scenario.
     20 */
     21 enum class DecoderFlags : uint8_t {
     22  FIRST_FRAME_ONLY = 1 << 0,
     23  IS_REDECODE = 1 << 1,
     24  IMAGE_IS_TRANSIENT = 1 << 2,
     25  ASYNC_NOTIFY = 1 << 3,
     26 
     27  /**
     28   * By default, a surface is considered substitutable. That means callers are
     29   * willing to accept a less than ideal match to display. If a caller requires
     30   * a specific size and won't accept alternatives, then this flag should be
     31   * set.
     32   */
     33  CANNOT_SUBSTITUTE = 1 << 4,
     34 
     35 #ifdef MOZ_AV1
     36  // The flags below are stored in RasterImage to allow a decoded image to
     37  // remain consistent in whether it is animated or not.
     38 
     39  // Set according to the "image.avif.sequence.enabled" preference.
     40  AVIF_SEQUENCES_ENABLED = 1 << 5,
     41  // Set according to the
     42  // "image.avif.sequence.animate_avif_major_branded_images" preference.
     43  AVIF_ANIMATE_AVIF_MAJOR = 1 << 6,
     44 #endif
     45 
     46  /**
     47   * By default, we don't count how many animated frames there are in an image,
     48   * as that would require us to iterate over the entire buffer for some image
     49   * formats. If the caller requires a full accounting of how many frames there
     50   * are.
     51   */
     52  COUNT_FRAMES = 1 << 7,
     53 };
     54 MOZ_MAKE_ENUM_CLASS_BITWISE_OPERATORS(DecoderFlags)
     55 
     56 /**
     57 * @return the default set of decode flags.
     58 */
     59 inline DecoderFlags DefaultDecoderFlags() { return DecoderFlags(); }
     60 
     61 }  // namespace image
     62 }  // namespace mozilla
     63 
     64 #endif  // mozilla_image_DecoderFlags_h