@@ -14,7 +14,7 @@ namespace audio_tools {
1414 * @copyright GPLv3
1515 */
1616class AudioDecoder : public AudioWriter , public AudioInfoSource {
17- public:
17+ public:
1818 AudioDecoder () = default ;
1919 virtual ~AudioDecoder () = default ;
2020 AudioDecoder (AudioDecoder const &) = delete ;
@@ -24,6 +24,7 @@ class AudioDecoder : public AudioWriter, public AudioInfoSource {
2424
2525 // for most decoder this is not needed
2626 virtual void setAudioInfo (AudioInfo from) override {
27+ TRACED ();
2728 if (info != from) {
2829 if (p_notify != nullptr ) {
2930 p_notify->setAudioInfo (from);
@@ -54,7 +55,7 @@ class AudioDecoder : public AudioWriter, public AudioInfoSource {
5455 p_notify = ¬ify;
5556 }
5657
57- protected:
58+ protected:
5859 Print *p_print = nullptr ;
5960 AudioInfo info;
6061 AudioInfoDependent *p_notify = nullptr ;
@@ -67,13 +68,13 @@ class AudioDecoder : public AudioWriter, public AudioInfoSource {
6768 * @copyright GPLv3
6869 */
6970class AudioEncoder : public AudioWriter {
70- public:
71+ public:
7172 AudioEncoder () = default ;
7273 virtual ~AudioEncoder () = default ;
7374 AudioEncoder (AudioEncoder const &) = delete ;
7475 AudioEncoder &operator =(AudioEncoder const &) = delete ;
7576 virtual const char *mime () = 0;
76- void setAudioInfo (AudioInfo from) override {};
77+ void setAudioInfo (AudioInfo from) override {};
7778};
7879
7980/* *
@@ -85,7 +86,7 @@ class AudioEncoder : public AudioWriter {
8586 * @copyright GPLv3
8687 */
8788class CodecNOP : public AudioDecoder , public AudioEncoder {
88- public:
89+ public:
8990 static CodecNOP *instance () {
9091 static CodecNOP self;
9192 return &self;
@@ -121,7 +122,7 @@ class CodecNOP : public AudioDecoder, public AudioEncoder {
121122 * @copyright GPLv3
122123 */
123124class StreamingDecoder {
124- public:
125+ public:
125126 // / Starts the processing
126127 virtual void begin () = 0;
127128
@@ -160,7 +161,7 @@ class StreamingDecoder {
160161 // / Process a single read operation - to be called in the loop
161162 virtual bool copy () = 0;
162163
163- protected:
164+ protected:
164165 virtual size_t readBytes (uint8_t *buffer, size_t len) = 0;
165166};
166167
@@ -173,7 +174,7 @@ class StreamingDecoder {
173174 * @copyright GPLv3
174175 */
175176class EncodedAudioPrint : public AudioStream {
176- public:
177+ public:
177178 // / Constructor for AudioStream with automatic notification of audio changes
178179 EncodedAudioPrint (AudioStream *outputStream, AudioDecoder *decoder) {
179180 TRACED ();
@@ -374,9 +375,9 @@ class EncodedAudioPrint : public AudioStream {
374375 // / Provides the initialized encoder
375376 AudioEncoder &encoder () { return *encoder_ptr; }
376377
377- protected:
378- AudioDecoder *decoder_ptr = CodecNOP::instance(); // decoder
379- AudioEncoder *encoder_ptr = CodecNOP::instance(); // decoder
378+ protected:
379+ AudioDecoder *decoder_ptr = CodecNOP::instance(); // decoder
380+ AudioEncoder *encoder_ptr = CodecNOP::instance(); // decoder
380381 AudioWriter *writer_ptr = nullptr ;
381382 Print *ptr_out = nullptr ;
382383 bool active;
@@ -390,7 +391,7 @@ class EncodedAudioPrint : public AudioStream {
390391 * @copyright GPLv3
391392 */
392393class EncodedAudioStream : public EncodedAudioPrint {
393- public:
394+ public:
394395 EncodedAudioStream (AudioStream *ioStream, AudioDecoder *decoder)
395396 : EncodedAudioPrint(ioStream, decoder) {
396397 // the indicated stream can be used as input
@@ -499,8 +500,7 @@ class EncodedAudioStream : public EncodedAudioPrint {
499500 void resize () { resize (1024 * 10 ); }
500501
501502 int available () override {
502- if (p_stream == nullptr )
503- return 0 ;
503+ if (p_stream == nullptr ) return 0 ;
504504 decode (reqested_bytes);
505505 return decoded_buffer.available ();
506506 }
@@ -515,7 +515,7 @@ class EncodedAudioStream : public EncodedAudioPrint {
515515 return decoded_buffer.readArray (buffer, length);
516516 }
517517
518- protected:
518+ protected:
519519 RingBuffer<uint8_t > decoded_buffer{0 };
520520 QueueStream<uint8_t > queue_stream{decoded_buffer};
521521 Vector<uint8_t > copy_buffer{DEFAULT_BUFFER_SIZE};
@@ -566,15 +566,15 @@ class EncodedAudioStream : public EncodedAudioPrint {
566566 *
567567 */
568568class ContainerTarget {
569- public:
569+ public:
570570 virtual bool begin ();
571571 virtual void end ();
572572 virtual void setAudioInfo (AudioInfo info);
573573 virtual size_t write (uint8_t *data, size_t size);
574574};
575575
576576class ContainerTargetPrint : public ContainerTarget {
577- public:
577+ public:
578578 ContainerTargetPrint (Print &print, AudioWriter *writer) {
579579 p_print = &print;
580580 p_writer = writer;
@@ -587,24 +587,23 @@ class ContainerTargetPrint : public ContainerTarget {
587587 return true ;
588588 }
589589 virtual void end () {
590- if (p_writer)
591- p_writer->end ();
590+ if (p_writer) p_writer->end ();
592591 }
593592 virtual void setAudioInfo (AudioInfo info) {
594- if (p_writer)
595- p_writer->setAudioInfo (info);
593+ if (p_writer) p_writer->setAudioInfo (info);
596594 }
597595 virtual size_t write (uint8_t *data, size_t size) {
596+ TRACED ();
598597 return p_writer ? p_writer->write (data, size) : p_print->write (data, size);
599598 }
600599
601- protected:
600+ protected:
602601 Print *p_print = nullptr ;
603602 AudioWriter *p_writer = nullptr ;
604603};
605604
606605class ContainerTargetAudioPrint : public ContainerTarget {
607- public:
606+ public:
608607 ContainerTargetAudioPrint (AudioPrint &print, AudioWriter *writer) {
609608 p_print = &print;
610609 p_writer = writer;
@@ -617,27 +616,28 @@ class ContainerTargetAudioPrint : public ContainerTarget {
617616 return p_print->begin ();
618617 }
619618 virtual void end () {
620- if (p_writer)
621- p_writer->end ();
619+ if (p_writer) p_writer->end ();
622620 p_print->end ();
623621 }
624622 virtual void setAudioInfo (AudioInfo info) {
625- if (p_writer)
626- p_writer->setAudioInfo (info);
623+ if (p_writer) p_writer->setAudioInfo (info);
627624
628- p_print->setAudioInfo (info);
625+ if (p_print->audioInfo () != info) {
626+ p_print->setAudioInfo (info);
627+ }
629628 }
630629 virtual size_t write (uint8_t *data, size_t size) {
630+ TRACED ();
631631 return p_writer ? p_writer->write (data, size) : p_print->write (data, size);
632632 }
633633
634- protected:
634+ protected:
635635 AudioPrint *p_print;
636636 AudioWriter *p_writer = nullptr ;
637637};
638638
639639class ContainerTargetAudioStream : public ContainerTarget {
640- public:
640+ public:
641641 ContainerTargetAudioStream (AudioStream &print, AudioWriter *writer) {
642642 p_print = &print;
643643 p_writer = writer;
@@ -651,34 +651,39 @@ class ContainerTargetAudioStream : public ContainerTarget {
651651 }
652652 virtual void end () { p_print->end (); }
653653 virtual void setAudioInfo (AudioInfo info) {
654- if (p_writer)
655- p_writer->setAudioInfo (info);
656- p_print->setAudioInfo (info);
654+ if (p_writer) p_writer->setAudioInfo (info);
655+ if (p_print->audioInfo () != info) {
656+ p_print->setAudioInfo (info);
657+ }
657658 }
658659 virtual size_t write (uint8_t *data, size_t size) {
660+ TRACED ();
659661 return p_writer ? p_writer->write (data, size) : p_print->write (data, size);
660662 }
661663
662- protected:
664+ protected:
663665 AudioStream *p_print;
664666 AudioWriter *p_writer = nullptr ;
665667};
666668
667669class ContainerTargetAudioWriter : public ContainerTarget {
668- public:
669- ContainerTargetAudioWriter (AudioWriter *print) { p_print = print; }
670+ public:
671+ ContainerTargetAudioWriter (AudioWriter *writer) {
672+ p_writer = writer;
673+ }
670674 virtual bool begin () {
671- p_print ->begin ();
675+ p_writer ->begin ();
672676 return true ;
673677 }
674- virtual void end () { p_print ->end (); }
675- virtual void setAudioInfo (AudioInfo info) { p_print ->setAudioInfo (info); }
678+ virtual void end () { p_writer ->end (); }
679+ virtual void setAudioInfo (AudioInfo info) { p_writer ->setAudioInfo (info); }
676680 virtual size_t write (uint8_t *data, size_t size) {
677- return p_print->write (data, size);
681+ TRACED ();
682+ return p_writer->write (data, size);
678683 }
679684
680- protected:
681- AudioWriter *p_print ;
685+ protected:
686+ AudioWriter *p_writer ;
682687};
683688
684- } // namespace audio_tools
689+ } // namespace audio_tools
0 commit comments