17 #include <pia/common/common_definitions.h> 19 #include <pia/common/common_FixedRingBuffer.h> 41 template <
typename T,
int N>
42 class LatestMedian :
public common::RootObject
76 m_Values.PushBackForce(value);
84 T GetMedian(
void)
const 97 T GetMedian(
size_t n)
const 102 size_t sz = m_Values.GetSize();
110 size_t num = (sz < n) ? sz : n;
115 for (u32 i = 0; i < num; ++i)
117 size_t idx = sz - 1 - i;
118 buf[i] = m_Values[idx];
120 std::sort(buf, buf + num);
123 int midIdx = num / 2;
126 return static_cast<T
>(buf[midIdx - 1] + buf[midIdx]) / static_cast<T>(2);
138 bool IsEmpty(
void)
const 140 return m_Values.IsEmpty();
147 bool IsFull(
void)
const 149 return m_Values.IsFull();
156 size_t GetSize(
void)
const 158 return m_Values.GetSize();
167 void Trace(u64 flag)
const 174 FixedRingBuffer<T, N> m_Values;