Commit 66a1e8b7 authored by Max Kellermann's avatar Max Kellermann

Merge tag 'v0.20.20'

release v0.20.20
parents a8568d72 ab197b6d
...@@ -352,7 +352,7 @@ android/build/gen/org/musicpd/R.java: android/build/resources.apk ...@@ -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)
......
...@@ -31,11 +31,17 @@ ver 0.21 (not yet released) ...@@ -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 @@ ...@@ -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: ...@@ -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 ...@@ -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( ...@@ -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',
......
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, ...@@ -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, ...@@ -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 ...@@ -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: ...@@ -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,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment