Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

modules/zstd: Add sequence decoding #1362

Draft
wants to merge 53 commits into
base: main
Choose a base branch
from
Draft

Conversation

rw1nkler
Copy link
Contributor

@rw1nkler rw1nkler commented Mar 28, 2024

This PR is meant to provide a proc implementing sequence section decoding as described in:
https://datatracker.ietf.org/doc/html/rfc8878#section-3.1.1.3.2

NOTE: this is based on #1214, please ignore commits from that branch when reviewing.

@rw1nkler rw1nkler force-pushed the 55149-fse branch 2 times, most recently from f2a9d34 to c8465a5 Compare March 29, 2024 15:31
@proppy
Copy link
Member

proppy commented Apr 3, 2024

is it independent from #1315 or should they be reviewed together?

@rw1nkler rw1nkler force-pushed the 55149-fse branch 2 times, most recently from f30c47b to 6c3b033 Compare April 4, 2024 14:09
@rw1nkler
Copy link
Contributor Author

rw1nkler commented Apr 4, 2024

is it independent from #1315 or should they be reviewed together?

We agreed that this should be reviewed as an independent PR after merging #1315

@rw1nkler rw1nkler changed the title modules/zstd: Add FSE decoding modules/zstd: Add sequence decoding May 24, 2024
rw1nkler and others added 20 commits July 24, 2024 14:58
This commit adds a DSLX Buffer library that provides the Buffer struct,
and helper functions that can be used to operate on it. The Buffer
is meant to be a storage for data coming from the channel. It acts like
a FIFO, allowing data of any length to be put in or popped out of it.
Provided DSLX tests verify the correct behaviour of the library.

Internal-tag: [#50221]
Signed-off-by: Robert Winkler <[email protected]>
This commit adds a simple test that shows, how one can use the Buffer
struct inside a Proc.

Internal-tag: [#50221]
Signed-off-by: Robert Winkler <[email protected]>
This commit adds the library with functions for parsing a magic number and
tests that verify its correctness.

Internal-tag: [#50221]
Signed-off-by: Robert Winkler <[email protected]>
This commit adds the library with functions for parsing a frame header.
The provided tests verify the correcness of the library.

Internal-tag: [#49967]
Co-authored-by: Roman Dobrodii <[email protected]>
Co-authored-by: Pawel Czarnecki <[email protected]>
Signed-off-by: Robert Winkler <[email protected]>
Signed-off-by: Pawel Czarnecki <[email protected]>
Required for expected_status inference in C++ tests for ZSTD decoder
components

Internal-tag: [#53465]
Signed-off-by: Pawel Czarnecki <[email protected]>
Internal-tag: [#50967]
Signed-off-by: Robert Winkler <[email protected]>
This commit adds a binary that calls decoding to generate data and loads
it into a vector of bytes.

Internal-tag: [#50967]
Signed-off-by: Robert Winkler <[email protected]>
Internal-tag: [#50967]
Co-authored-by: Pawel Czarnecki <[email protected]>
Signed-off-by: Robert Winkler <[email protected]>
Signed-off-by: Pawel Czarnecki <[email protected]>
Internal-tag: [#51343]
Signed-off-by: Robert Winkler <[email protected]>
Internal-tag: [#51343]
Signed-off-by: Robert Winkler <[email protected]>
Adds RleBlockDecoder responsible for decoding Blocks
of RLE_Block Block_Type as specified in RFC 8878, paragraph 3.1.1.2.2.
https://datatracker.ietf.org/doc/html/rfc8878#section-3.1.1.2.2

RleBlockDecoder communicates through BlockDataPacket channels.
It reuses existing RunLengthDecoder block which is interfaced through
two seprate procs:

 * RleDataPacker
 * BatchPacker

Which are responsible for converting input data into format accepted by
RLE decoder and for gathering RLE decoder output symbols into batches
which are then send out through BlockDataPacket.

Internal-tag: [#51473]
Signed-off-by: Pawel Czarnecki <[email protected]>
Internal-tag: [#51343]
Signed-off-by: Robert Winkler <[email protected]>
This commit adds DecoderMux Proc, which collects data from specialized
Raw, RLE, and Compressed Block decoders and re-sends them in the correct order.

Internal-tag: [#51343]
Signed-off-by: Robert Winkler <[email protected]>
This DSLX proc responsibility is to dispatch encoded blocks to a correct
decoder: RAW, RLE, COMPRESSED.

It tracks and assigns block IDs.
The ID counter is reset on the frame's last block on the last data packet.

Internal-tag: [#51736]
Co-authored-by: Robert Winkler <[email protected]>
Signed-off-by: Maciej Dudek <[email protected]>
This adds a decoder of block data. It decodes block header and
demuxes remaining input data into one of specific block decoders
depending on the type of the parsed block. Then it muxes outputs
from those decoders into single output channel.

Internal-tag: [#51873]
Signed-off-by: Pawel Czarnecki <[email protected]>
Internal-tag: [#52954]
Signed-off-by: Pawel Czarnecki <[email protected]>
This commit marks SimultaneousReadWriteBehavior enum and
num_partitions function as public to allow for creating
simpler tests that interact with RAM models.

Internal-tag: [#53241]
Signed-off-by: Robert Winkler <[email protected]>
Internal-tag: [#54705]
Signed-off-by: Robert Winkler <[email protected]>
This commit adds RAM printer block usefull for debugging
HistoryBuffer inside SequenceExecutor.

Internal-tag: [#54705]
Signed-off-by: Robert Winkler <[email protected]>
lpawelcz and others added 28 commits July 24, 2024 15:29
Internal-tag: [#52186]
Signed-off-by: Pawel Czarnecki <[email protected]>
Internal-tag: [#52186]
Signed-off-by: Pawel Czarnecki <[email protected]>
Internal-tag: [#52186]
Signed-off-by: Pawel Czarnecki <[email protected]>
Internal-tag: [#52186]
Signed-off-by: Pawel Czarnecki <[email protected]>
Internal-tag: [#52186]
Signed-off-by: Pawel Czarnecki <[email protected]>
Internal-tag: [#52186]
Signed-off-by: Pawel Czarnecki <[email protected]>
Internal-tag: [#52186]
Signed-off-by: Pawel Czarnecki <[email protected]>
Internal-tag: [#52186]
Signed-off-by: Pawel Czarnecki <[email protected]>
Internal-tag: [#52186]
Signed-off-by: Pawel Czarnecki <[email protected]>
Internal-tag: [#52186]
Signed-off-by: Pawel Czarnecki <[email protected]>
Internal-tag: [#60906]
Signed-off-by: Pawel Czarnecki <[email protected]>
…coder

Internal-tag: [#60906]
Signed-off-by: Pawel Czarnecki <[email protected]>
Internal-tag: [#60906]
Signed-off-by: Pawel Czarnecki <[email protected]>
Internal-tag: [#52186]
Signed-off-by: Pawel Czarnecki <[email protected]>
Signed-off-by: Pawel Czarnecki <[email protected]>
Signed-off-by: Maciej Dudek <[email protected]>
Add a buffering proc that implements the desired API of the final buffering mechanism.
A more efficient implementation will be provided later.

Internal-tag: [#55149]
Signed-off-by: Robert Winkler <[email protected]>
Internal-tag: [#57353]
Signed-off-by: Robert Winkler <[email protected]>
Internal-tag: [#57353]
Signed-off-by: Robert Winkler <[email protected]>
Internal-tag: [#57353]
Signed-off-by: Robert Winkler <[email protected]>
Internal-tag: [#58422]
Signed-off-by: Ryszard Rozak <[email protected]>
Internal-tag: [#58557]
Co-authored-by: Ryszard Rozak <[email protected]>
Co-authored-by: Maciej Torhan <[email protected]>
Signed-off-by: Robert Winkler <[email protected]>
Internal-tag: [#57353]
Signed-off-by: Robert Winkler <[email protected]>
Signed-off-by: Maciej Torhan <[email protected]>
@proppy
Copy link
Member

proppy commented Aug 19, 2024

should this be rebased now that #1315 has been merged?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants