Skip to content

Commit bc62f12

Browse files
committed
aplay/sdi: do not require the callbacks
needlessly overengineered - the called item is always a display
1 parent d121aac commit bc62f12

3 files changed

Lines changed: 16 additions & 39 deletions

File tree

src/audio/audio.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -393,9 +393,7 @@ audio_init_real(struct state_audio *s, const struct audio_options *opt,
393393
if (playback_is_sdi) {
394394
auto *sdi_playback = (struct state_sdi_playback *)
395395
audio_playback_get_state_pointer(s->audio_playback_device);
396-
sdi_register_display_callbacks(
397-
sdi_playback, opt->display, display_put_audio_frame,
398-
display_reconfigure_audio, display_ctl_property);
396+
sdi_register_display(sdi_playback, opt->display);
399397
}
400398

401399
if (s->audio_tx_mode != 0) {

src/audio/playback/sdi.c

Lines changed: 13 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343

4444
#include "audio/types.h" // for audio_desc, audio_frame (ptr only)
4545
#include "audio/audio_playback.h"
46+
#include "compat/c23.h"
4647
#include "debug.h"
4748
#include "host.h" // for INIT_NOERR
4849
#include "lib_common.h"
@@ -51,10 +52,6 @@
5152

5253
struct state_sdi_playback {
5354
struct display *display;
54-
void (*put_callback)(struct display *, const struct audio_frame *);
55-
bool (*reconfigure_callback)(struct display *state, int quant_samples,
56-
int channels, int sample_rate);
57-
bool (*get_property_callback)(struct display *, int, void *, size_t *);
5855
};
5956

6057
static void audio_play_sdi_probe_common(struct device_info **available_devices, int *count,
@@ -106,39 +103,30 @@ audio_play_sdi_init(const struct audio_playback_opts *opts)
106103
audio_play_sdi_help("analog");
107104
return INIT_NOERR;
108105
}
109-
struct state_sdi_playback *s = malloc(sizeof(struct state_sdi_playback));
110-
s->put_callback = NULL;
111-
s->reconfigure_callback = NULL;
106+
struct state_sdi_playback *s = calloc(1, sizeof *s);
112107
return s;
113108
}
114109

115110
void
116-
sdi_register_display_callbacks(
117-
void *state, struct display *display,
118-
void (*putf)(struct display *, const struct audio_frame *),
119-
bool (*reconfigure)(struct display *, int, int, int),
120-
bool (*get_property)(struct display *, int, void *, size_t *))
111+
sdi_register_display(void *state, struct display *display)
121112
{
122113
struct state_sdi_playback *s = state;
123-
124-
s->display = display;
125-
s->put_callback = putf;
126-
s->reconfigure_callback = reconfigure;
127-
s->get_property_callback = get_property;
114+
s->display = display;
128115
}
129116

130117
static void audio_play_sdi_put_frame(void *state, const struct audio_frame *frame)
131118
{
132-
struct state_sdi_playback *s;
133-
s = (struct state_sdi_playback *) state;
119+
struct state_sdi_playback *s = state;
134120

135-
if(s->put_callback)
136-
s->put_callback(s->display, frame);
121+
if (s->display) {
122+
display_put_audio_frame(s->display, frame);
123+
}
137124
}
138125

139126
static bool audio_play_sdi_query_format(struct state_sdi_playback *s, void *data, size_t *len)
140127
{
141-
if (s->get_property_callback(s->display, DISPLAY_PROPERTY_AUDIO_FORMAT, data, len)) {
128+
if (display_ctl_property(s->display, DISPLAY_PROPERTY_AUDIO_FORMAT,
129+
data, len)) {
142130
return true;
143131
}
144132
log_msg(LOG_LEVEL_WARNING,
@@ -167,9 +155,9 @@ static bool audio_play_sdi_reconfigure(void *state, struct audio_desc desc)
167155
{
168156
struct state_sdi_playback *s = state;
169157

170-
if(s->reconfigure_callback) {
171-
return s->reconfigure_callback(s->display, desc.bps * 8,
172-
desc.ch_count, desc.sample_rate);
158+
if (s->display) {
159+
return display_reconfigure_audio(
160+
s->display, desc.bps * 8, desc.ch_count, desc.sample_rate);
173161
}
174162
return false;
175163
}

src/audio/playback/sdi.h

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -36,21 +36,12 @@
3636
*/
3737

3838
#ifdef __cplusplus
39-
#include <cstddef>
4039
extern "C" {
41-
#else
42-
#include <stdbool.h>
43-
#include <stddef.h>
44-
#endif
40+
#endif
4541

46-
struct audio_frame;
4742
struct display;
4843

49-
void sdi_register_display_callbacks(
50-
void *state, struct display *display,
51-
void (*putf)(struct display *, const struct audio_frame *),
52-
bool (*reconfigure)(struct display *, int, int, int),
53-
bool (*get_property)(struct display *, int, void *, size_t *));
44+
void sdi_register_display(void *state, struct display *display);
5445

5546
#ifdef __cplusplus
5647
}

0 commit comments

Comments
 (0)