tor-browser

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

stats.h (2876B)


      1 /* Copyright (c) the JPEG XL Project Authors. All rights reserved.
      2 *
      3 * Use of this source code is governed by a BSD-style
      4 * license that can be found in the LICENSE file.
      5 */
      6 
      7 /** @addtogroup libjxl_encoder
      8 * @{
      9 * @file stats.h
     10 * @brief API to collect various statistics from JXL encoder.
     11 */
     12 
     13 #ifndef JXL_STATS_H_
     14 #define JXL_STATS_H_
     15 
     16 #include <jxl/jxl_export.h>
     17 #include <stddef.h>
     18 
     19 #ifdef __cplusplus
     20 extern "C" {
     21 #endif
     22 
     23 /**
     24 * Opaque structure that holds the encoder statistics.
     25 *
     26 * Allocated and initialized with @ref JxlEncoderStatsCreate().
     27 * Cleaned up and deallocated with @ref JxlEncoderStatsDestroy().
     28 */
     29 typedef struct JxlEncoderStatsStruct JxlEncoderStats;
     30 
     31 /**
     32 * Creates an instance of JxlEncoderStats and initializes it.
     33 *
     34 * @return pointer to initialized @ref JxlEncoderStats instance
     35 */
     36 JXL_EXPORT JxlEncoderStats* JxlEncoderStatsCreate(void);
     37 
     38 /**
     39 * Deinitializes and frees JxlEncoderStats instance.
     40 *
     41 * @param stats instance to be cleaned up and deallocated. No-op if stats is
     42 * null pointer.
     43 */
     44 JXL_EXPORT void JxlEncoderStatsDestroy(JxlEncoderStats* stats);
     45 
     46 /** Data type for querying @ref JxlEncoderStats object
     47 */
     48 typedef enum {
     49  JXL_ENC_STAT_HEADER_BITS,
     50  JXL_ENC_STAT_TOC_BITS,
     51  JXL_ENC_STAT_DICTIONARY_BITS,
     52  JXL_ENC_STAT_SPLINES_BITS,
     53  JXL_ENC_STAT_NOISE_BITS,
     54  JXL_ENC_STAT_QUANT_BITS,
     55  JXL_ENC_STAT_MODULAR_TREE_BITS,
     56  JXL_ENC_STAT_MODULAR_GLOBAL_BITS,
     57  JXL_ENC_STAT_DC_BITS,
     58  JXL_ENC_STAT_MODULAR_DC_GROUP_BITS,
     59  JXL_ENC_STAT_CONTROL_FIELDS_BITS,
     60  JXL_ENC_STAT_COEF_ORDER_BITS,
     61  JXL_ENC_STAT_AC_HISTOGRAM_BITS,
     62  JXL_ENC_STAT_AC_BITS,
     63  JXL_ENC_STAT_MODULAR_AC_GROUP_BITS,
     64  JXL_ENC_STAT_NUM_SMALL_BLOCKS,
     65  JXL_ENC_STAT_NUM_DCT4X8_BLOCKS,
     66  JXL_ENC_STAT_NUM_AFV_BLOCKS,
     67  JXL_ENC_STAT_NUM_DCT8_BLOCKS,
     68  JXL_ENC_STAT_NUM_DCT8X32_BLOCKS,
     69  JXL_ENC_STAT_NUM_DCT16_BLOCKS,
     70  JXL_ENC_STAT_NUM_DCT16X32_BLOCKS,
     71  JXL_ENC_STAT_NUM_DCT32_BLOCKS,
     72  JXL_ENC_STAT_NUM_DCT32X64_BLOCKS,
     73  JXL_ENC_STAT_NUM_DCT64_BLOCKS,
     74  JXL_ENC_STAT_NUM_BUTTERAUGLI_ITERS,
     75  JXL_ENC_NUM_STATS,
     76 } JxlEncoderStatsKey;
     77 
     78 /** Returns the value of the statistics corresponding the given key.
     79 *
     80 * @param stats object that was passed to the encoder with a
     81 *   @ref JxlEncoderCollectStats function
     82 * @param key the particular statistics to query
     83 *
     84 * @return the value of the statistics
     85 */
     86 JXL_EXPORT size_t JxlEncoderStatsGet(const JxlEncoderStats* stats,
     87                                     JxlEncoderStatsKey key);
     88 
     89 /** Updates the values of the given stats object with that of an other.
     90 *
     91 * @param stats object whose values will be updated (usually added together)
     92 * @param other stats object whose values will be merged with stats
     93 */
     94 JXL_EXPORT void JxlEncoderStatsMerge(JxlEncoderStats* stats,
     95                                     const JxlEncoderStats* other);
     96 
     97 #ifdef __cplusplus
     98 }
     99 #endif
    100 
    101 #endif /* JXL_STATS_H_ */
    102 
    103 /** @}*/