URBI can store binary objects of any type in a generic container, and provides specific structures for sound and images. The generic containers is called UBinary and is defined in the urbi/uobject.hh header. It contains an enum field type giving the type of the binary (UNKNOWN, SOUND or IMAGE), and an union of a USound and UImage struct containing a pointer to the data, the size of the data and type-specific metainformations. Reading a UBinary from an UVar, and writting a UBinary to a UVar performs a deep-copy of the data. In plugin mode, you can access directly the buffer used by the kernel by casting the UVar to an UImage or a USound. You can then write to the buffer, but you can not change any other information.