summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog3
-rw-r--r--PKGBUILD4
-rw-r--r--about.txt3
-rw-r--r--plugins.c4
-rw-r--r--plugins/artwork/artwork.c4
-rw-r--r--plugins/ffmpeg/ffmpeg.c5
-rw-r--r--plugins/gtkui/coverart.c10
-rw-r--r--plugins/gtkui/ddblistview.c2
-rw-r--r--plugins/wavpack/wavpack.c19
9 files changed, 42 insertions, 12 deletions
diff --git a/ChangeLog b/ChangeLog
index f1154435..1035d044 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -31,6 +31,9 @@ version 0.4.1
added %C(composer) expansion to title formatting
fixed few theming/colors issues
fixed replaygain field parsing when reading cuesheets and r.g. peak scale handling (David Bryant)
+ added support for WavPack correction files (David Bryant)
+ fixed loading of album art embedded in ID3v2
+ added MP4 file type to ffmpeg plugin
version 0.4.0
multiple tabbed playlists
diff --git a/PKGBUILD b/PKGBUILD
index c2db6f4c..5a42650b 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,7 +1,7 @@
# Maintainer: Alexey Yakovenko <waker@users.sourceforge.net>
pkgname=deadbeef
-pkgver=0.4.0
+pkgver=0.4.1
pkgrel=1
pkgdesc="mp3/ogg/flac/ape/sid/mod/nsf/m4a/mpc/shn music player based on GTK2"
arch=(i686 x86_64)
@@ -12,7 +12,7 @@ depends=('gtk2' 'libsamplerate' 'alsa-lib')
optdepends=('libvorbis: ogg vorbis playback', 'libmad: mp1/2/3 playback', 'flac: flac playback', 'curl: lastfm scrobbler, shoutcast, icecast, podcast support', 'wavpack: wv playback', 'libsndfile: wav playback', "libcdio and libcddb: audio cd playback", "ffmpeg: for aac, mpc, shn, aa3, oma, ac3, etc")
makedepends=('pkgconfig')
source=(http://downloads.sourceforge.net/project/$pkgname/$pkgname-$pkgver.tar.bz2)
-md5sums=('4a8afe84288e2ca99f5b3dd584d11553')
+md5sums=('69383c6490461751c2ec6281158a8624')
build() {
cd $srcdir/$pkgname-$pkgver
diff --git a/about.txt b/about.txt
index 59050947..77a575c0 100644
--- a/about.txt
+++ b/about.txt
@@ -35,14 +35,17 @@ Contributors:
Global Hotkeys plugin, CD Audio plugin, Cover Art plugin, lots of patches and suggestions
Alex Dedul <rotmer@gmail.com>
+ David Bryant <david@wavpack.com>
Derreck <sarumyanxxl@users.sourceforge.net>
Igor Murzov <igor@gplsoft.org>
Igor Rudchenko <igor@thinkpads.net>
Kryksyh <druid@foobar2000.ru>
Serghey Kotlyarov <shadowsbrother@gmail.com>
+ Themaister <maister@archlinux.us>
Veniamin Gvozdikov <g.veniamin@googlemail.com>
+
Special Thanks To:
James Lee
diff --git a/plugins.c b/plugins.c
index f52994c7..4fcfde34 100644
--- a/plugins.c
+++ b/plugins.c
@@ -44,8 +44,8 @@
#include "junklib.h"
#include "vfs.h"
-#define trace(...) { fprintf(stderr, __VA_ARGS__); }
-//#define trace(fmt,...)
+//#define trace(...) { fprintf(stderr, __VA_ARGS__); }
+#define trace(fmt,...)
#ifndef PATH_MAX
#define PATH_MAX 1024 /* max # of characters in a path name */
diff --git a/plugins/artwork/artwork.c b/plugins/artwork/artwork.c
index 88052e6e..8bd336ad 100644
--- a/plugins/artwork/artwork.c
+++ b/plugins/artwork/artwork.c
@@ -229,7 +229,7 @@ id3v2_skip_str (int enc, uint8_t *ptr, uint8_t *end) {
}
else {
while (ptr < end-1 && (ptr[0] || ptr[1])) {
- ptr++;
+ ptr += 2;
}
ptr += 2;
if (ptr >= end) {
@@ -437,7 +437,7 @@ fetcher_thread (void *none)
char*
get_album_art (const char *fname, const char *artist, const char *album, artwork_callback callback, void *user_data)
{
- trace ("get_album_art: %s (%s - %s)\n", fname, artist, album);
+// trace ("get_album_art: %s (%s - %s)\n", fname, artist, album);
char path [1024];
if (!album) {
diff --git a/plugins/ffmpeg/ffmpeg.c b/plugins/ffmpeg/ffmpeg.c
index 2a9ac0bc..fd220fbf 100644
--- a/plugins/ffmpeg/ffmpeg.c
+++ b/plugins/ffmpeg/ffmpeg.c
@@ -55,7 +55,7 @@
static DB_decoder_t plugin;
static DB_functions_t *deadbeef;
-static const char * exts[] = { "m4a", "mpc", "mp+", "mpp", "wma", "shn", "aa3", "oma", "ac3", "vqf", "tta", NULL };
+static const char * exts[] = { "m4a", "mp4", "mpc", "mp+", "mpp", "wma", "shn", "aa3", "oma", "ac3", "vqf", "tta", NULL };
enum {
FT_AAC = 0,
@@ -520,6 +520,9 @@ ffmpeg_insert (DB_playItem_t *after, const char *fname) {
if (!strcasecmp (ext, "m4a")) {
filetype = filetypes[FT_M4A];
}
+ else if (!strcasecmp (ext, "mp4")) {
+ filetype = filetypes[FT_M4A];
+ }
else if (!strcasecmp (ext, "mpc") || !strcasecmp (ext, "mp+") || !strcasecmp (ext, "mpp")) {
filetype = filetypes[FT_MUSEPACK];
}
diff --git a/plugins/gtkui/coverart.c b/plugins/gtkui/coverart.c
index d5f34c26..7fb50554 100644
--- a/plugins/gtkui/coverart.c
+++ b/plugins/gtkui/coverart.c
@@ -142,16 +142,24 @@ loading_thread (void *none) {
}
// GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file (queue->fname, NULL);
- GError *error;
+ GError *error = NULL;
GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file_at_scale (queue->fname, queue->width, queue->width, TRUE, &error);
if (!pixbuf) {
unlink (queue->fname);
fprintf (stderr, "gdk_pixbuf_new_from_file_at_scale %s %d failed, error: %s\n", queue->fname, queue->width, error->message);
+ if (error) {
+ g_error_free (error);
+ error = NULL;
+ }
pixbuf = gdk_pixbuf_new_from_file_at_scale (DEFAULT_COVER_PATH, queue->width, queue->width, TRUE, &error);
if (!pixbuf) {
fprintf (stderr, "gdk_pixbuf_new_from_file_at_scale %s %d failed, error: %s\n", DEFAULT_COVER_PATH, queue->width, error->message);
}
}
+ if (error) {
+ g_error_free (error);
+ error = NULL;
+ }
if (!pixbuf) {
// make default empty image
pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, FALSE, 8, 2, 2);
diff --git a/plugins/gtkui/ddblistview.c b/plugins/gtkui/ddblistview.c
index 7156f147..cfb82cbf 100644
--- a/plugins/gtkui/ddblistview.c
+++ b/plugins/gtkui/ddblistview.c
@@ -36,8 +36,6 @@
#include "drawing.h"
#include "gtkui.h"
-#pragma GCC optimize("O0")
-
#define min(x,y) ((x)<(y)?(x):(y))
#define max(x,y) ((x)>(y)?(x):(y))
diff --git a/plugins/wavpack/wavpack.c b/plugins/wavpack/wavpack.c
index e2f9e43b..861dec75 100644
--- a/plugins/wavpack/wavpack.c
+++ b/plugins/wavpack/wavpack.c
@@ -34,7 +34,7 @@ static DB_functions_t *deadbeef;
typedef struct {
DB_fileinfo_t info;
- DB_FILE *file;
+ DB_FILE *file, *c_file;
WavpackContext *ctx;
int startsample;
int endsample;
@@ -105,8 +105,19 @@ wv_init (DB_fileinfo_t *_info, DB_playItem_t *it) {
if (!info->file) {
return -1;
}
+
+ char *c_fname = alloca (strlen (it->fname) + 2);
+ if (c_fname) {
+ strcpy (c_fname, it->fname);
+ strcat (c_fname, "c");
+ info->c_file = deadbeef->fopen (c_fname);
+ }
+ else {
+ fprintf (stderr, "wavpack warning: failed to alloc memory for correction file name\n");
+ }
+
char error[80];
- info->ctx = WavpackOpenFileInputEx (&wsr, info->file, NULL, error, OPEN_2CH_MAX/*|OPEN_WVC*/, 0);
+ info->ctx = WavpackOpenFileInputEx (&wsr, info->file, info->c_file, error, OPEN_2CH_MAX, 0);
if (!info->ctx) {
fprintf (stderr, "wavpack error: %s\n", error);
return -1;
@@ -138,6 +149,10 @@ wv_free (DB_fileinfo_t *_info) {
deadbeef->fclose (info->file);
info->file = NULL;
}
+ if (info->c_file) {
+ deadbeef->fclose (info->c_file);
+ info->c_file = NULL;
+ }
if (info->ctx) {
WavpackCloseFile (info->ctx);
info->ctx = NULL;