Author: oget
Update of /cvs/free/rpms/xmms2-freeworld/F-9
In directory se02.es.rpmfusion.net:/tmp/cvs-serv12528/F-9
Modified Files:
.cvsignore sources
Added Files:
xmms2-0.5DrLecter-moresaneversioning.patch
xmms2-0.5DrLecter-no-O0.patch
xmms2-0.5DrLecter-use-libdir.patch
xmms2-devel.git-37578b59f5d7376213da74b3bf6b7c7f430d0bc9.patch
xmms2-devel.git-6f06f3409dfa82b7a3e7fdd682567d46fd65e262.patch
xmms2-devel.git-93aab85319fcc168db2d35058e996826a5c6a034.patch
xmms2-devel.git-a42762549126b8facdab90cf01a17fa106bc8dce.patch
xmms2-devel.git-a63d0f80f384ffd15c921af74f036d785d3b72df.patch
xmms2-devel.git-be6f8e111913433a0fee1ddfa3d234067695aadf.patch
xmms2-devel.git-d09c0d8a971c0333a0c8387113f744f0b9899fe4.patch
xmms2-devel.git-fae1d0cfd643e999d419162979b9c90d12a30002.patch
xmms2-devel.git-fccc583328ca58110a8b6e00ccb8c0bb1f6923ad.patch
xmms2-freeworld.spec
Log Message:
* Mon Dec 16 2008 John Doe <anonymous(a)american.us> 0.5-5
- Fix typo in the SPEC file
* Mon Dec 15 2008 John Doe <anonymous(a)american.us> 0.5-4
- Disable building of everything possible that do not go to the freeworld plugins
- Add bits for mac plugin, but keep it disabled until mac becomes free
* Fri Dec 12 2008 John Doe <anonymous(a)american.us> 0.5-3
- Add meta package
- Include more upstream patches for avcodec plugin compilation and fixes
- Drop BR's and patches that are irrelevant for compiling freeworld plugins
* Wed Dec 10 2008 John Doe <anonymous(a)american.us> 0.5-2
- Do the same cleanups as is done to the main package,
see rh-bz #474908
* Fri Dec 05 2008 John Doe <anonymous(a)american.us> 0.5-1
- Initial package for RPMFusion
xmms2-0.5DrLecter-moresaneversioning.patch:
--- NEW FILE xmms2-0.5DrLecter-moresaneversioning.patch ---
diff -up xmms2-0.5DrLecter/wscript.versionsanity xmms2-0.5DrLecter/wscript
--- xmms2-0.5DrLecter/wscript.versionsanity 2008-12-10 15:22:56.000000000 -0500
+++ xmms2-0.5DrLecter/wscript 2008-12-10 15:27:09.000000000 -0500
@@ -23,7 +23,7 @@ import Object
import Utils
import Common
-BASEVERSION="0.5 DrLecter"
+BASEVERSION="0.5"
APPNAME='xmms2'
srcdir='.'
@@ -252,14 +252,15 @@ def configure(conf):
nam,changed = gittools.get_info()
conf.check_message("git commit id", "", True, nam)
- if Params.g_options.customversion:
- conf.env["VERSION"] = BASEVERSION + " (%s + %s)" % (nam,
Params.g_options.customversion)
- else:
- dirty=""
- if changed:
- dirty="-dirty"
- conf.check_message("uncommitted changes", "", bool(changed))
- conf.env["VERSION"] = BASEVERSION + " (git commit: %s%s)" %
(nam, dirty)
+ ## if Params.g_options.customversion:
+ ## conf.env["VERSION"] = BASEVERSION + " (%s + %s)" % (nam,
Params.g_options.customversion)
+ ## else:
+ ## dirty=""
+ ## if changed:
+ ## dirty="-dirty"
+ ## conf.check_message("uncommitted changes", "",
bool(changed))
+ ## conf.env["VERSION"] = BASEVERSION + " (git commit: %s%s)" %
(nam, dirty)
+ conf.env["VERSION"] = BASEVERSION
## conf.env["CCFLAGS"] = Utils.to_list(conf.env["CCFLAGS"]) +
['-g', '-O0']
## conf.env["CXXFLAGS"] = Utils.to_list(conf.env["CXXFLAGS"]) +
['-g', '-O0']
xmms2-0.5DrLecter-no-O0.patch:
--- NEW FILE xmms2-0.5DrLecter-no-O0.patch ---
diff -up xmms2-0.5DrLecter/wscript.BAD xmms2-0.5DrLecter/wscript
--- xmms2-0.5DrLecter/wscript.BAD 2008-12-10 15:04:53.000000000 -0500
+++ xmms2-0.5DrLecter/wscript 2008-12-10 15:05:09.000000000 -0500
@@ -261,8 +261,8 @@ def configure(conf):
conf.check_message("uncommitted changes", "", bool(changed))
conf.env["VERSION"] = BASEVERSION + " (git commit: %s%s)" %
(nam, dirty)
- conf.env["CCFLAGS"] = Utils.to_list(conf.env["CCFLAGS"]) +
['-g', '-O0']
- conf.env["CXXFLAGS"] = Utils.to_list(conf.env["CXXFLAGS"]) +
['-g', '-O0']
+ ## conf.env["CCFLAGS"] = Utils.to_list(conf.env["CCFLAGS"]) +
['-g', '-O0']
+ ## conf.env["CXXFLAGS"] = Utils.to_list(conf.env["CXXFLAGS"]) +
['-g', '-O0']
conf.env['XMMS_PKGCONF_FILES'] = []
conf.env['XMMS_OUTPUT_PLUGINS'] = [(-1, "NONE")]
xmms2-0.5DrLecter-use-libdir.patch:
--- NEW FILE xmms2-0.5DrLecter-use-libdir.patch ---
diff -up xmms2-0.5DrLecter/src/include/xmms/wscript.BAD
xmms2-0.5DrLecter/src/include/xmms/wscript
--- xmms2-0.5DrLecter/src/include/xmms/wscript.BAD 2008-12-04 16:28:12.000000000 -0500
+++ xmms2-0.5DrLecter/src/include/xmms/wscript 2008-12-04 16:28:44.000000000 -0500
@@ -12,8 +12,7 @@ def configure(conf):
defs = {}
- defs['PKGLIBDIR'] = os.path.join(conf.env['PREFIX'],
- 'lib', 'xmms2')
+ defs['PKGLIBDIR'] = os.path.join(conf.env['LIBDIR'],
'xmms2')
defs['BINDIR'] = conf.env['BINDIR']
defs['SHAREDDIR'] = os.path.join(conf.env['PREFIX'],
'share', 'xmms2')
diff -up xmms2-0.5DrLecter/wafadmin/Tools/python.py.BAD
xmms2-0.5DrLecter/wafadmin/Tools/python.py
--- xmms2-0.5DrLecter/wafadmin/Tools/python.py.BAD 2008-12-04 16:36:29.000000000 -0500
+++ xmms2-0.5DrLecter/wafadmin/Tools/python.py 2008-12-04 16:36:41.000000000 -0500
@@ -211,7 +211,7 @@ def check_python_version(conf, minver=No
else:
python_LIBDEST = None
if python_LIBDEST is None:
- python_LIBDEST = os.path.join(conf.env['PREFIX'], "lib",
"python" + pyver)
+ python_LIBDEST = os.path.join(conf.env['LIBDIR'], "python" +
pyver)
dir = os.path.join(python_LIBDEST, "site-packages")
conf.add_define('PYTHONDIR', dir)
xmms2-devel.git-37578b59f5d7376213da74b3bf6b7c7f430d0bc9.patch:
--- NEW FILE xmms2-devel.git-37578b59f5d7376213da74b3bf6b7c7f430d0bc9.patch ---
From: Daniel Chokola <dan(a)chokola.com>
Date: Tue, 22 Jul 2008 14:21:36 +0000 (-0400)
Subject: BUG(1998): use XMMS_PATH_MAX in helpers.h
X-Git-Url:
http://git.xmms.se/?p=xmms2-devel.git;a=commitdiff_plain;h=37578b59f5d737...
BUG(1998): use XMMS_PATH_MAX in helpers.h
---
diff --git a/src/include/xmmsclient/xmmsclient++/helpers.h
b/src/include/xmmsclient/xmmsclient++/helpers.h
index b131575..f237231 100644
--- a/src/include/xmmsclient/xmmsclient++/helpers.h
+++ b/src/include/xmmsclient/xmmsclient++/helpers.h
@@ -44,8 +44,8 @@ namespace Xmms
*/
inline std::string getUserConfDir() {
- char buf[PATH_MAX] = { '\0' };
- if( !xmmsc_userconfdir_get( buf, PATH_MAX ) ) {
+ char buf[XMMS_PATH_MAX] = { '\0' };
+ if( !xmmsc_userconfdir_get( buf, XMMS_PATH_MAX ) ) {
throw Xmms::result_error( "Error occured when trying to get "
"user config directory." );
}
xmms2-devel.git-6f06f3409dfa82b7a3e7fdd682567d46fd65e262.patch:
--- NEW FILE xmms2-devel.git-6f06f3409dfa82b7a3e7fdd682567d46fd65e262.patch ---
From: Juho Vähä-Herttua <juhovh(a)iki.fi>
Date: Wed, 18 Jun 2008 12:41:29 +0000 (+0800)
Subject: OTHER: Add a hack to avcodec to avoid crashes coming from buggy ape decoder.
X-Git-Url:
http://git.xmms.se/?p=xmms2-devel.git;a=commitdiff_plain;h=6f06f3409dfa82...
OTHER: Add a hack to avcodec to avoid crashes coming from buggy ape decoder.
---
diff --git a/src/plugins/avcodec/avcodec.c b/src/plugins/avcodec/avcodec.c
index 28cb511..5f5760f 100644
--- a/src/plugins/avcodec/avcodec.c
+++ b/src/plugins/avcodec/avcodec.c
@@ -292,7 +292,7 @@ xmms_avcodec_read (xmms_xform_t *xform, xmms_sample_t *buf, gint len,
&outbufsize, data->buffer,
data->buffer_length);
- if (bytes_read < 0) {
+ if (bytes_read < 0 || bytes_read > data->buffer_length) {
XMMS_DBG ("Error decoding data!");
return -1;
}
@@ -317,6 +317,8 @@ static gint64
xmms_avcodec_seek (xmms_xform_t *xform, gint64 samples, xmms_xform_seek_mode_t whence,
xmms_error_t *err)
{
xmms_avcodec_data_t *data;
+ char outbuf[AVCODEC_MAX_AUDIO_FRAME_SIZE];
+ gint outbufsize, bytes_read = 0;
gint64 ret = -1;
g_return_val_if_fail (xform, -1);
@@ -325,6 +327,22 @@ xmms_avcodec_seek (xmms_xform_t *xform, gint64 samples,
xmms_xform_seek_mode_t w
data = xmms_xform_private_data_get (xform);
g_return_val_if_fail (data, FALSE);
+ /* The buggy ape decoder doesn't flush buffers, so we need to finish decoding
+ * the frame before seeking to avoid segfaults... this hack sucks */
+ while (data->buffer_length > 0) {
+ bytes_read = avcodec_decode_audio (data->codecctx, (short *) outbuf,
+ &outbufsize, data->buffer,
+ data->buffer_length);
+
+ if (bytes_read < 0 || bytes_read > data->buffer_length) {
+ XMMS_DBG ("Error decoding data!");
+ return -1;
+ }
+
+ data->buffer_length -= bytes_read;
+ g_memmove (data->buffer, data->buffer + bytes_read, data->buffer_length);
+ }
+
ret = xmms_xform_seek (xform, samples, whence, err);
if (ret >= 0) {
xmms2-devel.git-93aab85319fcc168db2d35058e996826a5c6a034.patch:
--- NEW FILE xmms2-devel.git-93aab85319fcc168db2d35058e996826a5c6a034.patch ---
From: Juho Vähä-Herttua <juhovh(a)iki.fi>
Date: Mon, 1 Sep 2008 18:56:12 +0000 (+0800)
Subject: FEATURE(2027): Add shorten (SHN) support for the avcodec plugin.
X-Git-Url:
http://git.xmms.se/?p=xmms2-devel.git;a=commitdiff_plain;h=93aab85319fcc1...
FEATURE(2027): Add shorten (SHN) support for the avcodec plugin.
---
diff --git a/src/plugins/avcodec/avcodec.c b/src/plugins/avcodec/avcodec.c
index 5f5760f..4c212f9 100644
--- a/src/plugins/avcodec/avcodec.c
+++ b/src/plugins/avcodec/avcodec.c
@@ -32,8 +32,10 @@ typedef struct {
AVCodecContext *codecctx;
guchar *buffer;
+ guchar *buffer_pos;
guint buffer_length;
guint buffer_size;
+ gboolean no_demuxer;
guint channels;
guint samplerate;
@@ -84,6 +86,9 @@ xmms_avcodec_plugin_setup (xmms_xform_plugin_t *xform_plugin)
"0 belong 0x7ffe8001", NULL);
*/
+ xmms_magic_add ("Shorten header", "audio/x-ffmpeg-shorten",
+ "0 string ajkg", NULL);
+
xmms_xform_plugin_indata_add (xform_plugin,
XMMS_STREAM_TYPE_MIMETYPE,
"audio/x-ffmpeg-*",
@@ -106,6 +111,9 @@ xmms_avcodec_destroy (xmms_xform_t *xform)
g_string_free (data->outbuf, TRUE);
g_free (data->buffer);
+ if (data->no_demuxer) {
+ g_free (data->extradata);
+ }
g_free (data);
}
@@ -167,8 +175,18 @@ xmms_avcodec_init (xmms_xform_t *xform)
&data->extradata_size);
if (!ret) {
- xmms_log_error ("Decoder config data not found!");
- return FALSE;
+ /* This should be a list of known formats that don't have a
+ * demuxer so they will be handled slightly differently... */
+ if (!strcmp(data->codec_id, "shorten")) {
+ /* number 1024 taken from libavformat raw.c RAW_PACKET_SIZE */
+ data->extradata = g_malloc0 (1024);
+ data->extradata_size = 1024;
+ data->no_demuxer = TRUE;
+ } else {
+ /* A demuxer plugin forgot to give decoder config? */
+ xmms_log_error ("Decoder config data not found!");
+ return FALSE;
+ }
}
data->codecctx = g_new0 (AVCodecContext, 1);
@@ -219,6 +237,9 @@ xmms_avcodec_init (xmms_xform_t *xform)
err:
g_string_free (data->outbuf, TRUE);
+ if (data->no_demuxer) {
+ g_free (data->extradata);
+ }
g_free (data);
return FALSE;
@@ -256,7 +277,8 @@ xmms_avcodec_read (xmms_xform_t *xform, xmms_sample_t *buf, gint len,
read_total = bytes_read;
- while (read_total == data->buffer_size) {
+ /* If we have a demuxer plugin, make sure we read the whole packet */
+ while (read_total == data->buffer_size && !data->no_demuxer) {
/* multiply the buffer size and try to read again */
data->buffer = g_realloc (data->buffer, data->buffer_size * 2);
bytes_read = xmms_xform_read (xform,
@@ -285,11 +307,13 @@ xmms_avcodec_read (xmms_xform_t *xform, xmms_sample_t *buf, gint
len,
}
}
+ /* Reset the buffer position to beginning and update length */
+ data->buffer_pos = data->buffer;
data->buffer_length = read_total;
}
bytes_read = avcodec_decode_audio (data->codecctx, (short *) outbuf,
- &outbufsize, data->buffer,
+ &outbufsize, data->buffer_pos,
data->buffer_length);
if (bytes_read < 0 || bytes_read > data->buffer_length) {
@@ -297,8 +321,8 @@ xmms_avcodec_read (xmms_xform_t *xform, xmms_sample_t *buf, gint len,
return -1;
}
+ data->buffer_pos += bytes_read;
data->buffer_length -= bytes_read;
- g_memmove (data->buffer, data->buffer + bytes_read, data->buffer_length);
if (outbufsize > 0) {
g_string_append_len (data->outbuf, outbuf, outbufsize);
@@ -327,6 +351,13 @@ xmms_avcodec_seek (xmms_xform_t *xform, gint64 samples,
xmms_xform_seek_mode_t w
data = xmms_xform_private_data_get (xform);
g_return_val_if_fail (data, FALSE);
+ /* We can't seek without a demuxer in general case */
+ if (data->no_demuxer) {
+ xmms_error_set (err, XMMS_ERROR_GENERIC,
+ "Can't seek in avcodec plugin without a demuxer!");
+ return -1;
+ }
+
/* The buggy ape decoder doesn't flush buffers, so we need to finish decoding
* the frame before seeking to avoid segfaults... this hack sucks */
while (data->buffer_length > 0) {
xmms2-devel.git-a42762549126b8facdab90cf01a17fa106bc8dce.patch:
--- NEW FILE xmms2-devel.git-a42762549126b8facdab90cf01a17fa106bc8dce.patch ---
From: Juho Vähä-Herttua <juhovh(a)iki.fi>
Date: Wed, 3 Sep 2008 05:21:17 +0000 (+0800)
Subject: OTHER: Small bugs in avcodec plugin that might cause trouble later.
X-Git-Url:
http://git.xmms.se/?p=xmms2-devel.git;a=commitdiff_plain;h=a42762549126b8...
OTHER: Small bugs in avcodec plugin that might cause trouble later.
---
diff --git a/src/plugins/avcodec/avcodec.c b/src/plugins/avcodec/avcodec.c
index f104662..68ea671 100644
--- a/src/plugins/avcodec/avcodec.c
+++ b/src/plugins/avcodec/avcodec.c
@@ -86,11 +86,6 @@ xmms_avcodec_plugin_setup (xmms_xform_plugin_t *xform_plugin)
xmms_xform_plugin_methods_set (xform_plugin, &methods);
- /*
- xmms_magic_add ("DTS header", "audio/x-ffmpeg-dts",
- "0 belong 0x7ffe8001", NULL);
- */
-
xmms_magic_add ("Shorten header", "audio/x-ffmpeg-shorten",
"0 string ajkg", NULL);
@@ -157,8 +152,14 @@ xmms_avcodec_init (xmms_xform_t *xform)
goto err;
}
- data->samplerate = xmms_xform_indata_get_int (xform,
XMMS_STREAM_TYPE_FMT_SAMPLERATE);
- data->channels = xmms_xform_indata_get_int (xform, XMMS_STREAM_TYPE_FMT_CHANNELS);
+ ret = xmms_xform_indata_get_int (xform, XMMS_STREAM_TYPE_FMT_SAMPLERATE);
+ if (ret > 0) {
+ data->samplerate = ret;
+ }
+ ret = xmms_xform_indata_get_int (xform, XMMS_STREAM_TYPE_FMT_CHANNELS);
+ if (ret > 0) {
+ data->channels = ret;
+ }
/* bitrate required for WMA files */
xmms_xform_auxdata_get_int (xform,
@@ -203,13 +204,15 @@ xmms_avcodec_init (xmms_xform_t *xform)
data->codecctx->extradata = data->extradata;
data->codecctx->extradata_size = data->extradata_size;
+ /* FIXME: Remove when XMMS2 really supports multichannel */
+ data->codecctx->request_channels = 2;
+
if (avcodec_open (data->codecctx, codec) < 0) {
XMMS_DBG ("Opening decoder '%s' failed", codec->name);
goto err;
} else {
gchar buf[42];
xmms_error_t error;
- gint ret;
/* some codecs need to have something read before they set
* the samplerate and channels correctly, unfortunately... */
@@ -317,6 +320,7 @@ xmms_avcodec_read (xmms_xform_t *xform, xmms_sample_t *buf, gint len,
data->buffer_length = read_total;
}
+ outbufsize = sizeof (outbuf);
bytes_read = avcodec_decode_audio (data->codecctx, (short *) outbuf,
&outbufsize, data->buffer_pos,
data->buffer_length);
xmms2-devel.git-a63d0f80f384ffd15c921af74f036d785d3b72df.patch:
--- NEW FILE xmms2-devel.git-a63d0f80f384ffd15c921af74f036d785d3b72df.patch ---
From: Juho Vähä-Herttua <juhovh(a)iki.fi>
Date: Wed, 18 Jun 2008 03:44:39 +0000 (+0800)
Subject: OTHER: Update avcodec to support dynamic buffers, required for .ape playing.
X-Git-Url:
http://git.xmms.se/?p=xmms2-devel.git;a=commitdiff_plain;h=a63d0f80f384ff...
OTHER: Update avcodec to support dynamic buffers, required for .ape playing.
---
diff --git a/src/plugins/avcodec/avcodec.c b/src/plugins/avcodec/avcodec.c
index e878793..28cb511 100644
--- a/src/plugins/avcodec/avcodec.c
+++ b/src/plugins/avcodec/avcodec.c
@@ -31,7 +31,7 @@
typedef struct {
AVCodecContext *codecctx;
- guchar buffer[AVCODEC_BUFFER_SIZE];
+ guchar *buffer;
guint buffer_length;
guint buffer_size;
@@ -103,8 +103,9 @@ xmms_avcodec_destroy (xmms_xform_t *xform)
g_return_if_fail (data);
avcodec_close (data->codecctx);
- g_string_free (data->outbuf, TRUE);
+ g_string_free (data->outbuf, TRUE);
+ g_free (data->buffer);
g_free (data);
}
@@ -120,6 +121,7 @@ xmms_avcodec_init (xmms_xform_t *xform)
data = g_new0 (xmms_avcodec_data_t, 1);
data->outbuf = g_string_new (NULL);
+ data->buffer = g_malloc (AVCODEC_BUFFER_SIZE);
data->buffer_size = AVCODEC_BUFFER_SIZE;
xmms_xform_private_data_set (xform, data);
@@ -237,6 +239,8 @@ xmms_avcodec_read (xmms_xform_t *xform, xmms_sample_t *buf, gint len,
size = MIN (data->outbuf->len, len);
while (size == 0) {
if (data->buffer_length == 0) {
+ gint read_total;
+
bytes_read = xmms_xform_read (xform,
(gchar *) data->buffer,
data->buffer_size,
@@ -250,7 +254,38 @@ xmms_avcodec_read (xmms_xform_t *xform, xmms_sample_t *buf, gint
len,
return 0;
}
- data->buffer_length += bytes_read;
+ read_total = bytes_read;
+
+ while (read_total == data->buffer_size) {
+ /* multiply the buffer size and try to read again */
+ data->buffer = g_realloc (data->buffer, data->buffer_size * 2);
+ bytes_read = xmms_xform_read (xform,
+ (gchar *) data->buffer +
+ data->buffer_size,
+ data->buffer_size,
+ error);
+ data->buffer_size *= 2;
+
+ if (bytes_read < 0) {
+ XMMS_DBG ("Error while reading data");
+ return bytes_read;
+ }
+
+ read_total += bytes_read;
+
+ if (read_total < data->buffer_size) {
+ /* finally double the buffer size for performance reasons, the
+ * hotspot handling likes to fit two frames in the buffer */
+ data->buffer = g_realloc (data->buffer, data->buffer_size * 2);
+ data->buffer_size *= 2;
+ XMMS_DBG ("Reallocated avcodec internal buffer to be %d bytes",
+ data->buffer_size);
+
+ break;
+ }
+ }
+
+ data->buffer_length = read_total;
}
bytes_read = avcodec_decode_audio (data->codecctx, (short *) outbuf,
@@ -263,6 +298,7 @@ xmms_avcodec_read (xmms_xform_t *xform, xmms_sample_t *buf, gint len,
}
data->buffer_length -= bytes_read;
+ g_memmove (data->buffer, data->buffer + bytes_read, data->buffer_length);
if (outbufsize > 0) {
g_string_append_len (data->outbuf, outbuf, outbufsize);
xmms2-devel.git-be6f8e111913433a0fee1ddfa3d234067695aadf.patch:
--- NEW FILE xmms2-devel.git-be6f8e111913433a0fee1ddfa3d234067695aadf.patch ---
From: Juho Vähä-Herttua <juhovh(a)iki.fi>
Date: Tue, 17 Jun 2008 16:33:43 +0000 (+0800)
Subject: BUG(1988): Fix wma file playing with newer libavcodec.
X-Git-Url:
http://git.xmms.se/?p=xmms2-devel.git;a=commitdiff_plain;h=be6f8e11191343...
BUG(1988): Fix wma file playing with newer libavcodec.
---
diff --git a/src/plugins/asf/asf.c b/src/plugins/asf/asf.c
index 13b1e9d..4c01d29 100644
--- a/src/plugins/asf/asf.c
+++ b/src/plugins/asf/asf.c
@@ -396,6 +396,10 @@ xmms_asf_get_track (xmms_xform_t *xform, asf_file_t *file)
wfx->cbSize);
xmms_xform_auxdata_set_int (xform,
+ "block_align",
+ wfx->nBlockAlign);
+
+ xmms_xform_auxdata_set_int (xform,
"bitrate",
data->bitrate);
diff --git a/src/plugins/avcodec/avcodec.c b/src/plugins/avcodec/avcodec.c
index 4c4c794..e878793 100644
--- a/src/plugins/avcodec/avcodec.c
+++ b/src/plugins/avcodec/avcodec.c
@@ -41,6 +41,7 @@ typedef struct {
gint bitrate;
gint samplebits;
+ gint block_align;
const gchar *codec_id;
gpointer extradata;
gssize extradata_size;
@@ -154,6 +155,10 @@ xmms_avcodec_init (xmms_xform_t *xform)
"samplebits",
&data->samplebits);
+ xmms_xform_auxdata_get_int (xform,
+ "block_align",
+ &data->block_align);
+
ret = xmms_xform_auxdata_get_bin (xform,
"decoder_config",
&data->extradata,
@@ -169,6 +174,7 @@ xmms_avcodec_init (xmms_xform_t *xform)
data->codecctx->channels = data->channels;
data->codecctx->bit_rate = data->bitrate;
data->codecctx->bits_per_sample = data->samplebits;
+ data->codecctx->block_align = data->block_align;
data->codecctx->extradata = data->extradata;
data->codecctx->extradata_size = data->extradata_size;
@@ -254,9 +260,6 @@ xmms_avcodec_read (xmms_xform_t *xform, xmms_sample_t *buf, gint len,
if (bytes_read < 0) {
XMMS_DBG ("Error decoding data!");
return -1;
- } else if (bytes_read == 0) {
- /* FIXME: this is a hack for wma to work without block_align */
- data->buffer_length = 0;
}
data->buffer_length -= bytes_read;
xmms2-devel.git-d09c0d8a971c0333a0c8387113f744f0b9899fe4.patch:
--- NEW FILE xmms2-devel.git-d09c0d8a971c0333a0c8387113f744f0b9899fe4.patch ---
From: Anders Waldenborg <andersg(a)xmms.org>
Date: Mon, 1 Sep 2008 19:38:43 +0000 (+0200)
Subject: BUG(2028): Look for avcodec header in subdir aswell.
X-Git-Url:
http://git.xmms.se/?p=xmms2-devel.git;a=commitdiff_plain;h=d09c0d8a971c03...
BUG(2028): Look for avcodec header in subdir aswell.
---
diff --git a/src/plugins/avcodec/avcodec.c b/src/plugins/avcodec/avcodec.c
index 4c212f9..f104662 100644
--- a/src/plugins/avcodec/avcodec.c
+++ b/src/plugins/avcodec/avcodec.c
@@ -14,6 +14,7 @@
* Lesser General Public License for more details.
*/
+#include "xmms_configuration.h"
#include "xmms/xmms_xformplugin.h"
#include "xmms/xmms_sample.h"
#include "xmms/xmms_log.h"
@@ -24,7 +25,11 @@
#include <glib.h>
#undef ABS
-#include "avcodec.h"
+#ifdef HAVE_LIBAVCODEC_AVCODEC_H
+# include "libavcodec/avcodec.h"
+#else
+# include "avcodec.h"
+#endif
#define AVCODEC_BUFFER_SIZE 16384
diff --git a/src/plugins/avcodec/wscript b/src/plugins/avcodec/wscript
index 75df380..46774e5 100644
--- a/src/plugins/avcodec/wscript
+++ b/src/plugins/avcodec/wscript
@@ -6,7 +6,26 @@ def plugin_configure(conf):
cfg.uselib = 'avcodec'
cfg.tests = {'--cflags': 'CCFLAGS',
'--plugin-libs avcodec': 'LINKFLAGS'}
- return (cfg.run() or conf.check_pkg('libavcodec',
destvar='avcodec'))
+ if cfg.run():
+ return True
+
+ if not conf.check_pkg('libavcodec', destvar='avcodec'):
+ return False
+
+ h = conf.create_header_configurator()
+ h.name = "avcodec.h"
+ h.path = conf.env['CPPPATH_avcodec']
+
+ if h.run():
+ return True
+
+ h = conf.create_header_configurator()
+ h.name = "libavcodec/avcodec.h"
+ h.path = conf.env['CPPPATH_avcodec']
+ if h.run():
+ return True
+
+ return False
configure, build = plugin('avcodec', configure=plugin_configure,
source="avcodec.c",
xmms2-devel.git-fae1d0cfd643e999d419162979b9c90d12a30002.patch:
--- NEW FILE xmms2-devel.git-fae1d0cfd643e999d419162979b9c90d12a30002.patch ---
From: Juho Vähä-Herttua <juhovh(a)iki.fi>
Date: Thu, 12 Jun 2008 17:41:49 +0000 (+0800)
Subject: OTHER: Move ALAC hack from avcodec to mp4 to make avcodec more general.
X-Git-Url:
http://git.xmms.se/?p=xmms2-devel.git;a=commitdiff_plain;h=fae1d0cfd643e9...
OTHER: Move ALAC hack from avcodec to mp4 to make avcodec more general.
---
diff --git a/src/plugins/avcodec/avcodec.c b/src/plugins/avcodec/avcodec.c
index 37eaf73..4c4c794 100644
--- a/src/plugins/avcodec/avcodec.c
+++ b/src/plugins/avcodec/avcodec.c
@@ -40,6 +40,7 @@ typedef struct {
xmms_sample_format_t sampleformat;
gint bitrate;
+ gint samplebits;
const gchar *codec_id;
gpointer extradata;
gssize extradata_size;
@@ -148,6 +149,11 @@ xmms_avcodec_init (xmms_xform_t *xform)
"bitrate",
&data->bitrate);
+ /* ALAC and MAC require bits per sample field to be 16 */
+ xmms_xform_auxdata_get_int (xform,
+ "samplebits",
+ &data->samplebits);
+
ret = xmms_xform_auxdata_get_bin (xform,
"decoder_config",
&data->extradata,
@@ -162,12 +168,10 @@ xmms_avcodec_init (xmms_xform_t *xform)
data->codecctx->sample_rate = data->samplerate;
data->codecctx->channels = data->channels;
data->codecctx->bit_rate = data->bitrate;
+ data->codecctx->bits_per_sample = data->samplebits;
data->codecctx->extradata = data->extradata;
data->codecctx->extradata_size = data->extradata_size;
- /* FIXME: this is for ALAC but can be a different value */
- data->codecctx->bits_per_sample = 16;
-
if (avcodec_open (data->codecctx, codec) < 0) {
XMMS_DBG ("Opening decoder '%s' failed", codec->name);
goto err;
diff --git a/src/plugins/mp4/mp4.c b/src/plugins/mp4/mp4.c
index be34671..071bfb9 100644
--- a/src/plugins/mp4/mp4.c
+++ b/src/plugins/mp4/mp4.c
@@ -186,6 +186,9 @@ xmms_mp4_init (xmms_xform_t *xform)
xmms_xform_auxdata_set_bin (xform, "decoder_config", tmpbuf, tmpbuflen);
g_free (tmpbuf);
+ /* This is only for ALAC to set 16-bit samples, ignored for AAC */
+ xmms_xform_auxdata_set_int (xform, "samplebits", 16);
+
xmms_mp4_get_mediainfo (xform);
XMMS_DBG ("MP4 demuxer inited successfully!");
xmms2-devel.git-fccc583328ca58110a8b6e00ccb8c0bb1f6923ad.patch:
--- NEW FILE xmms2-devel.git-fccc583328ca58110a8b6e00ccb8c0bb1f6923ad.patch ---
From: Juho Vähä-Herttua <juhovh(a)iki.fi>
Date: Sun, 9 Nov 2008 02:57:18 +0000 (+0800)
Subject: BUG(2053): Fix avcodec to work on latest versions of the library.
X-Git-Url:
http://git.xmms.se/?p=xmms2-devel.git;a=commitdiff_plain;h=fccc583328ca58...
BUG(2053): Fix avcodec to work on latest versions of the library.
Modified version of a patch sent by Anthony Garcia.
---
diff --git a/AUTHORS b/AUTHORS
index e37f05c..97c151e 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -87,6 +87,10 @@ N: G. Gallino
E: ggallino(a)gmail.com
D: Equaliser fixes
+N: Anthony Garcia
+E: anthony(a)agg.homelinux.net
+D: Compatibility fix to avcodec plugin.
+
N: Paul Giblock
E: drfaygo(a)gmail.com
D: additional id3-tags
diff --git a/src/plugins/avcodec/avcodec.c b/src/plugins/avcodec/avcodec.c
index 68ea671..a71a315 100644
--- a/src/plugins/avcodec/avcodec.c
+++ b/src/plugins/avcodec/avcodec.c
@@ -31,6 +31,19 @@
# include "avcodec.h"
#endif
+/* Handle API change that happened in libavcodec 52.00 */
+#if LIBAVCODEC_VERSION_INT < 0x340000
+# define CONTEXT_BPS(codecctx) (codecctx)->bits_per_sample
+#else
+# define CONTEXT_BPS(codecctx) (codecctx)->bits_per_coded_sample
+#endif
+
+/* Map avcodec_decode_audio2 into the deprecated version
+ * avcodec_decode_audio in versions earlier than 51.28 */
+#if LIBAVCODEC_VERSION_INT < 0x331c00
+# define avcodec_decode_audio2 avcodec_decode_audio
+#endif
+
#define AVCODEC_BUFFER_SIZE 16384
typedef struct {
@@ -199,7 +212,7 @@ xmms_avcodec_init (xmms_xform_t *xform)
data->codecctx->sample_rate = data->samplerate;
data->codecctx->channels = data->channels;
data->codecctx->bit_rate = data->bitrate;
- data->codecctx->bits_per_sample = data->samplebits;
+ CONTEXT_BPS (data->codecctx) = data->samplebits;
data->codecctx->block_align = data->block_align;
data->codecctx->extradata = data->extradata;
data->codecctx->extradata_size = data->extradata_size;
@@ -321,9 +334,9 @@ xmms_avcodec_read (xmms_xform_t *xform, xmms_sample_t *buf, gint len,
}
outbufsize = sizeof (outbuf);
- bytes_read = avcodec_decode_audio (data->codecctx, (short *) outbuf,
- &outbufsize, data->buffer_pos,
- data->buffer_length);
+ bytes_read = avcodec_decode_audio2 (data->codecctx, (short *) outbuf,
+ &outbufsize, data->buffer_pos,
+ data->buffer_length);
if (bytes_read < 0 || bytes_read > data->buffer_length) {
XMMS_DBG ("Error decoding data!");
@@ -370,9 +383,9 @@ xmms_avcodec_seek (xmms_xform_t *xform, gint64 samples,
xmms_xform_seek_mode_t w
/* The buggy ape decoder doesn't flush buffers, so we need to finish decoding
* the frame before seeking to avoid segfaults... this hack sucks */
while (data->buffer_length > 0) {
- bytes_read = avcodec_decode_audio (data->codecctx, (short *) outbuf,
- &outbufsize, data->buffer,
- data->buffer_length);
+ bytes_read = avcodec_decode_audio2 (data->codecctx, (short *) outbuf,
+ &outbufsize, data->buffer,
+ data->buffer_length);
if (bytes_read < 0 || bytes_read > data->buffer_length) {
XMMS_DBG ("Error decoding data!");
--- NEW FILE xmms2-freeworld.spec ---
%define codename DrLecter
Name: xmms2-freeworld
Summary: Plugins for XMMS2 that cannot be included in Fedora
Version: 0.5
Release: 5%{?dist}
License: LGPLv2+ and GPL+ and BSD
Group: Applications/Multimedia
# Fedora's xmms2 has to use a sanitized tarball, we don't.
Source0:
http://downloads.sourceforge.net/xmms2/xmms2-%{version}%{codename}.tar.bz2
# From upstream git (Compilation fixes)
Patch0: xmms2-devel.git-37578b59f5d7376213da74b3bf6b7c7f430d0bc9.patch
# Use libdir properly for Fedora multilib
Patch1: xmms2-0.5DrLecter-use-libdir.patch
# Don't add extra CFLAGS, we're smart enough, thanks.
Patch4: xmms2-0.5DrLecter-no-O0.patch
# More sane versioning
Patch5: xmms2-0.5DrLecter-moresaneversioning.patch
# From upstream git (fix avcodec compilation and bugs)
Patch10: xmms2-devel.git-fae1d0cfd643e999d419162979b9c90d12a30002.patch
Patch11: xmms2-devel.git-be6f8e111913433a0fee1ddfa3d234067695aadf.patch
Patch12: xmms2-devel.git-a63d0f80f384ffd15c921af74f036d785d3b72df.patch
Patch13: xmms2-devel.git-6f06f3409dfa82b7a3e7fdd682567d46fd65e262.patch
Patch14: xmms2-devel.git-93aab85319fcc168db2d35058e996826a5c6a034.patch
Patch15: xmms2-devel.git-d09c0d8a971c0333a0c8387113f744f0b9899fe4.patch
Patch16: xmms2-devel.git-a42762549126b8facdab90cf01a17fa106bc8dce.patch
Patch17: xmms2-devel.git-fccc583328ca58110a8b6e00ccb8c0bb1f6923ad.patch
URL:
http://wiki.xmms2.xmms.se/
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: sqlite-devel
BuildRequires: glib2-devel
BuildRequires: python-devel
# RPMFusion only BuildRequires
BuildRequires: faad2-devel, libmad-devel, ffmpeg-devel, libmms-devel
# Keep the mac plugin disabled until mac goes to free repo
#BuildRequires: mac-devel
Requires: xmms2-avcodec = %{version}-%{release}
Requires: xmms2-faad = %{version}-%{release}
Requires: xmms2-mad = %{version}-%{release}
Requires: xmms2-mms = %{version}-%{release}
Requires: xmms2-mp4 = %{version}-%{release}
#Requires: xmms2-mac = %%{version}-%%{release}
%description
XMMS2 is an audio framework, but it is not a general multimedia player - it
will not play videos. It has a modular framework and plugin architecture for
audio processing, visualisation and output, but this framework has not been
designed to support video. Also the client-server design of XMMS2 (and the
daemon being independent of any graphics output) practically prevents direct
video output being implemented. It has support for a wide range of audio
formats, which is expandable via plugins. It includes a basic CLI interface
to the XMMS2 framework, but most users will want to install a graphical XMMS2
client (such as gxmms2 or esperanza).
%package -n xmms2-avcodec
Summary: XMMS2 Plugin for avcodec supported formats
License: LGPLv2+
Group: Applications/Multimedia
Requires: xmms2 = %{version}
%description -n xmms2-avcodec
An XMMS2 Plugin which provides support for audio formats provided by
FFMPEG's libavcodec.
%package -n xmms2-faad
Summary: XMMS2 Plugin for AAC and MP4 audio formats
License: GPLv2+
Group: Applications/Multimedia
Requires: xmms2 = %{version}
%description -n xmms2-faad
An XMMS2 Plugin which provides support for audio formats provided by FAAD
(AAC and MP4).
#%%package -n xmms2-mac
#Summary: XMMS2 Plugin for APE audio format
#License: GPLv2+
#Group: Applications/Multimedia
#Requires: xmms2 = %%{version}
#%%description -n xmms2-mac
#An XMMS2 Plugin for listening to Monkey's Audio files.
%package -n xmms2-mad
Summary: XMMS2 Plugin for MPEG Audio files
License: GPLv2+
Group: Applications/Multimedia
Requires: xmms2 = %{version}
%description -n xmms2-mad
An XMMS2 Plugin for listening to MPEG files (MPEG 1 & 2 layers I, II and III
- includes MP3).
%package -n xmms2-mms
Summary: XMMS2 Plugin for MMS audio streams
License: LGPLv2+
Group: Applications/Multimedia
Requires: xmms2 = %{version}
%description -n xmms2-mms
An XMMS2 Plugin for listening to Microsoft Media Services (MMS) audio streams.
%package -n xmms2-mp4
Summary: XMMS2 Plugin for MP4 audio
License: GPLv2+
Group: Applications/Multimedia
Requires: xmms2 = %{version}
%description -n xmms2-mp4
An XMMS2 Plugin for listening to MP4 audio files.
%prep
%setup -q -n xmms2-%{version}%{codename}
%patch0 -p1 -b .compilefix
%patch1 -p1 -b .plugins-use-libdir
%patch4 -p1 -b .noO0
%patch5 -p1 -b .versionsanity
%patch10 -p1 -b .avcodec10
%patch11 -p1 -b .avcodec11
%patch12 -p1 -b .avcodec12
%patch13 -p1 -b .avcodec13
%patch14 -p1 -b .avcodec14
%patch15 -p1 -b .avcodec15
%patch16 -p1 -b .avcodec16
%patch17 -p1 -b .avcodec17
# Clean up paths in wafadmin
WAFADMIN_FILES=`find wafadmin/ -type f`
for i in $WAFADMIN_FILES; do
sed -i 's|/usr/lib|%{_libdir}|g' $i
done
%build
export CFLAGS="%{optflags}"
./waf configure --prefix=%{_prefix} \
--with-libdir=%{_libdir} \
--with-pkgconfigdir=%{_libdir}/pkgconfig \
--without-optionals=avahi \
--without-optionals=cli \
--without-optionals=dns_sd \
--without-optionals=et \
--without-optionals=launcher \
--without-optionals=medialib-updater \
--without-optionals=perl \
--without-optionals=pixmaps \
--without-optionals=python \
--without-optionals=ruby \
--without-optionals=xmmsclient-ecore \
--without-optionals=xmmsclient++ \
--without-optionals=xmmsclient++-glib \
--without-plugins=airplay \
--without-plugins=alsa \
--without-plugins=ao \
--without-plugins=asf \
--without-plugins=asx \
--without-plugins=cdda \
--without-plugins=cue \
--without-plugins=curl \
--without-plugins=daap \
--without-plugins=diskwrite \
--without-plugins=equalizer \
--without-plugins=curl \
--without-plugins=file \
--without-plugins=flac \
--without-plugins=gme \
--without-plugins=gvfs \
--without-plugins=ices \
--without-plugins=icymetaint \
--without-plugins=id3v2 \
--without-plugins=jack \
--without-plugins=karaoke \
--without-plugins=lastfm \
--without-plugins=lastfmeta \
--without-plugins=m3u \
--without-plugins=modplug \
--without-plugins=musepack \
--without-plugins=normalize \
--without-plugins=null \
--without-plugins=nulstripper \
--without-plugins=ofa \
--without-plugins=oss \
--without-plugins=pls \
--without-plugins=pulse \
--without-plugins=replaygain \
--without-plugins=rss \
--without-plugins=samba \
--without-plugins=speex \
--without-plugins=vocoder \
--without-plugins=vorbis \
--without-plugins=wave \
--without-plugins=xml \
--without-plugins=xspf
./waf build -v %{?_smp_mflags}
%install
rm -rf %{buildroot}
./waf install --destdir=%{buildroot} --prefix=%{_prefix} --with-libdir=%{_libdir}
--with-pkgconfigdir=%{_libdir}/pkgconfig
# There are lots of things that get built that we don't need to package, because
they're in the Fedora xmms2 package.
rm -rf %{buildroot}%{_bindir} %{buildroot}%{_libdir}/libxmmsclient* %{buildroot}%{_mandir}
%{buildroot}%{_datadir} %{buildroot}%{_includedir} %{buildroot}%{_libdir}/pkgconfig
# exec flags for debuginfo
chmod +x %{buildroot}%{_libdir}/xmms2/*
%clean
rm -rf %{buildroot}
%files
%defattr(-,root,root,-)
%doc COPYING COPYING.GPL COPYING.LGPL
%files -n xmms2-avcodec
%defattr(-,root,root,-)
%doc COPYING.LGPL
%{_libdir}/xmms2/libxmms_avcodec.so
%files -n xmms2-faad
%defattr(-,root,root,-)
%doc COPYING.GPL
%{_libdir}/xmms2/libxmms_faad.so
#%%files -n xmms2-mac
#%%defattr(-,root,root,-)
#%%doc COPYING.GPL
#%%{_libdir}/xmms2/libxmms_mac.so
%files -n xmms2-mad
%defattr(-,root,root,-)
%doc COPYING.GPL
%{_libdir}/xmms2/libxmms_mad.so
%files -n xmms2-mms
%defattr(-,root,root,-)
%doc COPYING.LGPL
%{_libdir}/xmms2/libxmms_mms.so
%files -n xmms2-mp4
%defattr(-,root,root,-)
%doc COPYING.GPL
%{_libdir}/xmms2/libxmms_mp4.so
%changelog
* Mon Dec 16 2008 John Doe <anonymous(a)american.us> 0.5-5
- Fix typo in the SPEC file
* Mon Dec 15 2008 John Doe <anonymous(a)american.us> 0.5-4
- Disable building of everything possible that do not go to the freeworld plugins
- Add bits for mac plugin, but keep it disabled until mac becomes free
* Fri Dec 12 2008 John Doe <anonymous(a)american.us> 0.5-3
- Add meta package
- Include more upstream patches for avcodec plugin compilation and fixes
- Drop BR's and patches that are irrelevant for compiling freeworld plugins
* Wed Dec 10 2008 John Doe <anonymous(a)american.us> 0.5-2
- Do the same cleanups as is done to the main package,
see rh-bz #474908
* Fri Dec 05 2008 John Doe <anonymous(a)american.us> 0.5-1
- Initial package for RPMFusion
Index: .cvsignore
===================================================================
RCS file: /cvs/free/rpms/xmms2-freeworld/F-9/.cvsignore,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- .cvsignore 16 Dec 2008 18:30:55 -0000 1.1
+++ .cvsignore 16 Dec 2008 19:19:55 -0000 1.2
@@ -0,0 +1 @@
+xmms2-0.5DrLecter.tar.bz2
Index: sources
===================================================================
RCS file: /cvs/free/rpms/xmms2-freeworld/F-9/sources,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- sources 16 Dec 2008 18:30:55 -0000 1.1
+++ sources 16 Dec 2008 19:19:55 -0000 1.2
@@ -0,0 +1 @@
+9033ef15be9069ef43aeb4b6360a4d36 xmms2-0.5DrLecter.tar.bz2