예제 #1
0
void YSE::INTERNAL::soundFile::loadNonStreaming() {
  // load non streaming sounds in one go
  ScopedPointer<AudioFormatReader> reader;
  File file;

  if (IO().getActive()) {
    // will be deleted by AudioFormatReader
    customFileReader * cfr = new customFileReader;
    cfr->create(fileName.c_str());
    reader = SOUND::Manager().getReader(cfr);
  }
  else {
    file = File::getCurrentWorkingDirectory().getChildFile(juce::String(fileName));
    reader = SOUND::Manager().getReader(file);
  }

  if (reader != nullptr) {
    _fileBuffer.setSize(reader->numChannels, (Int)reader->lengthInSamples);
    reader->read(&_fileBuffer, 0, (Int)reader->lengthInSamples, 0, true, true);
    // sample rate adjustment
    _sampleRateAdjustment = static_cast<Flt>(reader->sampleRate) / static_cast<Flt>(SAMPLERATE);
    _length = _fileBuffer.getNumSamples();
    _buffer = _fileBuffer.getArrayOfReadPointers();
    _channels = _fileBuffer.getNumChannels();

    // file is ready for use now
    state = READY;
  }
  else {
    LogImpl().emit(E_FILEREADER, "Unable to read " + file.getFullPathName().toStdString());
    state = INVALID;
  }
}
예제 #2
0
파일: logger.cpp 프로젝트: DerPapst/hhvm
void Logger::Log(LogLevelType level, const char *type, const Exception &e,
                 const char *file /* = NULL */, int line /* = 0 */) {
  if (!IsEnabled()) return;
  auto msg = type + e.getMessage();
  if (file && file[0]) {
    msg += folly::sformat(" in {} on line {}", file, line);
  }
  LogImpl(level, msg, nullptr);
}
예제 #3
0
void YSE::INTERNAL::soundFile::run() {
  if (_streaming) {
    if (source == nullptr) {
      if (IO().getActive()) {
        // will be deleted by AudioFormatReader
        customFileReader * cfr = new customFileReader;
        cfr->create(fileName.c_str());
        streamReader = SOUND::Manager().getReader(cfr);
      }
      else {
        streamReader = SOUND::Manager().getReader(file);
      }
    }
    else {
      streamReader = SOUND::Manager().getReader(source);
    }
    if (streamReader != nullptr) {
      _buffer.setSize(streamReader->numChannels, STREAM_BUFFERSIZE);
      // sample rate adjustment
      _sampleRateAdjustment = static_cast<Flt>(streamReader->sampleRate) / static_cast<Flt>(SAMPLERATE);
      _length = (Int)streamReader->lengthInSamples;
      _streamPos = 0;
      fillStream(false);
      // file is ready for use now
      state = READY;
      return;
    }
    else {
      LogImpl().emit(E_FILEREADER, "Unable to read " + file.getFullPathName().toStdString());
      state = INVALID;
      return;
    }
  }

  // load non streaming sounds in one go
  ScopedPointer<AudioFormatReader> reader;
  if (source == nullptr) {
    if (IO().getActive()) {
      // will be deleted by AudioFormatReader
      customFileReader * cfr = new customFileReader;
      cfr->create(fileName.c_str());
      reader = SOUND::Manager().getReader(cfr);
    }
    else {
      reader = SOUND::Manager().getReader(file);
    }
    
  }
  else {
    reader = SOUND::Manager().getReader(source);
  }
  
  if (reader != nullptr) {
    _buffer.setSize(reader->numChannels, (Int)reader->lengthInSamples);
    reader->read(&_buffer, 0, (Int)reader->lengthInSamples, 0, true, true);
    // sample rate adjustment
    _sampleRateAdjustment = static_cast<Flt>(reader->sampleRate) / static_cast<Flt>(SAMPLERATE);
    _length = _buffer.getNumSamples();
    // file is ready for use now
    state = READY;
    return;
  }
  else {
    LogImpl().emit(E_FILEREADER, "Unable to read " + file.getFullPathName().toStdString());
    state = INVALID;
    return;
  }
}