16 #include <nn/pia/common/common_Definitions.h>
18 #include <nn/pia/common/common_FixedRingBuffer.h>
36 template <
typename T,
int N>
37 class LatestMedian :
public common::RootObject
71 m_Values.PushBackForce(value);
79 T GetMedian(
void)
const
92 T GetMedian(uint32_t n)
const
97 uint32_t sz = m_Values.GetSize();
105 uint32_t num = (sz < n) ? sz : n;
110 for (uint32_t i = 0; i < num; ++i)
112 uint32_t idx = sz - 1 - i;
113 buf[i] = m_Values[idx];
115 std::sort(buf, buf + num);
118 int midIdx = num / 2;
121 return static_cast<T
>(buf[midIdx - 1] + buf[midIdx]) / static_cast<T>(2);
133 bool IsEmpty(
void)
const
135 return m_Values.IsEmpty();
142 bool IsFull(
void)
const
144 return m_Values.IsFull();
151 int32_t GetSize(
void)
const
153 int32_t ret =
static_cast<int32_t
>(m_Values.GetSize());
154 PIA_ASSERT(ret >= 0);
164 void Trace(uint64_t flag)
const
171 FixedRingBuffer<T, N> m_Values;