private static Tuple <int, StreamEntry> StreamFromBatch(string name, RenderBatch.CameraBatch batch_stream) { StreamEntry stream = new StreamEntry(); stream.Name = name; int count = 0; foreach (KeyValuePair <RenderBatch.CameraBatch.RenderType, List <Texture2D> > pair in batch_stream.images_) { int i = 0; foreach (Texture2D image in pair.Value) { BatchResponseEntry entry; if (i + 1 > stream.Entries.Count) { entry = new BatchResponseEntry(); stream.Entries.Add(entry); } else { entry = stream.Entries[i]; } ++i; ByteString data = null; switch (pair.Key) { case RenderBatch.CameraBatch.RenderType.RGB: data = ByteString.CopyFrom(image.GetRawTextureData()); entry.ImageData = data; break; case RenderBatch.CameraBatch.RenderType.DEPTH: entry.DepthData = ReadDepth(image); break; case RenderBatch.CameraBatch.RenderType.NORMALS: entry.NormalsData = ReadNormals(image); break; case RenderBatch.CameraBatch.RenderType.SEGMENTATION: entry.SegmentationData = ReadSegmentation(image); break; default: Logger.Error("Unsupported Batch.Stream.Type {0}", pair.Key); break; } } count = i; } Tuple <int, StreamEntry> stream_info = new Tuple <int, StreamEntry>(count, stream); return(stream_info); }
private void ProcessBatch() { RenderBatch batch = new RenderBatch(); foreach (List <CameraSetup> camera_setups in camera_setups_.Values) { foreach (CameraSetup camera_setup in camera_setups) { RenderBatch.CameraBatch camera_batch; if (batch.camera_batches_.ContainsKey(camera_setup.camera_name_)) { camera_batch = batch.camera_batches_[camera_setup.camera_name_]; } else { camera_batch = new RenderBatch.CameraBatch(); batch.camera_batches_.Add(camera_setup.camera_name_, camera_batch); } switch (camera_setup.camera_type_) { case CameraSetup.CameraType.RGB: camera_batch.images_.Add(RenderBatch.CameraBatch.RenderType.RGB, camera_setup.ApplyAndGetImages()); break; case CameraSetup.CameraType.SEGMENTATION: camera_batch.images_.Add(RenderBatch.CameraBatch.RenderType.SEGMENTATION, camera_setup.ApplyAndGetImages()); break; case CameraSetup.CameraType.DEPTH_NORMALS: List <Texture2D> images = camera_setup.ApplyAndGetImages(); if (capture_depth_) { camera_batch.images_.Add(RenderBatch.CameraBatch.RenderType.DEPTH, images); } if (capture_normals_) { camera_batch.images_.Add(RenderBatch.CameraBatch.RenderType.NORMALS, images); } break; } } } batch_consumer_.ConsumeImageBatch(batch); capture_count_ = 0; batch_count_++; }