| 123456789101112131415161718192021222324252627282930313233343536 | #pragma once#include <stdint.h>  // for uint32_t#include <cstddef>   // for byte, size_t#include <istream>   // for istream#include <vector>    // for vector#include "AudioContainer.h"  // for AudioContainer#include "CodecType.h"       // for AudioCodec, AudioCodec::AACnamespace bell {class ADTSContainer : public AudioContainer { public:  ~ADTSContainer(){};  ADTSContainer(std::istream& istr, const std::byte* headingBytes = nullptr);  std::byte* readSample(uint32_t& len) override;  bool resyncADTS();  void parseSetupData() override;  void consumeBytes(uint32_t len) override;  bell::AudioCodec getCodec() override { return bell::AudioCodec::AAC; } private:  static constexpr auto AAC_MAX_FRAME_SIZE = 2100;  static constexpr auto BUFFER_SIZE = 1024 * 10;  std::vector<std::byte> buffer = std::vector<std::byte>(BUFFER_SIZE);  size_t bytesInBuffer = 0;  size_t dataOffset = 0;  bool protectionAbsent = false;  bool fillBuffer();};}  // namespace bell
 |