aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/graphics/video32.cpp
AgeCommit message (Collapse)Author
2018-12-27SCI32: Fix regression in VMD playerFilippos Karapetis
2018-10-25SCI32: Add support for upscaling VMD videosFilippos Karapetis
This feature can be used for the Windows version of KQ7, as well as PQ:SWAT
2017-10-06SCI32: Clean up scriptWidth/scriptHeight/screenWidth/screenHeightColin Snover
This removes the unnecessary Buffer subclass and stops most places where the output buffer was being interrogated about dimensions instead of GfxFrameout.
2017-10-06SCI32: Clean up Video32Colin Snover
* Rewrap comments to 80 columns * Clarify comments where appropriate
2017-09-30SCI32: Stop trying to clean up uninitialized VMDsColin Snover
Fixes Trac#10252.
2017-09-27SCI: Do some clean-up of event handling systemColin Snover
Convert macros and vars to enums, rename keyboard events in preparation for adding key up events, clean up unnecessary nested conditionals, add TODOs for potential future work.
2017-09-24SCI32: Fix bad palettes in Lighthouse when HQ video is enabledColin Snover
In a couple of places, Lighthouse updates the renderer with screen items for the next room before the room transition video plays. This is normally fine when using the compositing video renderer because the videos are drawn into new planes which occlude the screen items, so the screen items are culled from the draw list and do not submit their palettes. However, when in HQ video mode, we currently force the overlay renderer, which was not blocking screen items before forcing a frameOut, so the screen items' palettes got submitted prematurely in this case and caused bad rendering after the video finished playback. Now, if we are forcing into the overlay code path, we still create a blank plane behind the overlay before the forced frameOut in order to correctly occlude screen items and keep them from participating in rendering before they normally would. Fixes Trac#10233, Trac#10235.
2017-09-19SCI32: Fix GfxFrameout::addPlane from causing possible leaksColin Snover
2017-09-12SCI32: Improve chance of rendering non-8bpp AVIsColin Snover
OpenGL backends don't always support the pixel format that is returned by the Indeo 3 decoder when playing the GK2A.AVI from the GK2 demo. If this happens, use the backend's preferred pixel format and convert in software. If a backend doesn't support any 16-bit or 32-bit format, the playback code will error out. This is probably fine, since there are not really any of those any more. Fixes Trac#9994.
2017-09-03SCI32: Clip videos to the screenColin Snover
This is needed for 8.VMD in Lighthouse (room 380, the credits room), which is rendered partially off the bottom of the screen. OSystem does not accept rects that are offscreen. Technically this video probably should not have been doubled vertically by game scripts, but there is not enough space to fix the rendering with a regular script patch, and it is a very unimportant video.
2017-07-27VIDEO: Allow setting the mixer sound type used to play audio tracksBastien Bouclet
2017-07-23SCI32: Stop throttling of kFrameOut during interactive VMD playbackColin Snover
Refs Trac#9974, Trac#9975.
2017-07-23SCI32: Make stop flag condition more explicitColin Snover
2017-07-23SCI32: Check for stop events before rendering the next frameColin Snover
This should make things slightly more responsive and avoids unnecessary rendering of frames that are just going to disappear in a moment.
2017-07-23SCI32: Improve performance when flushing events during video playbackColin Snover
Calling through EventManager::getSciEvent to flush events is pretty inefficient and created stalls that lead to dropped frames during the chapter 7 chase in Phantasmagoria 1. If necessary, performance could be improved further by extending Common::EventManager to expose SDL_FlushEvents, but this seems to finish in 0-1ms so should be OK for now. Refs Trac#9974, Trac#9975.
2017-07-06SCI32: Refactor DuckPlayer to use common video playback codeColin Snover
This lets DuckPlayer support configurable black-lined video and configurable high-quality scaling.
2017-07-06SCI32: Refactor Video32 code to reduce code & feature duplicationColin Snover
2017-07-06SCI32: Improve playback quality of SEQ videosColin Snover
2017-07-06SCI32: Improve kPlayVMD renderingColin Snover
1. Added a new game option for linear interpolation when scaling overlay-mode video in ScummVM builds with USE_RGB_COLOR; 2. Implemented SCI2.1-variant of the VMD player renderer (fixes Trac#9857), which bypasses the engine's normal rendering pipeline; 3. Improved accuracy of the SCI3-variant of the VMD player by writing HunkPalettes into the VMD's CelObjMem instead of submitting palettes directly to GfxPalette32.
2017-07-06SCI32: Improve kShowMovieWin (AVI) renderingColin Snover
1. Added a new game option for linear interpolation when scaling video in ScummVM builds with USE_RGB_COLOR; 2. 8bpp videos that put black in a palette index other than 0 (KQ7) should now always render correctly without the earlier game-specific workarounds which did not work very well; 3. Data from game scripts regarding video size and position are now ignored, since games always just try to show videos in the middle of the screen, but frequently get this a little bit wrong, causing either bad aspect ratios or off-center videos; 4. Builds without USE_RGB_COLOR support will not crash when attempting to play >8bpp AVIs, like those from KQ7 2.00b. Fixes Trac#9843, Trac#9762.
2017-07-06SCI32: Allow skipping SEQ animationsColin Snover
In SSCI, SEQ animations cannot be skipped.
2017-07-06SCI32: Centralise OSystem screen updatesColin Snover
2017-07-06SCI32: Stop setting unused palette timestamp propertyColin Snover
2017-05-06SCI32: Add some missing onFrame hooks for the debuggerColin Snover
2017-05-06SCI32: Disable VMD kPlayFlagBlackPalette flagColin Snover
Videos in GK2 use this flag (e.g. the chapter 6 intro). Now that GfxPalette32::updateHardware no longer calls OSystem::updateScreen (only GfxFrameout::frameOut does this now), every time a palette swap occurs during playback, there is a frame of blackness that should not exist. This is because the order of operation is: 1. Send black palette 2. Call frameOut (which updates the screen) 3. Send new, correct palette 4. No frameOut (so the screen is not updated with the correct palette) OSystem::updateScreen cannot be called multiple times for the same frame due to vsync, but also, there does not appear to be any reason to send a black palette, since it seems to be intended to avoid temporarily rendering video frames with the wrong palette on a hardware device that cannot guarantee simultaneous application of a new palette and new pixel data. ScummVM does not have such a problem, so this feature appears to be unnecessary for us. For the moment, this 'feature' remains hidden behind an ifdef, instead of being removed entirely, to avoid potential confusion when comparing VMD code from SSCI.
2017-05-06SCI32: Centralize handling of pixel format switchesColin Snover
2017-04-23SCI32: Fix bad draw rectangle size in Duck video playerColin Snover
This was causing uninitialised garbage data from the scale buffer to be drawn to the screen.
2017-04-23SCI32: Remove unused SegManager from DuckPlayerColin Snover
2017-04-23SCI32: Add kPlayVMD subop 27 (SetPlane)Colin Snover
Used by RAMA, when playing a video at the Hub Camp computer at the beginning of the game (room 1004).
2017-04-22SCI32: Disable brightness boost when black-lined video is disabledColin Snover
The boost is intended to compensate for the darkness caused by the black lines, so should not be applied when there are no black lines. This fixes too-bright videos in at least LSL7.
2017-04-22SCI32: Store handle to VMD bitmap separately from ScreenItemColin Snover
In at least RAMA, when using the pocket computer to view a mail and then pressing the "return" button, the ScreenItem containing the VMD will be destroyed before the VMD player is told to close the video, resulting in a use-after-free trying to access the bitmap ID through the deleted ScreenItem.
2017-03-30SCI32: Implement known-used portions of kPlayDuckColin Snover
2017-01-09SCI32: Fix invalid bitmap deletion in AVIPlayerColin Snover
2017-01-02SCI32: Load VMDs from resource bundlesColin Snover
GK2 includes some VMDs in the RESSCI.00n volume bundles for the chase scene at the end of Chapter 6.
2016-12-17SCI32: Fix bitmap surface memory leaks in video playersColin Snover
Fixes Trac#9662.
2016-11-19SCI32: Remove no-longer-necessary Phant1 VMD sync hackColin Snover
2016-11-04SCI32: Implement kPlayVMDIgnorePalettesColin Snover
Used in Shivers room 35170 when pressing the play button.
2016-11-04SCI32: Stop digital audio when VMDs open in some SCI2.1 gamesColin Snover
2016-11-04SCI32: Fix VMD playback stuttering when kEventFlagToFrame is usedColin Snover
For example, Shivers room 932 when subtitles are enabled.
2016-10-26SCI32: Fix AVI renderingColin Snover
Fixes Trac#9588.
2016-10-26SCI32: Initialize video buffers to avoid flash of garbage memoryColin Snover
2016-09-29SCI32: Break into debugger after frameout, not beforeColin Snover
2016-09-29SCI32: Clean up scaling flagsColin Snover
2016-09-29SCI32: Implement kSetHotRectanglesColin Snover
Used only by chapter 7 of Phant1.
2016-09-29SCI32: Skip SEQ playback if file not foundColin Snover
CID 1361588.
2016-09-29SCI32: Fix incorrect use of speedThrottler in Video32Colin Snover
The sleep values for video playback are the amount of time until the next frame needs to be displayed, whereas speedThrottler is used to ensure that a given amount of time always elapses between two triggered speedThrottler calls.
2016-09-29SCI32: Explicitly instantiate MIN/MAX templatesColin Snover
2016-08-19SCI32: Add kPlayVMDGetStatus kernel callColin Snover
Used by Lighthouse.
2016-08-19SCI32: Implement kRobotColin Snover
2016-08-19SCI32: Hide cursors in 24bpp video playback modeColin Snover
Drawing the cursor in this mode will result in a read overflow as it is 8bpp.