[Scummvm-cvs-logs] SF.net SVN: scummvm:[55814] scummvm/trunk

fingolfin at users.sourceforge.net fingolfin at users.sourceforge.net
Mon Feb 7 23:57:36 CET 2011


Revision: 55814
          http://scummvm.svn.sourceforge.net/scummvm/?rev=55814&view=rev
Author:   fingolfin
Date:     2011-02-07 22:57:35 +0000 (Mon, 07 Feb 2011)

Log Message:
-----------
VIDEO: Replace Video::VideoTimestamp with Audio::Timestamp

Modified Paths:
--------------
    scummvm/trunk/engines/mohawk/myst_stacks/channelwood.cpp
    scummvm/trunk/engines/mohawk/myst_stacks/dni.cpp
    scummvm/trunk/engines/mohawk/myst_stacks/myst.cpp
    scummvm/trunk/engines/mohawk/myst_stacks/stoneship.cpp
    scummvm/trunk/engines/mohawk/riven_external.cpp
    scummvm/trunk/engines/mohawk/video.cpp
    scummvm/trunk/engines/mohawk/video.h
    scummvm/trunk/sound/timestamp.h
    scummvm/trunk/video/qt_decoder.cpp
    scummvm/trunk/video/qt_decoder.h
    scummvm/trunk/video/video_decoder.cpp
    scummvm/trunk/video/video_decoder.h

Modified: scummvm/trunk/engines/mohawk/myst_stacks/channelwood.cpp
===================================================================
--- scummvm/trunk/engines/mohawk/myst_stacks/channelwood.cpp	2011-02-07 18:32:42 UTC (rev 55813)
+++ scummvm/trunk/engines/mohawk/myst_stacks/channelwood.cpp	2011-02-07 22:57:35 UTC (rev 55814)
@@ -293,9 +293,9 @@
 
 	// Toggle bridge state
 	if (_state.waterPumpBridgeState)
-		_vm->_video->setVideoBounds(bridge, Video::VideoTimestamp(3050, 600), Video::VideoTimestamp(6100, 600));
+		_vm->_video->setVideoBounds(bridge, Audio::Timestamp(0, 3050, 600), Audio::Timestamp(0, 6100, 600));
 	else
-		_vm->_video->setVideoBounds(bridge, Video::VideoTimestamp(0, 600), Video::VideoTimestamp(3050, 600));
+		_vm->_video->setVideoBounds(bridge, Audio::Timestamp(0, 0, 600), Audio::Timestamp(0, 3050, 600));
 
 	_vm->_video->waitUntilMovieEnds(bridge);
 }
@@ -311,9 +311,9 @@
 
 	// Toggle pipe state
 	if (_state.pipeState)
-		_vm->_video->setVideoBounds(pipe, Video::VideoTimestamp(3040, 600), Video::VideoTimestamp(6080, 600));
+		_vm->_video->setVideoBounds(pipe, Audio::Timestamp(0, 3040, 600), Audio::Timestamp(0, 6080, 600));
 	else
-		_vm->_video->setVideoBounds(pipe, Video::VideoTimestamp(0, 600), Video::VideoTimestamp(3040, 600));
+		_vm->_video->setVideoBounds(pipe, Audio::Timestamp(0, 0, 600), Audio::Timestamp(0, 3040, 600));
 
 	_vm->_video->waitUntilMovieEnds(pipe);
 	_vm->_sound->resumeBackgroundMyst();

Modified: scummvm/trunk/engines/mohawk/myst_stacks/dni.cpp
===================================================================
--- scummvm/trunk/engines/mohawk/myst_stacks/dni.cpp	2011-02-07 18:32:42 UTC (rev 55813)
+++ scummvm/trunk/engines/mohawk/myst_stacks/dni.cpp	2011-02-07 22:57:35 UTC (rev 55814)
@@ -103,13 +103,13 @@
 	VideoHandle atrus = _vm->_video->findVideoHandle(_video);
 
 	// Good ending and Atrus asked to give page
-	if (_globals.ending == 1 && _vm->_video->getElapsedTime(atrus) > Video::VideoTimestamp(6801, 600).getUnitsInScale(1000)) {
+	if (_globals.ending == 1 && _vm->_video->getElapsedTime(atrus) > (uint)Audio::Timestamp(0, 6801, 600).msecs()) {
 		_globals.ending = 2;
 		_globals.heldPage = 0;
 		_vm->_cursor->setCursor(kDefaultMystCursor);
 
 		// Play movie end (atrus leaving)
-		_vm->_video->setVideoBounds(atrus, Video::VideoTimestamp(14813, 600), Video::VideoTimestamp(0xFFFFFFFF));
+		_vm->_video->setVideoBounds(atrus, Audio::Timestamp(0, 14813, 600), Audio::Timestamp(0xFFFFFFFF));
 		_vm->_video->setVideoLooping(atrus, false);
 
 		_atrusLeft = true;
@@ -122,7 +122,7 @@
 	if (_vm->_system->getMillis() > _atrusLeftTime + 63333) {
 		_video = _vm->wrapMovieFilename("atrus2", kDniStack);
 		VideoHandle atrus = _vm->_video->playMovie(_video, 215, 77);
-		_vm->_video->setVideoBounds(atrus, Video::VideoTimestamp(0, 600), Video::VideoTimestamp(98000, 600));
+		_vm->_video->setVideoBounds(atrus, Audio::Timestamp(0, 0, 600), Audio::Timestamp(0, 98000, 600));
 
 		_waitForLoop = true;
 		_loopStart = 73095;
@@ -140,7 +140,7 @@
 void MystScriptParser_Dni::loopVideo_run() {
 	if (!_vm->_video->isVideoPlaying()) {
 		VideoHandle atrus = _vm->_video->playMovie(_video, 215, 77);
-		_vm->_video->setVideoBounds(atrus, Video::VideoTimestamp(_loopStart, 600), Video::VideoTimestamp(_loopEnd, 600));
+		_vm->_video->setVideoBounds(atrus, Audio::Timestamp(0, _loopStart, 600), Audio::Timestamp(0, _loopEnd, 600));
 		_vm->_video->setVideoLooping(atrus, true);
 
 		_waitForLoop = false;
@@ -156,13 +156,13 @@
 		if (!_vm->_video->isVideoPlaying()) {
 			_video = _vm->wrapMovieFilename("atr1page", kDniStack);
 			VideoHandle atrus = _vm->_video->playMovie(_video, 215, 77, true);
-			_vm->_video->setVideoBounds(atrus, Video::VideoTimestamp(7388, 600), Video::VideoTimestamp(14700, 600));
+			_vm->_video->setVideoBounds(atrus, Audio::Timestamp(0, 7388, 600), Audio::Timestamp(0, 14700, 600));
 		}
 	} else if (_globals.ending != 3 && _globals.ending != 4) {
 		if (_globals.heldPage == 13) {
 			_video = _vm->wrapMovieFilename("atr1page", kDniStack);
 			VideoHandle atrus = _vm->_video->playMovie(_video, 215, 77);
-			_vm->_video->setVideoBounds(atrus, Video::VideoTimestamp(0, 600), Video::VideoTimestamp(14700, 600));
+			_vm->_video->setVideoBounds(atrus, Audio::Timestamp(0, 0, 600), Audio::Timestamp(0, 14700, 600));
 
 			_waitForLoop = true;
 			_loopStart = 7388;
@@ -174,7 +174,7 @@
 		} else {
 			_video = _vm->wrapMovieFilename("atr1nopg", kDniStack);
 			VideoHandle atrus = _vm->_video->playMovie(_video, 215, 77);
-			_vm->_video->setVideoBounds(atrus, Video::VideoTimestamp(0, 600), Video::VideoTimestamp(46175, 600));
+			_vm->_video->setVideoBounds(atrus, Audio::Timestamp(0, 0, 600), Audio::Timestamp(0, 46175, 600));
 
 			_waitForLoop = true;
 			_loopStart = 30656;

Modified: scummvm/trunk/engines/mohawk/myst_stacks/myst.cpp
===================================================================
--- scummvm/trunk/engines/mohawk/myst_stacks/myst.cpp	2011-02-07 18:32:42 UTC (rev 55813)
+++ scummvm/trunk/engines/mohawk/myst_stacks/myst.cpp	2011-02-07 22:57:35 UTC (rev 55814)
@@ -1133,7 +1133,7 @@
 
 		// Gears rise up
 		VideoHandle gears = _vm->_video->playMovie(_vm->wrapMovieFilename("gears", kMystStack), 305, 33);
-		_vm->_video->setVideoBounds(gears, Video::VideoTimestamp(0, 600), Video::VideoTimestamp(650, 600));
+		_vm->_video->setVideoBounds(gears, Audio::Timestamp(0, 0, 600), Audio::Timestamp(0, 650, 600));
 		_vm->_video->waitUntilMovieEnds(gears);
 
 
@@ -1145,7 +1145,7 @@
 
 		// Gears sink down
 		VideoHandle gears = _vm->_video->playMovie(_vm->wrapMovieFilename("gears", kMystStack), 305, 33);
-		_vm->_video->setVideoBounds(gears, Video::VideoTimestamp(700, 600), Video::VideoTimestamp(1300, 600));
+		_vm->_video->setVideoBounds(gears, Audio::Timestamp(0, 700, 600), Audio::Timestamp(0, 1300, 600));
 		_vm->_video->waitUntilMovieEnds(gears);
 
 		_state.clockTowerBridgeOpen = 0;
@@ -1189,14 +1189,14 @@
 			// Mountains disappearing
 			Common::String file = _vm->wrapMovieFilename("vltmntn", kMystStack);
 			VideoHandle mountain = _vm->_video->playMovie(file, 159, 96, false);
-			_vm->_video->setVideoBounds(mountain, Video::VideoTimestamp(11180, 600), Video::VideoTimestamp(16800, 600));
+			_vm->_video->setVideoBounds(mountain, Audio::Timestamp(0, 11180, 600), Audio::Timestamp(0, 16800, 600));
 
 			_state.imagerActive = 0;
 		} else {
 			// Mountains appearing
 			Common::String file = _vm->wrapMovieFilename("vltmntn", kMystStack);
 			VideoHandle mountain = _vm->_video->playMovie(file, 159, 96, false);
-			_vm->_video->setVideoBounds(mountain, Video::VideoTimestamp(0, 600), Video::VideoTimestamp(11180, 600));
+			_vm->_video->setVideoBounds(mountain, Audio::Timestamp(0, 0, 600), Audio::Timestamp(0, 11180, 600));
 
 			_state.imagerActive = 1;
 		}
@@ -1209,19 +1209,19 @@
 
 			// Water disappearing
 			VideoHandle water = _imagerMovie->playMovie();
-			_vm->_video->setVideoBounds(water, Video::VideoTimestamp(4204, 600), Video::VideoTimestamp(6040, 600));
+			_vm->_video->setVideoBounds(water, Audio::Timestamp(0, 4204, 600), Audio::Timestamp(0, 6040, 600));
 			_vm->_video->setVideoLooping(water, false);
 
 			_state.imagerActive = 0;
 		} else {
 			// Water appearing
 			VideoHandle water = _imagerMovie->playMovie();
-			_vm->_video->setVideoBounds(water, Video::VideoTimestamp(0, 600), Video::VideoTimestamp(1814, 600));
+			_vm->_video->setVideoBounds(water, Audio::Timestamp(0, 0, 600), Audio::Timestamp(0, 1814, 600));
 			_vm->_video->waitUntilMovieEnds(water);
 
 			// Water looping
 			water = _imagerMovie->playMovie();
-			_vm->_video->setVideoBounds(water, Video::VideoTimestamp(1814, 600), Video::VideoTimestamp(4204, 600));
+			_vm->_video->setVideoBounds(water, Audio::Timestamp(0, 1814, 600), Audio::Timestamp(0, 4204, 600));
 			_vm->_video->setVideoLooping(water, true);
 
 			_state.imagerActive = 1;
@@ -2192,12 +2192,12 @@
 		// Book appearing
 		Common::String movieFile = _vm->wrapMovieFilename("selenbok", kMystStack);
 		_rocketLinkBook = _vm->_video->playMovie(movieFile, 224, 41);
-		_vm->_video->setVideoBounds(_rocketLinkBook, Video::VideoTimestamp(0, 600), Video::VideoTimestamp(660, 600));
+		_vm->_video->setVideoBounds(_rocketLinkBook, Audio::Timestamp(0, 0, 600), Audio::Timestamp(0, 660, 600));
 		_vm->_video->waitUntilMovieEnds(_rocketLinkBook);
 
 		// Book looping closed
 		_rocketLinkBook = _vm->_video->playMovie(movieFile, 224, 41, true);
-		_vm->_video->setVideoBounds(_rocketLinkBook, Video::VideoTimestamp(660, 600), Video::VideoTimestamp(3500, 600));
+		_vm->_video->setVideoBounds(_rocketLinkBook, Audio::Timestamp(0, 660, 600), Audio::Timestamp(0, 3500, 600));
 
 		_tempVar = 1;
 	}
@@ -2312,7 +2312,7 @@
 	debugC(kDebugScript, "Opcode %d: Rocket open link book", op);
 
 	// Flyby movie
-	_vm->_video->setVideoBounds(_rocketLinkBook, Video::VideoTimestamp(3500, 600), Video::VideoTimestamp(13100, 600));
+	_vm->_video->setVideoBounds(_rocketLinkBook, Audio::Timestamp(0, 3500, 600), Audio::Timestamp(0, 13100, 600));
 
 	// Set linkable
 	_tempVar = 2;
@@ -2836,16 +2836,16 @@
 	uint16 gearPosition = _clockGearsPositions[gear] - 1;
 	_clockGearsVideos[gear] = _vm->_video->playMovie(_vm->wrapMovieFilename(videos[gear], kMystStack), x[gear], y[gear]);
 	_vm->_video->setVideoBounds(_clockGearsVideos[gear],
-			Video::VideoTimestamp(startTime[gearPosition], 600),
-			Video::VideoTimestamp(endTime[gearPosition], 600));
+			Audio::Timestamp(0, startTime[gearPosition], 600),
+			Audio::Timestamp(0, endTime[gearPosition], 600));
 }
 
 void MystScriptParser_Myst::clockWeightDownOneStep() {
 	// Set video bounds
 	_clockWeightVideo = _vm->_video->playMovie(_vm->wrapMovieFilename("cl1wlfch", kMystStack) , 124, 0);
 	_vm->_video->setVideoBounds(_clockWeightVideo,
-			Video::VideoTimestamp(_clockWeightPosition, 600),
-			Video::VideoTimestamp(_clockWeightPosition + 246, 600));
+			Audio::Timestamp(0, _clockWeightPosition, 600),
+			Audio::Timestamp(0, _clockWeightPosition + 246, 600));
 
 	// Increment value by one step
 	_clockWeightPosition += 246;
@@ -2897,8 +2897,8 @@
 		_vm->_sound->replaceSoundMyst(9113);
 		_clockWeightVideo = _vm->_video->playMovie(_vm->wrapMovieFilename("cl1wlfch", kMystStack) , 124, 0);
 		_vm->_video->setVideoBounds(_clockWeightVideo,
-				Video::VideoTimestamp(_clockWeightPosition, 600),
-				Video::VideoTimestamp(2214, 600));
+				Audio::Timestamp(0, _clockWeightPosition, 600),
+				Audio::Timestamp(0, 2214, 600));
 		_vm->_video->waitUntilMovieEnds(_clockWeightVideo);
 		_clockWeightPosition = 2214;
 
@@ -2976,8 +2976,8 @@
 	if (!(_vm->getFeatures() & GF_ME)) {
 		_clockWeightVideo = _vm->_video->playMovie(_vm->wrapMovieFilename("cl1wlfch", kMystStack) , 124, 0);
 		_vm->_video->setVideoBounds(_clockWeightVideo,
-				Video::VideoTimestamp(2214 * 2 - _clockWeightPosition, 600),
-				Video::VideoTimestamp(2214 * 2, 600));
+				Audio::Timestamp(0, 2214 * 2 - _clockWeightPosition, 600),
+				Audio::Timestamp(0, 2214 * 2, 600));
 	} else {
 		//FIXME: Needs QT backwards playing
 		warning("Weight going back up not implemented");
@@ -2998,8 +2998,8 @@
 	if (gearPosition != 2) {
 		_clockGearsVideos[gear] = _vm->_video->playMovie(_vm->wrapMovieFilename(videos[gear], kMystStack), x[gear], y[gear]);
 		_vm->_video->setVideoBounds(_clockGearsVideos[gear],
-				Video::VideoTimestamp(time[gearPosition], 600),
-				Video::VideoTimestamp(time[2], 600));
+				Audio::Timestamp(0, time[gearPosition], 600),
+				Audio::Timestamp(0, time[2], 600));
 	}
 
 	// Reset gear position
@@ -3220,7 +3220,7 @@
 
 	if (_state.imagerActive && _state.imagerSelection == 67) {
 		VideoHandle water = _imagerMovie->playMovie();
-		_vm->_video->setVideoBounds(water, Video::VideoTimestamp(1814, 600), Video::VideoTimestamp(4204, 600));
+		_vm->_video->setVideoBounds(water, Audio::Timestamp(0, 1814, 600), Audio::Timestamp(0, 4204, 600));
 		_vm->_video->setVideoLooping(water, true);
 	}
 }
@@ -3562,12 +3562,12 @@
 			_vm->_video->playMovie(file, 314, 76);
 		} else {
 			VideoHandle book = _vm->_video->playMovie(file, 314, 76, true);
-			_vm->_video->setVideoBounds(book, Video::VideoTimestamp(loopStart, 600), Video::VideoTimestamp(loopEnd, 600));
+			_vm->_video->setVideoBounds(book, Audio::Timestamp(0, loopStart, 600), Audio::Timestamp(0, loopEnd, 600));
 			_tempVar = 0;
 		}
 	} else if (_tempVar == 2 && !_vm->_video->isVideoPlaying()) {
 		VideoHandle book = _vm->_video->playMovie(file, 314, 76);
-		_vm->_video->setVideoBounds(book, Video::VideoTimestamp(loopStart, 600), Video::VideoTimestamp(loopEnd, 600));
+		_vm->_video->setVideoBounds(book, Audio::Timestamp(0, loopStart, 600), Audio::Timestamp(0, loopEnd, 600));
 		_vm->_video->setVideoLooping(book, true);
 		_tempVar = 0;
 	}

Modified: scummvm/trunk/engines/mohawk/myst_stacks/stoneship.cpp
===================================================================
--- scummvm/trunk/engines/mohawk/myst_stacks/stoneship.cpp	2011-02-07 18:32:42 UTC (rev 55813)
+++ scummvm/trunk/engines/mohawk/myst_stacks/stoneship.cpp	2011-02-07 22:57:35 UTC (rev 55814)
@@ -412,7 +412,7 @@
 	uint16 endTime = argv[1];
 
 	VideoHandle book = _vm->_video->playMovie(_vm->wrapMovieFilename("bkroom", kStoneshipStack), 159, 99);
-	_vm->_video->setVideoBounds(book, Video::VideoTimestamp(startTime, 600), Video::VideoTimestamp(endTime, 600));
+	_vm->_video->setVideoBounds(book, Audio::Timestamp(0, startTime, 600), Audio::Timestamp(0, endTime, 600));
 	_vm->_video->waitUntilMovieEnds(book);
 }
 
@@ -558,9 +558,9 @@
 	if (_hologramTurnedOn) {
 		if (_hologramDisplayPos)
 			endPoint = _hologramDisplayPos;
-		_vm->_video->setVideoBounds(displayMovie, Video::VideoTimestamp(startPoint, 600), Video::VideoTimestamp(endPoint, 600));
+		_vm->_video->setVideoBounds(displayMovie, Audio::Timestamp(0, startPoint, 600), Audio::Timestamp(0, endPoint, 600));
 	} else {
-		_vm->_video->setVideoBounds(displayMovie, Video::VideoTimestamp(startPoint, 600), Video::VideoTimestamp(endPoint, 600));
+		_vm->_video->setVideoBounds(displayMovie, Audio::Timestamp(0, startPoint, 600), Audio::Timestamp(0, endPoint, 600));
 	}
 
 	_vm->_video->delayUntilMovieEnds(displayMovie);
@@ -585,7 +585,7 @@
 		uint16 selectionPos = position * 1500 / 243;
 
 		VideoHandle handleMovie = _hologramSelection->playMovie();
-		_vm->_video->setVideoBounds(handleMovie, Video::VideoTimestamp(selectionPos, 600), Video::VideoTimestamp(selectionPos, 600));
+		_vm->_video->setVideoBounds(handleMovie, Audio::Timestamp(0, selectionPos, 600), Audio::Timestamp(0, selectionPos, 600));
 
 		_hologramDisplayPos = position * 1450 / 243 + 350;
 
@@ -593,7 +593,7 @@
 		if (_hologramTurnedOn) {
 			_hologramDisplay->setBlocking(false);
 			VideoHandle displayMovie = _hologramDisplay->playMovie();
-			_vm->_video->setVideoBounds(displayMovie, Video::VideoTimestamp(_hologramDisplayPos, 600), Video::VideoTimestamp(_hologramDisplayPos, 600));
+			_vm->_video->setVideoBounds(displayMovie, Audio::Timestamp(0, _hologramDisplayPos, 600), Audio::Timestamp(0, _hologramDisplayPos, 600));
 		}
 	}
 }
@@ -635,19 +635,19 @@
 	if (_state.chestValveState) {
 		// Valve closing
 		VideoHandle valve = _vm->_video->playMovie(movie, 97, 267);
-		_vm->_video->setVideoBounds(valve, Video::VideoTimestamp(0, 600), Video::VideoTimestamp(350, 600));
+		_vm->_video->setVideoBounds(valve, Audio::Timestamp(0, 0, 600), Audio::Timestamp(0, 350, 600));
 		_vm->_video->waitUntilMovieEnds(valve);
 	} else if (_state.chestWaterState) {
 		// Valve opening, spilling water
 		VideoHandle valve = _vm->_video->playMovie(movie, 97, 267);
-		_vm->_video->setVideoBounds(valve, Video::VideoTimestamp(350, 600), Video::VideoTimestamp(650, 600));
+		_vm->_video->setVideoBounds(valve, Audio::Timestamp(0, 350, 600), Audio::Timestamp(0, 650, 600));
 		_vm->_video->waitUntilMovieEnds(valve);
 
 		_vm->_sound->playSound(3132);
 
 		for (uint i = 0; i < 25; i++) {
 			valve = _vm->_video->playMovie(movie, 97, 267);
-			_vm->_video->setVideoBounds(valve, Video::VideoTimestamp(650, 600), Video::VideoTimestamp(750, 600));
+			_vm->_video->setVideoBounds(valve, Audio::Timestamp(0, 650, 600), Audio::Timestamp(0, 750, 600));
 			_vm->_video->waitUntilMovieEnds(valve);
 		}
 
@@ -656,7 +656,7 @@
 		// Valve opening
 		// TODO: Play backwards
 		VideoHandle valve = _vm->_video->playMovie(movie, 97, 267);
-		_vm->_video->setVideoBounds(valve, Video::VideoTimestamp(0, 600), Video::VideoTimestamp(350, 600));
+		_vm->_video->setVideoBounds(valve, Audio::Timestamp(0, 0, 600), Audio::Timestamp(0, 350, 600));
 		_vm->_video->waitUntilMovieEnds(valve);
 	}
 }
@@ -678,13 +678,13 @@
 	Common::String movie = _vm->wrapMovieFilename("openloc", kStoneshipStack);
 
 	VideoHandle lock = _vm->_video->playMovie(movie, 187, 71);
-	_vm->_video->setVideoBounds(lock, Video::VideoTimestamp(0, 600), Video::VideoTimestamp(750, 600));
+	_vm->_video->setVideoBounds(lock, Audio::Timestamp(0, 0, 600), Audio::Timestamp(0, 750, 600));
 	_vm->_video->waitUntilMovieEnds(lock);
 
 	_vm->_sound->playSound(2143);
 
 	lock = _vm->_video->playMovie(movie, 187, 71);
-	_vm->_video->setVideoBounds(lock, Video::VideoTimestamp(750, 600), Video::VideoTimestamp(10000, 600));
+	_vm->_video->setVideoBounds(lock, Audio::Timestamp(0, 750, 600), Audio::Timestamp(0, 10000, 600));
 	_vm->_video->waitUntilMovieEnds(lock);
 
 	if (_state.pumpState != 4)

Modified: scummvm/trunk/engines/mohawk/riven_external.cpp
===================================================================
--- scummvm/trunk/engines/mohawk/riven_external.cpp	2011-02-07 18:32:42 UTC (rev 55813)
+++ scummvm/trunk/engines/mohawk/riven_external.cpp	2011-02-07 22:57:35 UTC (rev 55814)
@@ -1066,7 +1066,7 @@
 	// Play the video of the pins going down
 	VideoHandle handle = _vm->_video->playMovieRiven(*upMovie);
 	assert(handle != NULL_VID_HANDLE);
-	_vm->_video->setVideoBounds(handle, Video::VideoTimestamp(startTime, 600), Video::VideoTimestamp(startTime + 550, 600));
+	_vm->_video->setVideoBounds(handle, Audio::Timestamp(0, startTime, 600), Audio::Timestamp(0, startTime + 550, 600));
 	_vm->_video->waitUntilMovieEnds(handle);
 
 	*upMovie = 0;
@@ -1098,7 +1098,7 @@
 	// Play the video of the pins rotating
 	VideoHandle handle = _vm->_video->playMovieRiven(*_vm->getVar("gupmoov"));
 	assert(handle != NULL_VID_HANDLE);
-	_vm->_video->setVideoBounds(handle, Video::VideoTimestamp(startTime, 600), Video::VideoTimestamp(startTime + 1215, 600));
+	_vm->_video->setVideoBounds(handle, Audio::Timestamp(0, startTime, 600), Audio::Timestamp(0, startTime + 1215, 600));
 	_vm->_video->waitUntilMovieEnds(handle);
 }
 
@@ -1183,7 +1183,7 @@
 	VideoHandle handle = _vm->_video->playMovieRiven(pinMovieCodes[imagePos - 1]);
 	assert(handle != NULL_VID_HANDLE);
 	uint32 startTime = 9630 - pinPos * 600;
-	_vm->_video->setVideoBounds(handle, Video::VideoTimestamp(startTime, 600), Video::VideoTimestamp(startTime + 550, 600));
+	_vm->_video->setVideoBounds(handle, Audio::Timestamp(0, startTime, 600), Audio::Timestamp(0, startTime + 550, 600));
 	_vm->_video->waitUntilMovieEnds(handle);
 
 	// Update the relevant variables
@@ -1259,7 +1259,7 @@
 	// Now play the movie
 	VideoHandle handle = _vm->_video->playMovieRiven(1);
 	assert(handle != NULL_VID_HANDLE);
-	_vm->_video->setVideoBounds(handle, Video::VideoTimestamp(s_viewerTimeIntervals[*curPos], 600), Video::VideoTimestamp(s_viewerTimeIntervals[newPos], 600));
+	_vm->_video->setVideoBounds(handle, Audio::Timestamp(0, s_viewerTimeIntervals[*curPos], 600), Audio::Timestamp(0, s_viewerTimeIntervals[newPos], 600));
 	_vm->_video->waitUntilMovieEnds(handle);
 
 	// Set the new position and let the card's scripts take over again
@@ -1328,7 +1328,7 @@
 	// Now play the movie
 	VideoHandle handle = _vm->_video->playMovieRiven(1);
 	assert(handle != NULL_VID_HANDLE);
-	_vm->_video->setVideoBounds(handle, Video::VideoTimestamp(s_viewerTimeIntervals[*curPos], 600), Video::VideoTimestamp(s_viewerTimeIntervals[newPos], 600));
+	_vm->_video->setVideoBounds(handle, Audio::Timestamp(0, s_viewerTimeIntervals[*curPos], 600), Audio::Timestamp(0, s_viewerTimeIntervals[newPos], 600));
 	_vm->_video->waitUntilMovieEnds(handle);
 
 	// Set the new position to the variable
@@ -1778,9 +1778,9 @@
 	// (11560/600)s is the length of each of the two movies. We divide it into 19 parts
 	// (one for each of the possible positions the villager can have).
 	VideoHandle handle = _vm->_video->playMovieRiven(doomMLST);
-	Video::VideoTimestamp startTime = Video::VideoTimestamp((11560 / 19) * (*posVar), 600);
+	Audio::Timestamp startTime = Audio::Timestamp(0, (11560 / 19) * (*posVar), 600);
 	*posVar += number; // Adjust to the end
-	Video::VideoTimestamp endTime = Video::VideoTimestamp((11560 / 19) * (*posVar), 600);
+	Audio::Timestamp endTime = Audio::Timestamp(0, (11560 / 19) * (*posVar), 600);
 	_vm->_video->setVideoBounds(handle, startTime, endTime);
 	_vm->_video->waitUntilMovieEnds(handle);
 
@@ -2182,7 +2182,7 @@
 		static const uint32 timeIntervals[] = { 4320, 3440, 2560, 1760, 880, 0 };
 		uint16 movieCode = (*telescopeCover) ? 1 : 2;
 		VideoHandle handle = _vm->_video->playMovieRiven(movieCode);
-		_vm->_video->setVideoBounds(handle, Video::VideoTimestamp(timeIntervals[*telescopePos], 600), Video::VideoTimestamp(timeIntervals[*telescopePos - 1], 600));
+		_vm->_video->setVideoBounds(handle, Audio::Timestamp(0, timeIntervals[*telescopePos], 600), Audio::Timestamp(0, timeIntervals[*telescopePos - 1], 600));
 		_vm->_sound->playSound(14); // Play the moving sound
 		_vm->_video->waitUntilMovieEnds(handle);
 
@@ -2214,7 +2214,7 @@
 	static const uint32 timeIntervals[] = { 0, 800, 1680, 2560, 3440, 4320 };
 	uint16 movieCode = (*_vm->getVar("ttelecover")) ? 4 : 5;
 	VideoHandle handle = _vm->_video->playMovieRiven(movieCode);
-	_vm->_video->setVideoBounds(handle, Video::VideoTimestamp(timeIntervals[*telescopePos - 1], 600), Video::VideoTimestamp(timeIntervals[*telescopePos], 600));
+	_vm->_video->setVideoBounds(handle, Audio::Timestamp(0, timeIntervals[*telescopePos - 1], 600), Audio::Timestamp(0, timeIntervals[*telescopePos], 600));
 	_vm->_sound->playSound(14); // Play the moving sound
 	_vm->_video->waitUntilMovieEnds(handle);
 

Modified: scummvm/trunk/engines/mohawk/video.cpp
===================================================================
--- scummvm/trunk/engines/mohawk/video.cpp	2011-02-07 18:32:42 UTC (rev 55813)
+++ scummvm/trunk/engines/mohawk/video.cpp	2011-02-07 22:57:35 UTC (rev 55814)
@@ -38,14 +38,14 @@
 	y = 0;
 	loop = false;
 	enabled = false;
-	start = Video::VideoTimestamp(0);
-	end = Video::VideoTimestamp(0xFFFFFFFF); // Largest possible, there is an endOfVideo() check anyway
+	start = Audio::Timestamp(0, 1);
+	end = Audio::Timestamp(0xFFFFFFFF, 1); // Largest possible, there is an endOfVideo() check anyway
 	filename.clear();
 	id = -1;
 }
 
 bool VideoEntry::endOfVideo() {
-	return !video || video->endOfVideo() || video->getElapsedTime() >= end.getUnitsInScale(1000);
+	return !video || video->endOfVideo() || video->getElapsedTime() >= (uint)end.msecs();
 }
 
 VideoManager::VideoManager(MohawkEngine* vm) : _vm(vm) {
@@ -503,14 +503,14 @@
 	return false;
 }
 
-void VideoManager::setVideoBounds(VideoHandle handle, Video::VideoTimestamp start, Video::VideoTimestamp end) {
+void VideoManager::setVideoBounds(VideoHandle handle, Audio::Timestamp start, Audio::Timestamp end) {
 	assert(handle != NULL_VID_HANDLE);
 	_videoStreams[handle].start = start;
 	_videoStreams[handle].end = end;
 	_videoStreams[handle]->seekToTime(start);
 }
 
-void VideoManager::seekToTime(VideoHandle handle, Video::VideoTimestamp time) {
+void VideoManager::seekToTime(VideoHandle handle, Audio::Timestamp time) {
 	assert(handle != NULL_VID_HANDLE);
 	_videoStreams[handle]->seekToTime(time);
 }

Modified: scummvm/trunk/engines/mohawk/video.h
===================================================================
--- scummvm/trunk/engines/mohawk/video.h	2011-02-07 18:32:42 UTC (rev 55813)
+++ scummvm/trunk/engines/mohawk/video.h	2011-02-07 22:57:35 UTC (rev 55814)
@@ -53,7 +53,7 @@
 	uint16 y;
 	bool loop;
 	bool enabled;
-	Video::VideoTimestamp start, end;
+	Audio::Timestamp start, end;
 
 	// Identification
 	Common::String filename; // External video files
@@ -105,8 +105,8 @@
 	uint32 getFrameCount(VideoHandle handle);
 	uint32 getElapsedTime(VideoHandle handle);
 	bool endOfVideo(VideoHandle handle);
-	void setVideoBounds(VideoHandle handle, Video::VideoTimestamp start, Video::VideoTimestamp end);
-	void seekToTime(VideoHandle handle, Video::VideoTimestamp time);
+	void setVideoBounds(VideoHandle handle, Audio::Timestamp start, Audio::Timestamp end);
+	void seekToTime(VideoHandle handle, Audio::Timestamp time);
 	void seekToFrame(VideoHandle handle, uint32 frame);
 	void setVideoLooping(VideoHandle handle, bool loop);
 	void waitUntilMovieEnds(VideoHandle videoHandle);

Modified: scummvm/trunk/sound/timestamp.h
===================================================================
--- scummvm/trunk/sound/timestamp.h	2011-02-07 18:32:42 UTC (rev 55813)
+++ scummvm/trunk/sound/timestamp.h	2011-02-07 22:57:35 UTC (rev 55814)
@@ -79,7 +79,7 @@
 	 * @param msecs     starting time in milliseconds
 	 * @param framerate number of frames per second (must be > 0)
 	 */
-	Timestamp(uint msecs, uint framerate);
+	Timestamp(uint msecs = 0, uint framerate = 1);
 
 	/**
 	 * Set up a timestamp with a given time, frames and framerate.

Modified: scummvm/trunk/video/qt_decoder.cpp
===================================================================
--- scummvm/trunk/video/qt_decoder.cpp	2011-02-07 18:32:42 UTC (rev 55813)
+++ scummvm/trunk/video/qt_decoder.cpp	2011-02-07 22:57:35 UTC (rev 55814)
@@ -177,26 +177,27 @@
 	}
 
 	// Adjust the video starting point
-	_startTime = g_system->getMillis() - Video::VideoTimestamp(_nextFrameStartTime, _streams[_videoStreamIndex]->time_scale).getUnitsInScale(1000);
+	const Audio::Timestamp curVideoTime(0, _nextFrameStartTime, _streams[_videoStreamIndex]->time_scale);
+	_startTime = g_system->getMillis() - curVideoTime.msecs();
 	resetPauseStartTime();
 
 	// Adjust the audio starting point
 	if (_audioStreamIndex >= 0) {
-		_audioStartOffset = VideoTimestamp(_nextFrameStartTime, _streams[_videoStreamIndex]->time_scale);
+		_audioStartOffset = curVideoTime;
 
 		// Re-create the audio stream
 		STSDEntry *entry = &_streams[_audioStreamIndex]->stsdEntries[0];
 		_audStream = Audio::makeQueuingAudioStream(entry->sampleRate, entry->channels == 2);
 
 		// First, we need to track down what audio sample we need
-		uint32 curTime = 0;
+		Audio::Timestamp curAudioTime(0, _streams[_audioStreamIndex]->time_scale);
 		uint sample = 0;
 		bool done = false;
 		for (int32 i = 0; i < _streams[_audioStreamIndex]->stts_count && !done; i++) {
 			for (int32 j = 0; j < _streams[_audioStreamIndex]->stts_data[i].count; j++) {
-				curTime += _streams[_audioStreamIndex]->stts_data[i].duration;
+				curAudioTime = curAudioTime.addFrames(_streams[_audioStreamIndex]->stts_data[i].duration);
 
-				if (curTime > Video::VideoTimestamp(_nextFrameStartTime, _streams[_videoStreamIndex]->time_scale).getUnitsInScale(_streams[_audioStreamIndex]->time_scale)) {
+				if (curAudioTime > curVideoTime) {
 					done = true;
 					break;
 				}
@@ -241,23 +242,20 @@
 	}
 }
 
-void QuickTimeDecoder::seekToTime(VideoTimestamp time) {
+void QuickTimeDecoder::seekToTime(Audio::Timestamp time) {
 	// TODO: Audio-only seeking (or really, have QuickTime sounds)
 	if (_videoStreamIndex < 0)
 		error("Audio-only seeking not supported");
 
-	// Convert to the local time scale
-	uint32 localTime = time.getUnitsInScale(_streams[_videoStreamIndex]->time_scale);
-
 	// Try to find the last frame that should have been decoded
 	uint32 frame = 0;
-	uint32 totalDuration = 0;
+	Audio::Timestamp totalDuration(0, _streams[_videoStreamIndex]->time_scale);
 	bool done = false;
 
 	for (int32 i = 0; i < _streams[_videoStreamIndex]->stts_count && !done; i++) {
 		for (int32 j = 0; j < _streams[_videoStreamIndex]->stts_data[i].count; j++) {
-			totalDuration += _streams[_videoStreamIndex]->stts_data[i].duration;
-			if (localTime < totalDuration) {
+			totalDuration = totalDuration.addFrames(_streams[_videoStreamIndex]->stts_data[i].duration);
+			if (totalDuration > time) {
 				done = true;
 				break;
 			}
@@ -394,7 +392,7 @@
 
 uint32 QuickTimeDecoder::getElapsedTime() const {
 	if (_audStream)
-		return g_system->getMixer()->getSoundElapsedTime(_audHandle) + _audioStartOffset.getUnitsInScale(1000);
+		return g_system->getMixer()->getSoundElapsedTime(_audHandle) + _audioStartOffset.msecs();
 
 	return VideoDecoder::getElapsedTime();
 }
@@ -515,7 +513,7 @@
 			startAudio();
 		}
 
-		_audioStartOffset = VideoTimestamp(0);
+		_audioStartOffset = Audio::Timestamp(0);
 	}
 
 	// Initialize video, if present

Modified: scummvm/trunk/video/qt_decoder.h
===================================================================
--- scummvm/trunk/video/qt_decoder.h	2011-02-07 18:32:42 UTC (rev 55813)
+++ scummvm/trunk/video/qt_decoder.h	2011-02-07 22:57:35 UTC (rev 55814)
@@ -121,7 +121,7 @@
 
 	// SeekableVideoDecoder API
 	void seekToFrame(uint32 frame);
-	void seekToTime(VideoTimestamp time);
+	void seekToTime(Audio::Timestamp time);
 
 private:
 	// This is the file handle from which data is read from. It can be the actual file handle or a decompressed stream.
@@ -239,7 +239,7 @@
 	int8 _audioStreamIndex;
 	uint _curAudioChunk;
 	Audio::SoundHandle _audHandle;
-	VideoTimestamp _audioStartOffset;
+	Audio::Timestamp _audioStartOffset;
 
 	Codec *createCodec(uint32 codecTag, byte bitsPerPixel);
 	Codec *findDefaultVideoCodec() const;

Modified: scummvm/trunk/video/video_decoder.cpp
===================================================================
--- scummvm/trunk/video/video_decoder.cpp	2011-02-07 18:32:42 UTC (rev 55813)
+++ scummvm/trunk/video/video_decoder.cpp	2011-02-07 22:57:35 UTC (rev 55814)
@@ -126,16 +126,4 @@
 	return beginTime.toInt();
 }
 
-VideoTimestamp::VideoTimestamp() : _units(0), _scale(1) {
-}
-
-VideoTimestamp::VideoTimestamp(uint units, uint scale) : _units(units), _scale(scale) {
-	assert(_scale);
-}
-
-uint VideoTimestamp::getUnitsInScale(uint scale) const {
-	assert(scale);
-	return (_scale == scale) ? _units : _units * scale / _scale;
-}
-
 } // End of namespace Video

Modified: scummvm/trunk/video/video_decoder.h
===================================================================
--- scummvm/trunk/video/video_decoder.h	2011-02-07 18:32:42 UTC (rev 55813)
+++ scummvm/trunk/video/video_decoder.h	2011-02-07 22:57:35 UTC (rev 55814)
@@ -33,6 +33,9 @@
 #include "graphics/surface.h"
 #include "graphics/pixelformat.h"
 
+#include "sound/timestamp.h"	// TODO: Move this to common/ ?
+
+
 namespace Common {
 	class SeekableReadStream;
 }
@@ -239,38 +242,6 @@
 };
 
 /**
- * A simple video timestamp that holds time according to a specific scale.
- *
- * The scale is in terms of 1/x. For example, if you set units to 1 and the scale to 
- * 1000, the timestamp will hold the value of 1/1000s or 1ms.
- */
-class VideoTimestamp {
-public:
-	VideoTimestamp();
-	VideoTimestamp(uint units, uint scale = 1000);
-
-	/**
-	 * Get the units in terms of _scale
-	 */
-	uint getUnits() const { return _units; }
-
-	/**
-	 * Get the scale of this timestamp
-	 */
-	uint getScale() const { return _scale; }
-
-	/**
-	 * Get the value of the units in terms of the specified scale
-	 */
-	uint getUnitsInScale(uint scale) const;
-
-	// TODO: Simple comparisons (<, <=, >, >=, ==, !=)
-
-private:
-	uint _units, _scale;
-};
-
-/**
  * A VideoDecoder that can seek to a frame or point in time.
  */
 class SeekableVideoDecoder : public virtual RewindableVideoDecoder {
@@ -289,14 +260,12 @@
 	 * frame. In other words, there is *no* subframe accuracy. This may change in a
 	 * later revision of the API.
 	 */
-	virtual void seekToTime(VideoTimestamp time) = 0;
+	virtual void seekToTime(Audio::Timestamp time) = 0;
 
 	/**
 	 * Seek to the specified time (in ms).
-	 *
-	 * @see seekToTime(VideoTimestamp)
 	 */
-	void seekToTime(uint32 time) { seekToTime(VideoTimestamp(time)); }
+	void seekToTime(uint32 msecs) { seekToTime(Audio::Timestamp(msecs, 1000)); }
 
 	/**
 	 * Implementation of RewindableVideoDecoder::rewind().


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list