<pre style='margin:0'>
Mohamed Akram (mohd-akram) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/bc71ac0152b8504982806a7f005b19eb93049005">https://github.com/macports/macports-ports/commit/bc71ac0152b8504982806a7f005b19eb93049005</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new bc71ac0152b xmms2: update to 0.9.3
</span>bc71ac0152b is described below

<span style='display:block; white-space:pre;color:#808000;'>commit bc71ac0152b8504982806a7f005b19eb93049005
</span>Author: Mohamed Akram <makr@macports.org>
AuthorDate: Sat May 18 00:21:49 2024 +0400

<span style='display:block; white-space:pre;color:#404040;'>    xmms2: update to 0.9.3
</span>---
 audio/xmms2/Portfile                               | 165 +++---
 audio/xmms2/files/const.patch                      |  17 -
 audio/xmms2/files/patch-dnssd-fd-check.diff        |  55 --
 audio/xmms2/files/patch-ffmpeg-2.0.diff            |  54 --
 audio/xmms2/files/patch-ffmpeg-3.0.diff            | 576 ---------------------
 audio/xmms2/files/patch-nellymoser.diff            | 373 -------------
 audio/xmms2/files/patch-openssl-1.1.0.diff         |  60 ---
 .../files/patch-src-clients-vistest-wscript.diff   |  28 -
 .../xmms2/files/patch-src-plugins-cdda-cdda.c.diff |  11 -
 .../files/patch-src-plugins-modplug-modplug.c.diff |  12 -
 audio/xmms2/files/patch-waftools-podselect.diff    |  14 +
 audio/xmms2/files/patch-wscript.diff               |  11 -
 12 files changed, 86 insertions(+), 1290 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/audio/xmms2/Portfile b/audio/xmms2/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index d8e7c04428a..aa52ef328a7 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/audio/xmms2/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/audio/xmms2/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,137 +1,116 @@
</span> # -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
 
 PortSystem              1.0
<span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup               github 1.0
</span> PortGroup               waf 1.0
 
 name                    xmms2
<span style='display:block; white-space:pre;background:#ffe0e0;'>-version                 0.8DrO_o
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-revision                26
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.setup            xmms2 xmms2-devel 0.9.3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.tarball_from     releases
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision                0
</span> categories              audio
 # Mostly LGPL, some plugins and clients are GPL
 license                 LGPL-2.1+ GPL-2+ GPL-2
 maintainers             nomaintainer
<span style='display:block; white-space:pre;background:#ffe0e0;'>-homepage                https://github.com/xmms2/wiki/wiki
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-master_sites            sourceforge:project/xmms2/xmms2/[regsub {^([0-9.]+)} ${version} {\1%20}]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-use_bzip2               yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+use_xz                  yes
</span> 
 description             CrossPlatform Music Multiplexer System
 long_description        Next generation audio player of XMMS
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-checksums               rmd160  35513d7eddd5f79146cb8aa5c6c0bb35369619ec \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        sha256  c77e41e7bd5788889d5a2f78331ca8c748b8721bd2e59f36c36ad4c7cae8694a \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        size    1670726
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+distname                ${name}-${version}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums               rmd160  b887dcad040dd6f90c14c147faa06821d91e337f \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        sha256  fe24798db2e6cd8d8eb131ee9800d211525ffebe561c1c5c057710cd7b90a81b \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        size    1741548
</span> 
 depends_build-append    port:pkgconfig
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-depends_lib             path:lib/pkgconfig/glib-2.0.pc:glib2 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        port:gettext \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        port:libiconv \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        port:libxml2 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        port:curl \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        path:lib/libssl.dylib:openssl \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        port:zlib \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        port:sqlite3 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        port:libao \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        port:libmad \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        port:libogg \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        port:libvorbis \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        port:flac \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        path:lib/libavcodec.dylib:ffmpeg \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set ffmpeg_ver          6
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_lib-append      path:lib/pkgconfig/glib-2.0.pc:glib2 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        port:ffmpeg${ffmpeg_ver} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        port:libcdio-paranoia \
</span>                         port:libdiscid \
                         port:faad2 \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                        port:fftw-3-single \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        port:flac \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        port:fluidsynth \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        port:libshout2 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        port:libmad \
</span>                         port:libmms \
                         port:libmodplug \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                        port:libmpcdec \
</span>                         port:mpg123 \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                        port:readline \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        port:libsamplerate \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        port:libsdl \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        port:libmpcdec \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        port:opusfile \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        port:libxml2 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        port:libsndfile \
</span>                         path:lib/libspeex.dylib:speex \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                        port:wavpack \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        port:libshout2 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        port:libcdio \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        port:libcdio-paranoia
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# the first 3 patchfiles sequentially patch src/plugins/avcodec - order is important!
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# patch-ffmpeg-3.0.diff patches the avcodec plugin through upstream commit fc66249 (2014-01-29)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# https://git.xmms2.org/xmms2/xmms2-devel/commit/src/plugins/avcodec?id=fc66249
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-patchfiles              patch-ffmpeg-2.0.diff \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        patch-nellymoser.diff \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        patch-ffmpeg-3.0.diff \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        patch-src-plugins-modplug-modplug.c.diff \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        patch-wscript.diff \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        patch-src-clients-vistest-wscript.diff \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        patch-src-plugins-cdda-cdda.c.diff \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        patch-dnssd-fd-check.diff \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        const.patch \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        patch-openssl-1.1.0.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-post-patch {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    foreach f [glob -directory ${worksrcpath} waf waf-light wafadmin/*.py wafadmin/*/*.py waftools/ruby.py] {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        reinplace -locale C "s|^#! */usr/bin/env python\$|#!${waf.python}|" ${f}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        port:fftw-3-single \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        port:libsamplerate \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        port:libvorbis \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        port:wavpack
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles              patch-waftools-podselect.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+waf.python_branch       3.12
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.pkg_config_path   ${prefix}/libexec/ffmpeg${ffmpeg_ver}/lib/pkgconfig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.args          --conf-prefix=${prefix} --with-optionals=
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# error: incompatible function pointer types passing
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# 'void (DNSServiceRef, DNSServiceFlags, uint32_t, DNSServiceErrorType,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# const char *, const char *, uint16_t, uint16_t, const char *, void *)'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# to parameter of type 'DNSServiceResolveReply'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.cflags-append -Wno-error=incompatible-function-pointer-types
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+options optionals
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# not supported
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.post_args-delete  --nocache
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+variant pulse description {Pulseaudio support} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_lib-append  port:pulseaudio
</span> }
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-configure.args          --conf-prefix=${prefix} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        --no-cython \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        --without-optionals python
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+variant jack description {Jack audio support} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_lib-append  port:jack
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span> 
 variant cpp description {C++ development support} {
     PortGroup           boost 1.0
<span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span>     configure.args-append \
                         --boost-includes [boost::include_dir] \
                         --boost-libs [boost::lib_dir]
<span style='display:block; white-space:pre;background:#e0ffe0;'>+    optionals-append    xmmsclient++ xmmsclient++-glib
</span> }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-if {![variant_isset cpp]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    configure.args-append --without-optionals xmmsclient++,xmmsclient++-glib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+variant mdns description {MDNS backend support using avahi} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_lib-append  port:avahi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    optionals-append    mdns
</span> }
 
 variant perl description {Perl development support} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    depends_lib-append port:perl5.28
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    configure.args-append --with-perl-binary ${prefix}/bin/perl5.28
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-if {![variant_isset perl]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    configure.args-append --without-optionals perl
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_lib-append  port:perl5.34 port:p5.34-pod-parser
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args-append   --with-perl-binary ${prefix}/bin/perl5.34
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.env-append    PODSELECT=${prefix}/bin/podselect-5.34
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    optionals-append    perl
</span> }
 
 variant ruby description {Ruby development support} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    depends_lib-append port:ruby
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    configure.args-append --with-ruby-binary ${prefix}/bin/ruby1.8
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-if {![variant_isset ruby]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    configure.args-append --without-optionals ruby
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_lib-append  port:ruby33
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args-append   --with-ruby-binary ${prefix}/bin/ruby3.3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    optionals-append    ruby
</span> }
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-variant mdns description {MDNS backend support using avahi} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    depends_lib-append port:avahi
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-if {![variant_isset mdns]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    configure.args-append --without-optionals mdns \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                          --without-plugins=daap
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-variant pulse description {Pulseaudio support} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    depends_lib-append port:pulseaudio
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-if {![variant_isset pulse]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    configure.args-append --without-plugins=pulse
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+variant python description {Support for Python 3.12} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_lib-append  port:py312-cython
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    optionals-append    python
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.python    ${prefix}/bin/python3.12
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.env-append    CYTHON=${prefix}/bin/cython-3.12
</span> }
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-variant jack description {Jack audio support} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    depends_lib-append port:jack
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-if {![variant_isset jack]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    configure.args-append --without-plugins=jack
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+pre-configure {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args-replace  --with-optionals= \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            --with-optionals=[join ${optionals} ,]
</span> }
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-variant python27 description {Support for Python 2.7} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    depends_lib-append      port:py27-pyrex
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    configure.args-delete   --without-optionals python
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    configure.python        ${prefix}/bin/python2.7
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-default_variants +python27
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-livecheck.regex         /${name}-(.+)${extract.suffix}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default_variants +python
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/audio/xmms2/files/const.patch b/audio/xmms2/files/const.patch
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index b5a3eda6d16..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/audio/xmms2/files/const.patch
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,17 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Const-cast Coll in AbstractElement.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-This is how the implementation of the declaration works, and now clang
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-is happy.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-https://github.com/xmms2/xmms2-devel/commit/2af8dcb1dadee505ee38ef4a9b5a373a7df14f18
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/include/xmmsclient/xmmsclient++/coll.h.orig        2011-10-20 14:26:08.000000000 -0500
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/include/xmmsclient/xmmsclient++/coll.h     2022-01-11 21:59:34.000000000 -0600
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -612,7 +612,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           template< typename keyT, typename valT >
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           AbstractElement< keyT, valT >::AbstractElement( const Coll& coll, keyT index )
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                  : coll_ (coll), index_( index )
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  : coll_ ( const_cast< Coll& >( coll ) ), index_( index )
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   xmmsv_coll_ref( coll_.getColl() );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           }
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/audio/xmms2/files/patch-dnssd-fd-check.diff b/audio/xmms2/files/patch-dnssd-fd-check.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index d7c889de318..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/audio/xmms2/files/patch-dnssd-fd-check.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,55 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From 090e08d54d38cf2b8abf8b9c33a12b3e88096f46 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From: Daniel Svensson <dsvensson@gmail.com>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Date: Mon, 6 Aug 2012 22:39:36 +0200
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Subject: BUG(2538): Check FDs in dnssd consumers to avoid 100% CPU.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/src/clients/mdns/dns_sd/mdns-dnssd.c b/src/clients/mdns/dns_sd/mdns-dnssd.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 2c99845..590acc0 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/clients/mdns/dns_sd/mdns-dnssd.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/clients/mdns/dns_sd/mdns-dnssd.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -71,8 +71,16 @@ dns_ipc_source_prepare (GSource *source, gint *timeout_)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- static gboolean
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- dns_ipc_source_check (GSource *source)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  /* Maybe check for errors here? */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  return TRUE;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  GSList *list;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  for (list = source->poll_fds; list != NULL; list = list->next) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          GPollFD *fd = list->data;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          if (fd->revents != 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  return TRUE;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  return FALSE;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- static gboolean
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/src/plugins/daap/daap_mdns_dnssd.c b/src/plugins/daap/daap_mdns_dnssd.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 2439925..819ffed 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/plugins/daap/daap_mdns_dnssd.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/plugins/daap/daap_mdns_dnssd.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -242,8 +242,16 @@ g_mdns_source_prepare (GSource *source, gint *timeout_)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- static gboolean
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- g_mdns_source_check (GSource *source)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  /* Maybe check for errors here? */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  return TRUE;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  GSList *list;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  for (list = source->poll_fds; list != NULL; list = list->next) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          GPollFD *fd = list->data;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          if (fd->revents != 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  return TRUE;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  return FALSE;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- static gboolean
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-cgit v0.10.2
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/audio/xmms2/files/patch-ffmpeg-2.0.diff b/audio/xmms2/files/patch-ffmpeg-2.0.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index a2d8f3b46cd..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/audio/xmms2/files/patch-ffmpeg-2.0.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,54 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/plugins/avcodec/avcodec.c.orig     2011-10-20 12:26:08.000000000 -0700
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/plugins/avcodec/avcodec.c  2013-08-06 12:35:32.000000000 -0700
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -27,6 +27,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "avcodec_compat.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define AVCODEC_BUFFER_SIZE 16384
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#define MAX_AUDIO_FRAME_SIZE 192000 // 1 second of 48khz 32bit audio
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- typedef struct {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   AVCodecContext *codecctx;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -134,7 +135,6 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   xmms_xform_private_data_set (xform, data);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  avcodec_init ();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   avcodec_register_all ();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   mimetype = xmms_xform_indata_get_str (xform,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -200,7 +200,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  data->codecctx = avcodec_alloc_context ();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  data->codecctx = avcodec_alloc_context3 (NULL);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   data->codecctx->sample_rate = data->samplerate;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   data->codecctx->channels = data->channels;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   data->codecctx->bit_rate = data->bitrate;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -211,7 +211,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   data->codecctx->codec_id = codec->id;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   data->codecctx->codec_type = codec->type;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  if (avcodec_open (data->codecctx, codec) < 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  if (avcodec_open2 (data->codecctx, codec, NULL) < 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           XMMS_DBG ("Opening decoder '%s' failed", codec->name);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           goto err;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -263,7 +263,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    xmms_error_t *error)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   xmms_avcodec_data_t *data;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  char outbuf[AVCODEC_MAX_AUDIO_FRAME_SIZE];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  char outbuf[MAX_AUDIO_FRAME_SIZE];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   gint outbufsize, bytes_read = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   guint size;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -371,7 +371,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- xmms_avcodec_seek (xmms_xform_t *xform, gint64 samples, xmms_xform_seek_mode_t whence, xmms_error_t *err)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   xmms_avcodec_data_t *data;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  char outbuf[AVCODEC_MAX_AUDIO_FRAME_SIZE];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  char outbuf[MAX_AUDIO_FRAME_SIZE];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   gint outbufsize, bytes_read = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   gint64 ret = -1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/audio/xmms2/files/patch-ffmpeg-3.0.diff b/audio/xmms2/files/patch-ffmpeg-3.0.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 86e51cbf279..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/audio/xmms2/files/patch-ffmpeg-3.0.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,576 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff -ur src/plugins/avcodec.orig/avcodec.c src/plugins/avcodec/avcodec.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/plugins/avcodec.orig/avcodec.c     2016-02-24 11:59:39.000000000 -0800
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/plugins/avcodec/avcodec.c  2016-02-24 12:01:27.000000000 -0800
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1,7 +1,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- /** @file avcodec.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  *  Decoder plugin for ffmpeg avcodec formats
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  *
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- *  Copyright (C) 2006-2011 XMMS2 Team
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ *  Copyright (C) 2006-2014 XMMS2 Team
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  *
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  *  This library is free software; you can redistribute it and/or
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  *  modify it under the terms of the GNU Lesser General Public
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -14,20 +14,20 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  *  Lesser General Public License for more details.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#include "xmms_configuration.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#include "xmms/xmms_xformplugin.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#include "xmms/xmms_sample.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#include "xmms/xmms_log.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <xmms_configuration.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <xmms/xmms_xformplugin.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <xmms/xmms_sample.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <xmms/xmms_log.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <stdio.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <stdlib.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <string.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <glib.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <libavutil/mem.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "avcodec_compat.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define AVCODEC_BUFFER_SIZE 16384
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#define MAX_AUDIO_FRAME_SIZE 192000 // 1 second of 48khz 32bit audio
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- typedef struct {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   AVCodecContext *codecctx;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -37,6 +37,8 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   guint buffer_size;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   gboolean no_demuxer;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  AVFrame *read_out_frame;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   guint channels;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   guint samplerate;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   xmms_sample_format_t sampleformat;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -54,10 +56,14 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- static gboolean xmms_avcodec_plugin_setup (xmms_xform_plugin_t *xform_plugin);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- static gboolean xmms_avcodec_init (xmms_xform_t *xform);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- static void xmms_avcodec_destroy (xmms_xform_t *xform);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+static gint xmms_avcodec_internal_read_some (xmms_xform_t *xform, xmms_avcodec_data_t *data, xmms_error_t *error);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+static gint xmms_avcodec_internal_decode_some (xmms_avcodec_data_t *data);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+static void xmms_avcodec_internal_append (xmms_avcodec_data_t *data);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- static gint xmms_avcodec_read (xmms_xform_t *xform, xmms_sample_t *buf, gint len,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                xmms_error_t *error);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- static gint64 xmms_avcodec_seek (xmms_xform_t *xform, gint64 samples,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                  xmms_xform_seek_mode_t whence, xmms_error_t *err);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+static xmms_sample_format_t xmms_avcodec_translate_sample_format (enum AVSampleFormat av_sample_format);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- /*
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  * Plugin header
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -93,6 +99,16 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                 "audio/x-ffmpeg-*",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                 NULL);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  XMMS_DBG ("avcodec version at build time is %d.%d.%d",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            (LIBAVCODEC_VERSION_INT >> 16),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            (LIBAVCODEC_VERSION_INT >> 8) & 0xff,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            LIBAVCODEC_VERSION_INT & 0xff);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  XMMS_DBG ("avcodec version at run time is %d.%d.%d",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            (avcodec_version() >> 16),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            (avcodec_version() >> 8) & 0xff,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            avcodec_version() & 0xff);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  XMMS_DBG ("avcodec configuration is %s", avcodec_configuration());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   return TRUE;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -108,6 +124,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   avcodec_close (data->codecctx);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   av_free (data->codecctx);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  av_frame_free (&data->read_out_frame);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   g_string_free (data->outbuf, TRUE);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   g_free (data->buffer);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -133,8 +150,11 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   data->buffer_size = AVCODEC_BUFFER_SIZE;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   data->codecctx = NULL;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  data->read_out_frame = av_frame_alloc ();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   xmms_xform_private_data_set (xform, data);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  avcodec_init ();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   avcodec_register_all ();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   mimetype = xmms_xform_indata_get_str (xform,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -161,12 +181,12 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           data->channels = ret;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  /* bitrate required for WMA files */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  /* Required by WMA xform. */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   xmms_xform_auxdata_get_int (xform,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                               "bitrate",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                               &data->bitrate);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  /* ALAC and MAC require bits per sample field to be 16 */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  /* Required by tta and apefile xforms. */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   xmms_xform_auxdata_get_int (xform,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                               "samplebits",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                               &data->samplebits);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -197,11 +217,11 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   /* A demuxer plugin forgot to give decoder config? */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   xmms_log_error ("Decoder config data not found!");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                  return FALSE;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  goto err;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  data->codecctx = avcodec_alloc_context3 (NULL);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  data->codecctx = avcodec_alloc_context3 (codec);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   data->codecctx->sample_rate = data->samplerate;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   data->codecctx->channels = data->channels;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   data->codecctx->bit_rate = data->bitrate;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -221,7 +241,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           /* some codecs need to have something read before they set
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            * the samplerate and channels correctly, unfortunately... */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          if ((ret = xmms_avcodec_read (xform, buf, 42, &error)) > 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          if ((ret = xmms_avcodec_read (xform, buf, sizeof (buf), &error)) > 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   g_string_insert_len (data->outbuf, 0, buf, ret);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   XMMS_DBG ("First read failed, codec is not working...");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -232,12 +252,17 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   data->samplerate = data->codecctx->sample_rate;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   data->channels = data->codecctx->channels;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  data->sampleformat = xmms_avcodec_translate_sample_format (data->codecctx->sample_fmt);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  if (data->sampleformat == XMMS_SAMPLE_FORMAT_UNKNOWN) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          avcodec_close (data->codecctx);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          goto err;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   xmms_xform_outdata_type_add (xform,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                XMMS_STREAM_TYPE_MIMETYPE,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                "audio/pcm",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                XMMS_STREAM_TYPE_FMT_FORMAT,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                               XMMS_SAMPLE_FORMAT_S16,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                               data->sampleformat,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                XMMS_STREAM_TYPE_FMT_CHANNELS,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                data->channels,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                XMMS_STREAM_TYPE_FMT_SAMPLERATE,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -252,6 +277,9 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (data->codecctx) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           av_free (data->codecctx);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  if (data->read_out_frame) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          avcodec_free_frame (&data->read_out_frame);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   g_string_free (data->outbuf, TRUE);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   g_free (data->extradata);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   g_free (data);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -264,102 +292,24 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    xmms_error_t *error)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   xmms_avcodec_data_t *data;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  char outbuf[MAX_AUDIO_FRAME_SIZE];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  gint outbufsize, bytes_read = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   guint size;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   data = xmms_xform_private_data_get (xform);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   g_return_val_if_fail (data, -1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  size = MIN (data->outbuf->len, len);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  while (size == 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          AVPacket packet;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          av_init_packet (&packet);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  while (0 == (size = MIN (data->outbuf->len, len))) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          gint res;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           if (data->no_demuxer || data->buffer_length == 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                  gint read_total;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                  bytes_read = xmms_xform_read (xform,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                                                (gchar *) (data->buffer + data->buffer_length),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                                                data->buffer_size - data->buffer_length,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                                                error);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                  if (bytes_read < 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                          XMMS_DBG ("Error while reading data");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                          return bytes_read;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                  } else if (bytes_read == 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                          XMMS_DBG ("EOF");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                          return 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  gint bytes_read;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                  read_total = bytes_read;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                  /* If we have a demuxer plugin, make sure we read the whole packet */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                  while (read_total == data->buffer_size && !data->no_demuxer) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                          /* multiply the buffer size and try to read again */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                          data->buffer = g_realloc (data->buffer, data->buffer_size * 2);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                          bytes_read = xmms_xform_read (xform,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                                                        (gchar *) data->buffer +
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                                                          data->buffer_size,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                                                        data->buffer_size,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                                                        error);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                          data->buffer_size *= 2;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                          if (bytes_read < 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                                  XMMS_DBG ("Error while reading data");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                                  return bytes_read;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                          }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                          read_total += bytes_read;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                          if (read_total < data->buffer_size) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                                  /* finally double the buffer size for performance reasons, the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                                   * hotspot handling likes to fit two frames in the buffer */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                                  data->buffer = g_realloc (data->buffer, data->buffer_size * 2);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                                  data->buffer_size *= 2;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                                  XMMS_DBG ("Reallocated avcodec internal buffer to be %d bytes",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                                            data->buffer_size);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                                  break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                          }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                  /* Update the buffer length */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                  data->buffer_length += read_total;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  bytes_read = xmms_avcodec_internal_read_some (xform, data, error);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  if (bytes_read <= 0) { return bytes_read; }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          packet.data = data->buffer;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          packet.size = data->buffer_length;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          outbufsize = sizeof (outbuf);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          bytes_read = avcodec_decode_audio3 (data->codecctx, (short *) outbuf,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                                              &outbufsize, &packet);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          /* The DTS decoder of ffmpeg is buggy and always returns
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--           * the input buffer length, get frame length from header */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          if (!strcmp (data->codec_id, "dca") && bytes_read > 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                  bytes_read = ((int)data->buffer[5] << 12) |
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                               ((int)data->buffer[6] << 4) |
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                               ((int)data->buffer[7] >> 4);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                  bytes_read = (bytes_read & 0x3fff) + 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          if (bytes_read < 0 || bytes_read > data->buffer_length) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                  XMMS_DBG ("Error decoding data!");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                  return -1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          } else if (bytes_read != data->buffer_length) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                  g_memmove (data->buffer,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                             data->buffer + bytes_read,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                             data->buffer_length - bytes_read);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          data->buffer_length -= bytes_read;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          if (outbufsize > 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                  g_string_append_len (data->outbuf, outbuf, outbufsize);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          size = MIN (data->outbuf->len, len);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          res = xmms_avcodec_internal_decode_some (data);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          if (res < 0) { return res; }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          if (res > 0) { xmms_avcodec_internal_append (data); }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   memcpy (buf, data->outbuf->str, size);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -372,8 +322,6 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- xmms_avcodec_seek (xmms_xform_t *xform, gint64 samples, xmms_xform_seek_mode_t whence, xmms_error_t *err)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   xmms_avcodec_data_t *data;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  char outbuf[MAX_AUDIO_FRAME_SIZE];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  gint outbufsize, bytes_read = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   gint64 ret = -1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   g_return_val_if_fail (xform, -1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -391,23 +339,11 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   /* The buggy ape decoder doesn't flush buffers, so we need to finish decoding
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    * the frame before seeking to avoid segfaults... this hack sucks */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  /* FIXME: Is ^^^ still true? */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   while (data->buffer_length > 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          AVPacket packet;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          av_init_packet (&packet);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          packet.data = data->buffer;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          packet.size = data->buffer_length;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          outbufsize = sizeof (outbuf);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          bytes_read = avcodec_decode_audio3 (data->codecctx, (short *) outbuf,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                                              &outbufsize, &packet);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          if (bytes_read < 0 || bytes_read > data->buffer_length) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                  XMMS_DBG ("Error decoding data!");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          if (xmms_avcodec_internal_decode_some (data) < 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   return -1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          data->buffer_length -= bytes_read;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          g_memmove (data->buffer, data->buffer + bytes_read, data->buffer_length);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   ret = xmms_xform_seek (xform, samples, whence, err);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -421,3 +357,178 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   return ret;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+static xmms_sample_format_t
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+xmms_avcodec_translate_sample_format (enum AVSampleFormat av_sample_format)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  switch (av_sample_format) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  case AV_SAMPLE_FMT_U8:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  case AV_SAMPLE_FMT_U8P:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          return XMMS_SAMPLE_FORMAT_U8;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  case AV_SAMPLE_FMT_S16:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  case AV_SAMPLE_FMT_S16P:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          return XMMS_SAMPLE_FORMAT_S16;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  case AV_SAMPLE_FMT_S32:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  case AV_SAMPLE_FMT_S32P:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          return XMMS_SAMPLE_FORMAT_S32;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  case AV_SAMPLE_FMT_FLT:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  case AV_SAMPLE_FMT_FLTP:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          return XMMS_SAMPLE_FORMAT_FLOAT;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  case AV_SAMPLE_FMT_DBL:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  case AV_SAMPLE_FMT_DBLP:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          return XMMS_SAMPLE_FORMAT_DOUBLE;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  default:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          XMMS_DBG ("AVSampleFormat (%i: %s) not supported.", av_sample_format,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                    av_get_sample_fmt_name (av_sample_format));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          return XMMS_SAMPLE_FORMAT_UNKNOWN;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+/*
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+Read some data from our source of data to data->buffer, updating buffer_length
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+and buffer_size as needed.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+Returns: on error: negative
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+         on EOF: zero
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+         otherwise: number of bytes read.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+*/
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+static gint
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+xmms_avcodec_internal_read_some (xmms_xform_t *xform,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                                 xmms_avcodec_data_t *data,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                                 xmms_error_t *error)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  gint bytes_read, read_total;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  bytes_read = xmms_xform_read (xform,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                                (gchar *) (data->buffer + data->buffer_length),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                                data->buffer_size - data->buffer_length,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                                error);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  if (bytes_read < 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          XMMS_DBG ("Error while reading data");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          return bytes_read;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  } else if (bytes_read == 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          XMMS_DBG ("EOF");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          return 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  read_total = bytes_read;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  /* If we have a demuxer plugin, make sure we read the whole packet */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  while (read_total == data->buffer_size && !data->no_demuxer) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          /* multiply the buffer size and try to read again */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          data->buffer = g_realloc (data->buffer, data->buffer_size * 2);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          bytes_read = xmms_xform_read (xform,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                                        (gchar *) data->buffer +
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                                          data->buffer_size,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                                        data->buffer_size,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                                        error);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          data->buffer_size *= 2;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          if (bytes_read < 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  XMMS_DBG ("Error while reading data");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  return bytes_read;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          read_total += bytes_read;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          if (read_total < data->buffer_size) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  /* finally double the buffer size for performance reasons, the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                   * hotspot handling likes to fit two frames in the buffer */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  data->buffer = g_realloc (data->buffer, data->buffer_size * 2);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  data->buffer_size *= 2;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  XMMS_DBG ("Reallocated avcodec internal buffer to be %d bytes",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                            data->buffer_size);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  /* Update the buffer length */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  data->buffer_length += read_total;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  return read_total;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+/*
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+Decode some data from data->buffer[0..data->buffer_length-1] to
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+data->read_out_frame
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+Returns: on error: negative
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+         on no new data produced: zero
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+         otherwise: positive
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+FIXME: data->buffer should be at least data->buffer_length +
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+FF_INPUT_BUFFER_PADDING_SIZE long.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+*/
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+static gint
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+xmms_avcodec_internal_decode_some (xmms_avcodec_data_t *data)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  int got_frame = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  gint bytes_read = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  AVPacket packet;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  av_init_packet (&packet);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  packet.data = data->buffer;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  packet.size = data->buffer_length;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  /* clear buffers and reset fields to defaults */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  av_frame_unref (data->read_out_frame);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  bytes_read = avcodec_decode_audio4 (
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          data->codecctx, data->read_out_frame, &got_frame, &packet);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  /* The DTS decoder of ffmpeg is buggy and always returns
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+   * the input buffer length, get frame length from header */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  /* FIXME: Is ^^^^ still true? */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  if (!strcmp (data->codec_id, "dca") && bytes_read > 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          bytes_read = ((int)data->buffer[5] << 12) |
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                       ((int)data->buffer[6] << 4) |
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                       ((int)data->buffer[7] >> 4);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          bytes_read = (bytes_read & 0x3fff) + 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  if (bytes_read < 0 || bytes_read > data->buffer_length) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          XMMS_DBG ("Error decoding data!");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          return -1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  if (bytes_read < data->buffer_length) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          data->buffer_length -= bytes_read;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          g_memmove (data->buffer,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                     data->buffer + bytes_read,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                     data->buffer_length);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          data->buffer_length = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  return got_frame ? 1 : 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+static void
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+xmms_avcodec_internal_append (xmms_avcodec_data_t *data)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  enum AVSampleFormat fmt = (enum AVSampleFormat) data->read_out_frame->format;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  int samples = data->read_out_frame->nb_samples;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  int channels = data->codecctx->channels;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  int bps = av_get_bytes_per_sample (fmt);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  if (av_sample_fmt_is_planar (fmt)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          /* Convert from planar to packed format */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          gint i, j;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          for (i = 0; i < samples; i++) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  for (j = 0; j < channels; j++) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                          g_string_append_len (
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                                  data->outbuf,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                                  (gchar *) (data->read_out_frame->extended_data[j] + i*bps),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                                  bps
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                          );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          g_string_append_len (data->outbuf,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                               (gchar *) data->read_out_frame->extended_data[0],
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                               samples * channels * bps);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff -ur src/plugins/avcodec.orig/avcodec_compat.h src/plugins/avcodec/avcodec_compat.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/plugins/avcodec.orig/avcodec_compat.h      2016-02-24 11:59:39.000000000 -0800
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/plugins/avcodec/avcodec_compat.h   2016-02-24 12:02:03.000000000 -0800
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1,7 +1,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- /** @file avcodec_compat.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  *  Compatibility header for libavcodec backwards compatibility
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  *
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- *  Copyright (C) 2011 XMMS2 Team
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ *  Copyright (C) 2011-2014 XMMS2 Team
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  *
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  *  This library is free software; you can redistribute it and/or
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  *  modify it under the terms of the GNU Lesser General Public
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -65,3 +65,35 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # define AVMEDIA_TYPE_AUDIO CODEC_TYPE_AUDIO
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+/* Calling avcodec_init is not necessary after 53.04 (ffmpeg 0.9) */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#if LIBAVCODEC_VERSION_INT >= 0x350400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+# define avcodec_init()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+/* Map avcodec_alloc_context3 into the deprecated version
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ * avcodec_alloc_context in versions earlier than 53.04 (ffmpeg 0.9) */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#if LIBAVCODEC_VERSION_INT < 0x350400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+# define avcodec_alloc_context3(codec) \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    avcodec_alloc_context()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+/* Map avcodec_open2 into the deprecated version
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ * avcodec_open in versions earlier than 53.04 (ffmpeg 0.9) */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#if LIBAVCODEC_VERSION_INT < 0x350400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+# define avcodec_open2(avctx, codec, options) \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    avcodec_open(avctx, codec)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+/* Map avcodec_free_frame to av_freep if the former doesn't exist.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ * (This is in versions earlier than 54.28.0 (libav) or 54.59.100 (ffmpeg)) */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#if ! HAVE_AVCODEC_FREE_FRAME
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+# define avcodec_free_frame av_freep
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+/* Map av_frame_alloc, av_frame_unref, av_frame_free into their
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ * deprecated versions in versions earlier than 55.28.1 */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#if LIBAVCODEC_VERSION_INT < 0x371c01
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+# define av_frame_alloc avcodec_alloc_frame
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+# define av_frame_unref avcodec_get_frame_defaults
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+# define av_frame_free avcodec_free_frame
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff -ur src/plugins/avcodec.orig/wscript src/plugins/avcodec/wscript
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/plugins/avcodec.orig/wscript       2016-02-24 11:59:39.000000000 -0800
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/plugins/avcodec/wscript    2016-02-24 12:00:41.000000000 -0800
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1,10 +1,33 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- from waftools.plugin import plugin
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+## Code fragments for configuration
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+avcodec_free_frame_fragment = """
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#ifdef HAVE_LIBAVCODEC_AVCODEC_H
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+# include "libavcodec/avcodec.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+# include "avcodec.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+int main(void) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    AVFrame *frame;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    avcodec_free_frame (&frame);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    return 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+"""
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- def plugin_configure(conf):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     conf.check_cfg(package="libavcodec", uselib_store="avcodec",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             args="--cflags --libs")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     conf.check_cc(header_name="avcodec.h", uselib="avcodec", type="cshlib", mandatory=False)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     conf.check_cc(header_name="libavcodec/avcodec.h", uselib="avcodec", type="cshlib", mandatory=False)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    # non-mandatory function avcodec_free_frame since
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    # * ffmpeg: commit 46a3595, lavc 54.59.100, release 1.0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    # * libav: commit a42aada, lavc 54.28.0, release 9
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    conf.check_cc(fragment=avcodec_free_frame_fragment, uselib="avcodec",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  uselib_store="avcodec_free_frame",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  msg="Checking for function avcodec_free_frame", mandatory=False)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- configure, build = plugin('avcodec', configure=plugin_configure,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           libs=["avcodec"])
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/audio/xmms2/files/patch-nellymoser.diff b/audio/xmms2/files/patch-nellymoser.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index eed8642803f..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/audio/xmms2/files/patch-nellymoser.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,373 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/plugins/avcodec/avcodec.c.orig     2013-08-05 13:22:57.000000000 -0700
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/plugins/avcodec/avcodec.c  2013-08-05 13:22:57.000000000 -0700
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -86,7 +86,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   xmms_magic_add ("A/52 (AC-3) header", "audio/x-ffmpeg-ac3",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "0 beshort 0x0b77", NULL);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   xmms_magic_add ("DTS header", "audio/x-ffmpeg-dca",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                  "0 belong 0x7ffe8001", NULL); 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  "0 belong 0x7ffe8001", NULL);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   xmms_xform_plugin_indata_add (xform_plugin,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                 XMMS_STREAM_TYPE_MIMETYPE,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -188,7 +188,8 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-               !strcmp (data->codec_id, "adpcm_swf") ||
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-               !strcmp (data->codec_id, "pcm_s16le") ||
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-               !strcmp (data->codec_id, "ac3") ||
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--              !strcmp (data->codec_id, "dca")) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+              !strcmp (data->codec_id, "dca") ||
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+              !strcmp (data->codec_id, "nellymoser")) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   /* number 1024 taken from libavformat raw.c RAW_PACKET_SIZE */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   data->extradata = g_malloc0 (1024);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   data->extradata_size = 1024;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/plugins/flv/flv.c.orig
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/plugins/flv/flv.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -25,29 +25,41 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  * and other info, then data
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define FLV_TAG_SIZE 11
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--/* random constant */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define FLV_CHUNK_SIZE 4096
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--/* let libavcodec take care of swapping sample bytes */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--static const gchar *mime_pcm_s16le = "audio/x-ffmpeg-pcm_s16le";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--static const gchar *fmt_mime[11] = {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  /* Supported when samples are 8 bit
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--   * (otherwise there's no way of knowing endianness)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--   */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  "audio/pcm",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  "audio/x-ffmpeg-adpcm_swf",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  "audio/mpeg",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  /* if bps is 8 bit u8
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--   * if bps is 16 bit sle16
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--   */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  "audio/pcm",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  /* libavcodec can't handle nelly without dying yet */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  /*"audio/x-ffmpeg-nellymoser",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  "audio/x-ffmpeg-nellymoser",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  "audio/x-ffmpeg-nellymoser",*/
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  "", "", "",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  "", "", "",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  "audio/aac"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+typedef enum {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  /* Only u8 bit samples since
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+     there's no way to determine endianness
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  CODEC_PCM_HOST,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  CODEC_ADPCM,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  CODEC_MP3,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  /* 8 bps: unsigned
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+     16 bps: signed
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  CODEC_PCM_LE,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  CODEC_NELLYMOSER_16K,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  CODEC_NELLYMOSER_8K,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  /* Uses the sample rate in
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+     the tag as normal
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  CODEC_NELLYMOSER,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  CODEC_AAC = 10
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+} xmms_flv_codec_id;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+struct xmms_flv_codec_table {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  xmms_flv_codec_id id;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  const gchar *mime;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+} static flv_codecs[] = {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  {CODEC_PCM_HOST, "audio/pcm"},
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  {CODEC_ADPCM, "audio/x-ffmpeg-adpcm_swf"},
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  {CODEC_MP3, "audio/mpeg"},
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  /* Will be audio/x-ffmpeg-pcm_s16le if bps is 16 */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  {CODEC_PCM_LE, "audio/pcm"},
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  {CODEC_NELLYMOSER_16K, "audio/x-ffmpeg-nellymoser"},
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  {CODEC_NELLYMOSER_8K, "audio/x-ffmpeg-nellymoser"},
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  {CODEC_NELLYMOSER, "audio/x-ffmpeg-nellymoser"},
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  {CODEC_AAC, "audio/aac"}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- typedef struct {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -111,23 +123,26 @@ static gboolean
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- xmms_flv_init (xmms_xform_t *xform)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   xmms_sample_format_t bps;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  gint readret;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  gint readret, i;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   guint8 channels, flags, format;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  guint8 header[FLV_TAG_SIZE + 5];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  const gchar *mime;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  guint8 header[FLV_TAG_SIZE + 1];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   guint32 dataoffset, samplerate;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   xmms_error_t err;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   xmms_flv_data_t *flvdata;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  struct xmms_flv_codec_table *codec = NULL;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  flvdata = g_new0 (xmms_flv_data_t, 1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  xmms_xform_private_data_set (xform, flvdata);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   readret = xmms_xform_read (xform, header, FLV_HDR_SIZE, &err);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (readret != FLV_HDR_SIZE) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           xmms_log_error ("Header read error");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          return FALSE;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          goto init_err;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if ((header[4] & HAS_AUDIO) != HAS_AUDIO) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           xmms_log_error ("FLV has no audio stream");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          return FALSE;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          goto init_err;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   dataoffset = get_be32 (&header[5]) - FLV_HDR_SIZE;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -140,7 +155,7 @@ xmms_flv_init (xmms_xform_t *xform)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                      dataoffset : FLV_HDR_SIZE, &err);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           if (readret <= 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   xmms_log_error ("Error reading header:tag body gap");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                  return FALSE;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  goto init_err;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           dataoffset -= readret;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -148,86 +163,99 @@ xmms_flv_init (xmms_xform_t *xform)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (next_audio_tag (xform) <= 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           xmms_log_error ("Can't find first audio tag");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          return FALSE;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          goto init_err;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  if (xmms_xform_peek (xform, header, FLV_TAG_SIZE + 5, &err) < FLV_TAG_SIZE + 5) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  if (xmms_xform_read (xform, header, FLV_TAG_SIZE + 1, &err) < FLV_TAG_SIZE + 1) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           xmms_log_error ("Can't read first audio tag");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          return FALSE;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          goto init_err;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  flags = header[FLV_TAG_SIZE + 4];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  flags = header[11];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   XMMS_DBG ("Audio flags: %X", flags);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  switch (flags&12) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          case 0: samplerate = 5512; break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          case 4: samplerate = 11025; break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          case 8: samplerate = 22050; break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          case 12: samplerate = 44100; break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          default: samplerate = 8000; break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  format = flags >> 4;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  for (i = 0; i < G_N_ELEMENTS (flv_codecs); i++) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          if (flv_codecs[i].id == format) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  codec = &flv_codecs[i];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  if (flags&2) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          bps = XMMS_SAMPLE_FORMAT_S16;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  if (flags & 1) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          channels = 2;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          bps = XMMS_SAMPLE_FORMAT_U8;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          channels = 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  if (flags&1) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          channels = 2;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  if (flags & 2) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          bps = XMMS_SAMPLE_FORMAT_S16;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          channels = 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          bps = XMMS_SAMPLE_FORMAT_U8;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  format = flags >> 4;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  mime = (format <= 10)? fmt_mime[format] : NULL;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  switch (format) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          case 0:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                  /* If the flv has an HE PCM audio stream, the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                   * samples must be unsigned and 8 bits long
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                   */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                  if (bps != XMMS_SAMPLE_FORMAT_U8) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                          xmms_log_error ("Only u8 HE PCM is supported");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                          return FALSE;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                  break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          case 3:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                  if (bps == XMMS_SAMPLE_FORMAT_S16) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                          mime = mime_pcm_s16le;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                  break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  switch ((flags & 12) >> 2) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          case 0: samplerate = 5512; break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          case 1: samplerate = 11025; break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          case 2: samplerate = 22050; break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          case 3: samplerate = 44100; break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          default: samplerate = 8000; break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  if (mime && *mime) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          flvdata = g_new0 (xmms_flv_data_t, 1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  if (codec) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          switch (codec->id) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  case CODEC_PCM_HOST:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                          if (bps != XMMS_SAMPLE_FORMAT_U8) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                                  xmms_log_error ("Only u8 HE PCM is supported");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                                  goto init_err;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                          }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                          break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  case CODEC_PCM_LE:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                          if (bps == XMMS_SAMPLE_FORMAT_S16) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                                  codec->mime = "audio/x-ffmpeg-pcm_s16le";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                          }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                          break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  case CODEC_NELLYMOSER_16K:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                          samplerate = 16000;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                          break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  case CODEC_NELLYMOSER_8K:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                          samplerate = 8000;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                          break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  default:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                          break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           flvdata->format = format;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          flvdata->last_datasize = get_be24 (&header[1]) - 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           XMMS_DBG ("Rate: %d, bps: %d, channels: %d", samplerate,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                     bps, channels);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          xmms_xform_private_data_set (xform, flvdata);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           xmms_xform_outdata_type_add (xform,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                        XMMS_STREAM_TYPE_MIMETYPE,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                                       mime,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                                       XMMS_STREAM_TYPE_FMT_SAMPLERATE,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                                       samplerate,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                                       XMMS_STREAM_TYPE_FMT_FORMAT,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                                       bps,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                                       XMMS_STREAM_TYPE_FMT_CHANNELS,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                                       channels,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                                       XMMS_STREAM_TYPE_END);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                                       codec->mime,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                                       XMMS_STREAM_TYPE_FMT_SAMPLERATE,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                                       samplerate,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                                       XMMS_STREAM_TYPE_FMT_FORMAT,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                                       bps,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                                       XMMS_STREAM_TYPE_FMT_CHANNELS,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                                       channels,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                                       XMMS_STREAM_TYPE_END);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           return TRUE;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           xmms_log_error ("Unsupported audio format");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          return FALSE;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+init_err:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  g_free (flvdata);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  return FALSE;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- static gint
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- xmms_flv_read (xmms_xform_t *xform, xmms_sample_t *buf, gint len, xmms_error_t *err)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  gint ret = 0, thismuch = FLV_TAG_SIZE + 5;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  guint8 header[FLV_TAG_SIZE + 6], gap = 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  gint ret = 0, thismuch = FLV_TAG_SIZE + 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  guint8 header[FLV_TAG_SIZE + 1];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   xmms_flv_data_t *data = NULL;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   data = xmms_xform_private_data_get (xform);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -236,12 +264,8 @@ xmms_flv_read (xmms_xform_t *xform, xmms_sample_t *buf, gint len, xmms_error_t *
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           xmms_xform_auxdata_barrier (xform);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           ret = next_audio_tag (xform);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           if (ret > 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                  if (data->format == 10) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                          thismuch++;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                          gap++;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   if (xmms_xform_read (xform, header, thismuch, err) == thismuch) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                          data->last_datasize = get_be24 (&header[5]) - gap;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                          data->last_datasize = get_be24 (&header[1]) - 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           xmms_log_error ("Need %d bytes", thismuch);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           return -1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -280,40 +304,51 @@ xmms_flv_destroy (xmms_xform_t *xform)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- static gint
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- next_audio_tag (xmms_xform_t *xform)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  guint8 header[FLV_TAG_SIZE + 4];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  guint8 header[FLV_TAG_SIZE];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   guint8 dumb[FLV_CHUNK_SIZE];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   gint ret = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   xmms_error_t err;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  guint32 datasize = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  xmms_flv_data_t *data;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  data = xmms_xform_private_data_get (xform);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   do {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          /* there's a last 4 bytes at the end of an FLV giving the final
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--           * tag's size, this isn't an error
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--           */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          ret = xmms_xform_peek (xform, header, FLV_TAG_SIZE + 4, &err);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          if ((ret < FLV_TAG_SIZE) && (ret > -1)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                  ret = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                  break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          } else if (ret == -1) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                  xmms_log_error ("%s", xmms_error_message_get (&err));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                  break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          /* If > 0 assume we're in the middle of a tag's data */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          if (!data->last_datasize) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  /* There are 4 bytes before an actual tag giving
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                     the previous tag's size. The first size in an
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                     flv is always 0.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  if (xmms_xform_read (xform, header, 4, &err) != 4) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                          xmms_log_error ("Couldn't read last tag size");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                          return -1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          if (header[4] == 8) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                  /* woo audio tag! */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                  break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  ret = xmms_xform_peek (xform, header, FLV_TAG_SIZE, &err);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  if ((ret < FLV_TAG_SIZE) && (ret > -1)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                          return 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  } else if (ret == -1) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                          xmms_log_error ("%s", xmms_error_message_get (&err));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                          return ret;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  if (header[0] == 8) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                          /* woo audio tag! */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                          break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          ret = xmms_xform_read (xform, header, FLV_TAG_SIZE + 4, &err);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          if (ret <= 0) { return ret; }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  if ((ret = xmms_xform_read (xform, header, FLV_TAG_SIZE, &err)) <= 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                          return ret;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          datasize = get_be24 (&header[5]);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  data->last_datasize = get_be24 (&header[1]);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          while (datasize) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          while (data->last_datasize) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   ret = xmms_xform_read (xform, dumb,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                                           (datasize < FLV_CHUNK_SIZE) ?
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                                           datasize : FLV_CHUNK_SIZE,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                                           &err);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                                         (data->last_datasize < FLV_CHUNK_SIZE) ?
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                                         data->last_datasize : FLV_CHUNK_SIZE,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                                         &err);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   if (ret == 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           xmms_log_error ("Data field short!");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -323,7 +358,7 @@ next_audio_tag (xmms_xform_t *xform)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                  datasize -= ret;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  data->last_datasize -= ret;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   } while (ret);
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/audio/xmms2/files/patch-openssl-1.1.0.diff b/audio/xmms2/files/patch-openssl-1.1.0.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 8554ef2526f..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/audio/xmms2/files/patch-openssl-1.1.0.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,60 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From b8d1d0a1f43f652b19277c93a0eeb2d7432bc8a0 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Date: Tue, 30 Aug 2016 21:28:52 +0200
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Subject: OTHER: Build against openssl 1.1.0.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/src/plugins/airplay/raop_client.c b/src/plugins/airplay/raop_client.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 1d86cf3..ef113cb 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/plugins/airplay/raop_client.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/plugins/airplay/raop_client.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -135,15 +135,34 @@ raop_rsa_encrypt (guchar *text, gint len, guchar *res)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           0x5e,0xf,0xc8,0x75,0x34,0x3e,0xc7,0x82,0x11,0x76,0x25,0xcd
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           ,0xbf,0x98,0x44,0x7b};
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   static const guchar exp[] = {0x01, 0x00, 0x01};
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  BIGNUM *n, *e;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   rsa = RSA_new ();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  rsa->n = BN_bin2bn (mod, 256, NULL);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  rsa->e = BN_bin2bn (exp, 3, NULL);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  n = BN_bin2bn (mod, 256, NULL);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  e = BN_bin2bn (exp, 3, NULL);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  if (!rsa || !n || !e)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          goto err;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#if OPENSSL_VERSION_NUMBER < 0x10100000
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  rsa->n = n;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  rsa->e = e;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  if (!RSA_set0_key(rsa, n, e, NULL))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          goto err;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   size = RSA_public_encrypt (len, text, res, rsa, RSA_PKCS1_OAEP_PADDING);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   RSA_free (rsa);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   return size;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+err:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  if (rsa)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          RSA_free(rsa);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  if (n)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          BN_free(n);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  if (e)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          BN_free(e);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  return 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- static void
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -250,6 +269,8 @@ raop_rtsp_announce (raop_client_t *rc)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   gint ret = RAOP_EOK;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   size = raop_rsa_encrypt (rc->aes_key_str, 16, enc_aes_key);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  if (size == 0)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          return RAOP_EFAIL;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   size = b64_encode_alloc (enc_aes_key, size, &key);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   g_strdelimit (key, "=", '\0');
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-cgit v0.10.2
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/audio/xmms2/files/patch-src-clients-vistest-wscript.diff b/audio/xmms2/files/patch-src-clients-vistest-wscript.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 34e46cb0222..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/audio/xmms2/files/patch-src-clients-vistest-wscript.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,28 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/clients/vistest/wscript.orig       2015-10-22 02:04:11.000000000 -0700
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/clients/vistest/wscript    2015-10-22 02:08:31.000000000 -0700
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -23,12 +23,12 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             t.install_path = None
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    if bld.env.LIB_vorbisenc:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if bld.env.LIB_vorbisenc and bld.env.LIB_vorbis and bld.env.LIB_ogg:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         t = bld(features = 'c cprogram',
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             target = 'xmms2-ripper',
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             source = 'ripper.c',
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             includes = '. ../../.. ../../include',
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            uselib = 'vorbisenc',
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            uselib = 'vorbisenc vorbis ogg',
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             use = 'xmmsclient'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             )
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         if not bld.env.INSTALL_VIS_REFERENCE_CLIENTS:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -55,6 +55,10 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     conf.check_cfg(package='vorbisenc', uselib_store='vorbisenc',
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             args='--cflags --libs', mandatory=False)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    conf.check_cfg(package='vorbis', uselib_store='vorbis',
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            args='--cflags --libs', mandatory=False)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    conf.check_cfg(package='ogg', uselib_store='ogg',
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            args='--cflags --libs', mandatory=False)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     if conf.check_cfg(package='libvisual-0.4', uselib_store='visual',
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             args='--cflags --libs', mandatory=False):
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/audio/xmms2/files/patch-src-plugins-cdda-cdda.c.diff b/audio/xmms2/files/patch-src-plugins-cdda-cdda.c.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 8e714d3c726..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/audio/xmms2/files/patch-src-plugins-cdda-cdda.c.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,11 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/plugins/cdda/cdda.c.orig   2015-10-22 15:45:06.000000000 -0700
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/plugins/cdda/cdda.c        2015-10-22 15:47:03.000000000 -0700
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -18,7 +18,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "xmms/xmms_log.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "xmms/xmms_util.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#include <cdio/cdda.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <cdio/paranoia/cdda.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <cdio/cdio.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <cdio/logging.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <discid/discid.h>
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/audio/xmms2/files/patch-src-plugins-modplug-modplug.c.diff b/audio/xmms2/files/patch-src-plugins-modplug-modplug.c.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 216cf17bf7a..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/audio/xmms2/files/patch-src-plugins-modplug-modplug.c.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,12 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-https://bugs.xmms2.org/view.php?id=2574
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/plugins/modplug/modplug.c.orig     2011-10-20 14:26:08.000000000 -0500
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/plugins/modplug/modplug.c  2014-10-02 08:38:40.000000000 -0500
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -9,7 +9,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "xmms/xmms_sample.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "xmms/xmms_medialib.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "xmms/xmms_log.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#include <modplug.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <libmodplug/modplug.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <glib.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <string.h>
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/audio/xmms2/files/patch-waftools-podselect.diff b/audio/xmms2/files/patch-waftools-podselect.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..82ffdce626e
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/audio/xmms2/files/patch-waftools-podselect.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,14 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- waftools/podselect.py.orig     2023-05-12 12:19:00
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ waftools/podselect.py  2024-05-17 16:57:06
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -31,7 +31,10 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           self.bld.install_files(os.path.join(base_path, os.path.dirname(path)), outnode)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ class perldoc(Task.Task):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  run_str='podselect ${SRC} > ${TGT}'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  run_str='${PODSELECT} ${SRC} > ${TGT}'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   color='BLUE'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   ext_in=['.xs']
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   ext_out=['.pod']
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++def configure(ctx):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    ctx.find_program('podselect', var='PODSELECT')
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/audio/xmms2/files/patch-wscript.diff b/audio/xmms2/files/patch-wscript.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index be7e03402e5..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/audio/xmms2/files/patch-wscript.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,11 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-http://git.xmms2.org/xmms2/xmms2-devel/commit/wscript?id=8a2603cabdc0c184d2c177660986d20b21fd6987
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- wscript.orig   2011-10-20 14:26:08.000000000 -0500
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ wscript        2014-10-02 08:30:12.000000000 -0500
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -356,7 +356,6 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         conf.env.cprogram_PATTERN = '%s.exe'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     if Options.platform == 'darwin':
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        conf.env.append_value('LINKFLAGS', '-multiply_defined_suppress')
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         conf.env.explicit_install_name = True
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     else:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         conf.env.explicit_install_name = False
</span></pre><pre style='margin:0'>

</pre>