summaryrefslogtreecommitdiff
path: root/src/buffer/peak_buffer.c
blob: 854595a9a8dd4e1d5be262e8c17f6e952cc64d93 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include "peak_buffer.h"

// https://github.com/MusicPlayerDaemon/MPD/blob/c71e586c530e1d066efde7c2ca40c363f74100c7/src/util/PeakBuffer.cxx

// We use ptrdiff_t here instead of nn_buffer's size_t just to map better to the types in audio_buffer.

void camu_peak_buffer_init(struct camu_peak_buffer *peak, ptrdiff_t size)
{
    nn_buffer_init(&peak->buffer);
    nn_buffer_ensure_space(&peak->buffer, (size_t)size);
}

void camu_peak_buffer_push(struct camu_peak_buffer *peak, u8 *data, ptrdiff_t size)
{
    nn_buffer_append(&peak->buffer, data, (size_t)size);
}

ptrdiff_t camu_peak_buffer_get_size(struct camu_peak_buffer *peak)
{
    return (ptrdiff_t)peak->buffer.size;
}

u8 *camu_peak_buffer_flush(struct camu_peak_buffer *peak)
{
    peak->buffer.size = 0;
    return nn_buffer_get_ptr(&peak->buffer, 0);
}

void camu_peak_buffer_free(struct camu_peak_buffer *peak)
{
    nn_buffer_free(&peak->buffer);
}