Author: titmuss
Date: Thu May 15 08:32:52 2008
New Revision: 2455
URL: http://svn.slimdevices.com?rev=2455&root=Jive&view=rev
Log:
Bug: N/A
Description:
Added TestPlayback applet to install.
Added mp3 playback using mad decoder.
Note: due to licensing the libmad source is not included, please download this
yourself.
Added:
7.2/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_mad.c
Modified:
7.2/trunk/squeezeplay/src/squeezeplay/Makefile.am
7.2/trunk/squeezeplay/src/squeezeplay/Makefile.in
7.2/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode.c
7.2/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_flac.c
7.2/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_output.c
7.2/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_priv.h
Modified: 7.2/trunk/squeezeplay/src/squeezeplay/Makefile.am
URL:
http://svn.slimdevices.com/7.2/trunk/squeezeplay/src/squeezeplay/Makefile.am?rev=2455&root=Jive&r1=2454&r2=2455&view=diff
==============================================================================
--- 7.2/trunk/squeezeplay/src/squeezeplay/Makefile.am (original)
+++ 7.2/trunk/squeezeplay/src/squeezeplay/Makefile.am Thu May 15 08:32:52 2008
@@ -63,12 +63,13 @@
src/audio/streambuf.c \
src/audio/decode/decode.c \
src/audio/decode/decode_flac.c \
+ src/audio/decode/decode_mad.c \
src/audio/decode/decode_output.c \
src/audio/decode/decode_pcm.c \
src/audio/decode/decode_portaudio.c \
src/audio/decode/decode_tones.c
-libjiveaudio_la_LIBADD = -lSDL -lportaudio -lFLAC
+libjiveaudio_la_LIBADD = -lSDL -lportaudio -lFLAC -lmad
libjivenet_la_SOURCES = \
src/net/jive_dns.c
@@ -394,6 +395,11 @@
share/applets/SetupNetTest/SetupNetTestApplet.lua \
share/applets/SetupNetTest/SetupNetTestMeta.lua \
share/applets/SetupNetTest/strings.txt
+
+applets_testplaybackdir = $(datadir)/jive/applets/TestPlayback
+dist_applets_testplayback_DATA = \
+ share/applets/TestPlayback/TestPlaybackApplet.lua \
+ share/applets/TestPlayback/TestPlaybackMeta.lua
# Default skin
applets_defaultskindir = $(pkgdatadir)/applets/DefaultSkin
Modified: 7.2/trunk/squeezeplay/src/squeezeplay/Makefile.in
URL:
http://svn.slimdevices.com/7.2/trunk/squeezeplay/src/squeezeplay/Makefile.in?rev=2455&root=Jive&r1=2454&r2=2455&view=diff
==============================================================================
--- 7.2/trunk/squeezeplay/src/squeezeplay/Makefile.in (original)
+++ 7.2/trunk/squeezeplay/src/squeezeplay/Makefile.in Thu May 15 08:32:52 2008
@@ -64,7 +64,8 @@
$(dist_applets_setupwallpaper_wallpaper_DATA) \
$(dist_applets_slimbrowser_DATA) \
$(dist_applets_slimdiscovery_DATA) \
- $(dist_applets_squeezenetworkpin_DATA) $(dist_jive_DATA) \
+ $(dist_applets_squeezenetworkpin_DATA) \
+ $(dist_applets_testplayback_DATA) $(dist_jive_DATA) \
$(dist_jiveui_DATA) $(dist_luaaudio_DATA) $(dist_luanet_DATA) \
$(dist_luaslim_DATA) $(dist_luautil_DATA) \
$(srcdir)/Makefile.am $(srcdir)/Makefile.in \
@@ -86,7 +87,7 @@
LTLIBRARIES = $(noinst_LTLIBRARIES)
libjiveaudio_la_DEPENDENCIES =
am_libjiveaudio_la_OBJECTS = fifo.lo mqueue.lo streambuf.lo decode.lo \
- decode_flac.lo decode_output.lo decode_pcm.lo \
+ decode_flac.lo decode_mad.lo decode_output.lo decode_pcm.lo \
decode_portaudio.lo decode_tones.lo
libjiveaudio_la_OBJECTS = $(am_libjiveaudio_la_OBJECTS)
libjivenet_la_DEPENDENCIES =
@@ -127,9 +128,10 @@
"$(DESTDIR)$(applets_slimbrowserdir)" \
"$(DESTDIR)$(applets_slimdiscoverydir)" \
"$(DESTDIR)$(applets_squeezenetworkpindir)" \
- "$(DESTDIR)$(jivedir)" "$(DESTDIR)$(jiveuidir)" \
- "$(DESTDIR)$(luaaudiodir)" "$(DESTDIR)$(luanetdir)" \
- "$(DESTDIR)$(luaslimdir)" "$(DESTDIR)$(luautildir)"
+ "$(DESTDIR)$(applets_testplaybackdir)" "$(DESTDIR)$(jivedir)" \
+ "$(DESTDIR)$(jiveuidir)" "$(DESTDIR)$(luaaudiodir)" \
+ "$(DESTDIR)$(luanetdir)" "$(DESTDIR)$(luaslimdir)" \
+ "$(DESTDIR)$(luautildir)"
binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
testPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
PROGRAMS = $(bin_PROGRAMS) $(test_PROGRAMS)
@@ -187,6 +189,7 @@
dist_applets_slimbrowserDATA_INSTALL = $(INSTALL_DATA)
dist_applets_slimdiscoveryDATA_INSTALL = $(INSTALL_DATA)
dist_applets_squeezenetworkpinDATA_INSTALL = $(INSTALL_DATA)
+dist_applets_testplaybackDATA_INSTALL = $(INSTALL_DATA)
dist_jiveDATA_INSTALL = $(INSTALL_DATA)
dist_jiveuiDATA_INSTALL = $(INSTALL_DATA)
dist_luaaudioDATA_INSTALL = $(INSTALL_DATA)
@@ -216,7 +219,8 @@
$(dist_applets_setupwallpaper_wallpaper_DATA) \
$(dist_applets_slimbrowser_DATA) \
$(dist_applets_slimdiscovery_DATA) \
- $(dist_applets_squeezenetworkpin_DATA) $(dist_jive_DATA) \
+ $(dist_applets_squeezenetworkpin_DATA) \
+ $(dist_applets_testplayback_DATA) $(dist_jive_DATA) \
$(dist_jiveui_DATA) $(dist_luaaudio_DATA) $(dist_luanet_DATA) \
$(dist_luaslim_DATA) $(dist_luautil_DATA)
ETAGS = etags
@@ -384,12 +388,13 @@
src/audio/streambuf.c \
src/audio/decode/decode.c \
src/audio/decode/decode_flac.c \
+ src/audio/decode/decode_mad.c \
src/audio/decode/decode_output.c \
src/audio/decode/decode_pcm.c \
src/audio/decode/decode_portaudio.c \
src/audio/decode/decode_tones.c
-libjiveaudio_la_LIBADD = -lSDL -lportaudio -lFLAC
+libjiveaudio_la_LIBADD = -lSDL -lportaudio -lFLAC -lmad
libjivenet_la_SOURCES = \
src/net/jive_dns.c
@@ -700,6 +705,11 @@
share/applets/SetupNetTest/SetupNetTestApplet.lua \
share/applets/SetupNetTest/SetupNetTestMeta.lua \
share/applets/SetupNetTest/strings.txt
+
+applets_testplaybackdir = $(datadir)/jive/applets/TestPlayback
+dist_applets_testplayback_DATA = \
+ share/applets/TestPlayback/TestPlaybackApplet.lua \
+ share/applets/TestPlayback/TestPlaybackMeta.lua
# Default skin
@@ -1022,6 +1032,7 @@
@AMDEP_TRUE@@am__include@ @[EMAIL PROTECTED]/$(DEPDIR)/[EMAIL PROTECTED]@
@AMDEP_TRUE@@am__include@ @[EMAIL PROTECTED]/$(DEPDIR)/[EMAIL PROTECTED]@
[EMAIL PROTECTED]@@am__include@ @[EMAIL PROTECTED]/$(DEPDIR)/[EMAIL PROTECTED]@
@AMDEP_TRUE@@am__include@ @[EMAIL PROTECTED]/$(DEPDIR)/[EMAIL PROTECTED]@
@AMDEP_TRUE@@am__include@ @[EMAIL PROTECTED]/$(DEPDIR)/[EMAIL PROTECTED]@
@AMDEP_TRUE@@am__include@ @[EMAIL PROTECTED]/$(DEPDIR)/[EMAIL PROTECTED]@
@@ -1109,6 +1120,13 @@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE)
$(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS)
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS)
$(CFLAGS) -c -o decode_flac.lo `test -f 'src/audio/decode/decode_flac.c' ||
echo '$(srcdir)/'`src/audio/decode/decode_flac.c
+decode_mad.lo: src/audio/decode/decode_mad.c
[EMAIL PROTECTED]@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS)
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS)
$(CFLAGS) -MT decode_mad.lo -MD -MP -MF "$(DEPDIR)/decode_mad.Tpo" -c -o
decode_mad.lo `test -f 'src/audio/decode/decode_mad.c' || echo
'$(srcdir)/'`src/audio/decode/decode_mad.c; \
[EMAIL PROTECTED]@ then mv -f "$(DEPDIR)/decode_mad.Tpo"
"$(DEPDIR)/decode_mad.Plo"; else rm -f "$(DEPDIR)/decode_mad.Tpo"; exit 1; fi
[EMAIL PROTECTED]@@am__fastdepCC_FALSE@ source='src/audio/decode/decode_mad.c'
object='decode_mad.lo' libtool=yes @AMDEPBACKSLASH@
[EMAIL PROTECTED]@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE)
$(depcomp) @AMDEPBACKSLASH@
[EMAIL PROTECTED]@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS)
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS)
$(CFLAGS) -c -o decode_mad.lo `test -f 'src/audio/decode/decode_mad.c' || echo
'$(srcdir)/'`src/audio/decode/decode_mad.c
+
decode_output.lo: src/audio/decode/decode_output.c
@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS)
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS)
$(CFLAGS) -MT decode_output.lo -MD -MP -MF "$(DEPDIR)/decode_output.Tpo" -c -o
decode_output.lo `test -f 'src/audio/decode/decode_output.c' || echo
'$(srcdir)/'`src/audio/decode/decode_output.c; \
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/decode_output.Tpo"
"$(DEPDIR)/decode_output.Plo"; else rm -f "$(DEPDIR)/decode_output.Tpo"; exit
1; fi
@@ -1786,6 +1804,23 @@
f=$(am__strip_dir) \
echo " rm -f '$(DESTDIR)$(applets_squeezenetworkpindir)/$$f'"; \
rm -f "$(DESTDIR)$(applets_squeezenetworkpindir)/$$f"; \
+ done
+install-dist_applets_testplaybackDATA: $(dist_applets_testplayback_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(applets_testplaybackdir)" || $(mkdir_p)
"$(DESTDIR)$(applets_testplaybackdir)"
+ @list='$(dist_applets_testplayback_DATA)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(dist_applets_testplaybackDATA_INSTALL) '$$d$$p'
'$(DESTDIR)$(applets_testplaybackdir)/$$f'"; \
+ $(dist_applets_testplaybackDATA_INSTALL) "$$d$$p"
"$(DESTDIR)$(applets_testplaybackdir)/$$f"; \
+ done
+
+uninstall-dist_applets_testplaybackDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(dist_applets_testplayback_DATA)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(applets_testplaybackdir)/$$f'"; \
+ rm -f "$(DESTDIR)$(applets_testplaybackdir)/$$f"; \
done
install-dist_jiveDATA: $(dist_jive_DATA)
@$(NORMAL_INSTALL)
@@ -1941,7 +1976,7 @@
distdir: $(DISTFILES)
$(am__remove_distdir)
mkdir $(distdir)
- $(mkdir_p) $(distdir)/config $(distdir)/share/applets/ChooseMusicSource
$(distdir)/share/applets/Clock $(distdir)/share/applets/DefaultSkin
$(distdir)/share/applets/DefaultSkin/images $(distdir)/share/applets/Flickr
$(distdir)/share/applets/HttpAuth $(distdir)/share/applets/InfoBrowser
$(distdir)/share/applets/LogSettings $(distdir)/share/applets/MacroPlay
$(distdir)/share/applets/NowPlaying $(distdir)/share/applets/NowPlaying/images
$(distdir)/share/applets/ScreenSavers $(distdir)/share/applets/Screenshot
$(distdir)/share/applets/SelectPlayer
$(distdir)/share/applets/SetupAppletInstaller
$(distdir)/share/applets/SetupDateTime $(distdir)/share/applets/SetupLanguage
$(distdir)/share/applets/SetupSoundEffects
$(distdir)/share/applets/SetupSoundEffects/sounds
$(distdir)/share/applets/SetupSqueezebox
$(distdir)/share/applets/SetupWallpaper
$(distdir)/share/applets/SetupWallpaper/wallpaper
$(distdir)/share/applets/SlimBrowser $(distdir)/share/applets/SlimDiscovery
$(distdir)/sh!
are/applets/SqueezeNetworkPIN $(distdir)/share/jive
$(distdir)/share/jive/audio $(distdir)/share/jive/net
$(distdir)/share/jive/slim $(distdir)/share/jive/ui $(distdir)/share/jive/utils
$(distdir)/src
+ $(mkdir_p) $(distdir)/config $(distdir)/share/applets/ChooseMusicSource
$(distdir)/share/applets/Clock $(distdir)/share/applets/CustomizeHomeMenu
$(distdir)/share/applets/DefaultSkin
$(distdir)/share/applets/DefaultSkin/images $(distdir)/share/applets/Flickr
$(distdir)/share/applets/HttpAuth $(distdir)/share/applets/InfoBrowser
$(distdir)/share/applets/LogSettings $(distdir)/share/applets/MacroPlay
$(distdir)/share/applets/NowPlaying $(distdir)/share/applets/NowPlaying/images
$(distdir)/share/applets/ScreenSavers $(distdir)/share/applets/Screenshot
$(distdir)/share/applets/SelectPlayer
$(distdir)/share/applets/SetupAppletInstaller
$(distdir)/share/applets/SetupDateTime $(distdir)/share/applets/SetupLanguage
$(distdir)/share/applets/SetupNetTest
$(distdir)/share/applets/SetupSoundEffects
$(distdir)/share/applets/SetupSoundEffects/sounds
$(distdir)/share/applets/SetupSqueezebox
$(distdir)/share/applets/SetupWallpaper
$(distdir)/share/applets/SetupWallpaper/wallpaper $(distdi!
r)/share/applets/SlimBrowser $(distdir)/share/applets/SlimDiscovery
$(distdir)/share/applets/SqueezeNetworkPIN
$(distdir)/share/applets/TestPlayback $(distdir)/share/jive
$(distdir)/share/jive/audio $(distdir)/share/jive/net
$(distdir)/share/jive/slim $(distdir)/share/jive/ui $(distdir)/share/jive/utils
$(distdir)/src
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
list='$(DISTFILES)'; for file in $$list; do \
@@ -2070,7 +2105,7 @@
$(MAKE) $(AM_MAKEFLAGS) check-am
all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(DATA)
installdirs:
- for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(testdir)"
"$(DESTDIR)$(applets_choosemusicsourcedir)" "$(DESTDIR)$(applets_clockdir)"
"$(DESTDIR)$(applets_defaultskindir)"
"$(DESTDIR)$(applets_defaultskin_imagesdir)" "$(DESTDIR)$(applets_flickrdir)"
"$(DESTDIR)$(applets_httpauthdir)" "$(DESTDIR)$(applets_infobrowserdir)"
"$(DESTDIR)$(applets_logdir)" "$(DESTDIR)$(applets_macroplaydir)"
"$(DESTDIR)$(applets_nowplayingdir)"
"$(DESTDIR)$(applets_nowplaying_imagesdir)"
"$(DESTDIR)$(applets_screensaversdir)" "$(DESTDIR)$(applets_screenshotdir)"
"$(DESTDIR)$(applets_selectplayerdir)"
"$(DESTDIR)$(applets_setupSqueezeboxdir)"
"$(DESTDIR)$(applets_setupappletinstallerdir)"
"$(DESTDIR)$(applets_setupdatetimedir)" "$(DESTDIR)$(applets_setuplanguagedir)"
"$(DESTDIR)$(applets_setupsoundeffectsdir)"
"$(DESTDIR)$(applets_setupsoundeffects_soundsdir)"
"$(DESTDIR)$(applets_setupwallpaperdir)"
"$(DESTDIR)$(applets_setupwallpaper_wallpaperdir)"
"$(DESTDIR)$(applets_slimbrowserdir)" "$(DESTDIR!
)$(applets_slimdiscoverydir)" "$(DESTDIR)$(applets_squeezenetworkpindir)"
"$(DESTDIR)$(jivedir)" "$(DESTDIR)$(jiveuidir)" "$(DESTDIR)$(luaaudiodir)"
"$(DESTDIR)$(luanetdir)" "$(DESTDIR)$(luaslimdir)" "$(DESTDIR)$(luautildir)";
do \
+ for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(testdir)"
"$(DESTDIR)$(applets_choosemusicsourcedir)" "$(DESTDIR)$(applets_clockdir)"
"$(DESTDIR)$(applets_customizehomemenudir)"
"$(DESTDIR)$(applets_defaultskindir)"
"$(DESTDIR)$(applets_defaultskin_imagesdir)" "$(DESTDIR)$(applets_flickrdir)"
"$(DESTDIR)$(applets_httpauthdir)" "$(DESTDIR)$(applets_infobrowserdir)"
"$(DESTDIR)$(applets_logdir)" "$(DESTDIR)$(applets_macroplaydir)"
"$(DESTDIR)$(applets_nowplayingdir)"
"$(DESTDIR)$(applets_nowplaying_imagesdir)"
"$(DESTDIR)$(applets_screensaversdir)" "$(DESTDIR)$(applets_screenshotdir)"
"$(DESTDIR)$(applets_selectplayerdir)"
"$(DESTDIR)$(applets_setupSqueezeboxdir)"
"$(DESTDIR)$(applets_setupappletinstallerdir)"
"$(DESTDIR)$(applets_setupdatetimedir)" "$(DESTDIR)$(applets_setuplanguagedir)"
"$(DESTDIR)$(applets_setupnettestdir)"
"$(DESTDIR)$(applets_setupsoundeffectsdir)"
"$(DESTDIR)$(applets_setupsoundeffects_soundsdir)"
"$(DESTDIR)$(applets_setupwallpaperdir)" "$(DESTDIR)$(app!
lets_setupwallpaper_wallpaperdir)" "$(DESTDIR)$(applets_slimbrowserdir)"
"$(DESTDIR)$(applets_slimdiscoverydir)"
"$(DESTDIR)$(applets_squeezenetworkpindir)"
"$(DESTDIR)$(applets_testplaybackdir)" "$(DESTDIR)$(jivedir)"
"$(DESTDIR)$(jiveuidir)" "$(DESTDIR)$(luaaudiodir)" "$(DESTDIR)$(luanetdir)"
"$(DESTDIR)$(luaslimdir)" "$(DESTDIR)$(luautildir)"; do \
test -z "$$dir" || $(mkdir_p) "$$dir"; \
done
install: $(BUILT_SOURCES)
@@ -2148,10 +2183,10 @@
install-dist_applets_slimbrowserDATA \
install-dist_applets_slimdiscoveryDATA \
install-dist_applets_squeezenetworkpinDATA \
- install-dist_jiveDATA install-dist_jiveuiDATA \
- install-dist_luaaudioDATA install-dist_luanetDATA \
- install-dist_luaslimDATA install-dist_luautilDATA \
- install-testPROGRAMS
+ install-dist_applets_testplaybackDATA install-dist_jiveDATA \
+ install-dist_jiveuiDATA install-dist_luaaudioDATA \
+ install-dist_luanetDATA install-dist_luaslimDATA \
+ install-dist_luautilDATA install-testPROGRAMS
install-exec-am: install-binPROGRAMS
@@ -2209,6 +2244,7 @@
uninstall-dist_applets_slimbrowserDATA \
uninstall-dist_applets_slimdiscoveryDATA \
uninstall-dist_applets_squeezenetworkpinDATA \
+ uninstall-dist_applets_testplaybackDATA \
uninstall-dist_jiveDATA uninstall-dist_jiveuiDATA \
uninstall-dist_luaaudioDATA uninstall-dist_luanetDATA \
uninstall-dist_luaslimDATA uninstall-dist_luautilDATA \
@@ -2249,15 +2285,16 @@
install-dist_applets_slimbrowserDATA \
install-dist_applets_slimdiscoveryDATA \
install-dist_applets_squeezenetworkpinDATA \
- install-dist_jiveDATA install-dist_jiveuiDATA \
- install-dist_luaaudioDATA install-dist_luanetDATA \
- install-dist_luaslimDATA install-dist_luautilDATA install-exec \
- install-exec-am install-info install-info-am install-man \
- install-strip install-testPROGRAMS installcheck \
- installcheck-am installdirs maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-compile \
- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- tags uninstall uninstall-am uninstall-binPROGRAMS \
+ install-dist_applets_testplaybackDATA install-dist_jiveDATA \
+ install-dist_jiveuiDATA install-dist_luaaudioDATA \
+ install-dist_luanetDATA install-dist_luaslimDATA \
+ install-dist_luautilDATA install-exec install-exec-am \
+ install-info install-info-am install-man install-strip \
+ install-testPROGRAMS installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+ pdf pdf-am ps ps-am tags uninstall uninstall-am \
+ uninstall-binPROGRAMS \
uninstall-dist_applets_choosemusicsourceDATA \
uninstall-dist_applets_clockDATA \
uninstall-dist_applets_customizehomemenuDATA \
@@ -2285,6 +2322,7 @@
uninstall-dist_applets_slimbrowserDATA \
uninstall-dist_applets_slimdiscoveryDATA \
uninstall-dist_applets_squeezenetworkpinDATA \
+ uninstall-dist_applets_testplaybackDATA \
uninstall-dist_jiveDATA uninstall-dist_jiveuiDATA \
uninstall-dist_luaaudioDATA uninstall-dist_luanetDATA \
uninstall-dist_luaslimDATA uninstall-dist_luautilDATA \
Modified: 7.2/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode.c
URL:
http://svn.slimdevices.com/7.2/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode.c?rev=2455&root=Jive&r1=2454&r2=2455&view=diff
==============================================================================
--- 7.2/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode.c (original)
+++ 7.2/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode.c Thu May 15
08:32:52 2008
@@ -60,6 +60,7 @@
&decode_tones,
&decode_pcm,
&decode_flac,
+ &decode_mad,
#ifdef _WIN32
&decode_wma_win,
#endif
Modified: 7.2/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_flac.c
URL:
http://svn.slimdevices.com/7.2/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_flac.c?rev=2455&root=Jive&r1=2454&r2=2455&view=diff
==============================================================================
--- 7.2/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_flac.c
(original)
+++ 7.2/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_flac.c Thu
May 15 08:32:52 2008
@@ -212,7 +212,8 @@
);
// XXXX error handling
- self->sample_rate = 44100;
+ /* Assume we aren't changing sample rates until proven wrong */
+ self->sample_rate = decode_output_samplerate();
self->error_occurred = FALSE;
// XXXX this was needed for SB, why?
Added: 7.2/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_mad.c
URL:
http://svn.slimdevices.com/7.2/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_mad.c?rev=2455&root=Jive&view=auto
==============================================================================
--- 7.2/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_mad.c (added)
+++ 7.2/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_mad.c Thu May
15 08:32:52 2008
@@ -1,0 +1,272 @@
+/*
+** Copyright 2007-2008 Logitech. All Rights Reserved.
+**
+** This file is subject to the Logitech Public Source License Version 1.0.
Please see the LICENCE file for details.
+*/
+
+#define RUNTIME_DEBUG 1
+
+#include "common.h"
+
+#include "audio/streambuf.h"
+#include "audio/decode/decode.h"
+#include "audio/decode/decode_priv.h"
+
+#include <mad.h>
+
+
+/* The input buffer size is at the theoretical maximum frame
+ * size - MPEG 2.5 Layer II 8KHz @ 160kbps with padding slot
+ */
+#define INPUT_BUFFER_SIZE 2890
+
+#define OUTPUT_BUFFER_SIZE (2*32*36 * sizeof(sample_t))
+
+
+struct decode_mad {
+ struct mad_stream stream;
+ struct mad_frame frame;
+ struct mad_synth synth;
+
+ u8_t *input_buffer;
+ sample_t *output_buffer;
+ u8_t *guard_pointer;
+
+ enum {
+ MAD_STATE_OK = 0,
+ MAD_STATE_PCM_READY,
+ MAD_STATE_END_OF_FILE,
+ MAD_STATE_ERROR,
+ } state;
+
+ int sample_rate;
+};
+
+
+static void decode_mad_frame(struct decode_mad *self) {
+ size_t read_max, read_num, remaining;
+ u8_t *read_start;
+ bool_t streaming;
+
+ do {
+ /* The input stream must be filled if it's the first
+ * execution of the loop or it becomes empty
+ */
+ if (self->stream.buffer == NULL ||
+ self->stream.error == MAD_ERROR_BUFLEN) {
+
+ /* If there's data left from the last time,
+ * copy it to the beginning of the input buffer
+ */
+ if (self->stream.next_frame) {
+ remaining = self->stream.bufend -
self->stream.next_frame;
+ memcpy(self->input_buffer,
self->stream.next_frame, remaining);
+ }
+ /* Otherwise fill the input buffer */
+ else {
+ remaining = 0;
+ }
+
+ read_start = self->input_buffer + remaining;
+ read_max = INPUT_BUFFER_SIZE - remaining;
+
+
+ read_num = streambuf_read(read_start, 0, read_max,
&streaming);
+
+ if (!read_num) {
+ current_decoder_state |= DECODE_STATE_UNDERRUN;
+ if (streaming) {
+ return;
+ }
+
+ /* If we're at the end of the input file, write
+ * out the buffer guard.
+ */
+ self->guard_pointer = read_start + read_num;
+ memset(self->guard_pointer, 0,
MAD_BUFFER_GUARD);
+ read_num += MAD_BUFFER_GUARD;
+ }
+ else {
+ current_decoder_state &= ~DECODE_STATE_UNDERRUN;
+ }
+
+ /* Send the new content to libmad's stream decoder
+ */
+ mad_stream_buffer(&self->stream,
+ self->input_buffer,
+ read_num + remaining);
+
+ self->stream.error = MAD_ERROR_NONE;
+ }
+
+ if (mad_frame_decode(&self->frame, &self->stream)) {
+ if (MAD_RECOVERABLE(self->stream.error)) {
+ if (self->stream.error != MAD_ERROR_LOSTSYNC ||
+ self->stream.this_frame !=
self->guard_pointer) {
+ continue;
+ }
+ }
+ else {
+ /* Need more data, try again */
+ if (self->stream.error == MAD_ERROR_BUFLEN) {
+ continue;
+ }
+
+ // XXXX unrecoverable error
+ DEBUG_ERROR("Unrecoverable frame error %d",
self->stream.error);
+ self->state = MAD_STATE_ERROR;
+ current_decoder_state |= DECODE_STATE_ERROR;
+ return;
+ }
+ }
+
+ mad_synth_frame(&self->synth, &self->frame);
+
+ /* pcm is now ready */
+ self->state = MAD_STATE_PCM_READY;
+ } while (0);
+}
+
+
+static void decode_mad_output(struct decode_mad *self) {
+ sample_t *buf;
+ mad_fixed_t *left, *right;
+ int i;
+
+ self->sample_rate = self->frame.header.samplerate;
+
+ if (!decode_output_can_write(self->synth.pcm.length * 2 *
sizeof(sample_t), self->sample_rate)) {
+ self->state = MAD_STATE_PCM_READY;
+ return;
+ }
+
+ // XXXX parse xing header
+
+ buf = self->output_buffer;
+
+ left = self->synth.pcm.samples[0];
+ right = self->synth.pcm.samples[1];
+
+ if (self->synth.pcm.channels == 2) {
+ /* stero */
+ for (i=0; i<self->synth.pcm.length; i++) {
+ *buf++ = *left++ >> (MAD_F_FRACBITS + 1 - 24);
+ *buf++ = *right++ >> (MAD_F_FRACBITS + 1 - 24);
+ }
+ }
+ else {
+ /* mono */
+ sample_t s;
+
+ for (i=0; i<self->synth.pcm.length; i++) {
+ s = *left++ >> (MAD_F_FRACBITS + 1 - 24);
+
+ *buf++ = s;
+ *buf++ = s;
+ }
+ }
+
+ decode_output_samples(self->output_buffer,
+ self->synth.pcm.length,
+ self->sample_rate,
+ FALSE,
+ TRUE,
+ FALSE);
+
+ /* If we've come to the guard pointer, we're done */
+ if (self->stream.this_frame == self->guard_pointer) {
+ DEBUG_TRACE("Reached end of stream");
+
+ self->state = MAD_STATE_END_OF_FILE;
+
+ // XXXX remove padding?
+ }
+ else {
+ self->state = MAD_STATE_OK;
+ }
+}
+
+
+static bool_t decode_mad_callback(void *data) {
+ struct decode_mad *self = (struct decode_mad *) data;
+
+
+ /* End of file? */
+ if (self->state == MAD_STATE_END_OF_FILE ||
+ self->state == MAD_STATE_ERROR) {
+ return FALSE;
+ }
+
+ if (!decode_output_can_write(OUTPUT_BUFFER_SIZE, self->sample_rate)) {
+ return 0;
+ }
+
+ if (self->state == MAD_STATE_OK) {
+ decode_mad_frame(self);
+ }
+
+ if (self->state == MAD_STATE_PCM_READY) {
+ decode_mad_output(self);
+ }
+
+ return TRUE;
+}
+
+
+static u32_t decode_mad_period(void *data) {
+ struct decode_mad *self = (struct decode_mad *) data;
+
+ if (self->sample_rate <= 48000) {
+ return 8;
+ }
+ else {
+ return 4;
+ }
+}
+
+
+static void *decode_mad_start(u8_t *params, u32_t num_params) {
+ struct decode_mad *self;
+
+ DEBUG_TRACE("decode_mad_start()");
+
+ self = malloc(sizeof(struct decode_mad));
+ memset(self, 0, sizeof(struct decode_mad));
+
+ self->input_buffer = malloc(INPUT_BUFFER_SIZE + MAD_BUFFER_GUARD);
+ self->output_buffer = malloc(OUTPUT_BUFFER_SIZE);
+ self->guard_pointer = NULL;
+
+ mad_stream_init(&self->stream);
+ mad_frame_init(&self->frame);
+ mad_synth_init(&self->synth);
+
+ /* Assume we aren't changing sample rates until proven wrong */
+ self->sample_rate = decode_output_samplerate();
+
+ return self;
+}
+
+
+static void decode_mad_stop(void *data) {
+ struct decode_mad *self = (struct decode_mad *) data;
+
+ DEBUG_TRACE("decode_mad_stop()");
+
+ mad_stream_finish(&self->stream);
+ mad_frame_finish(&self->frame);
+ mad_synth_finish(&self->synth);
+
+ free(self->input_buffer);
+ free(self->output_buffer);
+ free(self);
+}
+
+
+struct decode_module decode_mad = {
+ 'm',
+ decode_mad_start,
+ decode_mad_stop,
+ decode_mad_period,
+ decode_mad_callback,
+};
Modified: 7.2/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_output.c
URL:
http://svn.slimdevices.com/7.2/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_output.c?rev=2455&root=Jive&r1=2454&r2=2455&view=diff
==============================================================================
--- 7.2/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_output.c
(original)
+++ 7.2/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_output.c Thu
May 15 08:32:52 2008
@@ -165,3 +165,7 @@
return FALSE;
}
+
+int decode_output_samplerate() {
+ return current_sample_rate;
+}
Modified: 7.2/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_priv.h
URL:
http://svn.slimdevices.com/7.2/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_priv.h?rev=2455&root=Jive&r1=2454&r2=2455&view=diff
==============================================================================
--- 7.2/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_priv.h
(original)
+++ 7.2/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_priv.h Thu
May 15 08:32:52 2008
@@ -32,6 +32,7 @@
extern struct decode_module decode_tones;
extern struct decode_module decode_pcm;
extern struct decode_module decode_flac;
+extern struct decode_module decode_mad;
#ifdef _WIN32
extern struct decode_module decode_wma_win;
#endif
@@ -46,6 +47,8 @@
extern void decode_output_samples(sample_t *buffer, u32_t samples, int
sample_rate,
bool_t need_scaling, bool_t
start_immediately,
bool_t copyright_asserted);
+
+extern int decode_output_samplerate();
/* Audio output api */
_______________________________________________
Jive-checkins mailing list
[email protected]
http://lists.slimdevices.com/cgi-bin/mailman/listinfo/jive-checkins