<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<id>tag:old.nabble.com,2006:forum-2882</id>
	<title>Nabble - MAD</title>
	<updated>2009-11-18T12:08:47Z</updated>
	<link rel="self" type="application/atom+xml" href="http://old.nabble.com/MAD-f2882.xml" />
	<link rel="alternate" type="text/html" href="http://old.nabble.com/MAD-f2882.html" />
	<subtitle type="html">MAD is a high-quality MPEG audio decoder. It currently supports MPEG-1 and the MPEG-2 extension to lower sampling frequencies, as well as the de facto MPEG 2.5 format. All three audio layers — Layer I, Layer II, and Layer III (i.e. MP3) — are fully implemented. MAD home is &lt;a href=&quot;http://www.underbit.com/products/mad/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;here&lt;/a&gt;.</subtitle>
	
<entry>
	<id>tag:old.nabble.com,2006:post-26414954</id>
	<title>Re: MAD on Android</title>
	<published>2009-11-18T12:08:47Z</published>
	<updated>2009-11-18T12:08:47Z</updated>
	<author>
		<name>Dominic Mazzoni</name>
	</author>
	<content type="html">Hi,&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;I&amp;#39;m an Android developer and I happen to also be on the mad-dev list.  I don&amp;#39;t think this is really a question for mad-dev, but you should probably start here:&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;  &lt;a href=&quot;http://developer.android.com/sdk/ndk/1.5_r1/index.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://developer.android.com/sdk/ndk/1.5_r1/index.html&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Android developer forums would be a better place to ask questions, at least until you get to the point where you can run simple examples under the Android NDK, but you&amp;#39;re having specific problems with libmad.&lt;/div&gt;
&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Also, keep in mind that Android already has a media framework that can decode MP3 files, so you should ask yourself whether it makes sense to use libmad at all.  Finally, note that there&amp;#39;s no guarantee that future Android devices will run on ARM.&lt;/div&gt;
&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;- Dominic&lt;br&gt;&lt;div&gt;&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;On Wed, Nov 18, 2009 at 7:56 AM,  &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26414954&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;collet.jb@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;&quot;&gt;
Hi, &lt;br&gt;&lt;br&gt;I&amp;#39;m a new developper in audio decoding and I&amp;#39;m working on a prototype for Android.&lt;br&gt;&lt;br&gt;Does anyone can explain me how I can compile libmad for android (ARM architecture) ?&lt;br&gt;&lt;br&gt;Thanks a lot.&lt;/blockquote&gt;
&lt;/div&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Mad---Dev-f503.html&quot; embed=&quot;fixTarget[503]&quot; target=&quot;_top&quot; &gt;Mad - Dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/MAD-on-Android-tp26410563p26414954.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26410563</id>
	<title>MAD on Android</title>
	<published>2009-11-18T07:56:54Z</published>
	<updated>2009-11-18T07:56:54Z</updated>
	<author>
		<name>collet.jb</name>
	</author>
	<content type="html">Hi, &lt;br /&gt;&lt;br /&gt;I&amp;#39;m a new developper in audio decoding and I&amp;#39;m working on a prototype for Android.&lt;br /&gt;&lt;br /&gt;Does anyone can explain me how I can compile libmad for android (ARM architecture) ?&lt;br /&gt;&lt;br /&gt;Thanks a lot.&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Mad---Dev-f503.html&quot; embed=&quot;fixTarget[503]&quot; target=&quot;_top&quot; &gt;Mad - Dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/MAD-on-Android-tp26410563p26410563.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26149116</id>
	<title>24 or 28 bit samples?</title>
	<published>2009-11-01T01:41:25Z</published>
	<updated>2009-11-01T01:41:25Z</updated>
	<author>
		<name>Troy Watson</name>
	</author>
	<content type="html">Hi all. Possibly a dumb question...
&lt;br&gt;MAD_F_FRACBITS is set to 28 by in mad.h; does that mean there are
&lt;br&gt;28bits per sample in mad_synth.pcm.samples?
&lt;br&gt;&lt;br&gt;I'm applying dither during the conversion to 16bit samples, and if I
&lt;br&gt;treat the samples as 24 bit I get terrible output, but if I treat them
&lt;br&gt;as 28 bit the audio sounds fine (with limited testing though).
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Mad---Dev-f503.html&quot; embed=&quot;fixTarget[503]&quot; target=&quot;_top&quot; &gt;Mad - Dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/24-or-28-bit-samples--tp26149116p26149116.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25852186</id>
	<title>Libid3tag dependency on Zlib</title>
	<published>2009-10-12T01:24:15Z</published>
	<updated>2009-10-12T01:24:15Z</updated>
	<author>
		<name>Kiran Biswal</name>
	</author>
	<content type="html">Hi,
&lt;br&gt;&lt;br&gt;Libid3tag library needs zlib for compilation. In my source tree zlib source is in let's say /zlib folder and the makefile looks as attached. There are potentially other applications using zlib so I can't configur the zlib makefile specifically for libid3tag
&lt;br&gt;&lt;br&gt;I know that by installing zlib to a particular directory and pointing libid3tag to that path I could get away with this. But I am not allowed to edit the makefile.
&lt;br&gt;&lt;br&gt;Could you suggets a way how libid3tag can use this zlib?
&lt;br&gt;&lt;br&gt;Regards
&lt;br&gt;Kiran&lt;br /&gt; &lt;div class=&quot;small&quot;&gt;&lt;br/&gt;&lt;img src=&quot;http://old.nabble.com/images/icon_attachment.gif&quot; &gt; &lt;strong&gt;Makefile&lt;/strong&gt; (1K) &lt;a href=&quot;http://old.nabble.com/attachment/25852186/0/Makefile&quot; target=&quot;_top&quot;&gt;Download Attachment&lt;/a&gt;&lt;/div&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Mad---Dev-f503.html&quot; embed=&quot;fixTarget[503]&quot; target=&quot;_top&quot; &gt;Mad - Dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Detecting-the-last-frame-tp25631597p25852186.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25840960</id>
	<title>madplay with alsa mode?</title>
	<published>2009-10-10T23:05:59Z</published>
	<updated>2009-10-10T23:05:59Z</updated>
	<author>
		<name>Feng Ye-2</name>
	</author>
	<content type="html">&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot;&gt;
&lt;HTML&gt;&lt;HEAD&gt;
&lt;META http-equiv=Content-Type content=&quot;text/html; charset=us-ascii&quot;&gt;
&lt;META content=&quot;MSHTML 6.00.2900.3603&quot; name=GENERATOR&gt;&lt;/HEAD&gt;
&lt;BODY&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN class=361055805-11102009&gt;Hello 
there,&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN class=361055805-11102009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN class=361055805-11102009&gt;I am 
having&amp;nbsp;madplay compilation issue when using alsa mode 
(--with-alsa).&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN class=361055805-11102009&gt;All packages I used 
are the latest ones:&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN class=361055805-11102009&gt;&amp;nbsp;-&amp;nbsp;ALSA 
lib version is 1.0.21a&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN class=361055805-11102009&gt;&amp;nbsp;- mad lib 
version 0.15.1b&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN class=361055805-11102009&gt;&amp;nbsp;- id3tag lib 
version 0.15.1b&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN class=361055805-11102009&gt;&amp;nbsp;- madplay 
version 0.15.2b&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN class=361055805-11102009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN class=361055805-11102009&gt;The compilation 
errors are:&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN class=361055805-11102009&gt;&amp;nbsp;audio_alsa.c:90: undefined reference to &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25840960&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;`snd_pcm_hw_params_set_rate_near@...&lt;/a&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN class=361055805-11102009&gt;&amp;nbsp;audio_alsa.c:100: undefined reference to &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25840960&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;`snd_pcm_hw_params_set_buffer_time_near@...&lt;/a&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN class=361055805-11102009&gt;&amp;nbsp;...&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN class=361055805-11102009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN class=361055805-11102009&gt;Has anyone seen 
this?&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN class=361055805-11102009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN class=361055805-11102009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN class=361055805-11102009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN class=361055805-11102009&gt;Thanks,&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN class=361055805-11102009&gt;Feng&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN class=361055805-11102009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;
&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Mad---Dev-f503.html&quot; embed=&quot;fixTarget[503]&quot; target=&quot;_top&quot; &gt;Mad - Dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/madplay-with-alsa-mode--tp25840960p25840960.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25836764</id>
	<title>Re: about FPM_INTEL / ASO_ZEROCHECK</title>
	<published>2009-10-10T10:58:56Z</published>
	<updated>2009-10-10T10:58:56Z</updated>
	<author>
		<name>Rob Leslie</name>
	</author>
	<content type="html">On Oct 9, 2009, at 4:14 PM, leon deng wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; when I build libmad in different platforms, i found two flags &amp;nbsp;
&lt;br&gt;&amp;gt; settings are different. I do not understand what those flags are &amp;nbsp;
&lt;br&gt;&amp;gt; used for, can any expert tell me about it?
&lt;br&gt;&amp;gt; When i build libmad , i first ./configure, and then make.
&lt;br&gt;&amp;gt; when I build it on 32 bits mac and 32 bits centOS, &amp;nbsp;i have flags
&lt;br&gt;&amp;gt; FPM_INTEL
&lt;br&gt;&amp;gt; ASO_ZEROCHECK
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; when I build it on 64 bits ubuntu and 64 bits centOS, I have flags
&lt;br&gt;&amp;gt; &amp;nbsp;FPM_DEFAULT
&lt;br&gt;&amp;gt; In this case, Makefile do not have ASO_ZEROCHECK flag.
&lt;/div&gt;&lt;br&gt;Probably they should be the same for 64 bits (amd64) as for 32 bits &amp;nbsp;
&lt;br&gt;(i386).
&lt;br&gt;&lt;br&gt;FPM_INTEL means to use the x86 assembler instructions for fixed-point &amp;nbsp;
&lt;br&gt;multiplication. &amp;nbsp;ASO_ZEROCHECK is an optimization that works well &amp;nbsp;
&lt;br&gt;under x86 so should be enabled by default.
&lt;br&gt;&lt;br&gt;You could try FPM_64BIT as an alternative. &amp;nbsp;FPM_DEFAULT should be &amp;nbsp;
&lt;br&gt;avoided because it provides poor accuracy.
&lt;br&gt;&lt;br&gt;&amp;gt; Another question is about :
&lt;br&gt;&amp;gt; in libmad Makefile, there are lots of optimization flags. are those &amp;nbsp;
&lt;br&gt;&amp;gt; flags critical and should I also brought them all to &amp;nbsp;my program?
&lt;br&gt;&lt;br&gt;The optimization flags were hand-picked because at the time they were &amp;nbsp;
&lt;br&gt;chosen they worked better than e.g. a simple -O2. &amp;nbsp;They are only &amp;nbsp;
&lt;br&gt;useful when building libmad and are probably not necessary to &amp;nbsp;
&lt;br&gt;duplicate for the rest of your program.
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Rob Leslie
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25836764&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;rob@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Mad---Dev-f503.html&quot; embed=&quot;fixTarget[503]&quot; target=&quot;_top&quot; &gt;Mad - Dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/about-FPM_INTEL---ASO_ZEROCHECK-tp25829290p25836764.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25829290</id>
	<title>about FPM_INTEL / ASO_ZEROCHECK</title>
	<published>2009-10-09T16:14:58Z</published>
	<updated>2009-10-09T16:14:58Z</updated>
	<author>
		<name>leon deng</name>
	</author>
	<content type="html">Hi, guys&lt;div&gt;How is it going?&lt;/div&gt;&lt;div&gt;when I build libmad in different platforms, i found two flags settings are different. I do not understand what those flags are used for, can any expert tell me about it?&lt;/div&gt;&lt;div&gt;When i build libmad , i first ./configure, and then make.&lt;/div&gt;
&lt;div&gt;when I build it on 32 bits mac and 32 bits centOS,  i have flags&lt;/div&gt;&lt;div&gt;FPM_INTEL&lt;/div&gt;&lt;div&gt;ASO_ZEROCHECK&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;when I build it on 64 bits ubuntu and 64 bits centOS, I have flags&lt;/div&gt;&lt;div&gt; FPM_DEFAULT&lt;/div&gt;
&lt;div&gt;In this case, Makefile do not have ASO_ZEROCHECK flag.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;i try to build libmad in my own program on those systems.  i need to set the flags in my program.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Any ideas about this?&lt;/div&gt;
&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Another question is about : &lt;/div&gt;&lt;div&gt;in libmad Makefile, there are lots of optimization flags. are those flags critical and should I also brought them all to  my program?&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Thanks!&lt;/div&gt;
&lt;div&gt;Leon&lt;/div&gt;
&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Mad---Dev-f503.html&quot; embed=&quot;fixTarget[503]&quot; target=&quot;_top&quot; &gt;Mad - Dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/about-FPM_INTEL---ASO_ZEROCHECK-tp25829290p25829290.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25775941</id>
	<title>assert error happened when read one kind of mp3 file</title>
	<published>2009-10-06T13:15:41Z</published>
	<updated>2009-10-06T13:15:41Z</updated>
	<author>
		<name>leon deng</name>
	</author>
	<content type="html">Hi, guys.&lt;br&gt;Hope you are doing good.&lt;br&gt;&lt;br&gt;When i use libmad decodes a mp3 file, and it gives me an assert in side layer3.c: 2633.&lt;br&gt; layer3.c:2633: mad_layer_III: Assertion `stream-&amp;gt;md_len + md_len - si.main_data_begin &amp;lt;= (511 + 2048 + 8)&amp;#39; failed.&lt;br&gt;
&lt;br&gt;any ideas about this?&lt;br&gt;Is libmad able to decode all kinds of mp3 files?&lt;br&gt;&lt;br&gt;Thanks!&lt;br&gt;Leon&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;
&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Mad---Dev-f503.html&quot; embed=&quot;fixTarget[503]&quot; target=&quot;_top&quot; &gt;Mad - Dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/assert-error-happened-when-read-one-kind-of-mp3-file-tp25775941p25775941.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25652162</id>
	<title>Re: Question about madplay, libmad and libid3tag</title>
	<published>2009-09-28T13:13:37Z</published>
	<updated>2009-09-28T13:13:37Z</updated>
	<author>
		<name>Rob Leslie</name>
	</author>
	<content type="html">On Sep 27, 2009, at 6:52 PM, Kiran Biswal wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; &amp;nbsp;I am new user of &amp;nbsp;MAD. I am trying to compile MAD on my platform &amp;nbsp;
&lt;br&gt;&amp;gt; (MIPS based). When I &amp;nbsp;try to run the ./confogure from commandline it &amp;nbsp;
&lt;br&gt;&amp;gt; prompts me to point to the libmad and libid3tag which are in &amp;nbsp;
&lt;br&gt;&amp;gt; separate directories, so I &amp;nbsp;give path to both libmad and libid3tag &amp;nbsp; 
&lt;br&gt;&amp;gt; like below from the directory where madplay-0.15.2b is kept
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; ./configure CPPFLAGS=-I/root/Music/audioplayer/libmad/libmad-0.15.1b &amp;nbsp;
&lt;br&gt;&amp;gt; CPPFLAGS=-I/root/Music/audioplayer/libid3tag/libid3tag-0.15.1b &amp;nbsp;
&lt;br&gt;&amp;gt; LDFLAGS=-L/root/Music/audioplayer/libmad/libmad-0.15.1b LDFLAGS=-L/ 
&lt;br&gt;&amp;gt; root/Music/audioplayer/libid3tag/libid3tag-0.15.1b
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; But it still complains that it can not find mad.h and I must first &amp;nbsp;
&lt;br&gt;&amp;gt; install libmad .
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Could you please tell me how to point to libmad and lib3tag at the &amp;nbsp;
&lt;br&gt;&amp;gt; same time?
&lt;/div&gt;&lt;br&gt;The usual way to build and install is:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;% cd libmad-0.15.1b
&lt;br&gt;&amp;nbsp; &amp;nbsp;% ./configure
&lt;br&gt;&amp;nbsp; &amp;nbsp;% make
&lt;br&gt;&amp;nbsp; &amp;nbsp;# make install
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;% cd ../libid3tag-0.15.1b
&lt;br&gt;&amp;nbsp; &amp;nbsp;% ./configure
&lt;br&gt;&amp;nbsp; &amp;nbsp;% make
&lt;br&gt;&amp;nbsp; &amp;nbsp;# make install
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;% cd ../madplay-0.15.2b
&lt;br&gt;&amp;nbsp; &amp;nbsp;% ./configure
&lt;br&gt;&amp;nbsp; &amp;nbsp;% make
&lt;br&gt;&amp;nbsp; &amp;nbsp;# make install
&lt;br&gt;&lt;br&gt;(The order is important; you must install libmad and libid3tag before &amp;nbsp;
&lt;br&gt;configuring madplay.)
&lt;br&gt;&lt;br&gt;The default is to install under /usr/local, i.e. /usr/local/include &amp;nbsp;
&lt;br&gt;for header files, /usr/local/lib for shared library files, and /usr/ 
&lt;br&gt;local/bin for executables.
&lt;br&gt;&lt;br&gt;If you want to install somewhere else (e.g. /opt/mad), you can do so &amp;nbsp;
&lt;br&gt;like this:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;% cd libmad-0.15.1b
&lt;br&gt;&amp;nbsp; &amp;nbsp;% ./configure --prefix=/opt/mad
&lt;br&gt;&amp;nbsp; &amp;nbsp;% make
&lt;br&gt;&amp;nbsp; &amp;nbsp;# make install
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;% cd ../libid3tag-0.15.1b
&lt;br&gt;&amp;nbsp; &amp;nbsp;% ./configure --prefix=/opt/mad
&lt;br&gt;&amp;nbsp; &amp;nbsp;% make
&lt;br&gt;&amp;nbsp; &amp;nbsp;# make install
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;% cd ../madplay-0.15.2b
&lt;br&gt;&amp;nbsp; &amp;nbsp;% ./configure --prefix=/opt/mad CPPFLAGS=-I/opt/mad/include &amp;nbsp;
&lt;br&gt;LDFLAGS=-L/opt/mad/lib
&lt;br&gt;&amp;nbsp; &amp;nbsp;% make
&lt;br&gt;&amp;nbsp; &amp;nbsp;# make install
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Rob Leslie
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25652162&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;rob@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Mad---User-f504.html&quot; embed=&quot;fixTarget[504]&quot; target=&quot;_top&quot; &gt;Mad - User&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Question-about-madplay%2C-libmad-and-libid3tag-tp25639784p25652162.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25651748</id>
	<title>Re: Detecting the last frame</title>
	<published>2009-09-28T12:41:19Z</published>
	<updated>2009-09-28T12:41:19Z</updated>
	<author>
		<name>Rob Leslie</name>
	</author>
	<content type="html">On Sep 27, 2009, at 12:43 AM, Troy Watson wrote:
&lt;br&gt;&amp;gt; Is there a method to detect if the frame sent to mad_synth_frame is &amp;nbsp;
&lt;br&gt;&amp;gt; the last frame in the stream, without knowing in advance how many &amp;nbsp;
&lt;br&gt;&amp;gt; frames the input stream has? &amp;nbsp;I am using libsamplerate and it &amp;nbsp;
&lt;br&gt;&amp;gt; requires the last block of audio data for a stream to set an &amp;nbsp;
&lt;br&gt;&amp;gt; end_of_input flag. Checking the EOF indicator for the input file is &amp;nbsp;
&lt;br&gt;&amp;gt; insufficient as that only informs me when the file has been fully &amp;nbsp;
&lt;br&gt;&amp;gt; buffered, not when the last frame has been synthesized. Any ideas or &amp;nbsp;
&lt;br&gt;&amp;gt; suggestions?
&lt;br&gt;&lt;br&gt;You may need to decode the next frame before you output the previously &amp;nbsp;
&lt;br&gt;synth'ed one to be absolutely sure.
&lt;br&gt;&lt;br&gt;Keep in mind that when mad_frame_decode() (or mad_header_decode()) &amp;nbsp;
&lt;br&gt;returns -1 and stream-&amp;gt;error is MAD_ERROR_BUFLEN, and you are at EOF, &amp;nbsp;
&lt;br&gt;there may be one last frame you can decode by appending &amp;nbsp;
&lt;br&gt;MAD_BUFFER_GUARD zero bytes at the end of the buffer, but not &amp;nbsp;
&lt;br&gt;necessarily.
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Rob Leslie
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25651748&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;rob@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Mad---Dev-f503.html&quot; embed=&quot;fixTarget[503]&quot; target=&quot;_top&quot; &gt;Mad - Dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Detecting-the-last-frame-tp25631597p25651748.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25639784</id>
	<title>Question about madplay, libmad and libid3tag</title>
	<published>2009-09-27T18:52:27Z</published>
	<updated>2009-09-27T18:52:27Z</updated>
	<author>
		<name>Kiran Biswal</name>
	</author>
	<content type="html">&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot;&gt;
&lt;HTML&gt;&lt;HEAD&gt;
&lt;META http-equiv=Content-Type content=&quot;text/html; charset=us-ascii&quot;&gt;
&lt;META content=&quot;MSHTML 6.00.2900.3603&quot; name=GENERATOR&gt;&lt;/HEAD&gt;
&lt;BODY&gt;
&lt;DIV dir=ltr align=left&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=906580601-28092009&gt;Hi&lt;SPAN class=562364901-28092009&gt;&amp;nbsp;&amp;nbsp;All&amp;nbsp;&lt;/SPAN&gt;,&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=906580601-28092009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;FONT face=Arial&gt;&lt;FONT size=2&gt;&lt;SPAN class=906580601-28092009&gt;&lt;FONT color=#0000ff&gt;&lt;SPAN class=562364901-28092009&gt;&amp;nbsp;I am new user of &amp;nbsp;MAD. 
&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=906580601-28092009&gt;&lt;FONT color=#0000ff&gt;I&lt;/FONT&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=062063000-28092009&gt;am trying to 
compile MAD on my platform (MIPS based). When I&amp;nbsp;&lt;SPAN class=562364901-28092009&gt;&lt;FONT color=#0000ff&gt;&amp;nbsp;try to run the ./confogure 
from commandline&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;it prompts me to point to the libmad and 
libid3tag which are in separate directories, so I&amp;nbsp;&lt;SPAN class=562364901-28092009&gt;&lt;FONT color=#0000ff&gt;&amp;nbsp;give path to both libmad and 
libid3tag&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt; like below from the directory where 
madplay-0.15.2b is kept&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN class=062063000-28092009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN class=062063000-28092009&gt;./configure 
&lt;STRONG&gt;CPPFLAGS&lt;/STRONG&gt;=-I/root/Music/audioplayer/libmad/libmad-0.15.1b 
&lt;STRONG&gt;CPPFLAGS&lt;/STRONG&gt;=-I/root/Music/audioplayer/libid3tag/libid3tag-0.15.1b 
&lt;STRONG&gt;LDFLAGS&lt;/STRONG&gt;=-L/root/Music/audioplayer/libmad/libmad-0.15.1b 
&lt;STRONG&gt;LDFLAGS&lt;/STRONG&gt;=-L/root/Music/audioplayer/libid3tag/libid3tag-0.15.1b&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN class=062063000-28092009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=062063000-28092009&gt;&lt;FONT face=Arial&gt;&lt;FONT size=2&gt;But it still 
complains that it can not find mad.h and I must first install libmad&lt;SPAN class=562364901-28092009&gt;&lt;FONT color=#0000ff&gt;&amp;nbsp;.&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN class=062063000-28092009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN class=062063000-28092009&gt;Could you please 
tell me how to point to &lt;STRONG&gt;libmad &lt;/STRONG&gt;and &lt;STRONG&gt;lib3tag&lt;/STRONG&gt; at 
the same time?&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;SPAN class=062063000-28092009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV align=left&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=562364901-28092009&gt;Thanks in advance for the help&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=562364901-28092009&gt;Regards&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=562364901-28092009&gt;Kiran&amp;nbsp;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;
&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Mad---User-f504.html&quot; embed=&quot;fixTarget[504]&quot; target=&quot;_top&quot; &gt;Mad - User&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Question-about-madplay%2C-libmad-and-libid3tag-tp25639784p25639784.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25631597</id>
	<title>Detecting the last frame</title>
	<published>2009-09-27T00:43:42Z</published>
	<updated>2009-09-27T00:43:42Z</updated>
	<author>
		<name>Troy Watson</name>
	</author>
	<content type="html">Hi all,
&lt;br&gt;&lt;br&gt;Is there a method to detect if the frame sent to mad_synth_frame is
&lt;br&gt;the last frame in the stream, without knowing in advance how many
&lt;br&gt;frames the input stream has? &amp;nbsp;I am using libsamplerate and it requires
&lt;br&gt;the last block of audio data for a stream to set an end_of_input flag.
&lt;br&gt;Checking the EOF indicator for the input file is insufficient as that
&lt;br&gt;only informs me when the file has been fully buffered, not when the
&lt;br&gt;last frame has been synthesized. Any ideas or suggestions?
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Mad---Dev-f503.html&quot; embed=&quot;fixTarget[503]&quot; target=&quot;_top&quot; &gt;Mad - Dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Detecting-the-last-frame-tp25631597p25631597.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25592189</id>
	<title>compile libmad on AMD Dual core server errors</title>
	<published>2009-09-24T02:37:10Z</published>
	<updated>2009-09-24T02:37:10Z</updated>
	<author>
		<name>leon deng</name>
	</author>
	<content type="html">Hi, guys
&lt;br&gt;Hope everyone doing well!
&lt;br&gt;I am trying to compile libmad on ubuntu, which is run on AMD Dual core
&lt;br&gt;processor. I use gcc 4.3
&lt;br&gt;I got some errors.One of the error is :
&lt;br&gt;&lt;br&gt;&amp;nbsp;libmad/fixed.h h:446:4:4 error: #error &amp;quot;no FPM selected&amp;quot;
&lt;br&gt;&lt;br&gt;How to define FPM on AMD, is it intel processor specified?
&lt;br&gt;How to solve this issue?
&lt;br&gt;&lt;br&gt;Thanks in advance!
&lt;br&gt;leon
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Mad---Dev-f503.html&quot; embed=&quot;fixTarget[503]&quot; target=&quot;_top&quot; &gt;Mad - Dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/compile-libmad-on-AMD-Dual-core-server-errors-tp25592189p25592189.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-24978419</id>
	<title>Precise volume control</title>
	<published>2009-08-14T13:53:23Z</published>
	<updated>2009-08-14T13:53:23Z</updated>
	<author>
		<name>malanda@freeuk.com</name>
	</author>
	<content type="html">I am using the MAD low-level interface. &amp;nbsp;I need to implement a volume 
&lt;br&gt;control where the attenuation is specified in dB. Can anyone suggest a 
&lt;br&gt;suitable algorithm, or better still tell me where I can find example 
&lt;br&gt;code that does this?
&lt;br&gt;&lt;br&gt;Thank you.
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Mad---Dev-f503.html&quot; embed=&quot;fixTarget[503]&quot; target=&quot;_top&quot; &gt;Mad - Dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Precise-volume-control-tp24978419p24978419.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-24931056</id>
	<title>答复: Re:  does anybody make madplay play AAC?</title>
	<published>2009-08-11T23:52:21Z</published>
	<updated>2009-08-11T23:52:21Z</updated>
	<author>
		<name>liu.yaojin</name>
	</author>
	<content type="html">hi:
&lt;br&gt;&amp;nbsp; thanks for replying.
&lt;br&gt;&amp;nbsp; i would like to let madplay work in embedded world.especially in arm 
&lt;br&gt;linux :)
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Political Confusion &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=24931056&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;politicalconfusion@...&lt;/a&gt;&amp;gt; 
&lt;br&gt;2009-08-12 14:35
&lt;br&gt;&lt;br&gt;收件人
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=24931056&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;liu.yaojin@...&lt;/a&gt;
&lt;br&gt;抄送
&lt;br&gt;&lt;br&gt;主题
&lt;br&gt;Re: [mad-dev] does anybody make madplay play AAC?
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;i haven't done this, but i would be interested in trying. &amp;nbsp;what os 
&lt;br&gt;(windows/linux/mac/?) are you using? &amp;nbsp;i was thinking of building a simple 
&lt;br&gt;player for windows using libavcodec and supporting asio-based audio 
&lt;br&gt;drivers.
&lt;br&gt;&lt;br&gt;-michael
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;--- On Mon, 8/10/09, &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=24931056&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;liu.yaojin@...&lt;/a&gt; &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=24931056&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;liu.yaojin@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&lt;br&gt;From: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=24931056&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;liu.yaojin@...&lt;/a&gt; &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=24931056&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;liu.yaojin@...&lt;/a&gt;&amp;gt;
&lt;br&gt;Subject: [mad-dev] does anybody make madplay play AAC?
&lt;br&gt;To: 
&lt;br&gt;Date: Monday, August 10, 2009, 9:33 PM
&lt;br&gt;&lt;br&gt;hi ,guys.
&lt;br&gt;i want to let madplay play aac files, has any one done this?
&lt;br&gt;how about develop together?
&lt;br&gt;&lt;br&gt;&lt;br&gt;--------------------------------------------------------
&lt;br&gt;ZTE Information Security Notice: The information contained in this mail is 
&lt;br&gt;solely property of the sender's organization. This mail communication is 
&lt;br&gt;confidential. Recipients named above are obligated to maintain secrecy and 
&lt;br&gt;are not permitted to disclose the contents of this communication to 
&lt;br&gt;others.
&lt;br&gt;This email and any files transmitted with it are confidential and intended 
&lt;br&gt;solely for the use of the individual or entity to whom they are addressed. 
&lt;br&gt;If you have received this email in error please notify the originator of 
&lt;br&gt;the message. Any views expressed in this message are those of the 
&lt;br&gt;individual sender.
&lt;br&gt;This message has been scanned for viruses and Spam by ZTE Anti-Spam 
&lt;br&gt;system.
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;--------------------------------------------------------
&lt;br&gt;ZTE Information Security Notice: The information contained in this mail is solely property of the sender's organization. This mail communication is confidential. Recipients named above are obligated to maintain secrecy and are not permitted to disclose the contents of this communication to others.
&lt;br&gt;This email and any files transmitted with it are confidential and intended solely for the use of the individual or entity to whom they are addressed. If you have received this email in error please notify the originator of the message. Any views expressed in this message are those of the individual sender.
&lt;br&gt;This message has been scanned for viruses and Spam by ZTE Anti-Spam system.
&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Mad---Dev-f503.html&quot; embed=&quot;fixTarget[503]&quot; target=&quot;_top&quot; &gt;Mad - Dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%E7%AD%94%E5%A4%8D%3A-Re%3A--does-anybody-make-madplay-play-AAC--tp24931056p24931056.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-24910398</id>
	<title>does anybody make madplay play AAC?</title>
	<published>2009-08-10T18:33:09Z</published>
	<updated>2009-08-10T18:33:09Z</updated>
	<author>
		<name>liu.yaojin</name>
	</author>
	<content type="html">hi ,guys.
&lt;br&gt;&amp;nbsp;i want to let madplay play aac files, has any one done this?
&lt;br&gt;how about develop together?
&lt;br&gt;&lt;br&gt;&lt;br&gt;--------------------------------------------------------
&lt;br&gt;ZTE Information Security Notice: The information contained in this mail is solely property of the sender's organization. This mail communication is confidential. Recipients named above are obligated to maintain secrecy and are not permitted to disclose the contents of this communication to others.
&lt;br&gt;This email and any files transmitted with it are confidential and intended solely for the use of the individual or entity to whom they are addressed. If you have received this email in error please notify the originator of the message. Any views expressed in this message are those of the individual sender.
&lt;br&gt;This message has been scanned for viruses and Spam by ZTE Anti-Spam system.
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Mad---Dev-f503.html&quot; embed=&quot;fixTarget[503]&quot; target=&quot;_top&quot; &gt;Mad - Dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/does-anybody-make-madplay-play-AAC--tp24910398p24910398.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-24331425</id>
	<title>ARM9 with ALSA will only play via pipe</title>
	<published>2009-07-03T22:07:55Z</published>
	<updated>2009-07-03T22:07:55Z</updated>
	<author>
		<name>rrsurfer1</name>
	</author>
	<content type="html">Hi Guys,
&lt;br&gt;&lt;br&gt;I build madplay for montavista 5.0 on an ARM9, specifically an OMAP-L137 EVM. I set configure to use alsa as the default device. I'm having trouble playing to the ALSA driver. 
&lt;br&gt;&lt;br&gt;If I run: ./madplay -v song.mp3 
&lt;br&gt;&lt;br&gt;I get the ID3 info correct and then it stays at 00:00:00 and never plays...
&lt;br&gt;&lt;br&gt;If I pipe the sound to aplay in wav format it works fine... any ideas for getting it to work straight from madplay?
&lt;br&gt;&lt;br&gt;Any help is greatly appreciated!
&lt;br&gt;- Dominic
&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Mad---Dev-f503.html&quot; embed=&quot;fixTarget[503]&quot; target=&quot;_top&quot; &gt;Mad - Dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/ARM9-with-ALSA-will-only-play-via-pipe-tp24331425p24331425.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-23696220</id>
	<title>ReplayGain in RVA2 frames</title>
	<published>2009-05-24T10:45:22Z</published>
	<updated>2009-05-24T10:45:22Z</updated>
	<author>
		<name>Joris van Rantwijk-6</name>
	</author>
	<content type="html">Hello,
&lt;br&gt;&lt;br&gt;I noticed that Madplay supports ReplayGain, which is nice because
&lt;br&gt;ReplayGain is a very useful idea. However, Madplay currently does
&lt;br&gt;not read ReplayGain information from ID3v2 RVA2 frames. (Madplay does
&lt;br&gt;read RVA2 frames, but doesn't look at the identification string which
&lt;br&gt;distinguishes between track-gain and album-gain.)
&lt;br&gt;&lt;br&gt;This is unfortunate because it seems that, out of at least five
&lt;br&gt;distinct methods for storing ReplayGain information, RVA2 is now
&lt;br&gt;best supported among audio players.
&lt;br&gt;&lt;br&gt;I would like to make the following changes to the ReplayGain code
&lt;br&gt;in madplay:
&lt;br&gt;&lt;br&gt;* Support ReplayGain from RVA2 frames in addition to RGAD frames.
&lt;br&gt;&amp;nbsp; This will improve compatibility with other audio players, making
&lt;br&gt;&amp;nbsp; ReplayGain much more usable.
&lt;br&gt;&lt;br&gt;* Remove the +6 dB pre-amplification thing.
&lt;br&gt;&amp;nbsp; The original ReplayGain standard specified normalize to 83 dB and
&lt;br&gt;&amp;nbsp; amplify +6 dB. But this was later revised into simply normalize
&lt;br&gt;&amp;nbsp; to 89 dB, which is how all current implementations are doing it.
&lt;br&gt;&amp;nbsp; The +6 dB could be left in place for LAME tags older than 3.95.1.
&lt;br&gt;&lt;br&gt;I am willing to write and test a patch that implements these changes.
&lt;br&gt;Would you accept that patch?
&lt;br&gt;&lt;br&gt;Greetings,
&lt;br&gt;Joris van Rantwijk.
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Mad---Dev-f503.html&quot; embed=&quot;fixTarget[503]&quot; target=&quot;_top&quot; &gt;Mad - Dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/ReplayGain-in-RVA2-frames-tp23696220p23696220.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-23413555</id>
	<title>How to get the accurate song time?</title>
	<published>2009-05-06T12:14:45Z</published>
	<updated>2009-05-06T12:14:45Z</updated>
	<author>
		<name>Carlos Henrique-10</name>
	</author>
	<content type="html">Hi to all,&lt;br&gt;&lt;br&gt;I neet to get the time of the song when it is playing. I am using the code below:&lt;br&gt;&lt;br&gt;&lt;span style=&quot;font-family: courier new,monospace;&quot;&gt;static&lt;/span&gt;&lt;br style=&quot;font-family: courier new,monospace;&quot;&gt;&lt;span style=&quot;font-family: courier new,monospace;&quot;&gt;enum mad_flow header(void *data, struct mad_header const *header)&lt;/span&gt;&lt;br style=&quot;font-family: courier new,monospace;&quot;&gt;

&lt;span style=&quot;font-family: courier new,monospace;&quot;&gt;{&lt;/span&gt;&lt;br style=&quot;font-family: courier new,monospace;&quot;&gt;&lt;span style=&quot;font-family: courier new,monospace;&quot;&gt;    mad_timer_add(&amp;amp;musicTimer, header-&amp;gt;duration);&lt;/span&gt;&lt;br style=&quot;font-family: courier new,monospace;&quot;&gt;

&lt;span style=&quot;font-family: courier new,monospace;&quot;&gt;    return MAD_FLOW_CONTINUE;&lt;/span&gt;&lt;br style=&quot;font-family: courier new,monospace;&quot;&gt;&lt;span style=&quot;font-family: courier new,monospace;&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;span style=&quot;font-family: courier new,monospace;&quot;&gt;long mp3_song_time(void)&lt;/span&gt;&lt;br style=&quot;font-family: courier new,monospace;&quot;&gt;

&lt;span style=&quot;font-family: courier new,monospace;&quot;&gt;{&lt;/span&gt;&lt;br style=&quot;font-family: courier new,monospace;&quot;&gt;&lt;span style=&quot;font-family: courier new,monospace;&quot;&gt;    return mad_timer_count(musicTimer, MAD_UNITS_MILLISECONDS);&lt;/span&gt;&lt;br style=&quot;font-family: courier new,monospace;&quot;&gt;

&lt;span style=&quot;font-family: courier new,monospace;&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;br&gt;The code works, but it is not fast enough. I am getting the time with &amp;quot;&lt;span style=&quot;font-family: courier new,monospace;&quot;&gt;mp3_song_time&lt;/span&gt;&amp;quot; faster than the header is called. (obs: I am using two processors, one to decode the song and the other to run the code that uses the song time).&lt;br&gt;

&lt;br&gt;Is there another way to get the right (more accurate) time?&lt;br&gt;&lt;br&gt;Thanks in advance,&lt;br clear=&quot;all&quot;&gt;&lt;br&gt;-- &lt;br&gt;Carlos Henrique Gomes Correia&lt;br&gt;Game Programmer&lt;br&gt;Interama Games&lt;br&gt;&lt;br&gt;Skype: carloshgcorreia&lt;br&gt;Tel: +55 27 3345 8525&lt;br&gt;

Web: &lt;a href=&quot;http://www.interama.net&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;www.interama.net&lt;/a&gt;&lt;br&gt;
&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Mad---Dev-f503.html&quot; embed=&quot;fixTarget[503]&quot; target=&quot;_top&quot; &gt;Mad - Dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/How-to-get-the-accurate-song-time--tp23413555p23413555.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-22852987</id>
	<title>Re: Maintaining libid3tag?</title>
	<published>2009-04-02T10:14:51Z</published>
	<updated>2009-04-02T10:14:51Z</updated>
	<author>
		<name>Andy Grundman-2</name>
	</author>
	<content type="html">&lt;br&gt;On Apr 2, 2009, at 12:58 PM, Kurt Roeckx wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Thu, Apr 02, 2009 at 09:44:18AM -0400, Andy Grundman wrote:
&lt;br&gt;&amp;gt;&amp;gt; Is there any interest in having someone take over maintenance of
&lt;br&gt;&amp;gt;&amp;gt; libid3tag? &amp;nbsp;There are several patches floating around in various &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; places
&lt;br&gt;&amp;gt;&amp;gt; [1] that should be rolled into an official release. &amp;nbsp;There are also &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; some
&lt;br&gt;&amp;gt;&amp;gt; issues related to handling of broken iTunes tags that I'd like to &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; fix and
&lt;br&gt;&amp;gt;&amp;gt; don't see any patches for. &amp;nbsp;I'm happy to volunteer.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; [1]
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://patch-tracking.debian.net/package/libid3tag&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://patch-tracking.debian.net/package/libid3tag&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Those are patches we added to the package, the difference between
&lt;br&gt;&amp;gt; our version and upstream's version. &amp;nbsp;And there hasn't been any
&lt;br&gt;&amp;gt; activity upstream for a while.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; We really only have 1 open bug report:
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://bugs.debian.org/350578&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bugs.debian.org/350578&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://bugs.gentoo.org/show_bug.cgi?id=210564&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bugs.gentoo.org/show_bug.cgi?id=210564&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; We have fixed this bug long before the gentoo bug report. &amp;nbsp;This is
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://bugs.debian.org/304913&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bugs.debian.org/304913&lt;/a&gt;&lt;br&gt;&amp;gt; &lt;a href=&quot;http://bugs.debian.org/480187&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bugs.debian.org/480187&lt;/a&gt;&lt;/div&gt;&lt;br&gt;Yeah, it looks like Gentoo has the most complete set of patches. &amp;nbsp; 
&lt;br&gt;However, there are a few issues with them:
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://sources.gentoo.org/viewcvs.py/gentoo-x86/media-libs/libid3tag/files/0.15.1b/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://sources.gentoo.org/viewcvs.py/gentoo-x86/media-libs/libid3tag/files/0.15.1b/&lt;/a&gt;&lt;br&gt;&lt;br&gt;libid3tag-0.15.1b-compat.patch &amp;nbsp; &amp;nbsp; &amp;nbsp; - This is a duplicate of &amp;nbsp;
&lt;br&gt;libid3tag-0.15.1b-unknown-encoding.patch
&lt;br&gt;libid3tag-0.15.1b-fix_overflow.patch - This patch breaks reading of &amp;nbsp;
&lt;br&gt;UTF-16BE tags. &amp;nbsp;The fix may be:
&lt;br&gt;&lt;br&gt;--- field.c.orig	2008-05-05 09:49:15.000000000 -0400
&lt;br&gt;+++ field.c	2008-05-05 09:49:25.000000000 -0400
&lt;br&gt;@@ -291,7 +291,7 @@
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; end = *ptr + length;
&lt;br&gt;&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp;while (end - *ptr &amp;gt; 0) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp;while (end - *ptr &amp;gt; 0 &amp;&amp; (*encoding == &amp;nbsp;
&lt;br&gt;ID3_FIELD_TEXTENCODING_UTF_16BE || **ptr != '\0')) {
&lt;br&gt;&amp;nbsp; 	ucs4 = id3_parse_string(ptr, end - *ptr, *encoding, 0);
&lt;br&gt;&amp;nbsp; 	if (ucs4 == 0)
&lt;br&gt;&amp;nbsp; 	 &amp;nbsp;goto fail;
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Mad---Dev-f503.html&quot; embed=&quot;fixTarget[503]&quot; target=&quot;_top&quot; &gt;Mad - Dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Maintaining-libid3tag--tp22848196p22852987.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-22852774</id>
	<title>Re: Maintaining libid3tag?</title>
	<published>2009-04-02T10:00:23Z</published>
	<updated>2009-04-02T10:00:23Z</updated>
	<author>
		<name>Kurt Roeckx</name>
	</author>
	<content type="html">On Thu, Apr 02, 2009 at 06:58:22PM +0200, Kurt Roeckx wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Thu, Apr 02, 2009 at 09:44:18AM -0400, Andy Grundman wrote:
&lt;br&gt;&amp;gt; &amp;gt; Is there any interest in having someone take over maintenance of &amp;nbsp;
&lt;br&gt;&amp;gt; &amp;gt; libid3tag? &amp;nbsp;There are several patches floating around in various places 
&lt;br&gt;&amp;gt; &amp;gt; [1] that should be rolled into an official release. &amp;nbsp;There are also some 
&lt;br&gt;&amp;gt; &amp;gt; issues related to handling of broken iTunes tags that I'd like to fix and 
&lt;br&gt;&amp;gt; &amp;gt; don't see any patches for. &amp;nbsp;I'm happy to volunteer.
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; [1]
&lt;br&gt;&amp;gt; &amp;gt; &lt;a href=&quot;http://patch-tracking.debian.net/package/libid3tag&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://patch-tracking.debian.net/package/libid3tag&lt;/a&gt;&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Those are patches we added to the package, the difference between
&lt;br&gt;&amp;gt; our version and upstream's version. &amp;nbsp;And there hasn't been any
&lt;br&gt;&amp;gt; activity upstream for a while.
&lt;/div&gt;&lt;br&gt;I was under the impression that you've mailed the debian list
&lt;br&gt;about this, and not the upstream list. &amp;nbsp;Sorry about that.
&lt;br&gt;&lt;br&gt;&lt;br&gt;Kurt
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Mad---Dev-f503.html&quot; embed=&quot;fixTarget[503]&quot; target=&quot;_top&quot; &gt;Mad - Dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Maintaining-libid3tag--tp22848196p22852774.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-22852723</id>
	<title>Re: Maintaining libid3tag?</title>
	<published>2009-04-02T09:58:22Z</published>
	<updated>2009-04-02T09:58:22Z</updated>
	<author>
		<name>Kurt Roeckx</name>
	</author>
	<content type="html">On Thu, Apr 02, 2009 at 09:44:18AM -0400, Andy Grundman wrote:
&lt;br&gt;&amp;gt; Is there any interest in having someone take over maintenance of &amp;nbsp;
&lt;br&gt;&amp;gt; libid3tag? &amp;nbsp;There are several patches floating around in various places 
&lt;br&gt;&amp;gt; [1] that should be rolled into an official release. &amp;nbsp;There are also some 
&lt;br&gt;&amp;gt; issues related to handling of broken iTunes tags that I'd like to fix and 
&lt;br&gt;&amp;gt; don't see any patches for. &amp;nbsp;I'm happy to volunteer.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; [1]
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://patch-tracking.debian.net/package/libid3tag&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://patch-tracking.debian.net/package/libid3tag&lt;/a&gt;&lt;br&gt;&lt;br&gt;Those are patches we added to the package, the difference between
&lt;br&gt;our version and upstream's version. &amp;nbsp;And there hasn't been any
&lt;br&gt;activity upstream for a while.
&lt;br&gt;&lt;br&gt;We really only have 1 open bug report:
&lt;br&gt;&lt;a href=&quot;http://bugs.debian.org/350578&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bugs.debian.org/350578&lt;/a&gt;&lt;br&gt;&lt;br&gt;&amp;gt; &lt;a href=&quot;http://bugs.gentoo.org/show_bug.cgi?id=210564&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bugs.gentoo.org/show_bug.cgi?id=210564&lt;/a&gt;&lt;br&gt;&lt;br&gt;We have fixed this bug long before the gentoo bug report. &amp;nbsp;This is
&lt;br&gt;&lt;a href=&quot;http://bugs.debian.org/304913&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bugs.debian.org/304913&lt;/a&gt;&lt;br&gt;&lt;a href=&quot;http://bugs.debian.org/480187&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bugs.debian.org/480187&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Kurt
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Mad---Dev-f503.html&quot; embed=&quot;fixTarget[503]&quot; target=&quot;_top&quot; &gt;Mad - Dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Maintaining-libid3tag--tp22848196p22852723.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-22848196</id>
	<title>Maintaining libid3tag?</title>
	<published>2009-04-02T06:44:18Z</published>
	<updated>2009-04-02T06:44:18Z</updated>
	<author>
		<name>Andy Grundman-2</name>
	</author>
	<content type="html">Is there any interest in having someone take over maintenance of &amp;nbsp;
&lt;br&gt;libid3tag? &amp;nbsp;There are several patches floating around in various &amp;nbsp;
&lt;br&gt;places [1] that should be rolled into an official release. &amp;nbsp;There are &amp;nbsp;
&lt;br&gt;also some issues related to handling of broken iTunes tags that I'd &amp;nbsp;
&lt;br&gt;like to fix and don't see any patches for. &amp;nbsp;I'm happy to volunteer.
&lt;br&gt;&lt;br&gt;[1]
&lt;br&gt;&lt;a href=&quot;http://patch-tracking.debian.net/package/libid3tag&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://patch-tracking.debian.net/package/libid3tag&lt;/a&gt;&lt;br&gt;&lt;a href=&quot;http://bugs.gentoo.org/show_bug.cgi?id=210564&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bugs.gentoo.org/show_bug.cgi?id=210564&lt;/a&gt;&lt;br&gt;&lt;br&gt;--
&lt;br&gt;Andy Grundman
&lt;br&gt;Logitech Streaming Media Systems (Slim Devices)
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=22848196&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;andy@...&lt;/a&gt; / www.slimdevices.com
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Mad---Dev-f503.html&quot; embed=&quot;fixTarget[503]&quot; target=&quot;_top&quot; &gt;Mad - Dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Maintaining-libid3tag--tp22848196p22848196.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-22680162</id>
	<title>id3tag pkgconfig: -zf</title>
	<published>2009-03-24T05:54:11Z</published>
	<updated>2009-03-24T05:54:11Z</updated>
	<author>
		<name>hollunder</name>
	</author>
	<content type="html">Hi there, I'm investigating an error when attempting to build sonic
&lt;br&gt;visualiser 1.5 and we narrowed it down to the -zf option in the
&lt;br&gt;pkgconfig. Is this a bug in libid3tag or in my distro?
&lt;br&gt;&lt;br&gt;This is the error at compiletime:
&lt;br&gt;&lt;br&gt;g++ -Wl,-O1 -Wl,-rpath,/usr/lib -o sonic-visualiser tmp_obj/main.o
&lt;br&gt;tmp_obj/OSCHandler.o tmp_obj/MainWindow.o tmp_obj/PreferencesDialog.o
&lt;br&gt;tmp_obj/moc_MainWindow.o tmp_obj/moc_PreferencesDialog.o
&lt;br&gt;tmp_obj/qrc_sonic-visualiser.o &amp;nbsp; &amp;nbsp;-L../view -L../layer -L../data
&lt;br&gt;-L../widgets -L../transform -L../plugin -L../base -L../system
&lt;br&gt;-L../framework -L../audioio -L../rdf -L/usr/lib -lsvframework
&lt;br&gt;-lsvaudioio -lsvview -lsvlayer -lsvrdf -lsvtransform -lsvwidgets
&lt;br&gt;-lsvdata -lsvplugin -lsvbase -lsvsystem -lbz2
&lt;br&gt;-L/home/hollunder/builds/vamp-plugin-sdk/pkg/usr/lib -lvamp-hostsdk
&lt;br&gt;-loggz -lfishsound -lvorbisenc -lspeex -lvorbis -logg -lmad -zf
&lt;br&gt;-lid3tag -lrubberband -lfftw3 -lfftw3f -lsndfile -lsamplerate -llrdf
&lt;br&gt;-lrdf -lrasqal -lraptor -lportaudio -ljack -llo -Wl,-Bdynamic -lQtXml
&lt;br&gt;-L/usr/lib -pthread -pthread -lQtGui -L/usr/X11R6/lib -pthread -lpng
&lt;br&gt;-lfreetype -lgobject-2.0 -lSM -lICE -pthread -pthread -lXrender
&lt;br&gt;-lfontconfig -lXext -lX11 -lQtNetwork -lssl -lcrypto -pthread -pthread
&lt;br&gt;-lQtCore -lz -lm -pthread -lgthread-2.0 -lrt -lglib-2.0 -lpthread -ldl
&lt;br&gt;g++: unrecognized option '-zf'
&lt;br&gt;&lt;br&gt;&lt;br&gt;This is the pkgconfig file including the -zf
&lt;br&gt;&lt;br&gt;prefix=/usr
&lt;br&gt;exec_prefix=/usr/bin
&lt;br&gt;libdir=/usr/lib
&lt;br&gt;includedir=/usr/include
&lt;br&gt;&lt;br&gt;Name: ID3TAG
&lt;br&gt;Description: libid3tag - ID3 tag manipulation library
&lt;br&gt;Version: 0.15.0b
&lt;br&gt;Libs: -L${libdir} -lid3tag -zf
&lt;br&gt;Cflags:
&lt;br&gt;&lt;br&gt;&lt;br&gt;Thanks in advance for your help
&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Mad---User-f504.html&quot; embed=&quot;fixTarget[504]&quot; target=&quot;_top&quot; &gt;Mad - User&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/id3tag-pkgconfig%3A--zf-tp22680162p22680162.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-21599584</id>
	<title>About one application for decoder design</title>
	<published>2009-01-22T00:06:08Z</published>
	<updated>2009-01-22T00:06:08Z</updated>
	<author>
		<name>leon deng</name>
	</author>
	<content type="html">Hi,all&lt;br&gt;How are you?&lt;br&gt;I found a source code for mp3 decorder using libmad library. It is called MADAudioFormatReader. if you do not know, it is not a big deal.&lt;br&gt;In this code, It can handle the stereo (2 channles )mp3 file, However, it can not handle single channel mp3 file.&amp;nbsp; &lt;br&gt;
What&amp;#39;s the decorder difference between one channel and two channels mp3 file? I do not think there is a big difference. I think the key is &lt;br&gt;to know the structure in data chunks for both case and use the right function in MAD.&lt;br&gt;
Am I right? Could you give me some clue?&lt;br&gt;I attach the file to this email for reference.&lt;br&gt;Best&lt;br&gt;&lt;br&gt;Leon&amp;nbsp; &lt;br&gt;
&lt;br /&gt;&lt;tt&gt;[MADAudioFormat.cpp]&lt;/tt&gt;&lt;br /&gt;&lt;hr align=&quot;left&quot; width=&quot;300&quot; /&gt;&lt;tt&gt;#include &amp;quot;stdafx.h&amp;quot;
&lt;br&gt;#include &amp;quot;MADAudioFormat.h&amp;quot;
&lt;br&gt;&lt;br&gt;#define FPM_64BIT
&lt;br&gt;#define OPT_ACCURACY
&lt;br&gt;#include &amp;quot;mad.h&amp;quot;
&lt;br&gt;&lt;br&gt;#define madFixedToIEEEfloat(mad) float(jlimit(double(-1.f), double(1.f), (mad * double(1.0 / (1 &amp;lt;&amp;lt; MAD_F_FRACBITS)))))
&lt;br&gt;&lt;br&gt;const int XING_FRAMES = 0x00000001L;
&lt;br&gt;const int XING_BYTES = 0x00000002L;
&lt;br&gt;const int XING_TOC = 0x00000004L;
&lt;br&gt;const int XING_SCALE = 0x00000008L;
&lt;br&gt;&lt;br&gt;struct xing
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; long flags;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; unsigned long frames;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; unsigned long bytes;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; unsigned char toc[100];
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; long scale;
&lt;br&gt;};
&lt;br&gt;&lt;br&gt;class MADAudioFormatReader : public AudioFormatReader
&lt;br&gt;{
&lt;br&gt;public:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; MADAudioFormatReader(InputStream* const sourceStream) :
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AudioFormatReader(sourceStream, T(&amp;quot;MPEG Audio Decoder (MAD)&amp;quot;))
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; usesFloatingPointData = true;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sampleRate = 0;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _streamStartPosition = 0;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _samplesLeftInBuffer = 0;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Skip over ID3v2 tag (if there is one)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; unsigned char tag_[10];
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; memset(&amp;tag_, 0, sizeof(tag_));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int bytesRead = input-&amp;gt;read(&amp;tag_, sizeof(tag_));
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(bytesRead == sizeof(tag_) &amp;&amp; tag_[0] == 'I' &amp;&amp; tag_[1] == 'D' &amp;&amp; tag_[2] == '3')
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _streamStartPosition = sizeof(tag_);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _streamStartPosition += (int(tag_[6]) &amp;lt;&amp;lt; 21)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | (int(tag_[7]) &amp;lt;&amp;lt; 14)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | (int(tag_[8]) &amp;lt;&amp;lt; 7)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | int(tag_[9]);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; input-&amp;gt;setPosition(_streamStartPosition);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mad_stream_init(&amp;_madStream);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mad_frame_init(&amp;_madFrame);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mad_synth_init(&amp;_madSynth);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(scanHeader(&amp;_madFrame.header, &amp;_xing) != -1)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; input-&amp;gt;setPosition(_streamStartPosition);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _streamSize = input-&amp;gt;getTotalLength();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _madSynth.pcm.length = 0;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _madCurTime = mad_timer_zero;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(_xing.flags &amp; XING_FRAMES)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _madTimeLength = _madFrame.header.duration;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mad_timer_multiply(&amp;_madTimeLength, _xing.frames);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Estimate playing time from file size
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mad_timer_set(&amp;_madTimeLength, 0, 1, _madFrame.header.bitrate / 8);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mad_timer_multiply(&amp;_madTimeLength, (long)_streamSize);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sampleRate = _madFrame.header.samplerate;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; lengthInSamples = int64(double(mad_timer_count(_madTimeLength, MAD_UNITS_MILLISECONDS)) / 1000.f * double(sampleRate) + .5f);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bitsPerSample = 16;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; numChannels = MAD_NCHANNELS(&amp;_madFrame.header);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; input-&amp;gt;setPosition(_streamStartPosition);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ~MADAudioFormatReader()
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mad_synth_finish(&amp;_madSynth);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mad_frame_finish(&amp;_madFrame);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mad_stream_finish(&amp;_madStream);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bool read (int** destSamples, int64 startSampleInFile, int numSamples)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(startSampleInFile &amp;gt;= lengthInSamples)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return true;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(startSampleInFile + numSamples &amp;gt; lengthInSamples)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; numSamples = lengthInSamples - startSampleInFile;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(startSampleInFile != _lastSample)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(seek(startSampleInFile))
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _lastSample = startSampleInFile;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; lengthInSamples = _lastSample;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return true;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; float *left = (float*)destSamples[0];
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; float *right = (float*)destSamples[1];
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int numToRead_ = 0;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; while(numSamples &amp;gt; 0)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(_samplesLeftInBuffer &amp;lt;= 0)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; while(mad_frame_decode(&amp;_madFrame, &amp;_madStream) == -1)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(MAD_RECOVERABLE(_madStream.error))
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; continue;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int shift = 0;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(_madStream.next_frame)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; shift = _madStream.bufend - _madStream.next_frame;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; memmove(_buffer, _madStream.next_frame, (size_t)shift);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int64 bytes = input-&amp;gt;read(_buffer + shift, sizeof(_buffer) - shift);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(!bytes)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; lengthInSamples = _lastSample;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _madSynth.pcm.length = 0;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _samplesLeftInBuffer = 0;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return true;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mad_stream_buffer(&amp;_madStream, _buffer, (long)(shift + bytes));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mad_synth_frame(&amp;_madSynth, &amp;_madFrame);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _samplesLeftInBuffer = _madSynth.pcm.length;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _leftChannel = _madSynth.pcm.samples[0];
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (int k = 0;k &amp;lt; _madSynth.pcm.length;k++)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_madSynth.pcm.samples[1][k] = 0;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;_rightChannel = _madSynth.pcm.samples[1];
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mad_timer_add(&amp;_madCurTime, _madFrame.header.duration);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; numToRead_ = (_samplesLeftInBuffer &amp;lt;= numSamples) ? _samplesLeftInBuffer : numSamples;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; numSamples -= numToRead_;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _samplesLeftInBuffer -= numToRead_;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _lastSample += numToRead_;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; while (numToRead_--)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(left)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // (*left++) = madFixedToIEEEfloat(_madSynth.pcm.channels == 1 ? *_leftChannel : *_leftChannel++);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(*left++) = madFixedToIEEEfloat(_madSynth.pcm.channels == 1 ? *_leftChannel++ : *_leftChannel++);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(right)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //(*right++) = madFixedToIEEEfloat(_madSynth.pcm.channels == 1 ? *_leftChannel++ : *_rightChannel++);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(*right++) = madFixedToIEEEfloat(_madSynth.pcm.channels == 1 ? *_rightChannel++: *_rightChannel++ );
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return true;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;private:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bool seek(int64 sample)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(!input)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return false;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int64 milliseconds_ = mad_timer_count(_madTimeLength, MAD_UNITS_MILLISECONDS);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int64 currentMillisecond_ = int64(double(sample) / double(sampleRate) * 1000);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; double fraction_ = double(currentMillisecond_) / double(milliseconds_);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mad_timer_set(&amp;_madCurTime, currentMillisecond_, currentMillisecond_, MAD_UNITS_MILLISECONDS);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(_xing.flags &amp; XING_TOC)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int percent_, p1_, p2_;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; percent_ = int(fraction_ * 100);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p1_ = (percent_ &amp;lt; 100) ? _xing.toc[percent_ &amp;nbsp; &amp;nbsp;] : 0x100;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p2_ = (percent_ &amp;lt; &amp;nbsp;99) ? _xing.toc[percent_ + 1] : 0x100;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; fraction_ = (p1_ + (p2_ - p1_) * (fraction_ * 100 - percent_)) / 0x100;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int64 pos_ = int64(double(_streamSize) * fraction_);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; input-&amp;gt;setPosition(pos_ ? pos_ : _streamStartPosition);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int size = input-&amp;gt;read(_buffer, sizeof(_buffer));
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(!size)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _madSynth.pcm.length = 0;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _samplesLeftInBuffer = 0;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return false;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mad_stream_buffer(&amp;_madStream, _buffer, size);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mad_frame_mute(&amp;_madFrame);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mad_synth_mute(&amp;_madSynth);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int skip_ = 2;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; do
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(!mad_frame_decode(&amp;_madFrame, &amp;_madStream))
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mad_timer_add(&amp;_madCurTime, _madFrame.header.duration);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(!(--skip_))
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mad_synth_frame(&amp;_madSynth, &amp;_madFrame);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(!MAD_RECOVERABLE(_madStream.error))
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; while(skip_);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _madSynth.pcm.length = 0;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _samplesLeftInBuffer = 0;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return true;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int parseXing(struct xing *xing, struct mad_bitptr ptr, unsigned int bitlen)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (bitlen &amp;lt; 64 || mad_bit_read(&amp;ptr, 32) != (('X' &amp;lt;&amp;lt; 24) | ('i' &amp;lt;&amp;lt; 16) | ('n' &amp;lt;&amp;lt; 8) | 'g'))
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; xing-&amp;gt;flags = 0;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return -1;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; xing-&amp;gt;flags = mad_bit_read(&amp;ptr, 32);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bitlen -= 64;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (xing-&amp;gt;flags &amp; XING_FRAMES)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (bitlen &amp;lt; 32)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; xing-&amp;gt;flags = 0;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return -1;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; xing-&amp;gt;frames = mad_bit_read(&amp;ptr, 32);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bitlen -= 32;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (xing-&amp;gt;flags &amp; XING_BYTES) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (bitlen &amp;lt; 32)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; xing-&amp;gt;flags = 0;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return -1;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; xing-&amp;gt;bytes = mad_bit_read(&amp;ptr, 32);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bitlen -= 32;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (xing-&amp;gt;flags &amp; XING_TOC) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int i;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (bitlen &amp;lt; 800)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; xing-&amp;gt;flags = 0;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return -1;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for (i = 0; i &amp;lt; 100; ++i)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; xing-&amp;gt;toc[i] = (unsigned char) mad_bit_read(&amp;ptr, 8);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bitlen -= 800;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (xing-&amp;gt;flags &amp; XING_SCALE) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (bitlen &amp;lt; 32)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; xing-&amp;gt;flags = 0;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return -1;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; xing-&amp;gt;scale = mad_bit_read(&amp;ptr, 32);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bitlen -= 32;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return 0;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int scanHeader(struct mad_header *header, struct xing *xing)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; struct mad_stream stream;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; struct mad_frame frame;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; unsigned char buffer[8192];
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; unsigned int buflen = 0;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int count = 0, result = 0;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mad_stream_init(&amp;stream);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mad_frame_init(&amp;frame);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (xing)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; xing-&amp;gt;flags = 0;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; while(1)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(buflen &amp;lt; sizeof(buffer))
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int64 bytes = input-&amp;gt;read(buffer + buflen, sizeof(buffer) - buflen);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(!bytes)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; result = -1;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; buflen += int(bytes);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mad_stream_buffer(&amp;stream, buffer, buflen);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; while(1)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(mad_frame_decode(&amp;frame, &amp;stream) == -1)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(!MAD_RECOVERABLE(stream.error))
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; break;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; continue;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(count++ || (xing &amp;&amp; parseXing(xing, stream.anc_ptr, stream.anc_bitlen) == 0))
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (count || stream.error != MAD_ERROR_BUFLEN)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; break;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; memmove(buffer, stream.next_frame, (buflen = &amp;buffer[buflen] - stream.next_frame));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(count)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(header)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; *header = frame.header;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; result = -1;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mad_frame_finish(&amp;frame);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mad_stream_finish(&amp;stream);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return result;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&lt;br&gt;private:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; struct xing _xing;				/* Xing VBR tag data */
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; struct mad_stream _madStream;		/* MAD stream structure */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; struct mad_frame _madFrame;			/* MAD frame structure */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; struct mad_synth _madSynth;			/* MAD synth structure */
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int _samplesLeftInBuffer;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int64 _streamSize;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int64 _lastSample;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int64 _streamStartPosition;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mad_fixed_t *_leftChannel;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mad_fixed_t *_rightChannel;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mad_timer_t _madCurTime;				/* current playing time position */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mad_timer_t _madTimeLength;		/* total playing time of current stream */
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; unsigned char _buffer[40000];	/* input stream buffer */
&lt;br&gt;};
&lt;br&gt;&lt;br&gt;static const tchar* const extensions[] = &amp;nbsp; &amp;nbsp;{ T(&amp;quot;.mp3&amp;quot;), T(&amp;quot;.mp2&amp;quot;), T(&amp;quot;.mpg&amp;quot;), 0 };
&lt;br&gt;MADAudioFormat::MADAudioFormat() : AudioFormat(T(&amp;quot;MPEG Audio Decoder (MAD)&amp;quot;), (const tchar**) extensions)
&lt;br&gt;{
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;MADAudioFormat::~MADAudioFormat()
&lt;br&gt;{
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;bool MADAudioFormat::canHandleFile(const File&amp; fileToTest)
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return fileToTest.hasFileExtension(T(&amp;quot;mp3&amp;quot;)) ||
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; fileToTest.hasFileExtension(T(&amp;quot;mp2&amp;quot;)) ||
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; fileToTest.hasFileExtension(T(&amp;quot;mpg&amp;quot;));
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;const Array&amp;lt;int&amp;gt; MADAudioFormat::getPossibleSampleRates()
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; const int rates[] = { 44100, 48000, 0 };
&lt;br&gt;&amp;nbsp; &amp;nbsp; return Array &amp;lt;int&amp;gt;(rates);
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;const Array&amp;lt;int&amp;gt; MADAudioFormat::getPossibleBitDepths()
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; const int depths[] = { 16, 24, 32, 0 };
&lt;br&gt;&amp;nbsp; &amp;nbsp; return Array&amp;lt;int&amp;gt; (depths);
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;bool MADAudioFormat::canDoStereo()
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return true;
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;bool MADAudioFormat::canDoMono()
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return true;
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;bool MADAudioFormat::isCompressed()
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return true;
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;AudioFormatReader* MADAudioFormat::createReaderFor(InputStream* sourceStream, const bool deleteStreamIfOpeningFails)
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AudioFormatReader* r = new MADAudioFormatReader(sourceStream);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; if (r-&amp;gt;sampleRate == 0)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (!deleteStreamIfOpeningFails)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; delete r;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; return r;
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;AudioFormatWriter* MADAudioFormat::createWriterFor(OutputStream* streamToWriteTo, double sampleRateToUse, unsigned int numberOfChannels, int bitsPerSample, const StringPairArray&amp; metadataValues, int qualityOptionIndex)
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return 0;
&lt;br&gt;}
&lt;br&gt;&lt;/tt&gt;&lt;hr align=&quot;left&quot; width=&quot;300&quot; /&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Mad---Dev-f503.html&quot; embed=&quot;fixTarget[503]&quot; target=&quot;_top&quot; &gt;Mad - Dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/About-one-application-for-decoder-design-tp21599584p21599584.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-21450704</id>
	<title>Re: About Xing VBR tag data</title>
	<published>2009-01-13T22:23:07Z</published>
	<updated>2009-01-13T22:23:07Z</updated>
	<author>
		<name>Rob Leslie</name>
	</author>
	<content type="html">On Jan 11, 2009, at 12:03 AM, leon deng wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; I am new to MAD. I got confused about XING tag. Is XING also a mp3 &amp;nbsp;
&lt;br&gt;&amp;gt; encoder? or XING is Tag in the mp3 format.
&lt;br&gt;&amp;gt; If it is the later case, in the encoder side, we can put the size of &amp;nbsp;
&lt;br&gt;&amp;gt; the data in XING tag, and we can get the size of the file in XING &amp;nbsp;
&lt;br&gt;&amp;gt; tag in the decoder side. Because,
&lt;br&gt;&amp;gt; we do not want to calculate the data size,and want to get the data &amp;nbsp;
&lt;br&gt;&amp;gt; size in XING tag.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I also found XING is also a mp3 encoder on website.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; So could you tell me what the XING is ?
&lt;/div&gt;&lt;br&gt;&lt;br&gt;Xing was responsible for creating an encoder notable for its VBR tag, &amp;nbsp;
&lt;br&gt;which enables more accurate seeking within variable bitrate files. &amp;nbsp; 
&lt;br&gt;Among other things, Xing's VBR tag contains information about the &amp;nbsp;
&lt;br&gt;total duration of an MP3 file, something that is not otherwise readily &amp;nbsp;
&lt;br&gt;available from the MPEG stream.
&lt;br&gt;&lt;br&gt;On Jan 13, 2009, at 11:18 AM, leon deng wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; I want to find some mp3 &amp;nbsp;headers, such as XING header,which can &amp;nbsp;
&lt;br&gt;&amp;gt; provide the duration information(total play time). I want to make &amp;nbsp;
&lt;br&gt;&amp;gt; use of it to achieve mp3 streaming support in libmad.
&lt;br&gt;&amp;gt; So there are two questions.
&lt;br&gt;&amp;gt; 1.I wrote a mp3 header reader, and it reads &amp;nbsp;headers in the first 10 &amp;nbsp;
&lt;br&gt;&amp;gt; frames. I only read first 4 bytes for each frame. where is XING &amp;nbsp;
&lt;br&gt;&amp;gt; duration field located, or could you provide some header &amp;nbsp;
&lt;br&gt;&amp;gt; documentation for XING header to me?
&lt;br&gt;&amp;gt; 2. Could you please tell me some other headers which can provide &amp;nbsp;
&lt;br&gt;&amp;gt; duration information in it?
&lt;/div&gt;&lt;br&gt;The Xing VBR tag, if present, is located within the ancillary data &amp;nbsp;
&lt;br&gt;portion of the first audio frame (unless the frame has CRC protection &amp;nbsp;
&lt;br&gt;enabled, in which case the tag is misplaced and overlaps the end of &amp;nbsp;
&lt;br&gt;the frame's audio data by two octets). &amp;nbsp;You will find some code to &amp;nbsp;
&lt;br&gt;read the tag in the madplay distribution, within the files tag.c and &amp;nbsp;
&lt;br&gt;tag.h.
&lt;br&gt;&lt;br&gt;In general, MPEG audio streams only contain duration information about &amp;nbsp;
&lt;br&gt;each individual frame. &amp;nbsp;If you know the total number of frames within &amp;nbsp;
&lt;br&gt;a file, you can calculate the total duration (assuming a constant &amp;nbsp;
&lt;br&gt;sample rate). &amp;nbsp;Unfortunately, the total number of frames is difficult &amp;nbsp;
&lt;br&gt;to estimate in VBR files, and the only way to correctly calculate the &amp;nbsp;
&lt;br&gt;total duration -- absent a Xing tag or other source of metadata -- is &amp;nbsp;
&lt;br&gt;to scan every frame in the file.
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Rob Leslie
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=21450704&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;rob@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Mad---Dev-f503.html&quot; embed=&quot;fixTarget[503]&quot; target=&quot;_top&quot; &gt;Mad - Dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/About-Xing-VBR-tag-data-tp21396958p21450704.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-21443658</id>
	<title>Re: How to achieve mp3 streaming using MAD?</title>
	<published>2009-01-13T12:06:50Z</published>
	<updated>2009-01-13T12:06:50Z</updated>
	<author>
		<name>Robert Hegemann</name>
	</author>
	<content type="html">Hello Leon!
&lt;br&gt;&lt;br&gt;Am 13.01.2009, 20:18 Uhr, schrieb leon deng &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=21443658&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;pluginstarter@...&lt;/a&gt;&amp;gt;:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Hi,all
&lt;br&gt;&amp;gt; I want to find some mp3 &amp;nbsp;headers, such as XING header,which can provide &amp;nbsp;
&lt;br&gt;&amp;gt; the
&lt;br&gt;&amp;gt; duration information(total play time). I want to make use of it to &amp;nbsp;
&lt;br&gt;&amp;gt; achieve
&lt;br&gt;&amp;gt; mp3 streaming support in libmad.
&lt;br&gt;&amp;gt; So there are two questions.
&lt;br&gt;&amp;gt; 1.I wrote a mp3 header reader, and it reads &amp;nbsp;headers in the first 10 &amp;nbsp;
&lt;br&gt;&amp;gt; frames.
&lt;br&gt;&amp;gt; I only read first 4 bytes for each frame. where is XING duration field
&lt;br&gt;&amp;gt; located, or could you provide some header documentation for XING header &amp;nbsp;
&lt;br&gt;&amp;gt; to
&lt;br&gt;&amp;gt; me?
&lt;br&gt;&amp;gt; 2. Could you please tell me some other headers which can provide duration
&lt;br&gt;&amp;gt; information in it?
&lt;/div&gt;&lt;br&gt;Follow this link:
&lt;br&gt;&lt;a href=&quot;http://www.hydrogenaudio.org/forums/lofiversion/index.php/t31277.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.hydrogenaudio.org/forums/lofiversion/index.php/t31277.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;gt; Best,
&lt;br&gt;&amp;gt; Leon
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Ciao Robert
&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Mad---Dev-f503.html&quot; embed=&quot;fixTarget[503]&quot; target=&quot;_top&quot; &gt;Mad - Dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/How-to-achieve-mp3-streaming-using-MAD--tp21442806p21443658.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-21442806</id>
	<title>How to achieve mp3 streaming using MAD?</title>
	<published>2009-01-13T11:18:35Z</published>
	<updated>2009-01-13T11:18:35Z</updated>
	<author>
		<name>leon deng</name>
	</author>
	<content type="html">Hi,all&lt;br&gt;I want to find some mp3&amp;nbsp; headers, such as XING header,which can provide the duration information(total play time). I want to make use of it to achieve mp3 streaming support in libmad.&lt;br&gt;So there are two questions.&lt;br&gt;
1.I wrote a mp3 header reader, and it reads&amp;nbsp; headers in the first 10 frames. I only read first 4 bytes for each frame. where is XING duration field located, or could you provide some header documentation for XING header to me?&lt;br&gt;
2. Could you please tell me some other headers which can provide duration information in it?&lt;br&gt;&lt;br&gt;&lt;br&gt;Best,&lt;br&gt;Leon&lt;br&gt;&lt;br&gt;
&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Mad---Dev-f503.html&quot; embed=&quot;fixTarget[503]&quot; target=&quot;_top&quot; &gt;Mad - Dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/How-to-achieve-mp3-streaming-using-MAD--tp21442806p21442806.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-21396958</id>
	<title>About Xing VBR tag data</title>
	<published>2009-01-11T00:03:39Z</published>
	<updated>2009-01-11T00:03:39Z</updated>
	<author>
		<name>leon deng</name>
	</author>
	<content type="html">Hi ,all&lt;br&gt;I am new to MAD. I got confused about XING tag. Is XING also a mp3 encoder? or XING is Tag in the mp3 format.&lt;br&gt;If it is the later case, in the encoder side, we can put the size of the data in XING tag, and we can get the size of the file in XING tag in the decoder side. Because,&lt;br&gt;
we do not want to calculate the data size,and want to get the data size in XING tag.&lt;br&gt;&lt;br&gt;I also found XING is also a mp3 encoder on website.&lt;br&gt;&lt;br&gt;So could you tell me what the XING is ?&lt;br&gt;
&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Mad---Dev-f503.html&quot; embed=&quot;fixTarget[503]&quot; target=&quot;_top&quot; &gt;Mad - Dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/About-Xing-VBR-tag-data-tp21396958p21396958.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-20787830</id>
	<title>playback/decoding problem</title>
	<published>2008-12-02T00:05:21Z</published>
	<updated>2008-12-02T00:05:21Z</updated>
	<author>
		<name>Mathias K.-2</name>
	</author>
	<content type="html">Hello,
&lt;br&gt;&lt;br&gt;i have a problem with one stream that is not correct decoded by libmad. I use libmad-0.15.1b-r5 and mplayer with the following command line:
&lt;br&gt;&lt;br&gt;mplayer -ac mad &lt;a href=&quot;http://gffstream.ic.llnwd.net/stream/gffstream_w19a&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://gffstream.ic.llnwd.net/stream/gffstream_w19a&lt;/a&gt;&lt;br&gt;&lt;br&gt;This is a mp3 radio stream and i get ugly noise and spikes. I can try another stream and it works very well. Can anyone tell me why this stream is not correct decoded. I have tried some other decoders
&lt;br&gt;but its always the same problem.
&lt;br&gt;&lt;br&gt;&lt;br&gt;Thanks,
&lt;br&gt;&lt;br&gt;Mathias
&lt;br&gt;&lt;br&gt;&lt;br&gt;---
&lt;br&gt;&lt;br&gt;OUTPUT:
&lt;br&gt;&lt;br&gt;mplayer -ac mad &lt;a href=&quot;http://gffstream.ic.llnwd.net/stream/gffstream_w19a&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://gffstream.ic.llnwd.net/stream/gffstream_w19a&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Connecting to server gffstream.ic.llnwd.net[87.248.219.36]: 80...
&lt;br&gt;Cache size set to 320 KBytes
&lt;br&gt;Cache fill: 15.00% (49152 bytes)
&lt;br&gt;Audio only file format detected.
&lt;br&gt;==========================================================================
&lt;br&gt;Forced audio codec: mad
&lt;br&gt;Opening audio decoder: [libmad] libmad mpeg audio decoder
&lt;br&gt;AUDIO: 44100 Hz, 2 ch, s16le, 128.0 kbit/9.07% (ratio: 16000-&amp;gt;176400)
&lt;br&gt;Selected audio codec: [mad] afm: libmad (libMAD MPEG layer 1-2-3)
&lt;br&gt;==========================================================================
&lt;br&gt;AO: [alsa] 48000Hz 2ch s16le (2 bytes per sample)
&lt;br&gt;Video: no video
&lt;br&gt;Starting playback...
&lt;br&gt;&lt;br&gt;---
&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Mad---Dev-f503.html&quot; embed=&quot;fixTarget[503]&quot; target=&quot;_top&quot; &gt;Mad - Dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/playback-decoding-problem-tp20787830p20787830.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-20177452</id>
	<title>Playback issues</title>
	<published>2008-10-26T13:00:03Z</published>
	<updated>2008-10-26T13:00:03Z</updated>
	<author>
		<name>henke37</name>
	</author>
	<content type="html">Hi, I am trying to make a sound library for the Wii that uses libmad for 
&lt;br&gt;the mp3 decoding. However, I seem to have a problem, my code reports a 
&lt;br&gt;lot of lost sync errors when decoding the frames. Could someone please 
&lt;br&gt;take a look at my code and see if I am doing something obviously wrong?
&lt;br&gt;&lt;br&gt;You can find my code at svn://henke37.cjb.net/sound/ , the main file is 
&lt;br&gt;newMP3Player.cpp .
&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Mad---Dev-f503.html&quot; embed=&quot;fixTarget[503]&quot; target=&quot;_top&quot; &gt;Mad - Dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Playback-issues-tp20177452p20177452.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-20055736</id>
	<title>Madplay improved patch for alsa audio</title>
	<published>2008-10-19T05:25:46Z</published>
	<updated>2008-10-19T05:25:46Z</updated>
	<author>
		<name>Micha Nelissen</name>
	</author>
	<content type="html">Hi,
&lt;br&gt;&lt;br&gt;Attached is an improved patch for alsa backend of madplay.
&lt;br&gt;* fix allocation of buffer, buffer_size is number of frames
&lt;br&gt;* use default 16 bit depth (some hardware has small buffers, 16/24 bit
&lt;br&gt;difference is very small)
&lt;br&gt;&lt;br&gt;Regards,
&lt;br&gt;&lt;br&gt;Micha
&lt;br&gt;&lt;br&gt;&lt;br /&gt;--- madplay-0.15.2b/audio_alsa.c	2008-10-18 15:10:16.000000000 +0200
&lt;br&gt;+++ madplay-0.15.2b/audio_alsa.c.new	2008-10-18 15:03:27.000000000 +0200
&lt;br&gt;@@ -28,31 +28,30 @@
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;#include &amp;lt;errno.h&amp;gt;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-#define ALSA_PCM_OLD_HW_PARAMS_API
&lt;br&gt;-#define ALSA_PCM_OLD_SW_PARAMS_API
&lt;br&gt;&amp;nbsp;#include &amp;lt;alsa/asoundlib.h&amp;gt;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;#include &amp;lt;mad.h&amp;gt;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;#include &amp;quot;audio.h&amp;quot;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-char *buf	= NULL;
&lt;br&gt;-int paused	= 0;
&lt;br&gt;+#define BUFFER_TIME_MAX &amp;nbsp; &amp;nbsp; 500000
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-int rate	= -1;
&lt;br&gt;-int channels	= -1;
&lt;br&gt;-int bitdepth	= -1;
&lt;br&gt;-int sample_size	= -1;
&lt;br&gt;-
&lt;br&gt;-int buffer_time		= 500000;
&lt;br&gt;-int period_time		= 100000;
&lt;br&gt;-char *defaultdev	= &amp;quot;plughw:0,0&amp;quot;;
&lt;br&gt;+unsigned char *buf &amp;nbsp;= NULL;
&lt;br&gt;+int paused	 &amp;nbsp; &amp;nbsp;= 0;
&lt;br&gt;+
&lt;br&gt;+unsigned int rate &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = 0;
&lt;br&gt;+unsigned int channels	 &amp;nbsp; &amp;nbsp;= -1;
&lt;br&gt;+unsigned int bitdepth	 &amp;nbsp; &amp;nbsp;= -1;
&lt;br&gt;+unsigned int sample_size &amp;nbsp; &amp;nbsp;= -1;
&lt;br&gt;+
&lt;br&gt;+unsigned int buffer_time;
&lt;br&gt;+unsigned int period_time;
&lt;br&gt;+char *defaultdev	 &amp;nbsp; &amp;nbsp;= &amp;quot;plughw:0,0&amp;quot;;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;snd_pcm_hw_params_t *alsa_hwparams;
&lt;br&gt;&amp;nbsp;snd_pcm_sw_params_t *alsa_swparams;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-snd_pcm_sframes_t buffer_size;
&lt;br&gt;-snd_pcm_sframes_t period_size;
&lt;br&gt;+snd_pcm_uframes_t buffer_size;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;snd_pcm_format_t &amp;nbsp;alsa_format = -1;
&lt;br&gt;&amp;nbsp;snd_pcm_access_t &amp;nbsp;alsa_access = SND_PCM_ACCESS_MMAP_INTERLEAVED;
&lt;br&gt;@@ -66,14 +65,20 @@
&lt;br&gt;&amp;nbsp;		 snd_pcm_hw_params_t *params,
&lt;br&gt;&amp;nbsp;		 snd_pcm_access_t access)
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;-	int err, dir;
&lt;br&gt;-	
&lt;br&gt;+	int err;
&lt;br&gt;+
&lt;br&gt;&amp;nbsp;	/* choose all parameters */
&lt;br&gt;&amp;nbsp;	err = snd_pcm_hw_params_any(handle,params);
&lt;br&gt;&amp;nbsp;	if (err &amp;lt; 0) {
&lt;br&gt;&amp;nbsp;		printf(&amp;quot;Access type not available for playback: %s\n&amp;quot;, snd_strerror(err));
&lt;br&gt;&amp;nbsp;		return err;
&lt;br&gt;&amp;nbsp;	}
&lt;br&gt;+	/* set the access type */
&lt;br&gt;+	err = snd_pcm_hw_params_set_access(handle, params, alsa_access);
&lt;br&gt;+	if (err &amp;lt; 0) {
&lt;br&gt;+		printf(&amp;quot;Sample format not available for playback: %s\n&amp;quot;, snd_strerror(err));
&lt;br&gt;+		return err;
&lt;br&gt;+	}
&lt;br&gt;&amp;nbsp;	/* set the sample format */
&lt;br&gt;&amp;nbsp;	err = snd_pcm_hw_params_set_format(handle, params, alsa_format);
&lt;br&gt;&amp;nbsp;	if (err &amp;lt; 0) {
&lt;br&gt;@@ -87,29 +92,38 @@
&lt;br&gt;&amp;nbsp;		return err;
&lt;br&gt;&amp;nbsp;	}
&lt;br&gt;&amp;nbsp;	/* set the stream rate */
&lt;br&gt;-	err = snd_pcm_hw_params_set_rate_near(handle, params, rate, 0);
&lt;br&gt;+	err = snd_pcm_hw_params_set_rate(handle, params, rate, 0);
&lt;br&gt;&amp;nbsp;	if (err &amp;lt; 0) {
&lt;br&gt;&amp;nbsp;		printf(&amp;quot;Rate %iHz not available for playback: %s\n&amp;quot;, rate, snd_strerror(err));
&lt;br&gt;&amp;nbsp;		return err;
&lt;br&gt;&amp;nbsp;	}
&lt;br&gt;-	if (err != rate) {
&lt;br&gt;-		printf(&amp;quot;Rate doesn't match (requested %iHz, get %iHz)\n&amp;quot;, rate, err);
&lt;br&gt;-		return -EINVAL;
&lt;br&gt;-	}
&lt;br&gt;+	err = snd_pcm_hw_params_get_buffer_time_max(params, &amp;buffer_time, NULL);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (err &amp;lt; 0) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;printf(&amp;quot;Unable to retrieve buffer time: %s\n&amp;quot;, snd_strerror(err));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return err;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (buffer_time &amp;gt; BUFFER_TIME_MAX)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;buffer_time = BUFFER_TIME_MAX;
&lt;br&gt;&amp;nbsp;	/* set buffer time */
&lt;br&gt;-	err = snd_pcm_hw_params_set_buffer_time_near(handle, params, buffer_time, &amp;dir);
&lt;br&gt;+	err = snd_pcm_hw_params_set_buffer_time_near(handle, params, &amp;buffer_time, 0);
&lt;br&gt;&amp;nbsp;	if (err &amp;lt; 0) {
&lt;br&gt;&amp;nbsp;		printf(&amp;quot;Unable to set buffer time %i for playback: %s\n&amp;quot;, buffer_time, snd_strerror(err));
&lt;br&gt;&amp;nbsp;		return err;
&lt;br&gt;&amp;nbsp;	}
&lt;br&gt;-	buffer_size = snd_pcm_hw_params_get_buffer_size(params);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (period_time * 4 &amp;gt; buffer_time)
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;period_time = buffer_time / 4;
&lt;br&gt;&amp;nbsp;	/* set period time */
&lt;br&gt;-	err = snd_pcm_hw_params_set_period_time_near(handle, params, period_time, &amp;dir);
&lt;br&gt;+	err = snd_pcm_hw_params_set_period_time_near(handle, params, &amp;period_time, NULL);
&lt;br&gt;&amp;nbsp;	if (err &amp;lt; 0) {
&lt;br&gt;&amp;nbsp;		printf(&amp;quot;Unable to set period time %i for playback: %s\n&amp;quot;, period_time, snd_strerror(err));
&lt;br&gt;&amp;nbsp;		return err;
&lt;br&gt;&amp;nbsp;	}
&lt;br&gt;-	period_size = snd_pcm_hw_params_get_period_size(params, &amp;dir);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/* retrieve buffer size */
&lt;br&gt;+	err = snd_pcm_hw_params_get_buffer_size(params, &amp;buffer_size);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (err &amp;lt; 0) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;printf(&amp;quot;Unable to retrieve buffer size: %s\n&amp;quot;, snd_strerror(err));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return err;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp;	/* write the parameters to device */
&lt;br&gt;&amp;nbsp;	err = snd_pcm_hw_params(handle, params);
&lt;br&gt;&amp;nbsp;	if (err &amp;lt; 0) {
&lt;br&gt;@@ -123,6 +137,7 @@
&lt;br&gt;&amp;nbsp;int set_swparams(snd_pcm_t *handle,
&lt;br&gt;&amp;nbsp;		 snd_pcm_sw_params_t *params)
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;unsigned int start_threshold;
&lt;br&gt;&amp;nbsp;	int err;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/* get current swparams */
&lt;br&gt;@@ -136,13 +151,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (err &amp;lt; 0) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;printf(&amp;quot;Unable to set start threshold mode for playback: %s\n&amp;quot;, snd_strerror(err));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return err;
&lt;br&gt;-										 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/* allow transfer when at least period_size samples can be processed */
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;err = snd_pcm_sw_params_set_avail_min(handle, params, period_size);
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (err &amp;lt; 0) {
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;printf(&amp;quot;Unable to set avail min for playback: %s\n&amp;quot;, snd_strerror(err));
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return err;
&lt;br&gt;-												 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;+	}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/* align all transfers to 1 samples */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;err = snd_pcm_sw_params_set_xfer_align(handle, params, 1);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (err &amp;lt; 0) {
&lt;br&gt;@@ -190,7 +199,7 @@
&lt;br&gt;&amp;nbsp;	rate		= config-&amp;gt;speed;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	if ( bitdepth == 0 )
&lt;br&gt;-		config-&amp;gt;precision = bitdepth = 32;
&lt;br&gt;+		config-&amp;gt;precision = bitdepth = 16;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	switch (bitdepth)
&lt;br&gt;&amp;nbsp;	{
&lt;br&gt;@@ -241,7 +250,7 @@
&lt;br&gt;&amp;nbsp;		return -1;
&lt;br&gt;&amp;nbsp;	}
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-	buf = malloc(buffer_size);
&lt;br&gt;+	buf = malloc(buffer_size * sample_size);
&lt;br&gt;&amp;nbsp;	if (buf == NULL) {
&lt;br&gt;&amp;nbsp;		audio_error=&amp;quot;unable to allocate output buffer table&amp;quot;;
&lt;br&gt;&amp;nbsp;		return -1;
&lt;br&gt;@@ -279,7 +288,7 @@
&lt;br&gt;&amp;nbsp;int play(struct audio_play *play)
&lt;br&gt;&amp;nbsp;{
&lt;br&gt;&amp;nbsp;	int err, len;
&lt;br&gt;-	char *ptr;
&lt;br&gt;+	unsigned char *ptr;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	ptr = buf;
&lt;br&gt;&amp;nbsp;	len = play-&amp;gt;nsamples;
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Mad---Dev-f503.html&quot; embed=&quot;fixTarget[503]&quot; target=&quot;_top&quot; &gt;Mad - Dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Madplay-improved-patch-for-alsa-audio-tp20055736p20055736.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-19962876</id>
	<title>libmad-0.15.1b does not compile on Fedora 9</title>
	<published>2008-10-13T13:00:24Z</published>
	<updated>2008-10-13T13:00:24Z</updated>
	<author>
		<name>Joao Moreira</name>
	</author>
	<content type="html">Hi,
&lt;br&gt;&lt;br&gt;[Posted this on mad-dev some days ago, got no answer...]
&lt;br&gt;&lt;br&gt;I've just installed a clean Fedora 9 distro, and I tried to compile
&lt;br&gt;libmad-0.15.1b (which I had done fine previously, under Fedora 5),
&lt;br&gt;I got the following error :
&lt;br&gt;&lt;br&gt;gcc -DHAVE_CONFIG_H -I. -I. -I. -DFPM_INTEL -DASO_ZEROCHECK -Wall 
&lt;br&gt;-march=i486 -g -O -fforce-mem -fforce-addr -fthread-jumps 
&lt;br&gt;-fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fregmove 
&lt;br&gt;-fschedule-insns2 -fstrength-reduce -MT version.lo -MD -MP -MF 
&lt;br&gt;.deps/version.Tpo -c version.c &amp;nbsp;-fPIC -DPIC -o .libs/version.o
&lt;br&gt;cc1: error: unrecognized command line option &amp;quot;-fforce-mem&amp;quot;
&lt;br&gt;make[2]: *** [version.lo] Error 1
&lt;br&gt;&lt;br&gt;gcc version 4.3.0 does not have the &amp;quot;-fforce-mem&amp;quot; option... what can I do ?
&lt;br&gt;is there a way (a configure option) to disable this ?
&lt;br&gt;&lt;br&gt;Thx,
&lt;br&gt;Joao
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Joao Moreira de Sa Coutinho
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=19962876&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;joao.moreira@...&lt;/a&gt;
&lt;br&gt;Tel.: 08.70.23.48.29
&lt;br&gt;Mob.: 06.28.90.83.67
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Mad---User-f504.html&quot; embed=&quot;fixTarget[504]&quot; target=&quot;_top&quot; &gt;Mad - User&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/libmad-0.15.1b-does-not-compile-on-Fedora-9-tp19962876p19962876.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-19933645</id>
	<title>libmad-0.15.1b does not compile on Fedora 9</title>
	<published>2008-10-11T08:27:11Z</published>
	<updated>2008-10-11T08:27:11Z</updated>
	<author>
		<name>Joao Moreira</name>
	</author>
	<content type="html">Hi,
&lt;br&gt;&lt;br&gt;I've just installed a clean Fedora 9 distro, and I tried to compile
&lt;br&gt;libmad-0.15.1b (which I had done fine previously, under Fedora 5),
&lt;br&gt;I got the following error :
&lt;br&gt;&lt;br&gt;&amp;nbsp;gcc -DHAVE_CONFIG_H -I. -I. -I. -DFPM_INTEL -DASO_ZEROCHECK -Wall 
&lt;br&gt;-march=i486 -g -O -fforce-mem -fforce-addr -fthread-jumps 
&lt;br&gt;-fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fregmove 
&lt;br&gt;-fschedule-insns2 -fstrength-reduce -MT version.lo -MD -MP -MF 
&lt;br&gt;.deps/version.Tpo -c version.c &amp;nbsp;-fPIC -DPIC -o .libs/version.o
&lt;br&gt;cc1: error: unrecognized command line option &amp;quot;-fforce-mem&amp;quot;
&lt;br&gt;make[2]: *** [version.lo] Error 1
&lt;br&gt;&lt;br&gt;gcc version 4.3.0 does not have the &amp;quot;-fforce-mem&amp;quot; option... what can I do ?
&lt;br&gt;is there a way (a configure option) to disable this ?
&lt;br&gt;&lt;br&gt;Thx,
&lt;br&gt;Joao
&lt;br&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Joao Moreira de Sa Coutinho
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=19933645&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;joao.moreira@...&lt;/a&gt;
&lt;br&gt;Tel.: 08.70.23.48.29
&lt;br&gt;Mob.: 06.28.90.83.67
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Mad---Dev-f503.html&quot; embed=&quot;fixTarget[503]&quot; target=&quot;_top&quot; &gt;Mad - Dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/libmad-0.15.1b-does-not-compile-on-Fedora-9-tp19933645p19933645.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-19568128</id>
	<title>Re: madplay: How to select a specific ALSA card</title>
	<published>2008-09-19T01:20:27Z</published>
	<updated>2008-09-19T01:20:27Z</updated>
	<author>
		<name>Rafal Rusin</name>
	</author>
	<content type="html">&lt;br&gt;&lt;blockquote class=&quot;quote light-black dark-border-color&quot;&gt;&lt;div class=&quot;quote light-border-color&quot;&gt;
&lt;div class=&quot;quote-author&quot; style=&quot;font-weight: bold;&quot;&gt;joker1999 wrote:&lt;/div&gt;
&lt;div class=&quot;quote-message shrinkable-quote&quot;&gt;&lt;blockquote class=&quot;quote light-black dark-border-color&quot;&gt;&lt;div class=&quot;quote light-border-color&quot;&gt;
&lt;div class=&quot;quote-author&quot; style=&quot;font-weight: bold;&quot;&gt;Thomas Reitmayr-2 wrote:&lt;/div&gt;
&lt;div class=&quot;quote-message shrinkable-quote&quot;&gt;Hi,
&lt;br&gt;I just started using madplay a short while ago and I was wondering
&lt;br&gt;whether it is possible to select an ALSA card different from the default
&lt;br&gt;one for audio output.
&lt;br&gt;&amp;gt;From looking at the code it seems like the PATH part of --output is
&lt;br&gt;used, however
&lt;br&gt;&amp;nbsp; madplay --output=alsa:plughw:1 myfile.mp3
&lt;br&gt;chokes as the TYPE alsa does not exist (in audio.c).
&lt;br&gt;&lt;br&gt;Did I miss something in the command line or is this a bug / missing
&lt;br&gt;feature (for which I could provide a patch)?
&lt;br&gt;&lt;br&gt;Thanks,
&lt;br&gt;-Thomas
&lt;br&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/blockquote&gt;
You can try:
&lt;br&gt;madplay -o wave:- something.mp3 | aplay
&lt;br&gt;&lt;br&gt;Regards
&lt;/div&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;br&gt;You may also need 
&lt;br&gt;mount /dev/sda1 -o remount,async,noatime
&lt;br&gt;on nslu2 to get better usb transfer, so you won't experience hangs during playback.
&lt;br&gt;&lt;br&gt;Regards&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Mad---Dev-f503.html&quot; embed=&quot;fixTarget[503]&quot; target=&quot;_top&quot; &gt;Mad - Dev&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/madplay%3A-How-to-select-a-specific-ALSA-card-tp14695714p19568128.html" />
</entry>

</feed>
