void setSpeed(double speed) //speed amount { setReverse(speed < 0); int data = speed*51.2; bcm2835_pwm_set_data(pwmChannel, data); std::cout<<"speed "<<speed<<" "<<data<<std::endl; }
Dmb::Dmb(bool reverse) : interleaver(12, 17), encoder(204, 188) { buffer = NULL; bufferSize = 0; setReverse(reverse); }
VKHandlerMessages::VKHandlerMessages(VKStorage* storage, QObject *parent) : VKAbstractHandler(storage, parent) { setOffset(0); setCount(20); setUserId(0); setStartMessageId(0); setReverse(0); m_recievedCount = 0; m_unreadCount = 0; }
void VideoDecoder::setRate(const Common::Rational &rate) { if (!isVideoLoaded() || _playbackRate == rate) return; if (rate == 0) { stop(); return; } else if (rate != 1 && hasAudio()) { warning("Cannot set custom rate in videos with audio"); return; } Common::Rational targetRate = rate; // Attempt to set the reverse if (!setReverse(rate < 0)) { assert(rate < 0); // We shouldn't fail for forward. warning("Cannot set custom rate to backwards"); setReverse(false); targetRate = 1; if (_playbackRate == targetRate) return; } if (_playbackRate != 0) _lastTimeChange = getTime(); _playbackRate = targetRate; _startTime = g_system->getMillis(); // Adjust start time if we've seeked to something besides zero time if (_lastTimeChange != 0) _startTime -= (_lastTimeChange.msecs() / _playbackRate).toInt(); startAudio(); }
bool JoystickMapper::setValue(string name, string value) { if (name == "inputDevice") inputDevice = value; else if (name == "deviceId") deviceId = getOEInt(value); else if (name.substr(0, 4) == "axis") setMap(JOYSTICK_AXIS1 + getOEInt(name.substr(4)), value); else if (name.substr(0, 6) == "button") setMap(JOYSTICK_BUTTON1 + getOEInt(name.substr(6)), value); else if (name.substr(0, 15) == "sensitivityAxis") setSensitivity(JOYSTICK_AXIS1 + getOEInt(name.substr(15)), getFloat(value)); else if (name.substr(0, 11) == "reverseAxis") setReverse(JOYSTICK_AXIS1 + getOEInt(name.substr(11)), getOEInt(value)); else if (name.substr(0, 3) == "map") inputDeviceMap[name.substr(3)] = value; else return false; return true; }
bool QuickTimeDecoder::VideoTrackHandler::seek(const Audio::Timestamp &requestedTime) { uint32 convertedFrames = requestedTime.convertToFramerate(_decoder->_timeScale).totalNumberOfFrames(); for (_curEdit = 0; !atLastEdit(); _curEdit++) if (convertedFrames >= _parent->editList[_curEdit].timeOffset && convertedFrames < _parent->editList[_curEdit].timeOffset + _parent->editList[_curEdit].trackDuration) break; // If we did reach the end of the track, break out if (atLastEdit()) return true; // If this track is in an empty edit, position us at the next non-empty // edit. There's nothing else to do after this. if (_parent->editList[_curEdit].mediaTime == -1) { while (!atLastEdit() && _parent->editList[_curEdit].mediaTime == -1) _curEdit++; if (!atLastEdit()) enterNewEditList(true); return true; } enterNewEditList(false); // One extra check for the end of a track if (atLastEdit()) return true; // Now we're in the edit and need to figure out what frame we need Audio::Timestamp time = requestedTime.convertToFramerate(_parent->timeScale); while (getRateAdjustedFrameTime() < (uint32)time.totalNumberOfFrames()) { _curFrame++; if (_durationOverride >= 0) { _nextFrameStartTime += _durationOverride; _durationOverride = -1; } else { _nextFrameStartTime += getFrameDuration(); } } // All that's left is to figure out what our starting time is going to be // Compare the starting point for the frame to where we need to be _holdNextFrameStartTime = getRateAdjustedFrameTime() != (uint32)time.totalNumberOfFrames(); // If we went past the time, go back a frame. _curFrame before this point is at the frame // that should be displayed. This adjustment ensures it is on the frame before the one that // should be displayed. if (_holdNextFrameStartTime) _curFrame--; if (_reversed) { // Call setReverse again to update setReverse(true); } else { // Handle the keyframe here int32 destinationFrame = _curFrame + 1; assert(destinationFrame < (int32)_parent->frameCount); _curFrame = findKeyFrame(destinationFrame) - 1; while (_curFrame < destinationFrame - 1) bufferNextFrame(); } return true; }