| 123456789101112131415161718192021222324252627282930313233343536373839 | #include "AudioContainers.h"#include <string.h>      // for memcmp#include <cstddef>       // for byte#include "BellLogger.h"  // for BellLogger#include "ADTSContainer.h"  // for AACContainer#include "CodecType.h"      // for bell#include "MP3Container.h"   // for MP3Containernamespace bell {class AudioContainer;}  // namespace bellusing namespace bell;std::unique_ptr<bell::AudioContainer> AudioContainers::guessAudioContainer(    std::istream& istr) {  std::byte tmp[14];  istr.read((char*)tmp, sizeof(tmp));  if (memcmp(tmp, "\xFF\xF1", 2) == 0 || memcmp(tmp, "\xFF\xF9", 2) == 0) {    // AAC found    BELL_LOG(info, "AudioContainers",             "Mime guesser found AAC in ADTS format, creating ADTSContainer");    return std::make_unique<bell::ADTSContainer>(istr, tmp);  } else if (memcmp(tmp, "\xFF\xFB", 2) == 0 ||             memcmp(tmp, "\x49\x44\x33", 3) == 0) {    // MP3 Found    BELL_LOG(info, "AudioContainers",             "Mime guesser found MP3 format, creating MP3Container");    return std::make_unique<bell::MP3Container>(istr, tmp);  }  BELL_LOG(error, "AudioContainers",           "Mime guesser found no supported format [%X, %X]", tmp[0], tmp[1]);  return nullptr;}
 |