<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>al_load_sample&#39;s loading many data</title>
		<link>http://www.allegro.cc/forums/view/615115</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Tue, 24 Feb 2015 21:57:52 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Few days ago, I tried to include music files for my program. I wrote right function which read my file with headers of files music and same files.<br />I have not used music file yet. And now when I want load this 19 files (33 MB), I&#39;m loading this samples and I get over 700 MB data in memory too.</p><p>I&#39;m reading these files from my file:
</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span><span class="k1">for</span><span class="k2">(</span><span class="k1">unsigned</span> i <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> i <span class="k3">&lt;</span> songCount<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number">  2</span><span class="k2">{</span>
<span class="number">  3</span>  buffer <span class="k3">=</span> <span class="k1">new</span> <span class="k1">char</span><span class="k2">[</span>songs<span class="k2">[</span>i<span class="k2">]</span><span class="k3">-</span><span class="k3">&gt;</span>fileLength<span class="k2">]</span><span class="k2">;</span>
<span class="number">  4</span>  file.read<span class="k2">(</span>buffer, songs<span class="k2">[</span>i<span class="k2">]</span><span class="k3">-</span><span class="k3">&gt;</span>fileLength<span class="k2">)</span><span class="k2">;</span>
<span class="number">  5</span>  alFile <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_open_memfile"><span class="a">al_open_memfile</span></a><span class="k2">(</span><span class="k2">(</span><span class="k1">void</span><span class="k3">*</span><span class="k2">)</span>buffer, songs<span class="k2">[</span>i<span class="k2">]</span><span class="k3">-</span><span class="k3">&gt;</span>fileLength, <span class="s">"rb"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  6</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_SAMPLE"><span class="a">ALLEGRO_SAMPLE</span></a> <span class="k3">*</span>sample <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_sample_f"><span class="a">al_load_sample_f</span></a><span class="k2">(</span>alFile, songs<span class="k2">[</span>i<span class="k2">]</span><span class="k3">-</span><span class="k3">&gt;</span>fileType.c_str<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  7</span>  songs<span class="k2">[</span>i<span class="k2">]</span><span class="k3">-</span><span class="k3">&gt;</span>addSongFile<span class="k2">(</span>sample<span class="k2">)</span><span class="k2">;</span>
<span class="number">  8</span>  std::cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="k3">&amp;</span>buffer <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">" "</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> alFile <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">" "</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> sample <span class="k3">&lt;</span><span class="k3">&lt;</span> std::endl<span class="k2">;</span>
<span class="number">  9</span>  <a href="http://www.allegro.cc/manual/al_fclose"><span class="a">al_fclose</span></a><span class="k2">(</span>alFile<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 10</span>  alFile <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number"> 11</span>  <span class="k1">delete</span><span class="k2">[</span><span class="k2">]</span> buffer<span class="k2">;</span>
<span class="number"> 12</span>  buffer <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number"> 13</span><span class="k2">}</span>
</div></div><p>

I thought that I do something wrong, and get memory leak. So I tried load these files &quot;manually&quot;:</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  2</span><a href="http://www.allegro.cc/manual/ALLEGRO_SAMPLE"><span class="a">ALLEGRO_SAMPLE</span></a> <span class="k3">*</span>sample <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  3</span>sample <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_sample"><span class="a">al_load_sample</span></a><span class="k2">(</span><span class="s">"music.ogg"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  4</span>songs<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k3">-</span><span class="k3">&gt;</span>addSongFile<span class="k2">(</span>sample<span class="k2">)</span><span class="k2">;</span>
<span class="number">  5</span>sample <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_sample"><span class="a">al_load_sample</span></a><span class="k2">(</span><span class="s">"music.ogg"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  6</span>songs<span class="k2">[</span><span class="n">1</span><span class="k2">]</span><span class="k3">-</span><span class="k3">&gt;</span>addSongFile<span class="k2">(</span>sample<span class="k2">)</span><span class="k2">;</span>
<span class="number">  7</span>sample <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_sample"><span class="a">al_load_sample</span></a><span class="k2">(</span><span class="s">"music.ogg"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  8</span>songs<span class="k2">[</span><span class="n">2</span><span class="k2">]</span><span class="k3">-</span><span class="k3">&gt;</span>addSongFile<span class="k2">(</span>sample<span class="k2">)</span><span class="k2">;</span>
<span class="number">  9</span>sample <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_sample"><span class="a">al_load_sample</span></a><span class="k2">(</span><span class="s">"music.ogg"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 10</span>songs<span class="k2">[</span><span class="n">3</span><span class="k2">]</span><span class="k3">-</span><span class="k3">&gt;</span>addSongFile<span class="k2">(</span>sample<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 11</span>sample <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_sample"><span class="a">al_load_sample</span></a><span class="k2">(</span><span class="s">"music.ogg"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 12</span>songs<span class="k2">[</span><span class="n">4</span><span class="k2">]</span><span class="k3">-</span><span class="k3">&gt;</span>addSongFile<span class="k2">(</span>sample<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 13</span>sample <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_sample"><span class="a">al_load_sample</span></a><span class="k2">(</span><span class="s">"music.ogg"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 14</span>songs<span class="k2">[</span><span class="n">5</span><span class="k2">]</span><span class="k3">-</span><span class="k3">&gt;</span>addSongFile<span class="k2">(</span>sample<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 15</span>sample <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_sample"><span class="a">al_load_sample</span></a><span class="k2">(</span><span class="s">"music.ogg"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 16</span>songs<span class="k2">[</span><span class="n">6</span><span class="k2">]</span><span class="k3">-</span><span class="k3">&gt;</span>addSongFile<span class="k2">(</span>sample<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 17</span>sample <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_sample"><span class="a">al_load_sample</span></a><span class="k2">(</span><span class="s">"music.ogg"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 18</span>songs<span class="k2">[</span><span class="n">7</span><span class="k2">]</span><span class="k3">-</span><span class="k3">&gt;</span>addSongFile<span class="k2">(</span>sample<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 19</span>sample <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_sample"><span class="a">al_load_sample</span></a><span class="k2">(</span><span class="s">"music.ogg"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 20</span>songs<span class="k2">[</span><span class="n">8</span><span class="k2">]</span><span class="k3">-</span><span class="k3">&gt;</span>addSongFile<span class="k2">(</span>sample<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 21</span>sample <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_sample"><span class="a">al_load_sample</span></a><span class="k2">(</span><span class="s">"music.ogg"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 22</span>songs<span class="k2">[</span><span class="n">9</span><span class="k2">]</span><span class="k3">-</span><span class="k3">&gt;</span>addSongFile<span class="k2">(</span>sample<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 23</span>sample <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_sample"><span class="a">al_load_sample</span></a><span class="k2">(</span><span class="s">"music.ogg"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 24</span>songs<span class="k2">[</span><span class="n">10</span><span class="k2">]</span><span class="k3">-</span><span class="k3">&gt;</span>addSongFile<span class="k2">(</span>sample<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 25</span>sample <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_sample"><span class="a">al_load_sample</span></a><span class="k2">(</span><span class="s">"music.ogg"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 26</span>songs<span class="k2">[</span><span class="n">11</span><span class="k2">]</span><span class="k3">-</span><span class="k3">&gt;</span>addSongFile<span class="k2">(</span>sample<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 27</span>sample <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_sample"><span class="a">al_load_sample</span></a><span class="k2">(</span><span class="s">"music.ogg"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 28</span>songs<span class="k2">[</span><span class="n">12</span><span class="k2">]</span><span class="k3">-</span><span class="k3">&gt;</span>addSongFile<span class="k2">(</span>sample<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 29</span>sample <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_sample"><span class="a">al_load_sample</span></a><span class="k2">(</span><span class="s">"music.ogg"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 30</span>songs<span class="k2">[</span><span class="n">13</span><span class="k2">]</span><span class="k3">-</span><span class="k3">&gt;</span>addSongFile<span class="k2">(</span>sample<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 31</span>sample <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_sample"><span class="a">al_load_sample</span></a><span class="k2">(</span><span class="s">"music.ogg"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 32</span>songs<span class="k2">[</span><span class="n">14</span><span class="k2">]</span><span class="k3">-</span><span class="k3">&gt;</span>addSongFile<span class="k2">(</span>sample<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 33</span>sample <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_sample"><span class="a">al_load_sample</span></a><span class="k2">(</span><span class="s">"music.ogg"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 34</span>songs<span class="k2">[</span><span class="n">15</span><span class="k2">]</span><span class="k3">-</span><span class="k3">&gt;</span>addSongFile<span class="k2">(</span>sample<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 35</span>sample <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_sample"><span class="a">al_load_sample</span></a><span class="k2">(</span><span class="s">"music.ogg"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 36</span>songs<span class="k2">[</span><span class="n">16</span><span class="k2">]</span><span class="k3">-</span><span class="k3">&gt;</span>addSongFile<span class="k2">(</span>sample<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 37</span>sample <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_sample"><span class="a">al_load_sample</span></a><span class="k2">(</span><span class="s">"music.ogg"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 38</span>songs<span class="k2">[</span><span class="n">17</span><span class="k2">]</span><span class="k3">-</span><span class="k3">&gt;</span>addSongFile<span class="k2">(</span>sample<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 39</span>sample <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_sample"><span class="a">al_load_sample</span></a><span class="k2">(</span><span class="s">"music.ogg"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 40</span>songs<span class="k2">[</span><span class="n">18</span><span class="k2">]</span><span class="k3">-</span><span class="k3">&gt;</span>addSongFile<span class="k2">(</span>sample<span class="k2">)</span><span class="k2">;</span>
</div></div><p>

For simplification I loading one file 19 times.</p><p>Two this ways doesn&#39;t load sample file correctly. After loading I should get about 33 MB data, but I get over than 700 MB.</p><p>Did you heard about problem like this? I use Allegro 5.0.10. I tried load this way in two projects to be sure.</p><p>If you understand, I send link for my topic about this on a Polish forum PC Format: <a href="http://forum.pcformat.pl/C-Allegro-5-Dealokacja-pliku-ALLEGRO-FILE-t">http://forum.pcformat.pl/C-Allegro-5-Dealokacja-pliku-ALLEGRO-FILE-t</a>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (JurekGP)</author>
		<pubDate>Mon, 23 Feb 2015 23:18:36 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Ogg is compressed. <span class="source-code"><a href="http://www.allegro.cc/manual/al_load_sample"><span class="a">al_load_sample</span></a></span> loads the audio and decompresses it into raw PCM data.</p><p>If you want to use music, you&#39;re best off using streaming<span class="ref"><sup>[<a href="#">1</a>]</sup></span>
</p><div class="ref-block"><h2>References</h2><ol><li>see <a href="http://www.liballeg.org/a5docs/refman/audio.html#stream-functions">http://www.liballeg.org/a5docs/refman/audio.html#stream-functions</a></li></ol></div></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Mon, 23 Feb 2015 23:25:31 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Ok, thanks! <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /><br />Now I know why I get so many megabytes of data.<br />But I&#39;d ask if I understand everything correctly and I&#39;m doing everything what I should.</p><p>There is cool example which I base: <a href="https://www.allegro.cc/manual/5/al_load_audio_stream"><i>ex_stream_file</i></a>, but I&#39;m not sure that I&#39;m understanding everything right.</p><p>So, now I would like to summary what I centrainly do. This is test project, but there I include every step, which I want implement in my game. Only difference that I read music files from one file by <i>al_load_audio_stream_f</i>.</p><p>1. When I&#39;m initializing Allegro, I turn on audio streaming. I&#39;m saving a frequency, mixerDepth, voiceDepth and channel conf. I&#39;m creating mixer and voice.<br />2. In my player I will have pointer on ALLEGRO_AUDIO_STREAM - *musicStream. On begin set on NULL.<br />3. Now when I want to handle stream:<br />a) If I want play stream, I call my function <i>playStream</i>:
</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span><span class="k1">void</span> TestGame::playStream<span class="k2">(</span>std::string filePath<span class="k2">)</span>
<span class="number">  2</span><span class="k2">{</span>
<span class="number">  3</span>  <span class="k1">if</span><span class="k2">(</span>musicStream<span class="k2">)</span>
<span class="number">  4</span>    <a href="http://www.allegro.cc/manual/al_destroy_audio_stream"><span class="a">al_destroy_audio_stream</span></a><span class="k2">(</span>musicStream<span class="k2">)</span><span class="k2">;</span>
<span class="number">  5</span>  musicStream <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_audio_stream"><span class="a">al_load_audio_stream</span></a><span class="k2">(</span>filePath.c_str<span class="k2">(</span><span class="k2">)</span>, <span class="n">4</span>, <span class="n">2048</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  6</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>gameCore-&gt;alManager-&gt;getAllegroEventQueue<span class="k2">(</span><span class="k2">)</span>, <a href="http://www.allegro.cc/manual/al_get_audio_stream_event_source"><span class="a">al_get_audio_stream_event_source</span></a><span class="k2">(</span>musicStream<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  7</span>  <a href="http://www.allegro.cc/manual/al_attach_audio_stream_to_mixer"><span class="a">al_attach_audio_stream_to_mixer</span></a><span class="k2">(</span>musicStream, gameCore-&gt;alManager-&gt;getAllegroMixer<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  8</span><span class="k2">}</span>
</div></div><p>
b) If I want change volume, call this function: <i>al_set_audio_stream_gain(musicStream, &#39;float value&#39;);</i><br />c) If I want stop stream, call this function: <i>al_detach_audio_stream(musicStream);</i></p><p>Two asks:<br />1. How is difference between function above and <i>al_drain_audio_stream</i>? What should I use?<br />2. I&#39;m not sure what means second and third argument of <i>al_load_audio_stream</i>.<br />- Second is probably size (on kilobytes?) of stream, which will be loading to play like one piece of stream.<br />- Third is for information how many streams can play at the same time, through my pointer <i>musicStream</i>? Can I change to 1? At the same time I will playing only one sample. Maybe is nonsense give 2048?</p><p>So, this is everything what I should do for correctly handling audio stream in Allegro? Of course, in the end, I&#39;m destroing audio stream, mixer and voice.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (JurekGP)</author>
		<pubDate>Tue, 24 Feb 2015 21:57:52 +0000</pubDate>
	</item>
</rss>
