Skip to content

Commit 036c93f

Browse files
committed
OSCContainerDecoder make OSCData optional
1 parent 05e6b89 commit 036c93f

File tree

1 file changed

+11
-9
lines changed

1 file changed

+11
-9
lines changed

src/AudioTools/AudioCodecs/ContainerOSC.h

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -181,22 +181,23 @@ class OSCContainerEncoder : public AudioEncoder {
181181
class OSCContainerDecoder : public ContainerDecoder {
182182
public:
183183
OSCContainerDecoder() = default;
184-
OSCContainerDecoder(AudioDecoder &decoder, OSCData &osc) {
184+
OSCContainerDecoder(AudioDecoder &decoder) {
185185
setDecoder(decoder);
186-
setOSCData(osc);
187186
}
188-
OSCContainerDecoder(MultiDecoder &decoder, OSCData &osc) {
187+
OSCContainerDecoder(MultiDecoder &decoder) {
189188
setDecoder(decoder);
190-
setOSCData(osc);
191189
}
192190

191+
/// Defines the decoder to be used
193192
void setDecoder(AudioDecoder &decoder) { p_codec = &decoder; }
194193

194+
/// Defines the decoder to be used: special logic for multidecoder
195195
void setDecoder(MultiDecoder &decoder) {
196196
p_codec = &decoder;
197-
p_multi_decoder = &decoder;
197+
is_multi_decoder = true;
198198
}
199199

200+
/// Optionally define you own OSCData object
200201
void setOSCData(OSCData &osc) { p_osc = &osc; }
201202

202203
void setOutput(Print &outStream) {
@@ -261,11 +262,12 @@ class OSCContainerDecoder : public ContainerDecoder {
261262

262263
protected:
263264
bool is_active = false;
265+
bool is_multi_decoder = false;
264266
AudioDecoder *p_codec = nullptr;
265-
MultiDecoder *p_multi_decoder = nullptr;
266267
SingleBuffer<uint8_t> buffer{0};
267268
Print *p_out = nullptr;
268-
OSCData *p_osc = nullptr;
269+
OSCData osc_default;
270+
OSCData *p_osc = &osc_default;
269271
Str mime_str;
270272
uint64_t seq_no = 0;
271273
/// Return false to complete the processing w/o writing to the decoder
@@ -318,8 +320,8 @@ class OSCContainerDecoder : public ContainerDecoder {
318320
self->mime_str = mime;
319321
LOGI("mime: %s", mime);
320322
// select the right decoder based on the mime type
321-
if (self->p_multi_decoder != nullptr)
322-
self->p_multi_decoder->selectDecoder(mime);
323+
if (self->is_multi_decoder)
324+
static_cast<MultiDecoder*>(self->p_codec)->selectDecoder(mime);
323325
}
324326

325327
return true;

0 commit comments

Comments
 (0)