@@ -14,7 +14,7 @@ namespace audio_tools {
14
14
* @copyright GPLv3
15
15
*/
16
16
class AudioDecoder : public AudioWriter , public AudioInfoSource {
17
- public:
17
+ public:
18
18
AudioDecoder () = default ;
19
19
virtual ~AudioDecoder () = default ;
20
20
AudioDecoder (AudioDecoder const &) = delete ;
@@ -24,6 +24,7 @@ class AudioDecoder : public AudioWriter, public AudioInfoSource {
24
24
25
25
// for most decoder this is not needed
26
26
virtual void setAudioInfo (AudioInfo from) override {
27
+ TRACED ();
27
28
if (info != from) {
28
29
if (p_notify != nullptr ) {
29
30
p_notify->setAudioInfo (from);
@@ -54,7 +55,7 @@ class AudioDecoder : public AudioWriter, public AudioInfoSource {
54
55
p_notify = ¬ify;
55
56
}
56
57
57
- protected:
58
+ protected:
58
59
Print *p_print = nullptr ;
59
60
AudioInfo info;
60
61
AudioInfoDependent *p_notify = nullptr ;
@@ -67,13 +68,13 @@ class AudioDecoder : public AudioWriter, public AudioInfoSource {
67
68
* @copyright GPLv3
68
69
*/
69
70
class AudioEncoder : public AudioWriter {
70
- public:
71
+ public:
71
72
AudioEncoder () = default ;
72
73
virtual ~AudioEncoder () = default ;
73
74
AudioEncoder (AudioEncoder const &) = delete ;
74
75
AudioEncoder &operator =(AudioEncoder const &) = delete ;
75
76
virtual const char *mime () = 0;
76
- void setAudioInfo (AudioInfo from) override {};
77
+ void setAudioInfo (AudioInfo from) override {};
77
78
};
78
79
79
80
/* *
@@ -85,7 +86,7 @@ class AudioEncoder : public AudioWriter {
85
86
* @copyright GPLv3
86
87
*/
87
88
class CodecNOP : public AudioDecoder , public AudioEncoder {
88
- public:
89
+ public:
89
90
static CodecNOP *instance () {
90
91
static CodecNOP self;
91
92
return &self;
@@ -121,7 +122,7 @@ class CodecNOP : public AudioDecoder, public AudioEncoder {
121
122
* @copyright GPLv3
122
123
*/
123
124
class StreamingDecoder {
124
- public:
125
+ public:
125
126
// / Starts the processing
126
127
virtual void begin () = 0;
127
128
@@ -160,7 +161,7 @@ class StreamingDecoder {
160
161
// / Process a single read operation - to be called in the loop
161
162
virtual bool copy () = 0;
162
163
163
- protected:
164
+ protected:
164
165
virtual size_t readBytes (uint8_t *buffer, size_t len) = 0;
165
166
};
166
167
@@ -173,7 +174,7 @@ class StreamingDecoder {
173
174
* @copyright GPLv3
174
175
*/
175
176
class EncodedAudioPrint : public AudioStream {
176
- public:
177
+ public:
177
178
// / Constructor for AudioStream with automatic notification of audio changes
178
179
EncodedAudioPrint (AudioStream *outputStream, AudioDecoder *decoder) {
179
180
TRACED ();
@@ -374,9 +375,9 @@ class EncodedAudioPrint : public AudioStream {
374
375
// / Provides the initialized encoder
375
376
AudioEncoder &encoder () { return *encoder_ptr; }
376
377
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
380
381
AudioWriter *writer_ptr = nullptr ;
381
382
Print *ptr_out = nullptr ;
382
383
bool active;
@@ -390,7 +391,7 @@ class EncodedAudioPrint : public AudioStream {
390
391
* @copyright GPLv3
391
392
*/
392
393
class EncodedAudioStream : public EncodedAudioPrint {
393
- public:
394
+ public:
394
395
EncodedAudioStream (AudioStream *ioStream, AudioDecoder *decoder)
395
396
: EncodedAudioPrint(ioStream, decoder) {
396
397
// the indicated stream can be used as input
@@ -499,8 +500,7 @@ class EncodedAudioStream : public EncodedAudioPrint {
499
500
void resize () { resize (1024 * 10 ); }
500
501
501
502
int available () override {
502
- if (p_stream == nullptr )
503
- return 0 ;
503
+ if (p_stream == nullptr ) return 0 ;
504
504
decode (reqested_bytes);
505
505
return decoded_buffer.available ();
506
506
}
@@ -515,7 +515,7 @@ class EncodedAudioStream : public EncodedAudioPrint {
515
515
return decoded_buffer.readArray (buffer, length);
516
516
}
517
517
518
- protected:
518
+ protected:
519
519
RingBuffer<uint8_t > decoded_buffer{0 };
520
520
QueueStream<uint8_t > queue_stream{decoded_buffer};
521
521
Vector<uint8_t > copy_buffer{DEFAULT_BUFFER_SIZE};
@@ -566,15 +566,15 @@ class EncodedAudioStream : public EncodedAudioPrint {
566
566
*
567
567
*/
568
568
class ContainerTarget {
569
- public:
569
+ public:
570
570
virtual bool begin ();
571
571
virtual void end ();
572
572
virtual void setAudioInfo (AudioInfo info);
573
573
virtual size_t write (uint8_t *data, size_t size);
574
574
};
575
575
576
576
class ContainerTargetPrint : public ContainerTarget {
577
- public:
577
+ public:
578
578
ContainerTargetPrint (Print &print, AudioWriter *writer) {
579
579
p_print = &print;
580
580
p_writer = writer;
@@ -587,24 +587,23 @@ class ContainerTargetPrint : public ContainerTarget {
587
587
return true ;
588
588
}
589
589
virtual void end () {
590
- if (p_writer)
591
- p_writer->end ();
590
+ if (p_writer) p_writer->end ();
592
591
}
593
592
virtual void setAudioInfo (AudioInfo info) {
594
- if (p_writer)
595
- p_writer->setAudioInfo (info);
593
+ if (p_writer) p_writer->setAudioInfo (info);
596
594
}
597
595
virtual size_t write (uint8_t *data, size_t size) {
596
+ TRACED ();
598
597
return p_writer ? p_writer->write (data, size) : p_print->write (data, size);
599
598
}
600
599
601
- protected:
600
+ protected:
602
601
Print *p_print = nullptr ;
603
602
AudioWriter *p_writer = nullptr ;
604
603
};
605
604
606
605
class ContainerTargetAudioPrint : public ContainerTarget {
607
- public:
606
+ public:
608
607
ContainerTargetAudioPrint (AudioPrint &print, AudioWriter *writer) {
609
608
p_print = &print;
610
609
p_writer = writer;
@@ -617,27 +616,28 @@ class ContainerTargetAudioPrint : public ContainerTarget {
617
616
return p_print->begin ();
618
617
}
619
618
virtual void end () {
620
- if (p_writer)
621
- p_writer->end ();
619
+ if (p_writer) p_writer->end ();
622
620
p_print->end ();
623
621
}
624
622
virtual void setAudioInfo (AudioInfo info) {
625
- if (p_writer)
626
- p_writer->setAudioInfo (info);
623
+ if (p_writer) p_writer->setAudioInfo (info);
627
624
628
- p_print->setAudioInfo (info);
625
+ if (p_print->audioInfo () != info) {
626
+ p_print->setAudioInfo (info);
627
+ }
629
628
}
630
629
virtual size_t write (uint8_t *data, size_t size) {
630
+ TRACED ();
631
631
return p_writer ? p_writer->write (data, size) : p_print->write (data, size);
632
632
}
633
633
634
- protected:
634
+ protected:
635
635
AudioPrint *p_print;
636
636
AudioWriter *p_writer = nullptr ;
637
637
};
638
638
639
639
class ContainerTargetAudioStream : public ContainerTarget {
640
- public:
640
+ public:
641
641
ContainerTargetAudioStream (AudioStream &print, AudioWriter *writer) {
642
642
p_print = &print;
643
643
p_writer = writer;
@@ -651,34 +651,39 @@ class ContainerTargetAudioStream : public ContainerTarget {
651
651
}
652
652
virtual void end () { p_print->end (); }
653
653
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
+ }
657
658
}
658
659
virtual size_t write (uint8_t *data, size_t size) {
660
+ TRACED ();
659
661
return p_writer ? p_writer->write (data, size) : p_print->write (data, size);
660
662
}
661
663
662
- protected:
664
+ protected:
663
665
AudioStream *p_print;
664
666
AudioWriter *p_writer = nullptr ;
665
667
};
666
668
667
669
class ContainerTargetAudioWriter : public ContainerTarget {
668
- public:
669
- ContainerTargetAudioWriter (AudioWriter *print) { p_print = print; }
670
+ public:
671
+ ContainerTargetAudioWriter (AudioWriter *writer) {
672
+ p_writer = writer;
673
+ }
670
674
virtual bool begin () {
671
- p_print ->begin ();
675
+ p_writer ->begin ();
672
676
return true ;
673
677
}
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); }
676
680
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);
678
683
}
679
684
680
- protected:
681
- AudioWriter *p_print ;
685
+ protected:
686
+ AudioWriter *p_writer ;
682
687
};
683
688
684
- } // namespace audio_tools
689
+ } // namespace audio_tools
0 commit comments