![]() |
VRS
A file format for sensor data.
|
Specialized StreamPlayer designed to handle records which format is managed by RecordFormat, which are a succession of typed content blocks described by ContentBlock objects. More...
#include <RecordFormatStreamPlayer.h>
Public Member Functions | |
virtual bool | onDataLayoutRead (const CurrentRecord &record, size_t, DataLayout &) |
virtual bool | onImageRead (const CurrentRecord &record, size_t blockIndex, const ContentBlock &cb) |
virtual bool | onAudioRead (const CurrentRecord &record, size_t blockIndex, const ContentBlock &cb) |
virtual bool | onCustomBlockRead (const CurrentRecord &rec, size_t blkIdx, const ContentBlock &cb) |
virtual bool | onUnsupportedBlock (const CurrentRecord &rec, size_t blkIdx, const ContentBlock &cb) |
void | onAttachedToFileReader (RecordFileReader &recordFileReader, StreamId streamId) override |
bool | processRecordHeader (const CurrentRecord &record, DataReference &outDataReference) override |
void | processRecord (const CurrentRecord &record, uint32_t readSize) override |
RecordFormatReader * | getLastRecordFormatReader (StreamId id, Record::Type recordType) const |
RecordFormatReader * | getCurrentRecordFormatReader () const |
![]() | |
virtual bool | processStateHeader (const CurrentRecord &, DataReference &) |
virtual void | processState (const CurrentRecord &, uint32_t) |
virtual bool | processConfigurationHeader (const CurrentRecord &, DataReference &) |
virtual void | processConfiguration (const CurrentRecord &, uint32_t) |
virtual bool | processDataHeader (const CurrentRecord &, DataReference &) |
virtual void | processData (const CurrentRecord &, uint32_t) |
virtual int | recordReadComplete (RecordFileReader &, const IndexRecord::RecordInfo &) |
virtual void | flush () |
Protected Member Functions | |
template<class T > | |
T & | getExpectedLayout (DataLayout &layout, size_t blockIndex) |
template<class T > | |
T & | getLegacyLayout (DataLayout &layout, size_t blockIndex) |
template<class T > | |
T & | getCachedLayout (vector< unique_ptr< DataLayout > > &layoutCache, DataLayout &layout, size_t blockIndex) |
Protected Attributes | |
RecordFileReader * | recordFileReader_ {} |
map< tuple< StreamId, Record::Type, uint32_t >, RecordFormatReader > | readers_ |
map< pair< StreamId, Record::Type >, RecordFormatReader * > | lastReader_ |
RecordFormatReader * | currentReader_ {} |
Specialized StreamPlayer designed to handle records which format is managed by RecordFormat, which are a succession of typed content blocks described by ContentBlock objects.
For each of the record's content blocks a specific callback will be called depending on the type of content block. The content blocks are decoded in order, until they are all read, some decoding error occurred, or a callback returns false. The block's index is passed in case you need to disambiguate successive blocks of the same type, or need to know when a new block is started.
|
inline |
For RecordFormatStreamPlayer internal use.
RecordFormatReader * vrs::RecordFormatStreamPlayer::getLastRecordFormatReader | ( | StreamId | id, |
Record::Type | recordType | ||
) | const |
For RecordFormatStreamPlayer internal use.
|
overridevirtual |
Callback called when the object is attached to a RecordFileReader object, so that this object can initialize itself. For RecordFormatStreamPlayer internal use. Do not prevent this initialization, or the record won't be read correctly.
recordFileReader | Record file reader this stream player was just attached to. |
streamId | StreamId of the stream of records this stream player is associated with. |
Reimplemented from vrs::StreamPlayer.
|
inlinevirtual |
Callback for audio content blocks. The ContentBlock object 'cb' describes the audio content block, but the content block's data has not been read yet. Query the ContentBlock object to know the details about the audio data and the content block's size. Then you can allocate or reuse a buffer, and call record.reader->read() to read the content block's data in that buffer.
record | Metadata associated with the record being read. |
blockIndex | Index of the content block being read. |
cb | ContentBlock describing the audio data to be read. |
Reimplemented in vrs_sample_apps::AudioStreamPlayer.
|
inlinevirtual |
Callback for custom content blocks. The ContentBlock object 'cb' describes the custom content block, but the content block's data has not been read yet. Query the ContentBlock object to know the details about the custom data and the content block's size. Then you can allocate or reuse a buffer, and call record.reader->read() to read the content block's data in that buffer.
rec | Metadata associated with the record being read. |
blkIdx | Index of the content block being read. |
cb | ContentBlock describing the data to be read. |
|
inlinevirtual |
Callback for DataLayout content blocks, after it was read.
record | Metadata associated with the record being read. |
blockIndex | Index of the content block being read. |
dl | DataLayout read. |
Reimplemented in vrs::TagsRecordPlayer, vrs_sample_apps::ImageStreamPlayer, and vrs_sample_apps::MotionStreamPlayer.
|
inlinevirtual |
Callback for image content blocks. The ContentBlock object 'cb' describes the image content block, but the content block's data has not been read yet. Query the ContentBlock object to know the details about the image and the content block's size. Then you can allocate or reuse a buffer, and call record.reader->read() to read the content block's data in that buffer. Depending on cb.image().getImageFormat(), the content block's data will be: ImageFormat::RAW: raw pixel buffer data, in the format specified by cb.image.getPixelFormat(). ImageFormat::JPG: JPG data, as it found in a regular .jpg file. ImageFormat::PNG: PNG data, as it found in a regular .png file. ImageFormat::VIDEO: compressed data, as generated by the video codec cb.image.getCodecName(). Preferably, use a VideoRecordFormatStreamPlayer object to decode such records.
record | Metadata associated with the record being read. |
blockIndex | Index of the content block being read. |
cb | ContentBlock describing the image data to be read. |
Reimplemented in vrs_sample_apps::ImageStreamPlayer.
|
virtual |
Callback for unsupported or unrecognized content blocks. If the size of a content block can't be determined, and the content block can not be decoded safely, this callback is called instead of any of the preceding callbacks. This callback is also called when the other callbacks aren't implemented.
rec | Metadata associated with the record being read. |
blkIdx | Index of the block being read. |
cb | ContentBlock describing the data to be read. |
|
overridevirtual |
Callback called when a record is read. For RecordFormatStreamPlayer internal use.
Reimplemented from vrs::StreamPlayer.
|
overridevirtual |
Callback called when a record is read. For RecordFormatStreamPlayer internal use.
Reimplemented from vrs::StreamPlayer.