Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
M
miniaudio
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
MyCard
miniaudio
Commits
8d15aa27
Commit
8d15aa27
authored
Aug 05, 2018
by
David Reid
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update external libraries and fix C++ on older versions of GCC.
parent
88a694af
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
60 additions
and
32 deletions
+60
-32
extras/dr_flac.h
extras/dr_flac.h
+14
-9
extras/dr_mp3.h
extras/dr_mp3.h
+21
-2
extras/dr_wav.h
extras/dr_wav.h
+24
-20
tests/mal_test_0.c
tests/mal_test_0.c
+1
-1
No files found.
extras/dr_flac.h
View file @
8d15aa27
// FLAC audio decoder. Public domain. See "unlicense" statement at the end of this file.
// FLAC audio decoder. Public domain. See "unlicense" statement at the end of this file.
// dr_flac - v0.9.
8 - 2018-07-24
// dr_flac - v0.9.
9 - 2018-08-05
//
//
// David Reid - mackron@gmail.com
// David Reid - mackron@gmail.com
...
@@ -162,7 +162,7 @@ extern "C" {
...
@@ -162,7 +162,7 @@ extern "C" {
#endif
#endif
#if defined(__GNUC__)
#if defined(__GNUC__)
#if defined(__x86_64__) || defined(__ppc64__)
#if defined(__x86_64__) || defined(__ppc64__)
|| defined(__aarch64__)
#define DRFLAC_64BIT
#define DRFLAC_64BIT
#endif
#endif
#endif
#endif
...
@@ -5504,15 +5504,17 @@ drflac_bool32 drflac_seek_to_sample(drflac* pFlac, drflac_uint64 sampleIndex)
...
@@ -5504,15 +5504,17 @@ drflac_bool32 drflac_seek_to_sample(drflac* pFlac, drflac_uint64 sampleIndex)
//// High Level APIs ////
//// High Level APIs ////
// I couldn't figure out where SIZE_MAX was defined for VC6. If anybody knows, let me know.
#if defined(SIZE_MAX)
#if defined(_MSC_VER) && _MSC_VER <= 1200
#define DRFLAC_SIZE_MAX SIZE_MAX
#ifdef DRFLAC_64BIT
#define SIZE_MAX ((drflac_uint64)0xFFFFFFFFFFFFFFFF)
#else
#else
#define SIZE_MAX 0xFFFFFFFF
#if defined(DRFLAC_64BIT)
#endif
#define DRFLAC_SIZE_MAX ((drflac_uint64)0xFFFFFFFFFFFFFFFF)
#else
#define DRFLAC_SIZE_MAX 0xFFFFFFFF
#endif
#endif
#endif
// Using a macro as the definition of the drflac__full_decode_and_close_*() API family. Sue me.
// Using a macro as the definition of the drflac__full_decode_and_close_*() API family. Sue me.
#define DRFLAC_DEFINE_FULL_DECODE_AND_CLOSE(extension, type) \
#define DRFLAC_DEFINE_FULL_DECODE_AND_CLOSE(extension, type) \
static type* drflac__full_decode_and_close_ ## extension (drflac* pFlac, unsigned int* channelsOut, unsigned int* sampleRateOut, drflac_uint64* totalSampleCountOut)\
static type* drflac__full_decode_and_close_ ## extension (drflac* pFlac, unsigned int* channelsOut, unsigned int* sampleRateOut, drflac_uint64* totalSampleCountOut)\
...
@@ -5553,7 +5555,7 @@ static type* drflac__full_decode_and_close_ ## extension (drflac* pFlac, unsigne
...
@@ -5553,7 +5555,7 @@ static type* drflac__full_decode_and_close_ ## extension (drflac* pFlac, unsigne
drflac_zero_memory(pSampleData + totalSampleCount, (size_t)(sampleDataBufferSize - totalSampleCount*sizeof(type))); \
drflac_zero_memory(pSampleData + totalSampleCount, (size_t)(sampleDataBufferSize - totalSampleCount*sizeof(type))); \
} else { \
} else { \
drflac_uint64 dataSize = totalSampleCount * sizeof(type); \
drflac_uint64 dataSize = totalSampleCount * sizeof(type); \
if (dataSize >
SIZE_MAX) {
\
if (dataSize >
DRFLAC_SIZE_MAX) {
\
goto on_error;
/* The decoded data is too big. */
\
goto on_error;
/* The decoded data is too big. */
\
} \
} \
\
\
...
@@ -5754,6 +5756,9 @@ const char* drflac_next_vorbis_comment(drflac_vorbis_comment_iterator* pIter, dr
...
@@ -5754,6 +5756,9 @@ const char* drflac_next_vorbis_comment(drflac_vorbis_comment_iterator* pIter, dr
// REVISION HISTORY
// REVISION HISTORY
//
//
// v0.9.9 - 2018-08-05
// - Fix C++ build on older versions of GCC.
//
// v0.9.8 - 2018-07-24
// v0.9.8 - 2018-07-24
// - Fix compilation errors.
// - Fix compilation errors.
//
//
...
...
extras/dr_mp3.h
View file @
8d15aa27
// MP3 audio decoder. Public domain. See "unlicense" statement at the end of this file.
// MP3 audio decoder. Public domain. See "unlicense" statement at the end of this file.
// dr_mp3 - v0.2.
8 - 2018-08-02
// dr_mp3 - v0.2.
9 - 2018-08-05
//
//
// David Reid - mackron@gmail.com
// David Reid - mackron@gmail.com
//
//
...
@@ -1915,6 +1915,11 @@ int drmp3dec_decode_frame(drmp3dec *dec, const unsigned char *mp3, int mp3_bytes
...
@@ -1915,6 +1915,11 @@ int drmp3dec_decode_frame(drmp3dec *dec, const unsigned char *mp3, int mp3_bytes
info
->
layer
=
4
-
DRMP3_HDR_GET_LAYER
(
hdr
);
info
->
layer
=
4
-
DRMP3_HDR_GET_LAYER
(
hdr
);
info
->
bitrate_kbps
=
drmp3_hdr_bitrate_kbps
(
hdr
);
info
->
bitrate_kbps
=
drmp3_hdr_bitrate_kbps
(
hdr
);
if
(
!
pcm
)
{
return
drmp3_hdr_frame_samples
(
hdr
);
}
drmp3_bs_init
(
bs_frame
,
hdr
+
DRMP3_HDR_SIZE
,
frame_size
-
DRMP3_HDR_SIZE
);
drmp3_bs_init
(
bs_frame
,
hdr
+
DRMP3_HDR_SIZE
,
frame_size
-
DRMP3_HDR_SIZE
);
if
(
DRMP3_HDR_IS_CRC
(
hdr
))
if
(
DRMP3_HDR_IS_CRC
(
hdr
))
{
{
...
@@ -1979,6 +1984,16 @@ int drmp3dec_decode_frame(drmp3dec *dec, const unsigned char *mp3, int mp3_bytes
...
@@ -1979,6 +1984,16 @@ int drmp3dec_decode_frame(drmp3dec *dec, const unsigned char *mp3, int mp3_bytes
//
//
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
#if defined(SIZE_MAX)
#define DRMP3_SIZE_MAX SIZE_MAX
#else
#if defined(_WIN64) || defined(__ppc64__) || defined(__x86_64__) || defined(_M_X64) || defined(_M_ARM64) || defined(__aarch64__)
#define DRMP3_SIZE_MAX ((drmp3_uint64)0xFFFFFFFFFFFFFFFF)
#else
#define DRMP3_SIZE_MAX 0xFFFFFFFF
#endif
#endif
// Options.
// Options.
#ifndef DR_MP3_DEFAULT_CHANNELS
#ifndef DR_MP3_DEFAULT_CHANNELS
#define DR_MP3_DEFAULT_CHANNELS 2
#define DR_MP3_DEFAULT_CHANNELS 2
...
@@ -2656,7 +2671,7 @@ float* drmp3__full_decode_and_close_f32(drmp3* pMP3, drmp3_config* pConfig, drmp
...
@@ -2656,7 +2671,7 @@ float* drmp3__full_decode_and_close_f32(drmp3* pMP3, drmp3_config* pConfig, drmp
}
}
drmp3_uint64
newFramesBufferSize
=
framesCapacity
*
pMP3
->
channels
*
sizeof
(
float
);
drmp3_uint64
newFramesBufferSize
=
framesCapacity
*
pMP3
->
channels
*
sizeof
(
float
);
if
(
newFramesBufferSize
>
SIZE_MAX
)
{
if
(
newFramesBufferSize
>
DRMP3_
SIZE_MAX
)
{
break
;
break
;
}
}
...
@@ -2746,6 +2761,10 @@ void drmp3_free(void* p)
...
@@ -2746,6 +2761,10 @@ void drmp3_free(void* p)
// REVISION HISTORY
// REVISION HISTORY
// ===============
// ===============
//
//
// v0.2.9 - 2018-08-05
// - Fix C++ build on older versions of GCC.
// - Bring up to date with minimp3.
//
// v0.2.8 - 2018-08-02
// v0.2.8 - 2018-08-02
// - Fix compilation errors with older versions of GCC.
// - Fix compilation errors with older versions of GCC.
//
//
...
...
extras/dr_wav.h
View file @
8d15aa27
// WAV audio loader and writer. Public domain. See "unlicense" statement at the end of this file.
// WAV audio loader and writer. Public domain. See "unlicense" statement at the end of this file.
// dr_wav - v0.8.
2 - 2018-08-02
// dr_wav - v0.8.
3 - 2018-08-05
//
//
// David Reid - mackron@gmail.com
// David Reid - mackron@gmail.com
...
@@ -740,12 +740,13 @@ void drwav_free(void* pDataReturnedByOpenAndRead);
...
@@ -740,12 +740,13 @@ void drwav_free(void* pDataReturnedByOpenAndRead);
#endif
#endif
#endif
#endif
// I couldn't figure out where SIZE_MAX was defined for VC6. If anybody knows, let me know.
#if defined(SIZE_MAX)
#if defined(_MSC_VER) && _MSC_VER <= 1200
#define DRWAV_SIZE_MAX SIZE_MAX
#if defined(_WIN64)
#else
#define SIZE_MAX ((drwav_uint64)0xFFFFFFFFFFFFFFFF)
#if defined(_WIN64) || defined(__ppc64__) || defined(__x86_64__) || defined(_M_X64) || defined(_M_ARM64) || defined(__aarch64__)
#define DRWAV_SIZE_MAX ((drwav_uint64)0xFFFFFFFFFFFFFFFF)
#else
#else
#define
SIZE_MAX
0xFFFFFFFF
#define
DRWAV_SIZE_MAX
0xFFFFFFFF
#endif
#endif
#endif
#endif
...
@@ -1890,8 +1891,8 @@ drwav_uint64 drwav_read(drwav* pWav, drwav_uint64 samplesToRead, void* pBufferOu
...
@@ -1890,8 +1891,8 @@ drwav_uint64 drwav_read(drwav* pWav, drwav_uint64 samplesToRead, void* pBufferOu
}
}
// Don't try to read more samples than can potentially fit in the output buffer.
// Don't try to read more samples than can potentially fit in the output buffer.
if
(
samplesToRead
*
pWav
->
bytesPerSample
>
SIZE_MAX
)
{
if
(
samplesToRead
*
pWav
->
bytesPerSample
>
DRWAV_
SIZE_MAX
)
{
samplesToRead
=
SIZE_MAX
/
pWav
->
bytesPerSample
;
samplesToRead
=
DRWAV_
SIZE_MAX
/
pWav
->
bytesPerSample
;
}
}
size_t
bytesRead
=
drwav_read_raw
(
pWav
,
(
size_t
)(
samplesToRead
*
pWav
->
bytesPerSample
),
pBufferOut
);
size_t
bytesRead
=
drwav_read_raw
(
pWav
,
(
size_t
)(
samplesToRead
*
pWav
->
bytesPerSample
),
pBufferOut
);
...
@@ -2031,7 +2032,7 @@ drwav_uint64 drwav_write(drwav* pWav, drwav_uint64 samplesToWrite, const void* p
...
@@ -2031,7 +2032,7 @@ drwav_uint64 drwav_write(drwav* pWav, drwav_uint64 samplesToWrite, const void* p
}
}
drwav_uint64
bytesToWrite
=
((
samplesToWrite
*
pWav
->
bitsPerSample
)
/
8
);
drwav_uint64
bytesToWrite
=
((
samplesToWrite
*
pWav
->
bitsPerSample
)
/
8
);
if
(
bytesToWrite
>
SIZE_MAX
)
{
if
(
bytesToWrite
>
DRWAV_
SIZE_MAX
)
{
return
0
;
return
0
;
}
}
...
@@ -2039,8 +2040,8 @@ drwav_uint64 drwav_write(drwav* pWav, drwav_uint64 samplesToWrite, const void* p
...
@@ -2039,8 +2040,8 @@ drwav_uint64 drwav_write(drwav* pWav, drwav_uint64 samplesToWrite, const void* p
const
drwav_uint8
*
pRunningData
=
(
const
drwav_uint8
*
)
pData
;
const
drwav_uint8
*
pRunningData
=
(
const
drwav_uint8
*
)
pData
;
while
(
bytesToWrite
>
0
)
{
while
(
bytesToWrite
>
0
)
{
drwav_uint64
bytesToWriteThisIteration
=
bytesToWrite
;
drwav_uint64
bytesToWriteThisIteration
=
bytesToWrite
;
if
(
bytesToWriteThisIteration
>
SIZE_MAX
)
{
if
(
bytesToWriteThisIteration
>
DRWAV_
SIZE_MAX
)
{
bytesToWriteThisIteration
=
SIZE_MAX
;
bytesToWriteThisIteration
=
DRWAV_
SIZE_MAX
;
}
}
size_t
bytesJustWritten
=
drwav_write_raw
(
pWav
,
(
size_t
)
bytesToWriteThisIteration
,
pRunningData
);
size_t
bytesJustWritten
=
drwav_write_raw
(
pWav
,
(
size_t
)
bytesToWriteThisIteration
,
pRunningData
);
...
@@ -2567,8 +2568,8 @@ drwav_uint64 drwav_read_s16(drwav* pWav, drwav_uint64 samplesToRead, drwav_int16
...
@@ -2567,8 +2568,8 @@ drwav_uint64 drwav_read_s16(drwav* pWav, drwav_uint64 samplesToRead, drwav_int16
}
}
// Don't try to read more samples than can potentially fit in the output buffer.
// Don't try to read more samples than can potentially fit in the output buffer.
if
(
samplesToRead
*
sizeof
(
drwav_int16
)
>
SIZE_MAX
)
{
if
(
samplesToRead
*
sizeof
(
drwav_int16
)
>
DRWAV_
SIZE_MAX
)
{
samplesToRead
=
SIZE_MAX
/
sizeof
(
drwav_int16
);
samplesToRead
=
DRWAV_
SIZE_MAX
/
sizeof
(
drwav_int16
);
}
}
if
(
pWav
->
translatedFormatTag
==
DR_WAVE_FORMAT_PCM
)
{
if
(
pWav
->
translatedFormatTag
==
DR_WAVE_FORMAT_PCM
)
{
...
@@ -2889,8 +2890,8 @@ drwav_uint64 drwav_read_f32(drwav* pWav, drwav_uint64 samplesToRead, float* pBuf
...
@@ -2889,8 +2890,8 @@ drwav_uint64 drwav_read_f32(drwav* pWav, drwav_uint64 samplesToRead, float* pBuf
}
}
// Don't try to read more samples than can potentially fit in the output buffer.
// Don't try to read more samples than can potentially fit in the output buffer.
if
(
samplesToRead
*
sizeof
(
float
)
>
SIZE_MAX
)
{
if
(
samplesToRead
*
sizeof
(
float
)
>
DRWAV_
SIZE_MAX
)
{
samplesToRead
=
SIZE_MAX
/
sizeof
(
float
);
samplesToRead
=
DRWAV_
SIZE_MAX
/
sizeof
(
float
);
}
}
if
(
pWav
->
translatedFormatTag
==
DR_WAVE_FORMAT_PCM
)
{
if
(
pWav
->
translatedFormatTag
==
DR_WAVE_FORMAT_PCM
)
{
...
@@ -3230,8 +3231,8 @@ drwav_uint64 drwav_read_s32(drwav* pWav, drwav_uint64 samplesToRead, drwav_int32
...
@@ -3230,8 +3231,8 @@ drwav_uint64 drwav_read_s32(drwav* pWav, drwav_uint64 samplesToRead, drwav_int32
}
}
// Don't try to read more samples than can potentially fit in the output buffer.
// Don't try to read more samples than can potentially fit in the output buffer.
if
(
samplesToRead
*
sizeof
(
drwav_int32
)
>
SIZE_MAX
)
{
if
(
samplesToRead
*
sizeof
(
drwav_int32
)
>
DRWAV_
SIZE_MAX
)
{
samplesToRead
=
SIZE_MAX
/
sizeof
(
drwav_int32
);
samplesToRead
=
DRWAV_
SIZE_MAX
/
sizeof
(
drwav_int32
);
}
}
...
@@ -3351,7 +3352,7 @@ drwav_int16* drwav__read_and_close_s16(drwav* pWav, unsigned int* channels, unsi
...
@@ -3351,7 +3352,7 @@ drwav_int16* drwav__read_and_close_s16(drwav* pWav, unsigned int* channels, unsi
drwav_assert
(
pWav
!=
NULL
);
drwav_assert
(
pWav
!=
NULL
);
drwav_uint64
sampleDataSize
=
pWav
->
totalSampleCount
*
sizeof
(
drwav_int16
);
drwav_uint64
sampleDataSize
=
pWav
->
totalSampleCount
*
sizeof
(
drwav_int16
);
if
(
sampleDataSize
>
SIZE_MAX
)
{
if
(
sampleDataSize
>
DRWAV_
SIZE_MAX
)
{
drwav_uninit
(
pWav
);
drwav_uninit
(
pWav
);
return
NULL
;
// File's too big.
return
NULL
;
// File's too big.
}
}
...
@@ -3382,7 +3383,7 @@ float* drwav__read_and_close_f32(drwav* pWav, unsigned int* channels, unsigned i
...
@@ -3382,7 +3383,7 @@ float* drwav__read_and_close_f32(drwav* pWav, unsigned int* channels, unsigned i
drwav_assert
(
pWav
!=
NULL
);
drwav_assert
(
pWav
!=
NULL
);
drwav_uint64
sampleDataSize
=
pWav
->
totalSampleCount
*
sizeof
(
float
);
drwav_uint64
sampleDataSize
=
pWav
->
totalSampleCount
*
sizeof
(
float
);
if
(
sampleDataSize
>
SIZE_MAX
)
{
if
(
sampleDataSize
>
DRWAV_
SIZE_MAX
)
{
drwav_uninit
(
pWav
);
drwav_uninit
(
pWav
);
return
NULL
;
// File's too big.
return
NULL
;
// File's too big.
}
}
...
@@ -3413,7 +3414,7 @@ drwav_int32* drwav__read_and_close_s32(drwav* pWav, unsigned int* channels, unsi
...
@@ -3413,7 +3414,7 @@ drwav_int32* drwav__read_and_close_s32(drwav* pWav, unsigned int* channels, unsi
drwav_assert
(
pWav
!=
NULL
);
drwav_assert
(
pWav
!=
NULL
);
drwav_uint64
sampleDataSize
=
pWav
->
totalSampleCount
*
sizeof
(
drwav_int32
);
drwav_uint64
sampleDataSize
=
pWav
->
totalSampleCount
*
sizeof
(
drwav_int32
);
if
(
sampleDataSize
>
SIZE_MAX
)
{
if
(
sampleDataSize
>
DRWAV_
SIZE_MAX
)
{
drwav_uninit
(
pWav
);
drwav_uninit
(
pWav
);
return
NULL
;
// File's too big.
return
NULL
;
// File's too big.
}
}
...
@@ -3580,6 +3581,9 @@ void drwav_free(void* pDataReturnedByOpenAndRead)
...
@@ -3580,6 +3581,9 @@ void drwav_free(void* pDataReturnedByOpenAndRead)
// REVISION HISTORY
// REVISION HISTORY
//
//
// v0.8.3 - 2018-08-05
// - Fix C++ build on older versions of GCC.
//
// v0.8.2 - 2018-08-02
// v0.8.2 - 2018-08-02
// - Fix some big-endian bugs.
// - Fix some big-endian bugs.
//
//
...
...
tests/mal_test_0.c
View file @
8d15aa27
...
@@ -85,7 +85,7 @@ void* open_and_read_file_data(const char* filePath, size_t* pSizeOut)
...
@@ -85,7 +85,7 @@ void* open_and_read_file_data(const char* filePath, size_t* pSizeOut)
mal_uint64
fileSize
=
ftell
(
pFile
);
mal_uint64
fileSize
=
ftell
(
pFile
);
fseek
(
pFile
,
0
,
SEEK_SET
);
fseek
(
pFile
,
0
,
SEEK_SET
);
if
(
fileSize
>
SIZE_MAX
)
{
if
(
fileSize
>
MAL_
SIZE_MAX
)
{
fclose
(
pFile
);
fclose
(
pFile
);
return
NULL
;
return
NULL
;
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment