122 Commits

Author SHA1 Message Date
Le Philousophe 06dd647f13 VIDEO: Make sure QT decoder palette is dirty when starting
When a video is stopped and restarted, the palette of the video track
was kept while it was reset in the outer VideoDecoder.
When setting the reverse flag or seeking, force a palette reset.

Fix Trac#16319.

The commit b8f52246a8 correctly fixed the
hasDirtyPalette function which returned true as soon as a palette was
present but this made the palette update in the outer VideoDecoder not
happening at restart.
2025-11-03 19:32:48 +02:00
Cameron Cawley a996f6bd3f IMAGE: Fix dithering 8bpp images when the container owns the palette 2025-05-05 16:27:16 +03:00
Cameron Cawley 9bbb019950 IMAGE: Split the generic QuickTime dithering into a separate class 2025-04-30 19:20:29 +08:00
Matthew Jimenez 22c34f1f72 VIDEO: Use palette class in QuickTIme decoder 2025-03-09 17:29:24 +02:00
Cameron Cawley d7d38b867c VIDEO: Set the output pixel format for all QuickTime samples 2025-03-03 07:30:22 +02:00
Eugene Sandulenko ec1d352988 VIDEO: QTVR: Put all debug output in 'gvideo' channel 2025-02-23 21:53:16 +01:00
Eugene Sandulenko 531e1effbd VIDEO: Switched decoder debug output to 'gvideo' debug channel 2025-02-22 15:51:24 +01:00
Eugene Sandulenko 90cceae302 VIDEO: QTVR: Added API for configuring QTVR player 2025-02-19 14:25:56 +01:00
Eugene Sandulenko 565254003e JANITORIAL: Cleanup disabled code 2025-02-14 23:09:02 +01:00
Eugene Sandulenko 2ad25492fd VIDEO: Put mouse coordinates in Common::Point 2025-02-14 23:09:02 +01:00
Eugene Sandulenko e87b541e5d VIDEO: QTVR: Implement gotoNodeID() method, remove hardcoded nodeid 2025-02-13 00:57:29 +01:00
Eugene Sandulenko 57347923a0 VIDEO: QTVR: Restore object movies playback 2025-02-06 23:54:33 +01:00
Eugene Sandulenko c4ac202659 VIDEO: QTVR: Initial code for proper panorama projection 2025-02-06 16:48:14 +01:00
Eugene Sandulenko f8d3ad96e2 VIDEO: QTVR: Add method to set target video size 2025-02-05 00:03:07 +01:00
Eugene Sandulenko d627668529 VIDEO: QTVR: Encapsulated panorama construction into PanoTrackHandler 2025-02-04 23:28:04 +01:00
Eugene Sandulenko afda417473 VIDEO: Fix reading of 'pano' chunk from QTVR and initial panorama construction preps 2025-02-04 01:58:59 +01:00
Eugene Sandulenko 717bfa5702 VIDEO: QTVR: Plugged in PanoTrackHandler 2025-01-31 16:49:02 +01:00
Eugene Sandulenko 06e6f95c92 VIDEO: Initial code for reading 'pano' description chunk in QTVR 2025-01-28 02:08:20 +01:00
Eugene Sandulenko fb6df4560d VIDEO: Split out QTVR code into a separate file
Initial code on implementing Panorama tracks
2025-01-27 00:20:34 +01:00
Eugene Sandulenko 65e99041ef VIDEO: Fix calloc/delete mismatch 2025-01-25 18:11:03 +01:00
Eugene Sandulenko 070820f9b8 VIDEO: Implement hotzones for QTVR objects, fix cursors 2025-01-25 17:46:59 +01:00
Eugene Sandulenko 35c3e69fee VIDEO: Implement navigation cursor logic for object QTVRs 2025-01-25 17:46:58 +01:00
Eugene Sandulenko 464e6f55d0 VIDEO: Compute tilt and pan angles for QTVR object movies 2025-01-25 17:46:58 +01:00
Eugene Sandulenko b22892b71d VIDEO: Update object cursors depending on the action 2025-01-25 17:46:58 +01:00
Eugene Sandulenko 32e690c30f VIDEO: Show default cursor for object QTVRs 2025-01-25 17:46:58 +01:00
Eugene Sandulenko 662bec9d20 VIDEO: Prevent out-of-index for edge cases in QTVR object rotation 2025-01-24 01:09:31 +01:00
Krish 19647ff996 VIDEO: Implement row and column navigation methods 2024-08-14 21:52:03 +02:00
Krish 8221cd6df0 VIDEO: Implement NodeData struct and getNodeData method 2024-08-14 21:52:03 +02:00
Krish 00a5c87934 VIDEO: Implement rendering of panorama movie in QuickTime (WIP)
This commit implements QuickTime panorama movie rendering.

The functionality does not meet expectations; further changes are required.

Reference: https://patentimages.storage.googleapis.com/74/82/23/744b4091f6a2c0/US5396583.pdf
2024-06-30 20:43:49 +02:00
Krish e4624cf95b COMMON: Implement interactive control for QuickTime object movies
This commmit implements interactive mouse control for QuickTime object movies.
2024-06-30 20:43:49 +02:00
sluicebox ef813c6d4d VIDEO: Complete reversion from previous commit 2023-11-25 21:28:41 -08:00
sluicebox 38d507d9b8 VIDEO: Revert QuickTime changes that crash Myst
Reverts QuickTime commits that crash multiple Myst videos:
1e877bab26
156ba82247

Fixes bug #14665
2023-11-25 20:57:27 -08:00
Le Philousophe a700883e6f JANITORIAL: Fix spaces vs tab mismatch 2023-11-19 11:35:35 +01:00
Scott Percival ffa80f5aaf VIDEO: Add alias support to QuickTime parser 2023-07-23 14:07:20 +02:00
Harishankar Kumar 156ba82247 VIDEO: Add support for custom rate in quicktime videos
used in mediaband undome
2023-04-14 16:46:49 +02:00
Harishankar Kumar 1e877bab26 VIDEO: Support quicktime reverse playback with multiple edits 2023-04-14 16:46:49 +02:00
Cameron Cawley 8a4a5bdc55 VIDEO: Add setOutputPixelFormat() to the VideoDecoder interface 2023-04-05 12:45:13 +02:00
Scott Percival 94e482145b VIDEO: Fix infinite loop when loading greyscale QT videos 2022-10-06 00:05:17 +02:00
sluicebox 69662ee9a4 VIDEO: Fix QuickTime regression with mediaTime and dithering
Fixes an error when playing a QuickTime video that has a mediaTime set
on its first edit. This was caused by mediaTime changes in:
ef184a6cef

Those changes buffered frames during initialization so that the keyframe
and other frames don't play instead of the intended start frame that
mediaTime specifies. My mistake was that decoding isn't allowed during
VideoDecoder::loadStream(); VideoDecoder::setDitheringPalette() requires
that no frames have been decoded yet, and at least Director and Mohawk
call that.

Now the initial mediaTime buffering is delayed until the first decode.

Fixes bug #13479 where certain Myst videos error.
Fixes the opening movie in the Director game Chop Suey.
2022-08-04 15:49:30 -04:00
D G Turner 3192daf0a7 VIDEO: Fix Signed vs. Unsigned Warnings in MTROPOLIS changes to QT Decoder 2022-06-16 21:58:09 +02:00
elasota a4c8fb1b85 MTROPOLIS: Add support for QuickTime ranges, fix Obsidian Bureau light carousel triggering without interaction. 2022-06-16 21:58:09 +02:00
Eugene Sandulenko abea37c9bb ALL: Update ScummVM project license to GPLv3+ 2021-12-26 18:48:43 +01:00
sluicebox d5f6d2543f VIDEO: Fix QuickTime decoding when color depth is 32
Color depths greater than 32 have grayscale bit 0x20 set, but the
decoder incorrectly treats 32 as grayscale and and clears the bit,
leaving the color depth as zero and causing codecs to fail.

Confirmed correct behavior in the ffmpeg code that the decoder was
based off. The decoder was introduced with the Mohawk engine in
2009,so presumably no Mohawk movies had color depth 32.

Fixes videos in the Director game Virtual Cocktail Bar
2021-11-13 04:09:26 -06:00
sluicebox dcd537337b VIDEO: Fix QuickTime decoding of edits with mediaTime
QuickTimeDecoder has a bug which causes the mediaTime offset to be
ignored when a track begins with an empty edit and is followed by an
edit with a non-zero mediaTime. This causes the KQ6 Mac opening movie
to start several tracks at unintended frames (they're never supposed to
be displayed) and the intended frames at the end of the edit to never
be displayed. (Bug #11085)
2021-11-12 18:47:22 +02:00
sluicebox 6e3403464b VIDEO: Limit QuickTime workaround to Riven
QuickTimeDecoder has a workaround for a video in a Spanish version of
Riven, but this workaround breaks valid QuickTime videos such as the
KQ6 Macintosh opening movie. (Bug #11085)

Until the original Riven video bug can be debugged to improve the
workaround, it is now disabled unless an engine enables it.

Workaround added in: b8abe40085
2021-11-12 18:47:22 +02:00
sluicebox 946bb818ea VIDEO: QuickTime comments, mild cleanup 2021-11-12 18:47:22 +02:00
Orgad Shaneh 7a4e5612de JANITORIAL: Replace new[]/memset with new[]()
Mostly done using the following Ruby script:

(Dir.glob('**/*.cpp') + Dir.glob('**/*.h')).each do |file|
  s = File.read(file, encoding: 'iso8859-1')
  t = s.gsub(/(([\w_.\[\]]+)\s*=\s*new\s+\S+?\[[^\]]+?\](?!\())([^\{\}]*?)\n\s+memset\(\s*\2\s*,\s*0\s*,[^;]*;/m, '\1()\3')
  if t != s
    File.open(file, 'w') { |io| io.write(t) }
  end
end
2021-11-10 19:53:15 +01:00
djsrv 2eca1126c5 VIDEO: Use Path type in VideoDecoder functions 2021-08-07 10:44:37 +02:00
djsrv d0bca26bf7 VIDEO: Add default QuickTime palettes
This is used in L-Zone.
2021-06-29 22:48:14 -04:00
Bastien Bouclet f72f71a6cc VIDEO: Keep track of the duration of ignored edits
Fixes inconsistent videos playing in Caldoria in the DVD version of JMP
Pegasus Prime.
2019-02-02 13:30:44 +01:00