diff --git a/src/analyzer/framecache.py b/src/analyzer/framecache.py --- a/src/analyzer/framecache.py +++ b/src/analyzer/framecache.py @@ -4,9 +4,21 @@ from collections import deque class FrameCache: def __init__(self,capacity=600): # 600 is enough for 10 min of 1 fps self._capacity=capacity - self._cache=deque() + self._keys=deque() + self._values=dict() + self._i=0 - def put(self,frame): - if len(self._cache)>=self._capacity: - self._cache.popleft() - self._cache.append(frame) + def put(self,item): + self._i+=1 + if len(self._keys)>=self._capacity: + k=self._keys.popleft() + del self._values[k] + self._values[self._i]=item + self._keys.append(self._i) + return self._i + + def get(self,k): + return self._values.get(k) + + def getRelative(self,k): + return (self._keys[k], self._values[self._keys[k]])