Skip to content

Commit 4f8c879

Browse files
committed
Introduce waveform-sink interface
1 parent 808a0d3 commit 4f8c879

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed

services/interfaces/waveform-sink.h

+51
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
/* SPDX-License-Identifier: GPL-3.0-or-later
2+
*
3+
* Waveform sink interface
4+
*
5+
* Copyright (c) 2025, Marek Koza (qyx@krtko.org)
6+
* All rights reserved.
7+
*/
8+
9+
#pragma once
10+
11+
#include <stdint.h>
12+
#include <stdbool.h>
13+
#include <time.h>
14+
15+
16+
typedef enum {
17+
WAVEFORM_SINK_RET_OK = 0,
18+
WAVEFORM_SINK_RET_FAILED,
19+
} waveform_sink_ret_t;
20+
21+
/* All formats are in native endianness. */
22+
enum waveform_sink_format {
23+
WAVEFORM_SINK_FORMAT_U8,
24+
WAVEFORM_SINK_FORMAT_S8,
25+
WAVEFORM_SINK_FORMAT_U16,
26+
WAVEFORM_SINK_FORMAT_S16,
27+
WAVEFORM_SINK_FORMAT_U32,
28+
WAVEFORM_SINK_FORMAT_S32,
29+
WAVEFORM_SINK_FORMAT_FLOAT,
30+
};
31+
32+
typedef struct waveform_sink WaveformSink;
33+
struct waveform_sink_vmt {
34+
waveform_sink_ret_t (*start)(WaveformSink *self);
35+
waveform_sink_ret_t (*stop)(WaveformSink *self);
36+
waveform_sink_ret_t (*write)(WaveformSink *self, void *data, size_t sample_count);
37+
waveform_sink_ret_t (*set_format)(WaveformSink *self, enum waveform_sink_format format, uint32_t channels);
38+
waveform_sink_ret_t (*get_format)(WaveformSink *self, enum waveform_sink_format *format, uint32_t *channels);
39+
waveform_sink_ret_t (*set_sample_rate)(WaveformSink *self, float sample_rate_Hz);
40+
waveform_sink_ret_t (*get_sample_rate)(WaveformSink *self, float *sample_rate_Hz);
41+
};
42+
43+
typedef struct waveform_sink {
44+
const struct waveform_sink_vmt *vmt;
45+
void *parent;
46+
} WaveformSink;
47+
48+
49+
50+
51+

0 commit comments

Comments
 (0)