56 Commits

Author SHA1 Message Date
antoniou79 c88d19dc44 VIDEO: Fix seeking to a keyframe in BINK videos
When seeking to a keyframe, that is not the first frame of the video, audio should not break or desync

The special code in BinkDecoder::BinkAudioTrack::seek() for fixing audio underrun should apply in the case of key frames as well

A test case for this issue can be constructed in MYST3, if the video at the start (10002), when Catherine is sitting on the bench with the baby and talks to the stranger, is set to start at frame 1 instead of 2.
2026-02-01 11:28:27 +01:00
Donovan Watteau 69dd0889cc JANITORIAL: Update some HTTP links in comments to HTTPS
The modern web is mostly HTTPS now, and some browsers may start giving
warnings when one uses a plain HTTP connection.

Only update the protocol when the HTTPS connection exists and fully
works.  Code from external projects/tools is kept as is.
2025-10-29 14:22:37 +01:00
Cameron Cawley 1c7e5a75c2 IMAGE: Unify the default pixel format for YUV codecs 2025-07-13 20:01:28 +03:00
Cameron Cawley 421cb1f087 COMMON: Rename common/math.h to common/intrinsics.h 2024-07-27 14:00:48 +03:00
Paul Gilbert 3d71d8e08c COMMON: Move huffman.h to common/compression/ 2024-07-15 02:56:12 +02:00
Cameron Cawley adef12d993 VIDEO: Implement setOutputPixelFormat() for BinkDecoder 2023-04-05 12:45:13 +02:00
Cameron Cawley 0581301b24 COMMON: Move huffman.h back out of the compression directory 2022-12-11 22:33:23 +01:00
Eugene Sandulenko fb7095f5a4 COMMON: Move all compression-related files to a separate directory 2022-12-01 11:53:02 +01:00
Cameron Cawley e04000d4b0 COMMON: Move FFT, DCT, MDCT, RDFT, SineTable, CosineTable and getSineWindow into Math 2022-11-20 14:32:05 +01:00
Cameron Cawley 59682f9ccf AUDIO: Unify implementations of SilentAudioStream 2022-11-13 23:14:39 +02:00
Cameron Cawley 47755b4b38 COMMON: Make better use of inlining in BitStream functions 2022-08-28 00:05:31 +03:00
Paweł Kołodziejski e3fc9b8226 VIDEO: Silence Sanitizer runtime error 2022-01-06 00:07:14 +01:00
Eugene Sandulenko abea37c9bb ALL: Update ScummVM project license to GPLv3+ 2021-12-26 18:48:43 +01:00
Orgad Shaneh 2e68b4ffdc JANITORIAL: Use override
Using clang-tidy modernize-use-override
2021-11-14 02:59:23 +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
Eugene Sandulenko 5e7fe2dc57 JANITORIAL: Replace spaces in indentation with tabs 2021-04-15 21:20:36 +02:00
Paweł Kołodziejski 0051eef251 VIDEO: Added support for alpha component support for BINK videos 2020-09-24 14:24:17 +02:00
Paweł Kołodziejski 5c441f9420 VIDEO: Added support for seeking BINK streams 2020-09-24 01:23:50 +02:00
Paweł Kołodziejski 1aff4a4cd3 VIDEO: Added getter for getFrameRate() for BINK and SMK video streams. 2020-09-24 00:26:27 +02:00
D G Turner b7b66c5049 VIDEO: Fix Missing Default Switch Cases
These are flagged by GCC if -Wswitch-default is enabled.
2019-11-30 19:47:06 +00:00
Bastien Bouclet 0f57aea2df COMMON: Use a prefix table to speed up the Huffman decoder
Symbols for codes shorter than the prefix table index width are stored
in the table. All the entries in the table with an index starting with
the code are set to the symbol value. That way, when decoding it is
possible to get the number of bits corresponding to the table width from
the bitstream and directly find the symbol value. Longer code still need
to be searched for in the codes list.
2019-04-13 16:24:25 +03:00
Bastien Bouclet 43e04d19c4 VIDEO: Fix Bink clearing color comment
YUV 000 is a green, not black. Thanks DrMcCoy for noticing and fixing
the issue.
2019-04-01 20:49:51 +02:00
Bastien Bouclet 195b4cbd20 VIDEO: Fix an integer overflow when dequantizing the DCT coeffs
See https://github.com/FFmpeg/FFmpeg/commit/2968bedf129558024ea87a1aabc4aa2d3a5bcb6e
2019-04-01 20:49:45 +02:00
Adrian Frühwirth 9bee9e1ba6 JANITORIAL: Fix whitespace 2018-04-19 12:08:31 +02:00
Bastien Bouclet 6e6fab5b83 VIDEO: BINK: Fix plane data clobbering caused by incorrect pitch value
When decoding blocks, the YUV planes' pitches were computed using the
target video surface size instead of the block based size, resulting in
decoded plane data being overwritten for some video sizes.

Affected videos are LEOS-11102.bik and LEOS-11152.bik from Myst III.
2017-10-08 08:54:40 +02:00
Torbjörn Andersson 59f8e62adf JANITORIAL: Silence GCC 7 warnings
These fall throughs have to be deliberate, or they wouldn't have to
check if mode equals 2 in the mode == 2 cases.
2017-09-11 06:48:34 +02:00
Bastien Bouclet ec49730711 VIDEO: Allow setting the mixer sound type used to play audio tracks 2017-07-27 06:40:07 +02:00
Paul Gilbert bd010bc79f COMMON: Converted Common::BitStream to use DisposeAfterUse 2016-09-10 11:16:07 -04:00
Willem Jan Palenstijn a22f9bccf3 VIDEO: Reduce BinkDecoder stack usage
See bug #6677.
2014-07-08 21:18:12 +02:00
Johannes Schickel 8f3a923686 VIDEO: Make GPL headers consistent in themselves. 2014-02-18 02:39:39 +01:00
Matthew Hoops ce82977ea1 VIDEO: Improve support for multiple Bink audio tracks 2014-01-11 18:43:42 -05:00
Johannes Schickel 0e3f8d68c4 VIDEO: Silence C++11 narrowing warnings. 2013-01-09 07:24:37 +01:00
Johannes Schickel 89abab97e3 JANITORIAL: Remove trailing whitespaces.
Powered by:
git ls-files "*.cpp" "*.h" "*.m" "*.mm" | xargs sed -i -e 's/[ \t]*$//'
2012-09-26 04:17:55 +02:00
Matthew Hoops 09269fce8c GRAPHICS: Implement different luminance ranges
Bink and Theora are now much improved
2012-09-18 16:50:01 -04:00
Matthew Hoops 893a2b37ff GRAPHICS: Rework YUV->RGB code a bit 2012-09-17 19:30:46 -04:00
Einar Johan Trøan Sømåen d6be917808 VIDEO: Add support for odd-sized Bink-videos 2012-09-07 16:29:00 +02:00
Matthew Hoops 18823198ad VIDEO: Merge AdvancedVideoDecoder into VideoDecoder 2012-08-16 14:00:14 -04:00
Matthew Hoops 57a06e383b VIDEO: Convert Bink to the new AdvancedVideoDecoder API 2012-07-25 11:22:28 -04:00
Matthew Hoops 10f7e805c2 VIDEO: Add volume/balance control to VideoDecoder 2012-05-28 14:00:16 -04:00
Matthew Hoops 9e330174c8 VIDEO: Change getElapsedTime() into getTime()
This name change accompanies a slight meaning change; now it means the current time position from the beginning of the video and not from starting the video.
2012-05-12 21:28:13 -04:00
Bastien Bouclet 9d85382c15 VIDEO: Fix the BINK decoder to play file whose width is 24px
See https://ffmpeg.org/trac/ffmpeg/ticket/962
2012-02-09 16:10:47 +01:00
Bastien Bouclet 1432011fdc VIDEO: Small refactoring of the Bink Decoder
This allows subclassing the Bink decoder to add seeking support
2012-01-09 08:52:08 +01:00
Eugene Sandulenko f5e4d63a77 Merge pull request #80 from DrMcCoy/newbitstream
COMMON: Rewrite Common::BitStream as a template
2011-10-20 09:27:26 -07:00
Bastien Bouclet cf54fc98d5 VIDEO: Fix Bink bundle count lenghts to be computed like ffmpeg does.
Fixes several movies in Myst 3.
2011-09-18 09:38:30 +02:00
Sven Hesse f1724f1637 COMMON: Rewrite BitStream as a template
This rewrites BitStream as a template, allowing for more different
memory layouts of the actual bit data.
2011-08-27 23:37:07 +02:00
Alyssa Milburn c39245b771 VIDEO: Remove incorrect TO_LE_16 calls from Bink audio code. 2011-08-06 10:44:16 +02:00
Sven Hesse 62862ecb23 VIDEO: Don't depend on IEEE floats for Bink audio 2011-07-24 23:56:56 +02:00
Littleboy da60ff3ded JANITORIAL: Fix MSVC warnings
- Conversion from double to float
 - Unary minus operator applied to unsigned type
 - ARRAYSIZE redefinition
2011-07-19 14:12:07 -04:00
Matthew Hoops 724d7ef101 VIDEO: Use C++ versions of exp/ldexp
Should fix compilation on Mac PPC, and MinGW32 on buildbot
2011-07-19 07:35:40 -04:00
Filippos Karapetis e1ca235c44 BINK decoder: Fixed compilation with MSVC 2011-07-19 10:50:48 +03:00