HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
openvdb::OPENVDB_VERSION_NAME::io Namespace Reference

Classes

class  Archive
 Grid serializer/unserializer. More...
 
struct  MaskCompress
 
struct  RealToHalf
 RealToHalf and its specializations define a mapping from floating-point data types to analogous half float types. More...
 
struct  RealToHalf< float >
 
struct  RealToHalf< double >
 
struct  RealToHalf< Vec2s >
 
struct  RealToHalf< Vec2d >
 
struct  RealToHalf< Vec3s >
 
struct  RealToHalf< Vec3d >
 
struct  HalfReader
 
struct  HalfReader< false, T >
 Partial specialization for non-floating-point types (no half to float promotion) More...
 
struct  HalfReader< true, T >
 Partial specialization for floating-point types. More...
 
struct  HalfWriter
 
struct  HalfWriter< false, T >
 Partial specialization for non-floating-point types (no float to half quantization) More...
 
struct  HalfWriter< true, T >
 Partial specialization for floating-point types. More...
 
class  DelayedLoadMetadata
 Store a buffer of data that can be optionally used during reading for faster delayed-load I/O performance. More...
 
class  File
 Grid archive associated with a file on disk. More...
 
class  GridDescriptor
 
class  StreamMetadata
 Container for metadata describing how to unserialize grids from and/or serialize grids to a stream (which file format, compression scheme, etc. to use) More...
 
struct  MultiPass
 Leaf nodes that require multi-pass I/O must inherit from this struct. More...
 
class  Queue
 Queue for asynchronous output of grids to files or streams. More...
 
class  Stream
 Grid archive associated with arbitrary input and output streams (not necessarily files) More...
 

Enumerations

enum  { COMPRESS_NONE = 0, COMPRESS_ZIP = 0x1, COMPRESS_ACTIVE_MASK = 0x2, COMPRESS_BLOSC = 0x4 }
 OR-able bit flags for compression options on input and output streams. More...
 
enum  {
  NO_MASK_OR_INACTIVE_VALS, NO_MASK_AND_MINUS_BG, NO_MASK_AND_ONE_INACTIVE_VAL, MASK_AND_NO_INACTIVE_VALS,
  MASK_AND_ONE_INACTIVE_VAL, MASK_AND_TWO_INACTIVE_VALS, NO_MASK_AND_ALL_VALS
}
 

Functions

OPENVDB_API std::string compressionToString (uint32_t flags)
 Return a string describing the given compression flags. More...
 
template<typename T >
truncateRealToHalf (const T &val)
 Return the given value truncated to 16-bit float precision. More...
 
OPENVDB_API size_t zipToStreamSize (const char *data, size_t numBytes)
 
OPENVDB_API void zipToStream (std::ostream &, const char *data, size_t numBytes)
 
OPENVDB_API void unzipFromStream (std::istream &, char *data, size_t numBytes)
 
OPENVDB_API size_t bloscToStreamSize (const char *data, size_t valSize, size_t numVals)
 
OPENVDB_API void bloscToStream (std::ostream &, const char *data, size_t valSize, size_t numVals)
 
OPENVDB_API void bloscFromStream (std::istream &, char *data, size_t numBytes)
 
template<typename T >
void readData (std::istream &is, T *data, Index count, uint32_t compression, DelayedLoadMetadata *metadata=nullptr, size_t metadataOffset=size_t(0))
 Read data from a stream. More...
 
template<>
void readData< std::string > (std::istream &is, std::string *data, Index count, uint32_t, DelayedLoadMetadata *, size_t)
 Specialization for std::string input. More...
 
template<typename T >
size_t writeDataSize (const T *data, Index count, uint32_t compression)
 
template<>
size_t writeDataSize< std::string > (const std::string *data, Index count, uint32_t)
 Specialization for std::string output. More...
 
template<typename T >
void writeData (std::ostream &os, const T *data, Index count, uint32_t compression)
 
template<>
void writeData< std::string > (std::ostream &os, const std::string *data, Index count, uint32_t)
 Specialization for std::string output. More...
 
template<typename ValueT , typename MaskT >
void readCompressedValues (std::istream &is, ValueT *destBuf, Index destCount, const MaskT &valueMask, bool fromHalf)
 
template<typename ValueT , typename MaskT >
size_t writeCompressedValuesSize (ValueT *srcBuf, Index srcCount, const MaskT &valueMask, uint8_t maskMetadata, bool toHalf, uint32_t compress)
 
template<typename ValueT , typename MaskT >
void writeCompressedValues (std::ostream &os, ValueT *srcBuf, Index srcCount, const MaskT &valueMask, const MaskT &childMask, bool toHalf)
 
std::ostream & operator<< (std::ostream &, const StreamMetadata &)
 Write a description of the given metadata to an output stream. More...
 
std::ostream & operator<< (std::ostream &, const StreamMetadata::AuxDataMap &)
 
std::string getErrorString (int errorNum)
 Return a string (possibly empty) describing the given system error code. More...
 
std::string getErrorString ()
 Return a string (possibly empty) describing the most recent system error. More...
 
OPENVDB_API uint32_t getFormatVersion (std::ios_base &)
 Return the file format version number associated with the given input stream. More...
 
OPENVDB_API VersionId getLibraryVersion (std::ios_base &)
 Return the (major, minor) library version number associated with the given input stream. More...
 
OPENVDB_API std::string getVersion (std::ios_base &)
 Return a string of the form "<major>.<minor>/<format>", giving the library and file format version numbers associated with the given input stream. More...
 
OPENVDB_API void setCurrentVersion (std::istream &)
 Associate the current file format and library version numbers with the given input stream. More...
 
OPENVDB_API void setVersion (std::ios_base &, const VersionId &libraryVersion, uint32_t fileVersion)
 Associate specific file format and library version numbers with the given stream. More...
 
OPENVDB_API uint32_t getDataCompression (std::ios_base &)
 Return a bitwise OR of compression option flags (COMPRESS_ZIP, COMPRESS_ACTIVE_MASK, etc.) specifying whether and how input data is compressed or output data should be compressed. More...
 
OPENVDB_API void setDataCompression (std::ios_base &, uint32_t compressionFlags)
 Associate with the given stream a bitwise OR of compression option flags (COMPRESS_ZIP, COMPRESS_ACTIVE_MASK, etc.) specifying whether and how input data is compressed or output data should be compressed. More...
 
OPENVDB_API uint32_t getGridClass (std::ios_base &)
 Return the class (GRID_LEVEL_SET, GRID_UNKNOWN, etc.) of the grid currently being read from or written to the given stream. More...
 
OPENVDB_API void setGridClass (std::ios_base &, uint32_t)
 Associate with the given stream the class (GRID_LEVEL_SET, GRID_UNKNOWN, etc.) of the grid currently being read or written. More...
 
OPENVDB_API bool getHalfFloat (std::ios_base &)
 Return true if floating-point values should be quantized to 16 bits when writing to the given stream or promoted back from 16-bit to full precision when reading from it. More...
 
OPENVDB_API void setHalfFloat (std::ios_base &, bool)
 Specify whether floating-point values should be quantized to 16 bits when writing to the given stream or promoted back from 16-bit to full precision when reading from it. More...
 
OPENVDB_API const voidgetGridBackgroundValuePtr (std::ios_base &)
 Return a pointer to the background value of the grid currently being read from or written to the given stream. More...
 
OPENVDB_API void setGridBackgroundValuePtr (std::ios_base &, const void *background)
 Specify (a pointer to) the background value of the grid currently being read from or written to the given stream. More...
 
OPENVDB_API bool getWriteGridStatsMetadata (std::ios_base &)
 Return true if grid statistics (active voxel count and bounding box, etc.) should be computed and stored as grid metadata when writing to the given stream. More...
 
OPENVDB_API void setWriteGridStatsMetadata (std::ios_base &, bool writeGridStats)
 Specify whether to compute grid statistics (active voxel count and bounding box, etc.) and store them as grid metadata when writing to the given stream. More...
 
OPENVDB_API SharedPtr
< StreamMetadata
getStreamMetadataPtr (std::ios_base &)
 Return a shared pointer to an object that stores metadata (file format, compression scheme, etc.) for use when reading from or writing to the given stream. More...
 
OPENVDB_API void setStreamMetadataPtr (std::ios_base &, SharedPtr< StreamMetadata > &, bool transfer=true)
 Associate the given stream with (a shared pointer to) an object that stores metadata (file format, compression scheme, etc.) for use when reading from or writing to the stream. More...
 
OPENVDB_API SharedPtr
< StreamMetadata
clearStreamMetadataPtr (std::ios_base &)
 Dissociate the given stream from its metadata object (if it has one) and return a shared pointer to the object. More...
 
template<>
void readCompressedValues (std::istream &is, PointDataIndex32 *destBuf, Index destCount, const util::NodeMask< 3 > &, bool)
 openvdb::io::readCompressedValues specialized on PointDataIndex32 arrays to ignore the value mask, use a larger block size and use 16-bit size instead of 64-bit More...
 
template<>
void writeCompressedValues (std::ostream &os, PointDataIndex32 *srcBuf, Index srcCount, const util::NodeMask< 3 > &, const util::NodeMask< 3 > &, bool)
 openvdb::io::writeCompressedValues specialized on PointDataIndex32 arrays to ignore the value mask, use a larger block size and use 16-bit size instead of 64-bit More...
 
template<typename T >
void writeCompressedValuesSize (std::ostream &os, const T *srcBuf, Index srcCount)
 

Enumeration Type Documentation

anonymous enum

OR-able bit flags for compression options on input and output streams.

COMPRESS_NONE

On write, don't compress data.
On read, the input stream contains uncompressed data.

COMPRESS_ZIP

When writing grids other than level sets or fog volumes, apply ZLIB compression to internal and leaf node value buffers.
When reading grids other than level sets or fog volumes, indicate that the value buffers of internal and leaf nodes are ZLIB-compressed.
ZLIB compresses well but is slow.

COMPRESS_ACTIVE_MASK

When writing a grid of any class, don't output a node's inactive values if it has two or fewer distinct values. Instead, output minimal information to permit the lossless reconstruction of inactive values.
On read, nodes might have been stored without inactive values. Where necessary, reconstruct inactive values from available information.

COMPRESS_BLOSC
When writing grids other than level sets or fog volumes, apply Blosc compression to internal and leaf node value buffers.
When reading grids other than level sets or fog volumes, indicate that the value buffers of internal and leaf nodes are Blosc-compressed.
Blosc is much faster than ZLIB and produces comparable file sizes.
Enumerator
COMPRESS_NONE 
COMPRESS_ZIP 
COMPRESS_ACTIVE_MASK 
COMPRESS_BLOSC 

Definition at line 52 of file Compression.h.

anonymous enum
Enumerator
NO_MASK_OR_INACTIVE_VALS 
NO_MASK_AND_MINUS_BG 
NO_MASK_AND_ONE_INACTIVE_VAL 
MASK_AND_NO_INACTIVE_VALS 
MASK_AND_ONE_INACTIVE_VAL 
MASK_AND_TWO_INACTIVE_VALS 
NO_MASK_AND_ALL_VALS 

Definition at line 68 of file Compression.h.

Function Documentation

OPENVDB_API void openvdb::OPENVDB_VERSION_NAME::io::bloscFromStream ( std::istream &  ,
char *  data,
size_t  numBytes 
)
OPENVDB_API void openvdb::OPENVDB_VERSION_NAME::io::bloscToStream ( std::ostream &  ,
const char *  data,
size_t  valSize,
size_t  numVals 
)
OPENVDB_API size_t openvdb::OPENVDB_VERSION_NAME::io::bloscToStreamSize ( const char *  data,
size_t  valSize,
size_t  numVals 
)
OPENVDB_API SharedPtr<StreamMetadata> openvdb::OPENVDB_VERSION_NAME::io::clearStreamMetadataPtr ( std::ios_base &  )

Dissociate the given stream from its metadata object (if it has one) and return a shared pointer to the object.

OPENVDB_API std::string openvdb::OPENVDB_VERSION_NAME::io::compressionToString ( uint32_t  flags)

Return a string describing the given compression flags.

OPENVDB_API uint32_t openvdb::OPENVDB_VERSION_NAME::io::getDataCompression ( std::ios_base &  )

Return a bitwise OR of compression option flags (COMPRESS_ZIP, COMPRESS_ACTIVE_MASK, etc.) specifying whether and how input data is compressed or output data should be compressed.

std::string openvdb::OPENVDB_VERSION_NAME::io::getErrorString ( int  errorNum)

Return a string (possibly empty) describing the given system error code.

std::string openvdb::OPENVDB_VERSION_NAME::io::getErrorString ( )

Return a string (possibly empty) describing the most recent system error.

OPENVDB_API uint32_t openvdb::OPENVDB_VERSION_NAME::io::getFormatVersion ( std::ios_base &  )

Return the file format version number associated with the given input stream.

See Also
File::setFormatVersion()
OPENVDB_API const void* openvdb::OPENVDB_VERSION_NAME::io::getGridBackgroundValuePtr ( std::ios_base &  )

Return a pointer to the background value of the grid currently being read from or written to the given stream.

OPENVDB_API uint32_t openvdb::OPENVDB_VERSION_NAME::io::getGridClass ( std::ios_base &  )

Return the class (GRID_LEVEL_SET, GRID_UNKNOWN, etc.) of the grid currently being read from or written to the given stream.

OPENVDB_API bool openvdb::OPENVDB_VERSION_NAME::io::getHalfFloat ( std::ios_base &  )

Return true if floating-point values should be quantized to 16 bits when writing to the given stream or promoted back from 16-bit to full precision when reading from it.

OPENVDB_API VersionId openvdb::OPENVDB_VERSION_NAME::io::getLibraryVersion ( std::ios_base &  )

Return the (major, minor) library version number associated with the given input stream.

See Also
File::setLibraryVersion()
OPENVDB_API SharedPtr<StreamMetadata> openvdb::OPENVDB_VERSION_NAME::io::getStreamMetadataPtr ( std::ios_base &  )

Return a shared pointer to an object that stores metadata (file format, compression scheme, etc.) for use when reading from or writing to the given stream.

OPENVDB_API std::string openvdb::OPENVDB_VERSION_NAME::io::getVersion ( std::ios_base &  )

Return a string of the form "<major>.<minor>/<format>", giving the library and file format version numbers associated with the given input stream.

OPENVDB_API bool openvdb::OPENVDB_VERSION_NAME::io::getWriteGridStatsMetadata ( std::ios_base &  )

Return true if grid statistics (active voxel count and bounding box, etc.) should be computed and stored as grid metadata when writing to the given stream.

std::ostream& openvdb::OPENVDB_VERSION_NAME::io::operator<< ( std::ostream &  ,
const StreamMetadata &   
)

Write a description of the given metadata to an output stream.

std::ostream& openvdb::OPENVDB_VERSION_NAME::io::operator<< ( std::ostream &  ,
const StreamMetadata::AuxDataMap &   
)
template<>
void openvdb::OPENVDB_VERSION_NAME::io::readCompressedValues ( std::istream &  is,
PointDataIndex32 *  destBuf,
Index  destCount,
const util::NodeMask< 3 > &  ,
bool   
)
inline

openvdb::io::readCompressedValues specialized on PointDataIndex32 arrays to ignore the value mask, use a larger block size and use 16-bit size instead of 64-bit

Definition at line 46 of file PointDataGrid.h.

template<typename ValueT , typename MaskT >
void openvdb::OPENVDB_VERSION_NAME::io::readCompressedValues ( std::istream &  is,
ValueT *  destBuf,
Index  destCount,
const MaskT &  valueMask,
bool  fromHalf 
)
inline

Populate the given buffer with destCount values of type ValueT read from the given stream, taking into account that the stream might have been compressed via one of several supported schemes. [Mainly for internal use]

Parameters
isa stream from which to read data (possibly compressed, depending on the stream's compression settings)
destBufa buffer into which to read values of type ValueT
destCountthe number of values to be stored in the buffer
valueMaska bitmask (typically, a node's value mask) indicating which positions in the buffer correspond to active values
fromHalfif true, read 16-bit half floats from the input stream and convert them to full floats

Definition at line 465 of file Compression.h.

template<typename T >
void openvdb::OPENVDB_VERSION_NAME::io::readData ( std::istream &  is,
T *  data,
Index  count,
uint32_t  compression,
DelayedLoadMetadata *  metadata = nullptr,
size_t  metadataOffset = size_t(0) 
)
inline

Read data from a stream.

Parameters
isthe input stream
datathe contiguous array of data to read in
countthe number of elements to read in
compressionwhether and how the data is compressed (either COMPRESS_NONE, COMPRESS_ZIP, COMPRESS_ACTIVE_MASK or COMPRESS_BLOSC)
metadataoptional pointer to a DelayedLoadMetadata object that stores the size of the compressed buffer
metadataOffsetoffset into DelayedLoadMetadata, ignored if pointer is null
Exceptions
IoErrorif compression is COMPRESS_BLOSC but OpenVDB was compiled without Blosc support.

This default implementation is instantiated only for types whose size can be determined by the sizeof() operator.

Definition at line 247 of file Compression.h.

template<>
void openvdb::OPENVDB_VERSION_NAME::io::readData< std::string > ( std::istream &  is,
std::string data,
Index  count,
uint32_t  ,
DelayedLoadMetadata *  ,
size_t   
)
inline

Specialization for std::string input.

Definition at line 273 of file Compression.h.

OPENVDB_API void openvdb::OPENVDB_VERSION_NAME::io::setCurrentVersion ( std::istream &  )

Associate the current file format and library version numbers with the given input stream.

OPENVDB_API void openvdb::OPENVDB_VERSION_NAME::io::setDataCompression ( std::ios_base &  ,
uint32_t  compressionFlags 
)

Associate with the given stream a bitwise OR of compression option flags (COMPRESS_ZIP, COMPRESS_ACTIVE_MASK, etc.) specifying whether and how input data is compressed or output data should be compressed.

OPENVDB_API void openvdb::OPENVDB_VERSION_NAME::io::setGridBackgroundValuePtr ( std::ios_base &  ,
const void background 
)

Specify (a pointer to) the background value of the grid currently being read from or written to the given stream.

Note
The pointer must remain valid until the entire grid has been read or written.
OPENVDB_API void openvdb::OPENVDB_VERSION_NAME::io::setGridClass ( std::ios_base &  ,
uint32_t   
)

Associate with the given stream the class (GRID_LEVEL_SET, GRID_UNKNOWN, etc.) of the grid currently being read or written.

OPENVDB_API void openvdb::OPENVDB_VERSION_NAME::io::setHalfFloat ( std::ios_base &  ,
bool   
)

Specify whether floating-point values should be quantized to 16 bits when writing to the given stream or promoted back from 16-bit to full precision when reading from it.

OPENVDB_API void openvdb::OPENVDB_VERSION_NAME::io::setStreamMetadataPtr ( std::ios_base &  ,
SharedPtr< StreamMetadata > &  ,
bool  transfer = true 
)

Associate the given stream with (a shared pointer to) an object that stores metadata (file format, compression scheme, etc.) for use when reading from or writing to the stream.

If transfer is true, copy metadata from the object directly to the stream (for backward compatibility with older versions of the library).

Note
The shared pointer object (not just the io::StreamMetadata object to which it points) must remain valid until the file is closed.
OPENVDB_API void openvdb::OPENVDB_VERSION_NAME::io::setVersion ( std::ios_base &  ,
const VersionId &  libraryVersion,
uint32_t  fileVersion 
)

Associate specific file format and library version numbers with the given stream.

This is typically called immediately after reading a header that contains the version numbers. Data read subsequently can then be interpreted appropriately.

OPENVDB_API void openvdb::OPENVDB_VERSION_NAME::io::setWriteGridStatsMetadata ( std::ios_base &  ,
bool  writeGridStats 
)

Specify whether to compute grid statistics (active voxel count and bounding box, etc.) and store them as grid metadata when writing to the given stream.

template<typename T >
T openvdb::OPENVDB_VERSION_NAME::io::truncateRealToHalf ( const T &  val)
inline

Return the given value truncated to 16-bit float precision.

Definition at line 216 of file Compression.h.

OPENVDB_API void openvdb::OPENVDB_VERSION_NAME::io::unzipFromStream ( std::istream &  ,
char *  data,
size_t  numBytes 
)
template<>
void openvdb::OPENVDB_VERSION_NAME::io::writeCompressedValues ( std::ostream &  os,
PointDataIndex32 *  srcBuf,
Index  srcCount,
const util::NodeMask< 3 > &  ,
const util::NodeMask< 3 > &  ,
bool   
)
inline

openvdb::io::writeCompressedValues specialized on PointDataIndex32 arrays to ignore the value mask, use a larger block size and use 16-bit size instead of 64-bit

Definition at line 106 of file PointDataGrid.h.

template<typename ValueT , typename MaskT >
void openvdb::OPENVDB_VERSION_NAME::io::writeCompressedValues ( std::ostream &  os,
ValueT *  srcBuf,
Index  srcCount,
const MaskT &  valueMask,
const MaskT &  childMask,
bool  toHalf 
)
inline

Write srcCount values of type ValueT to the given stream, optionally after compressing the values via one of several supported schemes. [Mainly for internal use]

Parameters
osa stream to which to write data (possibly compressed, depending on the stream's compression settings)
srcBufa buffer containing values of type ValueT to be written
srcCountthe number of values stored in the buffer
valueMaska bitmask (typically, a node's value mask) indicating which positions in the buffer correspond to active values
childMaska bitmask (typically, a node's child mask) indicating which positions in the buffer correspond to child node pointers
toHalfif true, convert floating-point values to 16-bit half floats
Todo:
Save the selection mask as long as most of the inactive values are one of two values?

Definition at line 645 of file Compression.h.

template<typename T >
void openvdb::OPENVDB_VERSION_NAME::io::writeCompressedValuesSize ( std::ostream &  os,
const T *  srcBuf,
Index  srcCount 
)
inline

Definition at line 139 of file PointDataGrid.h.

template<typename ValueT , typename MaskT >
size_t openvdb::OPENVDB_VERSION_NAME::io::writeCompressedValuesSize ( ValueT *  srcBuf,
Index  srcCount,
const MaskT &  valueMask,
uint8_t  maskMetadata,
bool  toHalf,
uint32_t  compress 
)
inline

Definition at line 591 of file Compression.h.

template<typename T >
void openvdb::OPENVDB_VERSION_NAME::io::writeData ( std::ostream &  os,
const T *  data,
Index  count,
uint32_t  compression 
)
inline

Write data to a stream.

Parameters
osthe output stream
datathe contiguous array of data to write
countthe number of elements to write out
compressionwhether and how to compress the data (either COMPRESS_NONE, COMPRESS_ZIP, COMPRESS_ACTIVE_MASK or COMPRESS_BLOSC)
Exceptions
IoErrorif compression is COMPRESS_BLOSC but OpenVDB was compiled without Blosc support.

This default implementation is instantiated only for types whose size can be determined by the sizeof() operator.

Definition at line 363 of file Compression.h.

template<>
void openvdb::OPENVDB_VERSION_NAME::io::writeData< std::string > ( std::ostream &  os,
const std::string data,
Index  count,
uint32_t   
)
inline

Specialization for std::string output.

Definition at line 377 of file Compression.h.

template<typename T >
size_t openvdb::OPENVDB_VERSION_NAME::io::writeDataSize ( const T *  data,
Index  count,
uint32_t  compression 
)
inline

Definition at line 324 of file Compression.h.

template<>
size_t openvdb::OPENVDB_VERSION_NAME::io::writeDataSize< std::string > ( const std::string data,
Index  count,
uint32_t   
)
inline

Specialization for std::string output.

Definition at line 339 of file Compression.h.

OPENVDB_API void openvdb::OPENVDB_VERSION_NAME::io::zipToStream ( std::ostream &  ,
const char *  data,
size_t  numBytes 
)
OPENVDB_API size_t openvdb::OPENVDB_VERSION_NAME::io::zipToStreamSize ( const char *  data,
size_t  numBytes 
)