ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
e57::BitpackEncoder Class Referenceabstract

#include <Encoder.h>

Inheritance diagram for e57::BitpackEncoder:
Collaboration diagram for e57::BitpackEncoder:

Public Member Functions

uint64_t processRecords (size_t recordCount) override=0
 
unsigned sourceBufferNextIndex () override
 
uint64_t currentRecordIndex () override
 
float bitsPerRecord () override=0
 
bool registerFlushToOutput () override=0
 
size_t outputAvailable () const override
 
void outputRead (char *dest, const size_t byteCount) override
 number of bytes that can be read More...
 
void outputClear () override
 get data from encoder More...
 
void sourceBufferSetNew (std::vector< SourceDestBuffer > &sbufs) override
 
size_t outputGetMaxSize () override
 
void outputSetMaxSize (unsigned byteCount) override
 
void dump (int indent=0, std::ostream &os=std::cout) const override
 
- Public Member Functions inherited from e57::Encoder
virtual ~Encoder ()=default
 
unsigned bytestreamNumber () const
 

Protected Member Functions

 BitpackEncoder (unsigned bytestreamNumber, SourceDestBuffer &sbuf, unsigned outputMaxSize, unsigned alignmentSize)
 ================ More...
 
void outBufferShiftDown ()
 
- Protected Member Functions inherited from e57::Encoder
 Encoder (unsigned bytestreamNumber)
 

Protected Attributes

std::shared_ptr< SourceDestBufferImplsourceBuffer_
 
std::vector< char > outBuffer_
 
size_t outBufferFirst_
 
size_t outBufferEnd_
 
size_t outBufferAlignmentSize_
 
uint64_t currentRecordIndex_
 
- Protected Attributes inherited from e57::Encoder
unsigned bytestreamNumber_
 

Additional Inherited Members

- Static Public Member Functions inherited from e57::Encoder
static std::shared_ptr< EncoderEncoderFactory (unsigned bytestreamNumber, std::shared_ptr< CompressedVectorNodeImpl > cVector, std::vector< SourceDestBuffer > &sbuf, ustring &codecPath)
 

Detailed Description

Definition at line 71 of file Encoder.h.

Constructor & Destructor Documentation

◆ BitpackEncoder()

BitpackEncoder::BitpackEncoder ( unsigned  bytestreamNumber,
SourceDestBuffer sbuf,
unsigned  outputMaxSize,
unsigned  alignmentSize 
)
protected

================

Definition at line 204 of file Encoder.cpp.

Member Function Documentation

◆ bitsPerRecord()

float e57::BitpackEncoder::bitsPerRecord ( )
overridepure virtual

◆ currentRecordIndex()

uint64_t BitpackEncoder::currentRecordIndex ( )
overridevirtual

Implements e57::Encoder.

Definition at line 216 of file Encoder.cpp.

References currentRecordIndex_.

◆ dump()

◆ outBufferShiftDown()

void BitpackEncoder::outBufferShiftDown ( )
protected

Move data down closer to beginning of outBuffer_. But keep outBufferEnd_ as a multiple of outBufferAlignmentSize_. This ensures that writes into buffer can occur on natural boundaries. Otherwise some CPUs will fault.

Buffer is empty, reset indices to 0

Round newEnd up to nearest multiple of outBufferAlignmentSize_.

Double check round up worked

Be paranoid before memory copy

Move available data down closer to beginning of outBuffer_. Overlapping regions ok with memmove().

Update indexes

Definition at line 298 of file Encoder.cpp.

References e57::E57_ERROR_INTERNAL, E57_EXCEPTION2, outBuffer_, outBufferAlignmentSize_, outBufferEnd_, outBufferFirst_, outputAvailable(), and e57::toString().

Referenced by e57::BitpackFloatEncoder::processRecords(), and e57::BitpackStringEncoder::processRecords().

◆ outputAvailable()

size_t BitpackEncoder::outputAvailable ( ) const
overridevirtual

Implements e57::Encoder.

Definition at line 221 of file Encoder.cpp.

References outBufferEnd_, and outBufferFirst_.

Referenced by outBufferShiftDown(), and outputRead().

◆ outputClear()

void BitpackEncoder::outputClear ( )
overridevirtual

get data from encoder

Implements e57::Encoder.

Definition at line 266 of file Encoder.cpp.

References outBufferEnd_, and outBufferFirst_.

◆ outputGetMaxSize()

size_t BitpackEncoder::outputGetMaxSize ( )
overridevirtual

Its size that matters here, not capacity

Implements e57::Encoder.

Definition at line 283 of file Encoder.cpp.

References outBuffer_.

◆ outputRead()

void BitpackEncoder::outputRead ( char *  dest,
const size_t  byteCount 
)
overridevirtual

number of bytes that can be read

Check we have enough bytes in queue

Copy output bytes to caller

Advance head pointer.

Don't slide remaining data down now, wait until do some more processing (that's when data needs to be aligned).

Implements e57::Encoder.

Definition at line 226 of file Encoder.cpp.

References e57::E57_ERROR_INTERNAL, E57_EXCEPTION2, QtCompat::endl(), outBuffer_, outBufferFirst_, outputAvailable(), and e57::toString().

◆ outputSetMaxSize()

void BitpackEncoder::outputSetMaxSize ( unsigned  byteCount)
overridevirtual

Ignore if trying to shrink buffer (queue might get messed up).

Implements e57::Encoder.

Definition at line 289 of file Encoder.cpp.

References outBuffer_.

◆ processRecords()

uint64_t e57::BitpackEncoder::processRecords ( size_t  recordCount)
overridepure virtual

◆ registerFlushToOutput()

bool e57::BitpackEncoder::registerFlushToOutput ( )
overridepure virtual

◆ sourceBufferNextIndex()

unsigned BitpackEncoder::sourceBufferNextIndex ( )
overridevirtual

Implements e57::Encoder.

Definition at line 211 of file Encoder.cpp.

References sourceBuffer_.

◆ sourceBufferSetNew()

void BitpackEncoder::sourceBufferSetNew ( std::vector< SourceDestBuffer > &  sbufs)
overridevirtual

Verify that this encoder only has single input buffer

Implements e57::Encoder.

Definition at line 272 of file Encoder.cpp.

References e57::E57_ERROR_INTERNAL, E57_EXCEPTION2, sourceBuffer_, and e57::toString().

Member Data Documentation

◆ currentRecordIndex_

uint64_t e57::BitpackEncoder::currentRecordIndex_
protected

◆ outBuffer_

std::vector<char> e57::BitpackEncoder::outBuffer_
protected

◆ outBufferAlignmentSize_

size_t e57::BitpackEncoder::outBufferAlignmentSize_
protected

Definition at line 103 of file Encoder.h.

Referenced by dump(), and outBufferShiftDown().

◆ outBufferEnd_

size_t e57::BitpackEncoder::outBufferEnd_
protected

◆ outBufferFirst_

size_t e57::BitpackEncoder::outBufferFirst_
protected

Definition at line 101 of file Encoder.h.

Referenced by dump(), outBufferShiftDown(), outputAvailable(), outputClear(), and outputRead().

◆ sourceBuffer_

std::shared_ptr<SourceDestBufferImpl> e57::BitpackEncoder::sourceBuffer_
protected

The documentation for this class was generated from the following files: