public RawDataReader(string filename, RawReaderMode mode, RemoteDataStore remoteDataStore = null, bool camFastRead = false) { _FileName = filename; _Mode = mode; _Remote = remoteDataStore != null; _RemoteDataStore = remoteDataStore; _CamFastRead = camFastRead; }
public Tuple <long, List <Tuple <RawReaderMode, object> > > Next() { List <Tuple <RawReaderMode, object> > result = new List <Tuple <RawReaderMode, object> >(); long currentTimestamp = 0; RawReaderMode readerMode = 0; currentTimestamp = _Timestamps[_Index]; readerMode = _ReaderModes[_Index]; _Index++; if (readerMode.HasFlag(RawReaderMode.Imu0)) { result.Add(new Tuple <RawReaderMode, object>(RawReaderMode.Imu0, _ImuCache[currentTimestamp])); } if (readerMode.HasFlag(RawReaderMode.Camera0)) { double exposerTime = 0; if (_CamCache.Any(c => c.Key == currentTimestamp)) { exposerTime = _CamCache.FirstOrDefault(c => c.Key == currentTimestamp).Value; } if (_CamFastRead) { result.Add(new Tuple <RawReaderMode, object>(RawReaderMode.Camera0, new Tuple <double, byte[]>(exposerTime, new byte[0]))); } else { ZipArchiveEntry imageEntry = _ZipArchive.GetEntry(string.Format("cam0\\{0}.png", currentTimestamp)); using (Stream stream = imageEntry.Open()) { using (MemoryStream ms = new MemoryStream()) { stream.CopyTo(ms); result.Add(new Tuple <RawReaderMode, object>(RawReaderMode.Camera0, new Tuple <double, byte[]>(exposerTime, ms.ToArray()))); } } } } return(new Tuple <long, List <Tuple <RawReaderMode, object> > >(currentTimestamp, result)); }