Skip to content

Commit 5fe4ead

Browse files
committed
ContainerBinary DRAFT
1 parent 1d7c70c commit 5fe4ead

File tree

2 files changed

+149
-129
lines changed

2 files changed

+149
-129
lines changed

src/AudioCodecs/AudioEncoded.h

Lines changed: 48 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ namespace audio_tools {
1414
* @copyright GPLv3
1515
*/
1616
class 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 = &notify;
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
*/
6970
class 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
*/
8788
class 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
*/
123124
class 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
*/
175176
class 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
*/
392393
class 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
*/
568568
class 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

576576
class 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

606605
class 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

639639
class 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

667669
class 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

Comments
 (0)