1
0
Fork 0
Commit graph

95 commits

Author SHA1 Message Date
Anton Shepelev
d1be65b105 Add output type texturepp for pixel-perfect scaling
The new output type `texturepp' was added, which implements
pixel-perfect scaling using SDL's hardware-accelerated texture output.
In pixel-pefect mode, each original pixel is displayed as a rectangle m
by n pixels, so that m:n yields a reasonably good approximation of the
pixel aspect ratio (PAR) of the emulated graphical mode while using as
much screen space as possible. The balance between the precision of
aspect ratio and the utilisation of screen space is specified as the
`parweight' parameter to pp_getscale() and is currently hard-coded in
sdlmain.cpp.

This implementation emulatates pixel-perfect mode as a special case of
nearest-neighbor interpolation when the horisontal and vertical scaling
factors are integers.
2020-03-09 20:12:36 +01:00
krcroft
bcae097e22 Refresh copyrights and headers 2020-03-07 11:07:48 +01:00
krcroft
37a1610f1c Bump the MP3 fast-seek-table's version identifier
The hashest generated by xxHash have changed between v0.7.2 and v0.7.3,
therefore the hashes in prior-genreated lookup tables will no longer
be valid. By bumping the file's identifier, the fast-seek code will
reject these older files and regenerate new ones.
2020-03-07 01:46:55 +01:00
krcroft
27538eeb2e Update the existing PVS false-positives for xxHash v0.7.3 2020-03-07 01:46:55 +01:00
Yann Collet
355b6faba7 Sync xxHash with upstream (v0.7.3) 2020-03-07 01:46:55 +01:00
Joshua Fern
f2029d71d8 Update copyright dates to 2020 2020-03-07 00:18:01 +01:00
krcroft
08c6fc10c1 Add a signed integer ceiling divide function 2020-03-06 19:21:44 +01:00
krcroft
be643d66b1 Cleanup file size and header length check 2020-03-06 19:21:44 +01:00
krcroft
51284a6d42 Simplify conditional logic 2020-03-06 19:21:44 +01:00
krcroft
0227fae934 Use auto when type is explicitly cast 2020-03-06 19:21:44 +01:00
krcroft
96a9723df5 Drop "[bug]" postfix in assets 2020-03-06 19:21:44 +01:00
krcroft
619b21425a Handle and fix small-block reads from decoder interfaces
Context: The codecs implement a read-write callback function
(RWops) used to read N bytes from the underlying binary stream
into a buffer. In some cases, a codec might only return a
subset of the requested bytes and requires subsequent read()
requests to get the remaining bytes. Internally, the codec
might have to reposition or run second decode sequence to get
the bytes.

The RWops callbacks for the various codecs were inconsistently
implemented: some performed the above mentioned subsequent
re-read attempts while others simply accepted whatever we got
after the first read attempt. This commit makes them the same
by attempting to re-read ("get the requested bytes at all
costs") until the underly stream goes EOF.

Some of these RWops functions also contained a book-keeping
bug from upstream that resulted in over-reading after
under-delivering on the first read attempt. The concequence
being that too much data would be written to the buffer
(writing past its end) and leaving the underlying stream's
file position too-far-forward.
2020-03-06 19:21:44 +01:00
krcroft
d2979db2fe Cleanup debug and on-error handling 2020-03-06 19:21:44 +01:00
krcroft
9828f2d912 Perform some minor house-keeping in the mp3 and seek handler
- Cleanup some types where precision is lost.
- Explicitly cast between types (fixes all effc++ warnings)
- Simplify lossy and cast-heavy floating-point coversions with ceil_divide
2020-03-06 19:21:44 +01:00
krcroft
fc9711c932 Use C++ typing in Opus decoding interface
Also add more assert checks.
2020-03-06 19:21:44 +01:00
krcroft
c484ef7e21 Migrate Opus decoding interface to C++ 2020-03-06 19:21:44 +01:00
Anton Shepelev
9ae663ca12 Include <ctype.h> to declare toupper() 2020-03-01 21:13:19 +01:00
krcroft
93f9cd7e4e Fix audio-related static analysis issues 2020-01-29 17:13:25 +01:00
David Reid
b040cb32c3 Sync dr_wav with upsteam (v0.11.4) 2020-01-29 17:13:25 +01:00
David Reid
a3c0d48865 Sync dr_mp3 with upsteam (v0.5.5) 2020-01-29 17:13:25 +01:00
David Reid
5d829d538d Sync dr_flac with upsteam (v0.12.4) 2020-01-29 17:13:25 +01:00
krcroft
ec8fcb4af2 Fix autoconf nuances with AM_CONDITIONAL 2020-01-27 10:46:21 +01:00
krcroft
f6060a5148 Allow Opus CDDA support to be optionally disabled
Adds a `--disable-opus-cdda` flag that explicitly disables support
for Ogg Opus CDDA tracks and in turn avoid the need for the Opus package
dependencies such as the opusfile, opus, and ogg libraries.

This feature does not alter the default operation of ./configure, which
is to enable Opus CDDA support and quit if the Opus dependency package,
opusfile, is not found.  The user can then choose to either a) install
the package or b) explicitly disable Opus support.

This commit also includes:

- fixes for a double-free in the MP3 close routine that
  was discovered during testing

- a message if a CD audio track cannot be added during CDROM
  mounting (such as attempting to use Opus tracks when the binary
  does not support them).

- the --disable-opus-cdda flag in our config heavy workflow
2020-01-27 10:46:21 +01:00
krcroft
02484abce3 Test NULL checks in dr_flac 2020-01-22 09:40:00 +01:00
krcroft
fb6e0e88bb Fix NULL issues in zmbv.cpp
There is no sense in testing the pointers against null, as the memory was allocated using
the 'new' operator, which throws an exception.
2020-01-22 09:40:00 +01:00
ant-222
750b407801 Add a missing include of stdio.h for snprintf() 2020-01-19 22:54:28 +01:00
Patryk Obara
0d71bf0ea4 Silence Coverity issue in SDL_sound
Coverity finds use after free on value pointed by sample_list, but fails
to detect, that this is a global variable, that is being updated by
Sound_FreeSample before freeing any memory.

This code is obviously written with the purpose of freeing whole list,
so there's nothing unexpected here - this is definitely a false
positive finding.

We could mark this issue as false-positive in Coverity, but I think it's
better to avoid tripping it in the first place.
2020-01-11 20:52:55 +01:00
Patryk Obara
4c356de255 Include only necessary headers in nukedopl 2020-01-09 22:50:47 +01:00
Patryk Obara
f4609262bf Move nukedopl to libs
This way there's no need to reformat the nukedopl code to adhere to
DOSBox coding conventions.
2020-01-09 22:50:47 +01:00
Patryk Obara
c3e7997f75 Fix conversion warnings after SDL2 transition
Detected by MSVC compiler; several warnings:
"(…) conversion from 'Sint64' to '<type>', possible loss of data"
2019-12-26 03:23:19 +01:00
krcroft
8f2a153dc2 STB Vorbis: eliminate inaccessible branch
The eliminated code removes the (ch == 1) branch, which is scoped
within this if condition: `if (rtype == 2 && ch != 1)`, therefore
the (ch == 1) branch will never be taken.
2019-12-05 10:35:44 +01:00
krcroft
a7a899fdb0 STB Vorbis: prevent division by zero in decode_resign if ch == 0
In the call to decode_residue:
  decode_residue(f, residue_buffers, ch, n2, r, do_not_decode);

The channel count is previously intialized as zero and incremented
based on a for-loop (f->channels) plus a conditional,
if (map->chan[j].mux == i).  If this doesn't happen then 'ch'
remains zero.

Once inside decode_residue(..), the code has three branches based
on channel count: stereo (ch == 2), mono (ch == 1), and then the
exception if it's neither of those (simple 'else').  It's in here
where a zero-valued 'ch' can be used as the denominator in these
calculations:
    int c_inter = z % ch
    p_inter = z/ch;

Obviously this 'else' branch is meant for channel counts greater
than two an not for zero channels; so this change simply makes
that branch only valid if (ch > 2).
2019-12-05 10:35:44 +01:00
krcroft
bedcc244d9 STB Vorbis: Check before derefercing a potential NULL pointer 2019-12-05 10:35:44 +01:00
David Reid
84588c50bd Bump dr_wav to v0.11.2
Fixes:
- https://github.com/mackron/dr_libs/issues/84
- https://github.com/mackron/dr_libs/issues/83
- https://github.com/mackron/dr_libs/issues/82
- https://github.com/mackron/dr_libs/issues/81
- https://github.com/mackron/dr_libs/issues/80
- https://github.com/mackron/dr_libs/issues/79
- https://github.com/mackron/dr_libs/issues/78
- https://github.com/mackron/dr_libs/issues/77
- https://github.com/mackron/dr_libs/issues/76
- https://github.com/mackron/dr_libs/issues/75
2019-12-03 06:35:00 +01:00
David Reid
6b5a5acc9a Bump dr_mp3 to v0.5.4
Fixes:
- https://github.com/mackron/dr_libs/issues/86
- https://github.com/mackron/dr_libs/issues/85
2019-12-03 06:35:00 +01:00
David Reid
1866b4d295 Bump dr_flac to v0.12.3
Fixes:
- https://github.com/mackron/dr_libs/issues/93
- https://github.com/mackron/dr_libs/issues/92
- https://github.com/mackron/dr_libs/issues/91
- https://github.com/mackron/dr_libs/issues/90
- https://github.com/mackron/dr_libs/issues/89
- https://github.com/mackron/dr_libs/issues/88
- https://github.com/mackron/dr_libs/issues/87
2019-12-03 06:35:00 +01:00
krcroft
1f2ff70463 Ensure alloca is not defined before defining 2019-12-03 06:35:00 +01:00
krcroft
01a61a33f8 Remove ineffective consts and indicate unused variables 2019-12-03 06:35:00 +01:00
Patryk Obara
618ab5ea08 Remove several unused variables in zmbv 2019-11-24 17:14:32 +01:00
Patryk Obara
bdee95848e Silence a number of switch warnings in zmbv 2019-11-24 17:14:32 +01:00
krcroft
9892c1722a Remove SpeexDSP from the auto-tools configuraiton 2019-11-12 08:17:09 +01:00
krcroft
5a9dd2866b
Refactor and pass-through the decode buffer 2019-11-11 13:27:19 -08:00
krcroft
83e1979f26
Eliminate buffers, conversions, and unused code 2019-11-11 13:20:11 -08:00
David Reid
3d8dceee57
Bump dr_mp3 codec to v0.5.2 2019-11-11 13:16:22 -08:00
krcroft
dfc9b2db31 Add the audio handling changes to build system and documentation 2019-11-06 05:47:03 +01:00
krcroft
fd695b0948 Cleanup comments and NULL-handling in decoders 2019-11-06 05:15:42 +01:00
krcroft
b932a89f87
Adapt the vorbis library to SDL_Sound's needs 2019-11-05 17:21:39 -08:00
krcroft
f39b51fa78 Add SDL decoders for their corresponding codecs 2019-11-02 19:27:36 +01:00
krcroft
1f193e14ab Simplify the task of making bit-field operations C and C++ compatible 2019-10-28 22:43:23 +01:00
krcroft
5736a7de9b Make comment match reality 2019-10-28 22:43:23 +01:00