Skip to content

Clarification serialization of Waveform Data Packets #114

@AlienRenders

Description

@AlienRenders

In section 5.1, it is unclear how waveform data that is not a multiple of 8 or 16 bits is to be stored.

How is data to be stored? If it's 2 bits, do we store 2 bits per byte? Or 4 samples per byte with all 8 bits? And for 3 bits, it would still use all bits and wrap around to the next byte.

Is it ok to just specify 8bits and only store 2 bits per bytes?

Basically, I have 10bit data. Do I just store the low 10bits in pairs of bytes and specify 16bits in the packet descriptor? Or is a reader supposed to round up to the next multiple of 8? Or am I supposed to store 10 in the packet descriptor and "bit pack" the waveform data? So for the second sample, I'd use the high 6 bits as the low bits of the second sample. The high bits of the sample would go into the low 4 bits of the next byte and so on?

Which of these is correct:

  1. Packet descriptor has 10 for bits per sample. Stored as 10bits in each pair of bytes.
  2. Packet descriptor has 10 for bits per sample. Stored as packed bits. Every 40bits (5 bytes) stores 4 samples.
  3. Packet descriptor has 16 for bits per sample. Stored as 10bits in each pair of bytes.

Some software give warnings if not using 8 or 16 bits per sample.

I know option 3 works. Readers don't care if high bits are zero. Everything goes through the gain and offset anyways. So this is likely what we're going to do. Bit packing would make the file smaller but many software packages don't like non multiples of 8.

Just some clarification and maybe a small example in section 5.1 would be nice.

Also, while I know using option 3 will work, I need to know what the specs actually say because we have our own reader/writer that is used by many people and we'd like to support the LAS specs fully.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions