1
0
Fork 0
Commit graph

54 commits

Author SHA1 Message Date
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
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
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
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
krcroft
b99184d97e Replace SDL_RWFromMem with more applicable SDL_RWFromConstMem 2019-10-28 22:43:23 +01:00
krcroft
d9658b4788 Replace strncpy with snprintf 2019-10-28 22:43:23 +01:00
krcroft
d2333979cf Tailor SDL_Sound for interal use by DOSBox
- Removes extraneous (and unused) includes

 - Cleans up many compiler warnings

 - Fixes SDL include statements (using proper `#include <file.h>` directives
   given the prior `#include "file.h"` directives should only be used when
   including a projects' own header files instead of -Ipath-provided system
   headers)

 - Eliminates extraneous codecs

Many of these were made after building SDL_Sound under various compilers
and operating systems and hitting various issues. It currently builds
clean without errors or warnings on all our workflow compilers and
versions.
2019-10-28 22:43:23 +01:00
Ryan C. Gordon
0420181d59 Add built-in SDL_sound r599
This commit contains several files imported from SDL_sound Mercurial
repo: https://hg.icculus.org/icculus/SDL_sound/ r599 (also tagged as
"final-lgpl-revision").
2019-10-26 06:55:13 +02:00
Arthur Ouellet
db67ff2e3b Add built-in C++ object serializer [snapshot as of 2019-10-23] 2019-10-25 00:47:43 +02:00
Yann Collet
28cf402cae Add built-in Extremely Fast Hash algorithm: xxHash [snapshot as of 2019-10-23] 2019-10-25 00:47:43 +02:00