Ejemplo n.º 1
0
SoundManager::SoundPtr SoundManager::Load(const std::string& locator) {
    std::string file;
    file = "content/sounds/" + locator;
    SoundPtr sound = SoundPtr(new sf::SoundBuffer());
    if(!sound->LoadFromFile(file))
        return SoundPtr();
    return sound;
}
Ejemplo n.º 2
0
Archivo: Sound.cpp Proyecto: artcom/y60
void Sound::pause() {
    AutoLocker<ThreadLock> myLocker(_myLock);
    AC_TRACE << "Sound::pause (" << _myURI << ")";
    _myDecoder->pause();
    _mySampleSink->pause();
    _myLockedSelf = SoundPtr();
}
Ejemplo n.º 3
0
Archivo: Sound.cpp Proyecto: artcom/y60
void Sound::update(double theTimeSlice) {
    AutoLocker<ThreadLock> myLocker(_myLock);
    double myBuffersFilledRatio = double(_mySampleSink->getBufferedTime())/
            _myTargetBufferedTime;
    double myTimeToBuffer = double(_mySampleSink->getBufferedTime())+
            myBuffersFilledRatio*theTimeSlice+
            (1-myBuffersFilledRatio)*_myMaxUpdateTime;
    _myDecoder->setTime(getCurrentTime());
    AC_TRACE << "Sound::update: " << hex << (void*)this << dec << " playing=" <<
            isPlaying() << " decodingComplete=" << _myDecodingComplete;
    if (_myDecodingComplete && !isPlaying()) {
        AC_TRACE << "Sound::update: Playback complete";
        _myDecodingComplete = false;
        _myLockedSelf = SoundPtr();
    }
    if (!_myDecodingComplete) {
        bool myEOF = false;
        if (_myDecoder->isSyncDecoder()) {
            while (double(_mySampleSink->getBufferedTime()) < myTimeToBuffer && !myEOF) {
                myEOF = _myDecoder->decode();
            }
        } else {
            if (_myDecoder->isEOF()) {
                myEOF = true;
            }
        }
        if (myEOF) {
            if (_myCacheItem && !_myCacheItem->isFull()) {
                _myCacheItem->doneCaching(_myDecoder->getCurFrame());
            }
            if (_mySampleSink->getState() != HWSampleSink::STOPPED) {
                if (_myCacheItem && _myCacheItem->isFull() &&
                        !dynamic_cast<CacheReader *>(_myDecoder))
                {
                    AC_TRACE << " ----> Reading from cache.";
                    delete _myDecoder;
                    _myDecoder = new CacheReader(_myCacheItem);
                    _myDecoder->setSampleSink(this);
                }
                if (_myIsLooping) {
                    AC_TRACE << "Sound::update: Loop";
                    _myDecoder->seek(0);
                    update(0.1);
                } else {
                    AC_TRACE << "Sound::update: DecodingComplete";
                    _myDecodingComplete = true;
                    _mySampleSink->stop(true);
                    close();
                }
            }
        }
    }
}
Ejemplo n.º 4
0
Archivo: Sound.cpp Proyecto: artcom/y60
void Sound::stop() {
    AutoLocker<ThreadLock> myLocker(_myLock);
    AC_TRACE << "Sound::stop (" << _myURI << ")";
    _myDecoder->stop();
    _mySampleSink->stop();
    if (_myCacheItem) {
        _myCacheItem->doneCaching();
        if (!_myCacheItem->isFull()) {
            _myCacheItem = SoundCacheItemPtr();
        }
    }
    close();
    _myLockedSelf = SoundPtr();
}
Ejemplo n.º 5
0
Archivo: Sound.cpp Proyecto: artcom/y60
Sound::Sound (string myURI, IAudioDecoder * myDecoder, SoundCacheItemPtr myCacheItem,
        bool theLoop)
    : _myURI (myURI),
      _myDecoder(myDecoder),
      _myDecodingComplete(false),
      _myIsLooping(theLoop),
      _myTargetBufferedTime(1.0),
      _myMaxUpdateTime(0.2),
      _myCacheItem(myCacheItem)
{
    AC_DEBUG << "Sound::Sound(" << myURI << ", loop: " << theLoop << ")";
    _myLockedSelf = SoundPtr();
    _mySampleSink = Pump::get().createSampleSink(myURI);
    _myDecoder->setSampleSink(this);
    AutoLocker<ThreadLock> myLocker(_mySoundsAllocatedLock);
    _myNumSoundsAllocated++;
}
Ejemplo n.º 6
0
PlayerFactory::PlayerFactory( const unsigned char player_id, CameraPtr camera ) {
	FrameworkPtr fw = Framework::getInstance ( );
	DevicePtr device = DevicePtr( new Device );
	KeyboardPtr keyboad = KeyboardPtr( new Keyboard );
	MousePtr mouse = MousePtr( new Mouse );
	ClientPtr client = ClientPtr( new Client );
	AppPtr app = AppPtr( new App( player_id )  );
	ViewerPtr viewer = ViewerPtr( new Viewer );
	DrawerPtr drawer = DrawerPtr( new Drawer( "../Resource" ) );
	SoundPtr sound = SoundPtr( new Sound( ) );
	if ( !camera ) {
		camera = PlayerCameraPtr( new PlayerCamera );
	}

	fw->addTask( Device::getTag( ), device );
	fw->addTask( Keyboard::getTag( ), keyboad );
	fw->addTask( Mouse::getTag( ), mouse );
	fw->addTask( Client::getTag( ), client );
	fw->addTask( Viewer::getTag( ), viewer );
	fw->addTask( Drawer::getTag( ), drawer );
	fw->addTask( App::getTag( ), app );
	fw->addTask( Camera::getTag( ), camera );
	fw->addTask( Sound::getTag( ), sound );
}
Ejemplo n.º 7
0
Archivo: Sound.cpp Proyecto: artcom/y60
void Sound::setSelf(const SoundPtr& mySelf)
{
    _mySelf = mySelf;
    _myLockedSelf = SoundPtr();
}