release v0.20.20
-----BEGIN PGP SIGNATURE----- iQJEBAABCgAuFiEEA5IzWngIOJSkMBxDI26KWMbbRRIFAlsD85IQHG1heEBtdXNp Y3BkLm9yZwAKCRAjbopYxttFEm5xD/oCagsybi2L60r0trtjE7DJ+SnmgbjVmn3z aieaIA78KFK2QWUettevYkVwtwqEqyw5DwSDmxRRpm9sMKsdDBL+gLCf5hjIFNQY dZjyBIABgE+aAT+iYeXVmWgJI24s8znEGhZjUG5P/gf+CoLKvN5OQiZoBKOaurjX YwJUyLV1SXiMLV/4HtOFw4xORuRPflhZ5MnA+cO7BmpV0XQoq82XgBi3XqAB8dv4 cIpDs0MU7DFHNUYHeHEWXVh1PgAcr2madWwQTiscuy8KRAR0GzkCsG5UrSyJs0xH c0yQ1vVt7X0nyxV35Yemmlfe4DwMwNK9avsTr3Mmr4tNDbxxhiddDYZzy6UJHKis vaVLhePLjXCOfPRivCY8zVZHwGTO5ArxQqftkGDnM1Gq8PwpTWLimZkvUW35d/xf SJ+ixpkA1O2DzmkyUam41phhXli+lt0hF1P/7dKsuV/fzmAkJlmRpgxJJhLH8mwq NNfHk8y8kdGoVy65e/u2asJe8PPB2y9NK2JmbBR9g6Dn+6puP4gkhok3a9cvUZ6q 5GHJF9yRYswVkr/Y6q8UtESeEUczqrQTasVvq0fkxV0f17BKDbOxClb+ItrnPTWV WMfsyF3TYrHi4piB810q/nBY6pY7R2vQNCPMZwfjGlqn5amR2fm8QWecJVIPpkv3 rEPv+4r8nQ== =DEYg -----END PGP SIGNATURE----- Merge tag 'v0.20.20' release v0.20.20
This commit is contained in:
commit
66a1e8b737
@ -352,7 +352,7 @@ android/build/gen/org/musicpd/R.java: android/build/resources.apk
|
|||||||
|
|
||||||
android/build/classes.dex: $(JAVA_SOURCE_PATHS) android/build/gen/org/musicpd/R.java
|
android/build/classes.dex: $(JAVA_SOURCE_PATHS) android/build/gen/org/musicpd/R.java
|
||||||
@$(MKDIR_P) $(JAVA_CLASSFILES_DIR)
|
@$(MKDIR_P) $(JAVA_CLASSFILES_DIR)
|
||||||
$(JAVAC) -source 1.5 -target 1.5 -Xlint:-options \
|
$(JAVAC) -source 1.6 -target 1.6 -Xlint:-options \
|
||||||
-cp $(ANDROID_SDK_PLATFORM_DIR)/android.jar:$(JAVA_CLASSFILES_DIR) \
|
-cp $(ANDROID_SDK_PLATFORM_DIR)/android.jar:$(JAVA_CLASSFILES_DIR) \
|
||||||
-d $(JAVA_CLASSFILES_DIR) $^
|
-d $(JAVA_CLASSFILES_DIR) $^
|
||||||
$(DX) --dex --output $@ $(JAVA_CLASSFILES_DIR)
|
$(DX) --dex --output $@ $(JAVA_CLASSFILES_DIR)
|
||||||
|
8
NEWS
8
NEWS
@ -31,11 +31,17 @@ ver 0.21 (not yet released)
|
|||||||
- opus: support for sending metadata using ogg stream chaining
|
- opus: support for sending metadata using ogg stream chaining
|
||||||
* require GCC 5.0
|
* require GCC 5.0
|
||||||
|
|
||||||
ver 0.20.20 (not yet released)
|
ver 0.20.20 (2018/05/22)
|
||||||
* protocol
|
* protocol
|
||||||
- fix "modified-since" filter regression
|
- fix "modified-since" filter regression
|
||||||
|
* output
|
||||||
|
- pulse: cork stream when paused due to "single" mode
|
||||||
* decoder
|
* decoder
|
||||||
- dsdiff, dsf: support more MIME types
|
- dsdiff, dsf: support more MIME types
|
||||||
|
- dsdiff, dsf: allow 4 MB ID3 tags
|
||||||
|
- opus: support R128_ALBUM_GAIN tag
|
||||||
|
* Android, Windows
|
||||||
|
- enable the "proxy" database plugin
|
||||||
|
|
||||||
ver 0.20.19 (2018/04/26)
|
ver 0.20.19 (2018/04/26)
|
||||||
* protocol
|
* protocol
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
package="org.musicpd"
|
package="org.musicpd"
|
||||||
android:installLocation="auto"
|
android:installLocation="auto"
|
||||||
android:versionCode="18"
|
android:versionCode="19"
|
||||||
android:versionName="0.20.19">
|
android:versionName="0.20.20">
|
||||||
|
|
||||||
<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="17"/>
|
<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="17"/>
|
||||||
|
|
||||||
|
@ -138,6 +138,7 @@ class AndroidNdkToolchain:
|
|||||||
# a list of third-party libraries to be used by MPD on Android
|
# a list of third-party libraries to be used by MPD on Android
|
||||||
from build.libs import *
|
from build.libs import *
|
||||||
thirdparty_libs = [
|
thirdparty_libs = [
|
||||||
|
libmpdclient,
|
||||||
libogg,
|
libogg,
|
||||||
libvorbis,
|
libvorbis,
|
||||||
opus,
|
opus,
|
||||||
|
@ -3,10 +3,17 @@ from os.path import abspath
|
|||||||
|
|
||||||
from build.project import Project
|
from build.project import Project
|
||||||
from build.zlib import ZlibProject
|
from build.zlib import ZlibProject
|
||||||
|
from build.meson import MesonProject
|
||||||
from build.autotools import AutotoolsProject
|
from build.autotools import AutotoolsProject
|
||||||
from build.ffmpeg import FfmpegProject
|
from build.ffmpeg import FfmpegProject
|
||||||
from build.boost import BoostProject
|
from build.boost import BoostProject
|
||||||
|
|
||||||
|
libmpdclient = MesonProject(
|
||||||
|
'https://www.musicpd.org/download/libmpdclient/2/libmpdclient-2.14.tar.xz',
|
||||||
|
'0a84e2791bfe3077cf22ee1784c805d5bb550803dffe56a39aa3690a38061372',
|
||||||
|
'lib/libmpdclient.a',
|
||||||
|
)
|
||||||
|
|
||||||
libogg = AutotoolsProject(
|
libogg = AutotoolsProject(
|
||||||
'http://downloads.xiph.org/releases/ogg/libogg-1.3.3.tar.xz',
|
'http://downloads.xiph.org/releases/ogg/libogg-1.3.3.tar.xz',
|
||||||
'4f3fc6178a533d392064f14776b23c397ed4b9f48f5de297aba73b643f955c08',
|
'4f3fc6178a533d392064f14776b23c397ed4b9f48f5de297aba73b643f955c08',
|
||||||
@ -334,8 +341,8 @@ ffmpeg = FfmpegProject(
|
|||||||
)
|
)
|
||||||
|
|
||||||
curl = AutotoolsProject(
|
curl = AutotoolsProject(
|
||||||
'http://curl.haxx.se/download/curl-7.59.0.tar.xz',
|
'http://curl.haxx.se/download/curl-7.60.0.tar.xz',
|
||||||
'e44eaabdf916407585bf5c7939ff1161e6242b6b015d3f2f5b758b2a330461fc',
|
'8736ff8ded89ddf7e926eec7b16f82597d029fc1469f3a551f1fafaac164e6a0',
|
||||||
'lib/libcurl.a',
|
'lib/libcurl.a',
|
||||||
[
|
[
|
||||||
'--disable-shared', '--enable-static',
|
'--disable-shared', '--enable-static',
|
||||||
|
96
python/build/meson.py
Normal file
96
python/build/meson.py
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
import os.path, subprocess, sys
|
||||||
|
|
||||||
|
from build.project import Project
|
||||||
|
|
||||||
|
class MesonProject(Project):
|
||||||
|
def __init__(self, url, md5, installed, configure_args=[],
|
||||||
|
**kwargs):
|
||||||
|
Project.__init__(self, url, md5, installed, **kwargs)
|
||||||
|
self.configure_args = configure_args
|
||||||
|
|
||||||
|
def _make_cross_file(self, toolchain):
|
||||||
|
if toolchain.is_windows:
|
||||||
|
system = 'windows'
|
||||||
|
else:
|
||||||
|
system = 'linux'
|
||||||
|
|
||||||
|
if toolchain.is_arm:
|
||||||
|
cpu_family = 'arm'
|
||||||
|
if toolchain.is_armv7:
|
||||||
|
cpu = 'armv7'
|
||||||
|
else:
|
||||||
|
cpu = 'armv6'
|
||||||
|
else:
|
||||||
|
cpu_family = 'x86'
|
||||||
|
if 'x86_64' in toolchain.arch:
|
||||||
|
cpu = 'x86_64'
|
||||||
|
else:
|
||||||
|
cpu = 'i686'
|
||||||
|
|
||||||
|
# TODO: support more CPUs
|
||||||
|
endian = 'little'
|
||||||
|
|
||||||
|
# TODO: write pkg-config wrapper
|
||||||
|
|
||||||
|
path = os.path.join(toolchain.build_path, 'meson.cross')
|
||||||
|
os.makedirs(toolchain.build_path, exist_ok=True)
|
||||||
|
with open(path, 'w') as f:
|
||||||
|
f.write("""
|
||||||
|
[binaries]
|
||||||
|
c = '%s'
|
||||||
|
cpp = '%s'
|
||||||
|
ar = '%s'
|
||||||
|
strip = '%s'
|
||||||
|
|
||||||
|
[properties]
|
||||||
|
root = '%s'
|
||||||
|
|
||||||
|
c_args = %s
|
||||||
|
c_link_args = %s
|
||||||
|
|
||||||
|
cpp_args = %s
|
||||||
|
cpp_link_args = %s
|
||||||
|
|
||||||
|
[host_machine]
|
||||||
|
system = '%s'
|
||||||
|
cpu_family = '%s'
|
||||||
|
cpu = '%s'
|
||||||
|
endian = '%s'
|
||||||
|
""" % (toolchain.cc, toolchain.cxx, toolchain.ar, toolchain.strip,
|
||||||
|
toolchain.install_prefix,
|
||||||
|
repr((toolchain.cppflags + ' ' + toolchain.cflags).split()),
|
||||||
|
repr(toolchain.ldflags.split()),
|
||||||
|
repr((toolchain.cppflags + ' ' + toolchain.cxxflags).split()),
|
||||||
|
repr(toolchain.ldflags.split()),
|
||||||
|
system, cpu_family, cpu, endian))
|
||||||
|
return path
|
||||||
|
|
||||||
|
def configure(self, toolchain):
|
||||||
|
src = self.unpack(toolchain)
|
||||||
|
cross_file = self._make_cross_file(toolchain)
|
||||||
|
build = self.make_build_path(toolchain)
|
||||||
|
configure = [
|
||||||
|
'meson',
|
||||||
|
src, build,
|
||||||
|
|
||||||
|
'--prefix', toolchain.install_prefix,
|
||||||
|
|
||||||
|
# this is necessary because Meson uses Debian's build machine
|
||||||
|
# MultiArch path (e.g. "lib/x86_64-linux-gnu") for cross
|
||||||
|
# builds, which is obviously wrong
|
||||||
|
'--libdir', 'lib',
|
||||||
|
|
||||||
|
'--buildtype', 'plain',
|
||||||
|
|
||||||
|
'--default-library=static',
|
||||||
|
|
||||||
|
'--cross-file', cross_file,
|
||||||
|
] + self.configure_args
|
||||||
|
|
||||||
|
subprocess.check_call(configure, env=toolchain.env)
|
||||||
|
return build
|
||||||
|
|
||||||
|
def build(self, toolchain):
|
||||||
|
build = self.configure(toolchain)
|
||||||
|
subprocess.check_call(['ninja', 'install'],
|
||||||
|
cwd=build, env=toolchain.env)
|
@ -128,7 +128,7 @@ dsdlib_tag_id3(InputStream &is,
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
const auto count64 = size - tagoffset;
|
const auto count64 = size - tagoffset;
|
||||||
if (count64 < 10 || count64 > 1024 * 1024)
|
if (count64 < 10 || count64 > 4 * 1024 * 1024)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!dsdlib_skip_to(nullptr, is, tagoffset))
|
if (!dsdlib_skip_to(nullptr, is, tagoffset))
|
||||||
|
@ -53,6 +53,14 @@ ScanOneOpusTag(const char *name, const char *value,
|
|||||||
long l = strtol(value, &endptr, 10);
|
long l = strtol(value, &endptr, 10);
|
||||||
if (endptr > value && *endptr == 0)
|
if (endptr > value && *endptr == 0)
|
||||||
rgi->track.gain = double(l) / 256.;
|
rgi->track.gain = double(l) / 256.;
|
||||||
|
} else if (rgi != nullptr && strcmp(name, "R128_ALBUM_GAIN") == 0) {
|
||||||
|
/* R128_ALBUM_GAIN is a Q7.8 fixed point number in
|
||||||
|
dB */
|
||||||
|
|
||||||
|
char *endptr;
|
||||||
|
long l = strtol(value, &endptr, 10);
|
||||||
|
if (endptr > value && *endptr == 0)
|
||||||
|
rgi->album.gain = double(l) / 256.;
|
||||||
}
|
}
|
||||||
|
|
||||||
tag_handler_invoke_pair(handler, ctx, name, value);
|
tag_handler_invoke_pair(handler, ctx, name, value);
|
||||||
|
@ -931,6 +931,7 @@ Player::SongBorder() noexcept
|
|||||||
if (border_pause) {
|
if (border_pause) {
|
||||||
paused = true;
|
paused = true;
|
||||||
pc.listener.OnBorderPause();
|
pc.listener.OnBorderPause();
|
||||||
|
pc.outputs.Pause();
|
||||||
idle_add(IDLE_PLAYER);
|
idle_add(IDLE_PLAYER);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -76,6 +76,7 @@ class CrossGccToolchain:
|
|||||||
# a list of third-party libraries to be used by MPD on Android
|
# a list of third-party libraries to be used by MPD on Android
|
||||||
from build.libs import *
|
from build.libs import *
|
||||||
thirdparty_libs = [
|
thirdparty_libs = [
|
||||||
|
libmpdclient,
|
||||||
libogg,
|
libogg,
|
||||||
libvorbis,
|
libvorbis,
|
||||||
opus,
|
opus,
|
||||||
|
Loading…
Reference in New Issue
Block a user