Merge branch 'v0.21.x'
This commit is contained in:
commit
3fc859c42d
6
NEWS
6
NEWS
|
@ -35,6 +35,12 @@ ver 0.22 (not yet released)
|
|||
* switch to C++17
|
||||
- GCC 7 or clang 4 (or newer) recommended
|
||||
|
||||
ver 0.21.20 (not yet released)
|
||||
* decoder
|
||||
- audiofile, ffmpeg, sndfile: handle MIME type "audio/wav"
|
||||
- ffmpeg: fix playback of AIFF and TTA
|
||||
- vorbis, opus: fix seeking in small files
|
||||
|
||||
ver 0.21.19 (2020/01/17)
|
||||
* configuration
|
||||
- allow overriding top-level settings in includes
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="org.musicpd"
|
||||
android:installLocation="auto"
|
||||
android:versionCode="42"
|
||||
android:versionName="0.21.19">
|
||||
android:versionCode="43"
|
||||
android:versionName="0.21.20">
|
||||
|
||||
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="28"/>
|
||||
|
||||
|
|
|
@ -269,6 +269,8 @@ static const char *const audiofile_suffixes[] = {
|
|||
};
|
||||
|
||||
static const char *const audiofile_mime_types[] = {
|
||||
"audio/wav",
|
||||
"audio/aiff",
|
||||
"audio/x-wav",
|
||||
"audio/x-aiff",
|
||||
nullptr
|
||||
|
|
|
@ -698,7 +698,7 @@ static const char *const ffmpeg_mime_types[] = {
|
|||
"audio/aac",
|
||||
"audio/aacp",
|
||||
"audio/ac3",
|
||||
"audio/aiff"
|
||||
"audio/aiff",
|
||||
"audio/amr",
|
||||
"audio/basic",
|
||||
"audio/flac",
|
||||
|
@ -711,12 +711,13 @@ static const char *const ffmpeg_mime_types[] = {
|
|||
"audio/qcelp",
|
||||
"audio/vorbis",
|
||||
"audio/vorbis+ogg",
|
||||
"audio/wav",
|
||||
"audio/x-8svx",
|
||||
"audio/x-16sv",
|
||||
"audio/x-aac",
|
||||
"audio/x-ac3",
|
||||
"audio/x-adx",
|
||||
"audio/x-aiff"
|
||||
"audio/x-aiff",
|
||||
"audio/x-alaw",
|
||||
"audio/x-au",
|
||||
"audio/x-dca",
|
||||
|
@ -736,7 +737,7 @@ static const char *const ffmpeg_mime_types[] = {
|
|||
"audio/x-pn-realaudio",
|
||||
"audio/x-pn-multirate-realaudio",
|
||||
"audio/x-speex",
|
||||
"audio/x-tta"
|
||||
"audio/x-tta",
|
||||
"audio/x-voc",
|
||||
"audio/x-wav",
|
||||
"audio/x-wma",
|
||||
|
|
|
@ -760,7 +760,7 @@ MadDecoder::DecodeFirstFrame(Tag *tag) noexcept
|
|||
|
||||
if (max_frames > 8 * 1024 * 1024) {
|
||||
FormatWarning(mad_domain,
|
||||
"mp3 file header indicates too many frames: %lu",
|
||||
"mp3 file header indicates too many frames: %zu",
|
||||
max_frames);
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -45,8 +45,12 @@ OggDecoder::LoadEndPacket(ogg_packet &packet) const
|
|||
DecoderReader reader(client, input_stream);
|
||||
OggSyncState sync2(reader);
|
||||
OggStreamState stream2(GetSerialNo());
|
||||
|
||||
/* passing synced=false because we're inside an
|
||||
OggVisitor callback, and our InputStream may be in
|
||||
the middle of an Ogg packet */
|
||||
result = OggSeekFindEOS(sync2, stream2, packet,
|
||||
input_stream);
|
||||
input_stream, false);
|
||||
}
|
||||
|
||||
/* restore the previous file position */
|
||||
|
|
|
@ -323,6 +323,8 @@ static const char *const sndfile_suffixes[] = {
|
|||
};
|
||||
|
||||
static const char *const sndfile_mime_types[] = {
|
||||
"audio/wav",
|
||||
"audio/aiff",
|
||||
"audio/x-wav",
|
||||
"audio/x-aiff",
|
||||
|
||||
|
|
|
@ -57,13 +57,14 @@ OggSeekPageAtOffset(OggSyncState &oy, ogg_stream_state &os, InputStream &is,
|
|||
|
||||
bool
|
||||
OggSeekFindEOS(OggSyncState &oy, ogg_stream_state &os, ogg_packet &packet,
|
||||
InputStream &is)
|
||||
InputStream &is, bool synced)
|
||||
{
|
||||
if (!is.KnownSize())
|
||||
return false;
|
||||
|
||||
if (is.GetRest() < 65536)
|
||||
return OggFindEOS(oy, os, packet);
|
||||
return (synced || oy.ExpectPageSeekIn(os)) &&
|
||||
OggFindEOS(oy, os, packet);
|
||||
|
||||
if (!is.CheapSeeking())
|
||||
return false;
|
||||
|
|
|
@ -47,10 +47,13 @@ OggSeekPageAtOffset(OggSyncState &oy, ogg_stream_state &os, InputStream &is,
|
|||
* Try to find the end-of-stream (EOS) packet. Seek to the end of the
|
||||
* file if necessary.
|
||||
*
|
||||
* @param synced is the #OggSyncState currently synced? If not, then
|
||||
* we need to use ogg_sync_pageseek() instead of ogg_sync_pageout(),
|
||||
* which is more expensive
|
||||
* @return true if the EOS packet was found
|
||||
*/
|
||||
bool
|
||||
OggSeekFindEOS(OggSyncState &oy, ogg_stream_state &os, ogg_packet &packet,
|
||||
InputStream &is);
|
||||
InputStream &is, bool synced=true);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -28,15 +28,15 @@
|
|||
|
||||
void
|
||||
DumpDecoderClient::Ready(const AudioFormat audio_format,
|
||||
gcc_unused bool seekable,
|
||||
bool seekable,
|
||||
SignedSongTime duration) noexcept
|
||||
{
|
||||
assert(!initialized);
|
||||
assert(audio_format.IsValid());
|
||||
|
||||
fprintf(stderr, "audio_format=%s duration=%f\n",
|
||||
fprintf(stderr, "audio_format=%s duration=%f seekable=%d\n",
|
||||
ToString(audio_format).c_str(),
|
||||
duration.ToDoubleS());
|
||||
duration.ToDoubleS(), seekable);
|
||||
|
||||
initialized = true;
|
||||
}
|
||||
|
|
|
@ -6,10 +6,14 @@ if compiler.get_id() == 'gcc'
|
|||
gtest_compile_args += [
|
||||
'-Wno-suggest-attribute=format',
|
||||
'-Wno-suggest-attribute=noreturn',
|
||||
'-Wno-missing-declarations',
|
||||
]
|
||||
endif
|
||||
|
||||
# needed on Jessie for gtest's IsNullLiteralHelper
|
||||
'-Wno-conversion-null',
|
||||
if compiler.get_id() == 'clang' and compiler.version().version_compare('>=9')
|
||||
gtest_compile_args += [
|
||||
# work around clang warning caused by GTest's wrong "-lpthread"
|
||||
# compiler flag
|
||||
'-Wno-unused-command-line-argument',
|
||||
]
|
||||
endif
|
||||
|
||||
|
|
Loading…
Reference in New Issue