1 /*############################################################################ 2 # Copyright Intel Corporation 3 # 4 # SPDX-License-Identifier: MIT 5 ############################################################################*/ 6 7 #pragma once 8 9 #include <cinttypes> 10 #include "vpl/mfxstructures.h" 11 namespace oneapi { 12 namespace vpl { 13 14 /// @brief Interface for the component's (session) run-time statistic 15 class stat { 16 public: 17 /// @brief Default ctor stat()18 stat() {} 19 20 /// @brief Default dtor ~stat()21 virtual ~stat() {} 22 23 /// @brief Retrieves number of processed frames 24 /// @return Number of processed frames 25 virtual uint32_t get_num_frame() const = 0; 26 27 /// @brief Retrieves number of cached frames 28 /// @return Number of cached frames 29 virtual uint32_t get_num_cached_frame() const = 0; 30 }; 31 32 /// @brief Decoder's session run-time statistic 33 class decode_stat : public stat { 34 public: 35 /// @brief Default ctor decode_stat()36 decode_stat() : stat(), stat_() {} 37 38 /// @brief Default dtor ~decode_stat()39 virtual ~decode_stat() {} 40 41 /// @brief Retrieves number of processed frames 42 /// @return Number of processed frames get_num_frame() const43 virtual uint32_t get_num_frame() const { 44 return stat_.NumFrame; 45 } 46 47 /// @brief Retrieves number of cached frames 48 /// @return Number of cached frames get_num_cached_frame() const49 virtual uint32_t get_num_cached_frame() const { 50 return stat_.NumCachedFrame; 51 } 52 53 /// @brief Retrieves number of errors recovered 54 /// @return Number of errors recovered get_num_error() const55 virtual uint32_t get_num_error() const { 56 return stat_.NumError; 57 } 58 59 /// @brief Retrieves number of skipped frames 60 /// @return Number of skipped frames get_num_skipped_frame() const61 virtual uint32_t get_num_skipped_frame() const { 62 return stat_.NumSkippedFrame; 63 } 64 65 /// @brief Retrieves raw data pointer 66 /// @return Raw data pointer get_raw()67 mfxDecodeStat* get_raw() { 68 return &(this->stat_); 69 } 70 71 protected: 72 /// @brief Raw statistic data 73 mfxDecodeStat stat_; 74 }; 75 76 /// @brief Encoder's session run-time statistic 77 class encode_stat : public stat { 78 public: 79 /// @brief Default ctor encode_stat()80 encode_stat() : stat(), stat_() {} 81 82 /// @brief Default dtor ~encode_stat()83 virtual ~encode_stat() {} 84 85 /// @brief Retrieves number of processed frames 86 /// @return Number of processed frames get_num_frame() const87 virtual uint32_t get_num_frame() const { 88 return stat_.NumFrame; 89 } 90 91 /// @brief Retrieves number of cached frames 92 /// @return Number of cached frames get_num_cached_frame() const93 virtual uint32_t get_num_cached_frame() const { 94 return stat_.NumCachedFrame; 95 } 96 97 /// @brief Retrieves number of bits for all encoded frames 98 /// @return Number of bits for all encoded frames get_num_bit() const99 virtual uint64_t get_num_bit() const { 100 return stat_.NumBit; 101 } 102 103 /// @brief Retrieves raw data pointer 104 /// @return Raw data pointer get_raw()105 mfxEncodeStat* get_raw() { 106 return &(this->stat_); 107 } 108 109 protected: 110 /// @brief Raw statistic data 111 mfxEncodeStat stat_; 112 }; 113 114 /// @brief VPP's session run-time statistic 115 class vpp_stat : public stat { 116 public: 117 /// @brief Default ctor vpp_stat()118 vpp_stat() : stat(), stat_() {} 119 120 /// @brief Default dtor ~vpp_stat()121 virtual ~vpp_stat() {} 122 123 /// @brief Retrieves number of processed frames 124 /// @return Number of processed frames get_num_frame() const125 virtual uint32_t get_num_frame() const { 126 return stat_.NumFrame; 127 } 128 129 /// @brief Retrieves number of cached frames 130 /// @return Number of cached frames get_num_cached_frame() const131 virtual uint32_t get_num_cached_frame() const { 132 return stat_.NumCachedFrame; 133 } 134 135 /// @brief Retrieves raw data pointer 136 /// @return Raw data pointer get_raw()137 mfxVPPStat* get_raw() { 138 return &(this->stat_); 139 } 140 141 protected: 142 /// @brief Raw statistic data 143 mfxVPPStat stat_; 144 }; 145 146 } // namespace vpl 147 } // namespace oneapi 148