@@ -181,22 +181,23 @@ class OSCContainerEncoder : public AudioEncoder {
181
181
class OSCContainerDecoder : public ContainerDecoder {
182
182
public:
183
183
OSCContainerDecoder () = default ;
184
- OSCContainerDecoder (AudioDecoder &decoder, OSCData &osc ) {
184
+ OSCContainerDecoder (AudioDecoder &decoder) {
185
185
setDecoder (decoder);
186
- setOSCData (osc);
187
186
}
188
- OSCContainerDecoder (MultiDecoder &decoder, OSCData &osc ) {
187
+ OSCContainerDecoder (MultiDecoder &decoder) {
189
188
setDecoder (decoder);
190
- setOSCData (osc);
191
189
}
192
190
191
+ // / Defines the decoder to be used
193
192
void setDecoder (AudioDecoder &decoder) { p_codec = &decoder; }
194
193
194
+ // / Defines the decoder to be used: special logic for multidecoder
195
195
void setDecoder (MultiDecoder &decoder) {
196
196
p_codec = &decoder;
197
- p_multi_decoder = &decoder ;
197
+ is_multi_decoder = true ;
198
198
}
199
199
200
+ // / Optionally define you own OSCData object
200
201
void setOSCData (OSCData &osc) { p_osc = &osc; }
201
202
202
203
void setOutput (Print &outStream) {
@@ -261,11 +262,12 @@ class OSCContainerDecoder : public ContainerDecoder {
261
262
262
263
protected:
263
264
bool is_active = false ;
265
+ bool is_multi_decoder = false ;
264
266
AudioDecoder *p_codec = nullptr ;
265
- MultiDecoder *p_multi_decoder = nullptr ;
266
267
SingleBuffer<uint8_t > buffer{0 };
267
268
Print *p_out = nullptr ;
268
- OSCData *p_osc = nullptr ;
269
+ OSCData osc_default;
270
+ OSCData *p_osc = &osc_default;
269
271
Str mime_str;
270
272
uint64_t seq_no = 0 ;
271
273
// / Return false to complete the processing w/o writing to the decoder
@@ -318,8 +320,8 @@ class OSCContainerDecoder : public ContainerDecoder {
318
320
self->mime_str = mime;
319
321
LOGI (" mime: %s" , mime);
320
322
// 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);
323
325
}
324
326
325
327
return true ;
0 commit comments