| 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::AAC
 
- namespace 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
 
 
  |