Example #1
0
 public RawDataReader(string filename, RawReaderMode mode, RemoteDataStore remoteDataStore = null, bool camFastRead = false)
 {
     _FileName        = filename;
     _Mode            = mode;
     _Remote          = remoteDataStore != null;
     _RemoteDataStore = remoteDataStore;
     _CamFastRead     = camFastRead;
 }
Example #2
0
        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));
        }