#define DATA_FITS(sb, len) ((sb)->region.buf_offset + (len) <= (sb)->region.buf_size)
-StreamingBufferSegment *StreamingBufferAppendRaw(StreamingBuffer *sb,
- const StreamingBufferConfig *cfg, const uint8_t *data, uint32_t data_len)
-{
- if (sb->region.buf == NULL) {
- if (InitBuffer(sb, cfg) == -1)
- return NULL;
- }
-
- if (!DATA_FITS(sb, data_len)) {
- if (sb->region.buf_size == 0) {
- if (GrowToSize(sb, cfg, data_len) != 0)
- return NULL;
- } else {
- if (GrowToSize(sb, cfg, sb->region.buf_offset + data_len) != 0)
- return NULL;
- }
- }
- DEBUG_VALIDATE_BUG_ON(!DATA_FITS(sb, data_len));
-
- StreamingBufferSegment *seg = CALLOC(cfg, 1, sizeof(StreamingBufferSegment));
- if (seg != NULL) {
- memcpy(sb->region.buf + sb->region.buf_offset, data, data_len);
- seg->stream_offset = sb->region.stream_offset + sb->region.buf_offset;
- seg->segment_len = data_len;
- uint32_t rel_offset = sb->region.buf_offset;
- sb->region.buf_offset += data_len;
-
- if (!RB_EMPTY(&sb->sbb_tree)) {
- SBBUpdate(sb, cfg, &sb->region, rel_offset, data_len);
- }
- return seg;
- }
- return NULL;
-}
-
int StreamingBufferAppend(StreamingBuffer *sb, const StreamingBufferConfig *cfg,
StreamingBufferSegment *seg, const uint8_t *data, uint32_t data_len)
{
void StreamingBufferSlideToOffset(
StreamingBuffer *sb, const StreamingBufferConfig *cfg, uint64_t offset);
-StreamingBufferSegment *StreamingBufferAppendRaw(StreamingBuffer *sb,
- const StreamingBufferConfig *cfg, const uint8_t *data, uint32_t data_len) WARN_UNUSED;
int StreamingBufferAppend(StreamingBuffer *sb, const StreamingBufferConfig *cfg,
StreamingBufferSegment *seg, const uint8_t *data, uint32_t data_len) WARN_UNUSED;
int StreamingBufferAppendNoTrack(StreamingBuffer *sb, const StreamingBufferConfig *cfg,