|
43 | 43 |
|
44 | 44 | #include "audio/types.h" // for audio_desc, audio_frame (ptr only) |
45 | 45 | #include "audio/audio_playback.h" |
| 46 | +#include "compat/c23.h" |
46 | 47 | #include "debug.h" |
47 | 48 | #include "host.h" // for INIT_NOERR |
48 | 49 | #include "lib_common.h" |
|
51 | 52 |
|
52 | 53 | struct state_sdi_playback { |
53 | 54 | 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 *); |
58 | 55 | }; |
59 | 56 |
|
60 | 57 | 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) |
106 | 103 | audio_play_sdi_help("analog"); |
107 | 104 | return INIT_NOERR; |
108 | 105 | } |
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); |
112 | 107 | return s; |
113 | 108 | } |
114 | 109 |
|
115 | 110 | 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) |
121 | 112 | { |
122 | 113 | 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; |
128 | 115 | } |
129 | 116 |
|
130 | 117 | static void audio_play_sdi_put_frame(void *state, const struct audio_frame *frame) |
131 | 118 | { |
132 | | - struct state_sdi_playback *s; |
133 | | - s = (struct state_sdi_playback *) state; |
| 119 | + struct state_sdi_playback *s = state; |
134 | 120 |
|
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 | + } |
137 | 124 | } |
138 | 125 |
|
139 | 126 | static bool audio_play_sdi_query_format(struct state_sdi_playback *s, void *data, size_t *len) |
140 | 127 | { |
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)) { |
142 | 130 | return true; |
143 | 131 | } |
144 | 132 | log_msg(LOG_LEVEL_WARNING, |
@@ -167,9 +155,9 @@ static bool audio_play_sdi_reconfigure(void *state, struct audio_desc desc) |
167 | 155 | { |
168 | 156 | struct state_sdi_playback *s = state; |
169 | 157 |
|
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); |
173 | 161 | } |
174 | 162 | return false; |
175 | 163 | } |
|
0 commit comments