diff options
author | Alexey Yakovenko <wakeroid@gmail.com> | 2010-01-13 21:28:25 +0100 |
---|---|---|
committer | Alexey Yakovenko <wakeroid@gmail.com> | 2010-01-13 21:28:25 +0100 |
commit | aeb9ba06fb769a92aab45e4afb2078d766d2d842 (patch) | |
tree | 816da8b6c4986860094db17340a043eab82a55db | |
parent | 131ad1a8f9aeebee3a7560e09c73cdbba8573feb (diff) | |
parent | 18e11ba9a8ccc8526fe051c3c3b57453455c1b39 (diff) |
Merge branch 'master' into devel
Conflicts:
configure.ac
deadbeef.h
plugins/mpgmad/mpgmad.c
-rw-r--r-- | ChangeLog | 18 | ||||
-rw-r--r-- | PKGBUILD | 10 | ||||
-rw-r--r-- | README | 3 | ||||
-rw-r--r-- | deadbeef.h | 2 | ||||
-rw-r--r-- | main.c | 2 | ||||
-rw-r--r-- | plugins/adplug/adplug-db.cpp | 4 | ||||
-rw-r--r-- | plugins/mpgmad/mpgmad.c | 7 | ||||
-rw-r--r-- | plugins/sndfile/sndfile.c | 12 | ||||
-rw-r--r-- | web/index.html | 47 |
9 files changed, 82 insertions, 23 deletions
@@ -1,13 +1,16 @@ version 0.3.2 all GTK+ UI code is now in plugin + improved main menu layout in GTK UI numerous memory and cpu optimizations fully editable/scriptable columns with sorting native look and feel of playlist widget - selection is synchronous between main window and search window - plugins got GUI configuration + selection is synchronized between main window and search window + keyboard navigation in search window + plugins got basic GUI configuration much smoother seekbar compatible with more GTK theme engines improved restore window geometry after minimizing to system tray + search window geometry is now saved and restored between sessions flexible nowplaying querying support via command line ALSA code moved to plugin new "nullout" output plugin - good for testing, and as basis for new plugins @@ -20,20 +23,15 @@ version 0.3.2 vtx plugin using libayemu adplug plugin - cmf, rol, hsc, etc (including adlib S3Ms) fixed cuesheet support in mp3 and ogg plugins - fixed building for i686 architectures w/o sse2 support - fixed sse2 code issues in ape plugin - ported 24-bit ape support from rockbox + fixed sse2 issues on i686 architecture + added 24-bit ape support (thanks to Rockbox project) added support for custom scrobbler url to last.fm plugin (e.g. libre.fm) added Play Queue funtionality to playlist (context menu) - fixed lots of bugs in command line processing - improved main menu in GTK UI added average/approximate bitrate display to statusbar new "cursor follows playback" feature new "stop after current track" feature - keyboard navigation in search window - search window geometry is now saved and restored between sessions .dbpl extension is auto-added when saving playlist - better handling of http streams + improved robustness in http code (handling connection problems, etc) version 0.3.1 improved header widget drawing and gtkengines compatibility @@ -1,18 +1,18 @@ # Maintainer: Alexey Yakovenko <waker@users.sourceforge.net> pkgname=deadbeef -pkgver=0.3.1 +pkgver=0.3.2 pkgrel=1 -pkgdesc="mp3/ogg/flac/ape/sid/mod/nsf music player based on GTK2" +pkgdesc="mp3/ogg/flac/ape/sid/mod/nsf/m4a/mpc/shn music player based on GTK2" arch=(i686 x86_64) url="http://deadbeef.sourceforge.net" license=('GPL2') -makedepends=('gtk2', 'libsamplerate', 'libvorbis', 'libmad', 'flac', 'curl', 'alsa-lib', 'wavpack', 'libsndfile', 'libcdio') +makedepends=('gtk2', 'libsamplerate', 'libvorbis', 'libmad', 'flac', 'curl', 'alsa-lib', 'wavpack', 'libsndfile', 'libcdio', 'ffmpeg') 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: audio cd playback") +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: audio cd playback", "ffmpeg: for aac, mpc, shn, aa3, oma, ac3, etc") makedepends=('pkgconfig') source=(http://downloads.sourceforge.net/project/$pkgname/$pkgname-$pkgver.tar.gz) -md5sums=('8274c05fb20dbb244a2b59092504b6fc') +md5sums=('85a9a63dd507dec5b3070551107aaf17') build() { cd $srcdir/$pkgname-$pkgver @@ -3,7 +3,7 @@ dependencies for player core - includes support for sid, tracker music and chipt libsamplerate alsa-lib -optional dependencies +optional/build dependencies libvorbis: for ogg vorbis plugin libcurl >= 7.10: for last.fm and vfs_curl (shoutcast/icecast) plugins libmad: for mpgmad plugin (mpeg1,2 layers1,2,3) @@ -11,6 +11,7 @@ optional dependencies wavpack: for wavpack plugin libsndfile: for sndfile plugin libcdio: for cd audio plugin + ffmpeg: for ffmpeg plugin if you want to build from git - install autotools, and run autoreconf @@ -61,7 +61,7 @@ extern "C" { // 0.1 -- deadbeef-0.2.0 #define DB_API_VERSION_MAJOR 0 -#define DB_API_VERSION_MINOR 4 +#define DB_API_VERSION_MINOR 5 #define DB_PLUGIN_SET_API_VERSION\ .plugin.api_vmajor = DB_API_VERSION_MAJOR,\ @@ -140,7 +140,7 @@ server_exec_command_line (const char *cmdline, int len, char *sendback, int sbsi else { char out[2048]; playItem_t *curr = streamer_get_playing_track (); - DB_decoder_t *dec = streamer_get_current_decoder (); + DB_fileinfo_t *dec = streamer_get_current_decoder (); if (curr && dec) { pl_format_title (curr, out, sizeof (out), -1, parg); } diff --git a/plugins/adplug/adplug-db.cpp b/plugins/adplug/adplug-db.cpp index ba95739f..6d6cb35c 100644 --- a/plugins/adplug/adplug-db.cpp +++ b/plugins/adplug/adplug-db.cpp @@ -60,7 +60,7 @@ adplug_init (DB_playItem_t *it) { decoder = CAdPlug::factory (it->fname, opl, CAdPlug::players); if (!decoder) { trace ("adplug: failed to open %s\n", it->fname); - return NULL; + return -1; } subsong = it->tracknum; @@ -75,7 +75,7 @@ adplug_init (DB_playItem_t *it) { adplug_plugin.info.samplerate = samplerate; adplug_plugin.info.readpos = 0; -// trace ("adplug_init ok (duration=%f, totalsamples=%d)\n", deadbeef->pl_get_item_duration (it), totalsamples); + trace ("adplug_init ok (duration=%f, totalsamples=%d)\n", deadbeef->pl_get_item_duration (it), totalsamples); return 0; } diff --git a/plugins/mpgmad/mpgmad.c b/plugins/mpgmad/mpgmad.c index aca849a7..b954d39e 100644 --- a/plugins/mpgmad/mpgmad.c +++ b/plugins/mpgmad/mpgmad.c @@ -28,6 +28,9 @@ #define min(x,y) ((x)<(y)?(x):(y)) #define max(x,y) ((x)>(y)?(x):(y)) +#define likely(x) __builtin_expect((x),1) +#define unlikely(x) __builtin_expect((x),0) + static DB_decoder_t plugin; static DB_functions_t *deadbeef; @@ -667,6 +670,10 @@ MadFixedToFloat (mad_fixed_t Fixed) { static int cmp3_decode_cut (mpgmad_info_t *info, int framesize) { if (info->buffer.duration >= 0) { + if (unlikely (!info->buffer.channels || info->buffer.channels > 2)) { + trace ("mpgmad: got frame with invalid number of channels (%d)\n", info->buffer.channels); + return 1; + } if (info->buffer.currentsample + info->buffer.readsize / (framesize * info->buffer.channels) > info->buffer.endsample) { int sz = (info->buffer.endsample - info->buffer.currentsample + 1) * framesize * info->buffer.channels; trace ("size truncated to %d bytes, cursample=%d, endsample=%d, totalsamples=%d\n", info->buffer.readsize, info->buffer.currentsample, info->buffer.endsample, info->buffer.totalsamples); diff --git a/plugins/sndfile/sndfile.c b/plugins/sndfile/sndfile.c index 72864c56..cbfbeaf8 100644 --- a/plugins/sndfile/sndfile.c +++ b/plugins/sndfile/sndfile.c @@ -62,7 +62,11 @@ sf_vfs_write (const void *ptr, sf_count_t count, void *user_data) { static sf_count_t sf_vfs_seek (sf_count_t offset, int whence, void *user_data) { sndfilectx_t *ctx = user_data; - return deadbeef->fseek (ctx->file, offset, whence); + int ret = deadbeef->fseek (ctx->file, offset, whence); + if (!ret) { + return offset; + } + return -1; } static sf_count_t @@ -174,7 +178,11 @@ sndfile_read_float32 (char *bytes, int size) { static int sndfile_seek_sample (int sample) { - sfctx.currentsample = sf_seek (sfctx.ctx, sample + sfctx.startsample, SEEK_SET); + int ret = sf_seek (sfctx.ctx, sample + sfctx.startsample, SEEK_SET); + if (ret < 0) { + return -1; + } + sfctx.currentsample = ret; plugin.info.readpos = (float)(sfctx.currentsample - sfctx.startsample) / plugin.info.samplerate; return 0; } diff --git a/web/index.html b/web/index.html index 2863a8ee..50c63a61 100644 --- a/web/index.html +++ b/web/index.html @@ -49,6 +49,48 @@ <h1 id="news">News</h1> +<h2>release 0.3.2 is out</h2> +<div class="post"> + <p class="date">2010/01/12</p> + <p><a href="#download">get it!</a></p> + <p>Changelog since 0.3.1</p> + <ul> + <li>all GTK+ UI code is now in plugin</li> + <li>improved main menu layout in GTK UI</li> + <li>numerous memory and cpu optimizations</li> + <li>fully editable/scriptable columns with sorting</li> + <li>native look and feel of playlist widget</li> + <li>selection is synchronized between main window and search window</li> + <li>keyboard navigation in search window</li> + <li>plugins got basic GUI configuration</li> + <li>much smoother seekbar</li> + <li>compatible with more GTK theme engines</li> + <li>improved restore window geometry after minimizing to system tray</li> + <li>search window geometry is now saved and restored between sessions</li> + <li>flexible nowplaying querying support via command line</li> + <li>ALSA code moved to plugin</li> + <li>new "nullout" output plugin - good for testing, and as basis for new plugins</li> + <li>added template .c file (with comments) for making new decoder plugins</li> + <li>updated id3v2 and apev2 parsers to support more metadata types</li> + <li>id3v2.2 parser now supports unsynchronization</li> + <li>metadata viewer accessible from context menu</li> + <li>flac plugin now plays "oga" files (flac in ogg container)</li> + <li>ffmpeg plugin, adds formats: m4a (aac,alac), mpc/mp+/mpp, wma, shn, oma, ac3, vqf</li> + <li>vtx plugin using libayemu</li> + <li>adplug plugin - cmf, rol, hsc, etc (including adlib S3Ms)</li> + <li>fixed cuesheet support in mp3 and ogg plugins</li> + <li>fixed sse2 issues on i686 architecture</li> + <li>added 24-bit ape support (thanks to Rockbox project)</li> + <li>added support for custom scrobbler url to last.fm plugin (e.g. libre.fm)</li> + <li>added Play Queue funtionality to playlist (context menu)</li> + <li>added average/approximate bitrate display to statusbar</li> + <li>new "cursor follows playback" feature</li> + <li>new "stop after current track" feature</li> + <li>.dbpl extension is auto-added when saving playlist</li> + <li>improved robustness in http code (handling connection problems, etc)</li> + </ul> +</div> + <h2>release 0.3.1 is out</h2> <div class="post"> <p class="date">2009/11/29</p> @@ -346,9 +388,12 @@ implemented basic session management, window size/position, volume, playmode are </pre> <h1 id="download">Download</h1> -<h2>Latest version 0.3.1:</h2> +<h2>Latest version 0.3.2:</h2> <p>official Arch Linux PKGBUILD: <a href="http://aur.archlinux.org/packages.php?ID=29497">here</a></p> <p>if you have yaourt, you can simply do yaourt -S deadbeef</p> +<p>source code for version 0.3.2 <a href="http://sourceforge.net/projects/deadbeef/files/deadbeef-0.3.2.tar.gz/download">deadbeef-0.3.2.tar.gz</a></p> +<p>or <a href="http://sourceforge.net/projects/deadbeef/files/">browse all files</a></p> +<h2>version 0.3.1:</h2> <p>source code for version 0.3.1 <a href="http://sourceforge.net/projects/deadbeef/files/deadbeef-0.3.1.tar.gz/download">deadbeef-0.3.1.tar.gz</a></p> <p>or <a href="http://sourceforge.net/projects/deadbeef/files/">browse all files</a></p> <p><b>unsupported</b> live gentoo ebuild from <a href="mailto:tonn.post@gmail.com">tonn</a>: <a href="http://sourceforge.net/projects/deadbeef/files/deadbeef-9999.ebuild/download">deadbeef-9999.ebuild</a></p> |