![]() |
VRS
A file format for sensor data.
|
DataLayout definitions use to describe what's in an image content block. More...
#include <DataLayoutConventions.h>
Public Member Functions | |
ContentBlock | getImageContentBlock (const ImageContentBlockSpec &base, size_t blockSize=ContentBlock::kSizeUnknown) |
![]() | |
DataLayout & | operator= (const DataLayout &)=delete |
DataLayout (const DataLayout &)=delete | |
virtual | ~DataLayout () |
ContentBlock | getContentBlock () const |
vector< int8_t > & | getFixedData () |
vector< int8_t > & | getVarData () |
size_t | getFixedDataSizeNeeded () const |
size_t | getVarDataSizeFromIndex () const |
size_t | getVarDataSizeNeeded () const |
void | collectVariableDataAndUpdateIndex () |
void | collectVariableDataAndUpdateIndex (void *destination) |
void | getRawData (vector< int8_t > &outRawData) const |
void | stageCurrentValues () |
bool | copyClonedDataPieceValues (const DataLayout &originalLayout) |
bool | mapLayout (DataLayout &targetLayout) |
bool | isMapped () const |
bool | hasAllRequiredPieces () const |
void | requireAllPieces () |
Mark all the fields of the layout as required. | |
void | printLayout (ostream &out, const string &indent="") const |
void | printLayoutCompact (ostream &out, const string &indent="") const |
string | asJson (JsonFormatProfile profile) const |
string | asJson (const JsonFormatProfileSpec &profile=JsonFormatProfileSpec()) const |
string | getListOfPiecesSpec () const |
Get a text list of fields, types & names, one per line. Useful for tests. | |
bool | isSame (const DataLayout &otherLayout) const |
template<class T > | |
const DataPieceValue< T > * | findDataPieceValue (const string &label) const |
template<class T > | |
DataPieceValue< T > * | findDataPieceValue (const string &label) |
template<class T > | |
const DataPieceArray< T > * | findDataPieceArray (const string &label, size_t arraySize) const |
template<class T > | |
DataPieceArray< T > * | findDataPieceArray (const string &label, size_t arraySize) |
template<class T > | |
const DataPieceVector< T > * | findDataPieceVector (const string &label) const |
template<class T > | |
DataPieceVector< T > * | findDataPieceVector (const string &label) |
template<class T > | |
const DataPieceStringMap< T > * | findDataPieceStringMap (const string &label) const |
template<class T > | |
DataPieceStringMap< T > * | findDataPieceStringMap (const string &label) |
const DataPieceString * | findDataPieceString (const string &label) const |
DataPieceString * | findDataPieceString (const string &label) |
void | forEachDataPiece (const std::function< void(const DataPiece *)> &, DataPieceType type=DataPieceType::Undefined) const |
void | forEachDataPiece (const std::function< void(DataPiece *)> &, DataPieceType type=DataPieceType::Undefined) |
Same as above, but as a non-const version. | |
bool | isVarDataIndexValid () const |
size_t | getDeclaredFixedDataPiecesCount () const |
size_t | getDeclaredVarDataPiecesCount () const |
size_t | getAvailableFixedDataPiecesCount () const |
size_t | getAvailableVarDataPiecesCount () const |
Public Attributes | |
DataPieceValue< ImageSpecType > | width {kImageWidth} |
DataPieceValue< ImageSpecType > | height {kImageHeight} |
DataPieceValue< ImageSpecType > | stride {kImageStride} |
DataPieceValue< ImageSpecType > | stride2 {kImageStride2} |
DataPieceEnum< PixelFormat, ImageSpecType > | pixelFormat {kImagePixelFormat} |
DataPieceString | codecName {kImageCodecName} |
DataPieceValue< ImageSpecType > | codecQuality {kImageCodecQuality} |
DataPieceValue< ImageSpecType > | bytesPerPixels {kImageBytesPerPixel} |
DataPieceValue< uint8_t > | bytesPerPixels8 {kImageBytesPerPixel} |
AutoDataLayoutEnd | end |
Additional Inherited Members | |
![]() | |
static unique_ptr< DataLayout > | makeFromJson (const string &json) |
![]() | |
static const size_t | kNotFound = numeric_limits<size_t>::max() |
Special OffsetAndLength offset value marking that a piece of data isn't available. | |
static const size_t | kVariableSize = numeric_limits<size_t>::max() - 1 |
Special value used for a DataPiece size, telling that that DataPiece has a variable size. | |
![]() | |
template<class T > | |
T * | getFixedData (size_t offset, size_t size) |
const IndexEntry * | getVarSizeIndex () const |
IndexEntry * | getVarSizeIndex () |
template<class T > | |
T * | getVarData (size_t varPieceIndex, size_t &outCount) |
void | initLayout () |
void | serialize (JsonWrapper &rj, const JsonFormatProfileSpec &profile) const |
![]() | |
static bool | mapPieces (const vector< DataPiece * > &searchPieces, const vector< DataPiece * > &givenPieces) |
![]() | |
vector< DataPiece * > | fixedSizePieces_ |
Ordered fixed-size DataPieces. | |
vector< DataPiece * > | varSizePieces_ |
Ordered variable-size DataPieces. | |
vector< int8_t > | fixedData_ |
Buffer to hold fixed-size pieces, and the index of var size pieces (if any). | |
size_t | fixedDataSizeNeeded_ {} |
Byte count for all the fixed size pieces + var size index. | |
vector< int8_t > | varData_ |
Buffer holding variable-size pieces, after they've been collected, or read from disk. | |
bool | hasAllRequiredPieces_ {true} |
Tells all the required pieces have been mapped successfully. | |
DataLayout * | mappedDataLayout_ {} |
DataLayout this layout has been mapped to, if any. | |
DataLayout definitions use to describe what's in an image content block.
These names and types are a convention that enables us to find image block spec within a DataLayout block, which is either before the image content block in the same record, or in the last Configuration record. Note that once a configuration location is found, the next time around, the same location will be used again. Since RecordFormats are static for a single record, this won't create any surprise, but if you use different configuration record formats, this might make the search fail (the last record doesn't include the spec), or return the values for a record that is no longer the last one, though it is guarantied to be the last one of that format.
Note that the values used are not static, so that if the configuration changes, the latest value is used, without having to search each time we have a new image block.
ContentBlock vrs::datalayout_conventions::ImageSpec::getImageContentBlock | ( | const ImageContentBlockSpec & | base, |
size_t | blockSize = ContentBlock::kSizeUnknown |
||
) |
Helper method to determine the image content block based on available values. Will interpret legacy specifications, when a pixel format wasn't specified. imageFormat: image format expected, RAW or VIDEO. blockSize: content block size, required for VIDEO blocks. return An image content type on success, or an empty content block on failure.