Shared-memory camera transport ============================== The Windows shared-memory transport avoids sending camera pixels through the UnrealCV TCP response. The command returns a small JSON descriptor, and the client opens the named mapping to access the pixels. Commands -------- The supported routes are ``lit_shared``, ``depth_shared``, ``normal_shared``, ``object_mask_shared``, and the ``seg_shared`` alias. For example:: vget /camera/0/lit_shared The response contains ``name``, ``num_bytes``, ``offset_bytes``, ``shape``, ``dtype``, ``layout``, ``width``, ``height``, ``modality``, ``frame``, and ``version``. Color-like outputs use raw BGRA ``uint8`` pixels in HWC layout. Depth uses a row-major HW array of ``float32`` values. Python example -------------- Use the mapping before requesting the same shared route again. A later capture can overwrite the same region:: import json import mmap import numpy as np from unrealcv import Client client = Client(("127.0.0.1", 9000)) client.connect() metadata = json.loads(client.request("vget /camera/0/lit_shared")) with mmap.mmap(-1, metadata["num_bytes"], tagname=metadata["name"], access=mmap.ACCESS_READ) as region: image = np.frombuffer(region, dtype=np.uint8).reshape(metadata["shape"]).copy() The mapping belongs to the UnrealCV server process. Its name can change when a larger allocation is required, and it becomes invalid when the server exits. Always use the name and version from the latest response. Performance benchmark --------------------- Run ``python test/benchmark_shared_memory.py`` while an UnrealCV server is listening on port 9000. The benchmark alternates TCP and shared-memory captures for the same camera and modality, reads the complete mapping, and reports mean, median, p95, FPS, and speedup. TCP produces encoded PNG/NPY payloads while shared memory exposes raw pixels, so the result measures the practical acquisition paths rather than only the socket copy cost. The implementation is currently Windows-only. Remote clients cannot open a mapping from another machine and must continue using TCP or file output.