Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 #include "imagelist.h"
00037
00038 #include <algorithm>
00039
00040 namespace rcg
00041 {
00042
00043 ImageList::ImageList(size_t _maxsize)
00044 {
00045 maxsize=std::max(static_cast<size_t>(1), _maxsize);
00046 }
00047
00048 void ImageList::add(const std::shared_ptr<const Image> &image)
00049 {
00050 list.push_back(image);
00051
00052 while (list.size() > maxsize)
00053 {
00054 list.erase(list.begin());
00055 }
00056 }
00057
00058 void ImageList::add(const Buffer *buffer, uint32_t part)
00059 {
00060 list.push_back(std::shared_ptr<const Image>(new Image(buffer, part)));
00061
00062 while (list.size() > maxsize)
00063 {
00064 list.erase(list.begin());
00065 }
00066 }
00067
00068 void ImageList::removeOld(uint64_t timestamp)
00069 {
00070 size_t i=0;
00071
00072 while (i < list.size())
00073 {
00074 if (list[i]->getTimestampNS() <= timestamp)
00075 {
00076 list.erase(list.begin()+static_cast<int>(i));
00077 }
00078 else
00079 {
00080 i++;
00081 }
00082 }
00083 }
00084
00085 uint64_t ImageList::getOldestTime() const
00086 {
00087 uint64_t ret=0;
00088
00089 if (list.size() > 0)
00090 {
00091 ret=list[0]->getTimestampNS();
00092 }
00093
00094 return ret;
00095 }
00096
00097 std::shared_ptr<const Image> ImageList::find(uint64_t timestamp) const
00098 {
00099 for (size_t i=0; i<list.size(); i++)
00100 {
00101 if (list[i]->getTimestampNS() == timestamp)
00102 {
00103 return list[i];
00104 }
00105 }
00106
00107 return std::shared_ptr<const Image>();
00108 }
00109
00110 std::shared_ptr<const Image> ImageList::find(uint64_t timestamp, uint64_t tolerance) const
00111 {
00112 if (tolerance > 0)
00113 {
00114 for (size_t i=0; i<list.size(); i++)
00115 {
00116 if (list[i]->getTimestampNS() >= timestamp-tolerance &&
00117 list[i]->getTimestampNS() <= timestamp+tolerance)
00118 {
00119 return list[i];
00120 }
00121 }
00122 }
00123 else
00124 {
00125 return find(timestamp);
00126 }
00127
00128 return std::shared_ptr<const Image>();
00129 }
00130
00131 }