@@ -181,22 +181,23 @@ class OSCContainerEncoder : public AudioEncoder {
181181class 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