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

Reply via email to