<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Packfile, Datafile, Compression isn&#39;t awesome</title>
		<link>http://www.allegro.cc/forums/view/582094</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Wed, 03 May 2006 01:20:52 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Heya all. I&#039;m currently trying to get a compressed version of DATAFILE , ala grabber, but it seems that the compression isn&#039;t relevant with the way I use, the grabber beat me.</p><p>Here is a little test I do for testing if loading is OK, playing, saving.<br />No crash, but a huge file as big as the whole wav before &quot;compressing&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">   1</span><span class="c">/**\file test.c</span>
<span class="number">   2</span><span class="c">*</span>
<span class="number">   3</span><span class="c">*  Main Nilorea Library Test File</span>
<span class="number">   4</span><span class="c">*</span>
<span class="number">   5</span><span class="c">*\author Castagnier Mickaël</span>
<span class="number">   6</span><span class="c">*</span>
<span class="number">   7</span><span class="c">*\version 1.0</span>
<span class="number">   8</span><span class="c">*</span>
<span class="number">   9</span><span class="c">*\date 22/02/2006</span>
<span class="number">  10</span><span class="c">*</span>
<span class="number">  11</span><span class="c">*/</span>
<span class="number">  12</span>
<span class="number">  13</span>
<span class="number">  14</span><span class="p">#include &lt;nilorea.h&gt;</span>
<span class="number">  15</span>
<span class="number">  16</span>
<span class="number">  17</span><span class="k1">int</span> IT <span class="k3">=</span> <span class="n">0</span>, a <span class="k3">=</span> <span class="n">0</span> , b <span class="k3">=</span> <span class="n">0</span> <span class="k2">;</span>
<span class="number">  18</span>
<span class="number">  19</span><a href="http://www.allegro.cc/manual/PACKFILE" target="_blank"><span class="a">PACKFILE</span></a> <span class="k3">*</span>pfile<span class="k2">;</span>
<span class="number">  20</span>
<span class="number">  21</span>LIBSOUND <span class="k3">*</span>lib_s<span class="k2">;</span>
<span class="number">  22</span>
<span class="number">  23</span><a href="http://www.allegro.cc/manual/SAMPLE" target="_blank"><span class="a">SAMPLE</span></a> <span class="k3">*</span>SPL<span class="k2">;</span>
<span class="number">  24</span>
<span class="number">  25</span><span class="k1">char</span> cmd<span class="k2">[</span> <span class="n">512</span> <span class="k2">]</span><span class="k2">;</span>
<span class="number">  26</span>
<span class="number">  27</span><span class="k1">struct</span> <a href="http://www.allegro.cc/manual/al_ffblk" target="_blank"><span class="a">al_ffblk</span></a> fi<span class="k2">;</span>
<span class="number">  28</span>
<span class="number">  29</span>
<span class="number">  30</span>
<span class="number">  31</span><span class="k1">int</span> main<span class="k2">(</span> <span class="k1">int</span> argc , <span class="k1">char</span> <span class="k3">*</span>argv<span class="k2">[</span><span class="k2">]</span> <span class="k2">)</span>
<span class="number">  32</span>  <span class="k2">{</span>
<span class="number">  33</span>  
<span class="number">  34</span>  
<span class="number">  35</span>  <a href="http://www.allegro.cc/manual/allegro_init" target="_blank"><span class="a">allegro_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  36</span>  <a href="http://www.allegro.cc/manual/install_timer" target="_blank"><span class="a">install_timer</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  37</span>  <a href="http://www.allegro.cc/manual/install_mouse" target="_blank"><span class="a">install_mouse</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  38</span>  <a href="http://www.allegro.cc/manual/install_keyboard" target="_blank"><span class="a">install_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  39</span>  <a href="http://www.allegro.cc/manual/install_sound" target="_blank"><span class="a">install_sound</span></a><span class="k2">(</span> DIGI_AUTODETECT , MIDI_NONE , NULL <span class="k2">)</span><span class="k2">;</span>
<span class="number">  40</span>  
<span class="number">  41</span>  
<span class="number">  42</span>  gfx_mode<span class="k2">(</span> GFX_DIRECTX_WIN , <span class="n">800</span> , <span class="n">600</span> ,
<span class="number">  43</span>        <span class="n">0</span> , <span class="n">0</span> ,
<span class="number">  44</span>        <span class="n">32</span> ,
<span class="number">  45</span>        <span class="n">0</span> , <span class="n">0</span> , <span class="n">0</span> , <span class="n">255</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  46</span>    
<span class="number">  47</span>  <span class="k1">if</span> <span class="k2">(</span> create_libsound<span class="k2">(</span> <span class="k3">&amp;</span>lib_s , <span class="s">"nilorea sound library test"</span> , <span class="n">500</span> <span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> FALSE <span class="k2">)</span>
<span class="number">  48</span>    <a href="http://www.allegro.cc/manual/allegro_message" target="_blank"><span class="a">allegro_message</span></a><span class="k2">(</span> <span class="s">"Creating libsound crashed"</span> <span class="k2">)</span> <span class="k2">;</span>
<span class="number">  49</span>    
<span class="number">  50</span>  <span class="k1">if</span> <span class="k2">(</span> <span class="k3">!</span>lib_s <span class="k2">)</span>
<span class="number">  51</span>    <span class="k1">return</span> FALSE<span class="k2">;</span>
<span class="number">  52</span>    
<span class="number">  53</span>    
<span class="number">  54</span>  IT <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_findfirst" target="_blank"><span class="a">al_findfirst</span></a><span class="k2">(</span> <span class="s">"SOUND\*.wav"</span> , <span class="k3">&amp;</span>fi , FA_ARCH <span class="k3">|</span> FA_RDONLY <span class="k2">)</span><span class="k2">;</span>
<span class="number">  55</span>  
<span class="number">  56</span>  <span class="c">/* we loop until we got no result */</span>
<span class="number">  57</span>  <span class="k1">while</span> <span class="k2">(</span> IT <span class="k3">=</span><span class="k3">=</span> <span class="n">0</span> <span class="k2">)</span> <span class="k2">{</span>
<span class="number">  58</span>  
<span class="number">  59</span>      <a href="http://www.delorie.com/djgpp/doc/libc/libc_737.html" target="_blank">sprintf</a><span class="k2">(</span> cmd , <span class="s">"SOUND\\%s"</span> , fi.name <span class="k2">)</span><span class="k2">;</span>
<span class="number">  60</span>      
<span class="number">  61</span>      clear<span class="k2">(</span> <a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  62</span>      
<span class="number">  63</span>      SPL <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_sample" target="_blank"><span class="a">load_sample</span></a><span class="k2">(</span> cmd <span class="k2">)</span><span class="k2">;</span>
<span class="number">  64</span>      
<span class="number">  65</span>      <span class="k1">if</span> <span class="k2">(</span> SPL <span class="k2">)</span> <span class="k2">{</span>
<span class="number">  66</span>          <a href="http://www.allegro.cc/manual/textprintf_ex" target="_blank"><span class="a">textprintf_ex</span></a><span class="k2">(</span> <a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a> , <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a> , <span class="n">10</span> , <span class="n">10</span> , <span class="n">1</span> , <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span> <span class="n">255</span>, <span class="n">255</span>, <span class="n">255</span> <span class="k2">)</span> , <span class="s">"%s loading"</span> , cmd <span class="k2">)</span><span class="k2">;</span>
<span class="number">  67</span>          a <span class="k3">=</span> add_sample_to_lib<span class="k2">(</span> <span class="k3">&amp;</span>lib_s , SPL , fi.name <span class="k2">)</span><span class="k2">;</span>
<span class="number">  68</span>          <span class="k1">if</span> <span class="k2">(</span> a <span class="k3">=</span><span class="k3">=</span> <span class="k3">-</span><span class="n">1</span> <span class="k2">)</span>
<span class="number">  69</span>            <a href="http://www.allegro.cc/manual/textprintf_ex" target="_blank"><span class="a">textprintf_ex</span></a><span class="k2">(</span> <a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a> , <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a> , <span class="n">10</span> , <span class="n">20</span> , <span class="n">1</span> , <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span> <span class="n">255</span>, <span class="n">255</span>, <span class="n">255</span> <span class="k2">)</span> , <span class="s">"error adding %s"</span> , cmd <span class="k2">)</span><span class="k2">;</span>
<span class="number">  70</span>          <span class="k1">else</span> <span class="k2">{</span>
<span class="number">  71</span>              <a href="http://www.allegro.cc/manual/textprintf_ex" target="_blank"><span class="a">textprintf_ex</span></a><span class="k2">(</span> <a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a> , <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a> , <span class="n">10</span> , <span class="n">40</span> , <span class="n">1</span> , <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span> <span class="n">255</span>, <span class="n">255</span>, <span class="n">255</span> <span class="k2">)</span> , <span class="s">"%s CUR:%d MAX:%d %s STATE:%d "</span> , lib_s <span class="k3">-</span><span class="k3">&gt;</span> name , lib_s <span class="k3">-</span><span class="k3">&gt;</span> current , lib_s <span class="k3">-</span><span class="k3">&gt;</span> max , lib_s <span class="k3">-</span><span class="k3">&gt;</span> data<span class="k2">[</span> a <span class="k2">]</span> . name , lib_s <span class="k3">-</span><span class="k3">&gt;</span> data<span class="k2">[</span> a <span class="k2">]</span>.state <span class="k2">)</span><span class="k2">;</span>
<span class="number">  72</span>              <span class="k2">}</span>
<span class="number">  73</span>          <span class="k2">}</span>
<span class="number">  74</span>      <span class="k1">else</span>
<span class="number">  75</span>        <a href="http://www.allegro.cc/manual/textprintf_ex" target="_blank"><span class="a">textprintf_ex</span></a><span class="k2">(</span> <a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a> , <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a> , <span class="n">10</span> , <span class="n">30</span> , <span class="n">1</span> , <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span> <span class="n">255</span>, <span class="n">255</span>, <span class="n">255</span> <span class="k2">)</span> , <span class="s">"error reading %s"</span> , cmd <span class="k2">)</span><span class="k2">;</span>
<span class="number">  76</span>        
<span class="number">  77</span>        
<span class="number">  78</span>      IT <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_findnext" target="_blank"><span class="a">al_findnext</span></a><span class="k2">(</span> <span class="k3">&amp;</span>fi <span class="k2">)</span><span class="k2">;</span>
<span class="number">  79</span>      
<span class="number">  80</span>      <span class="k2">}</span>
<span class="number">  81</span>      
<span class="number">  82</span>      
<span class="number">  83</span>      
<span class="number">  84</span>  <a href="http://www.allegro.cc/manual/al_findclose" target="_blank"><span class="a">al_findclose</span></a><span class="k2">(</span> <span class="k3">&amp;</span>fi <span class="k2">)</span><span class="k2">;</span>
<span class="number">  85</span>  
<span class="number">  86</span>  IT <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  87</span>  
<span class="number">  88</span>  a <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  89</span>  
<span class="number">  90</span>  
<span class="number">  91</span>  <a href="http://www.allegro.cc/manual/play_sample" target="_blank"><span class="a">play_sample</span></a><span class="k2">(</span> lib_s <span class="k3">-</span><span class="k3">&gt;</span> data<span class="k2">[</span> IT <span class="k2">]</span> . sample , a, <span class="n">128</span>, <span class="n">1000</span>, <span class="n">0</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  92</span>  
<span class="number">  93</span>  <span class="k1">do</span> <span class="k2">{</span>
<span class="number">  94</span>  
<span class="number">  95</span>      <span class="k1">if</span> <span class="k2">(</span> <a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span> KEY_LEFT <span class="k2">]</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> IT <span class="k3">&gt;</span> <span class="n">0</span> <span class="k2">)</span> <span class="k2">{</span>
<span class="number">  96</span>          clear<span class="k2">(</span> <a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  97</span>          <a href="http://www.allegro.cc/manual/stop_sample" target="_blank"><span class="a">stop_sample</span></a><span class="k2">(</span> lib_s <span class="k3">-</span><span class="k3">&gt;</span> data<span class="k2">[</span> IT <span class="k2">]</span>.sample <span class="k2">)</span><span class="k2">;</span>
<span class="number">  98</span>          IT--<span class="k2">;</span>
<span class="number">  99</span>          <a href="http://www.allegro.cc/manual/play_sample" target="_blank"><span class="a">play_sample</span></a><span class="k2">(</span> lib_s <span class="k3">-</span><span class="k3">&gt;</span> data<span class="k2">[</span> IT <span class="k2">]</span> . sample , a, <span class="n">128</span>, <span class="n">1000</span>, <span class="n">0</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 100</span>          <a href="http://www.allegro.cc/manual/textprintf_ex" target="_blank"><span class="a">textprintf_ex</span></a><span class="k2">(</span> <a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a> , <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a> , <span class="n">10</span> , <span class="n">40</span> , <span class="n">1</span> , <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span> <span class="n">255</span>, <span class="n">255</span>, <span class="n">255</span> <span class="k2">)</span> , <span class="s">"%s CUR:%d IT:%d %s STATE:%d "</span> , lib_s <span class="k3">-</span><span class="k3">&gt;</span> name , lib_s <span class="k3">-</span><span class="k3">&gt;</span> current , IT, lib_s <span class="k3">-</span><span class="k3">&gt;</span> data<span class="k2">[</span> IT <span class="k2">]</span> . name , lib_s <span class="k3">-</span><span class="k3">&gt;</span> data<span class="k2">[</span> IT <span class="k2">]</span>.state <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 101</span>          b <span class="k3">=</span> search_sample_in<span class="k2">(</span> lib_s , lib_s <span class="k3">-</span><span class="k3">&gt;</span> data<span class="k2">[</span> IT <span class="k2">]</span> .name <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 102</span>          <span class="k1">if</span> <span class="k2">(</span> b <span class="k3">!</span><span class="k3">=</span> <span class="k3">-</span><span class="n">1</span> <span class="k2">)</span>
<span class="number"> 103</span>            <a href="http://www.allegro.cc/manual/textprintf_ex" target="_blank"><span class="a">textprintf_ex</span></a><span class="k2">(</span> <a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a> , <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a> , <span class="n">10</span> , <span class="n">50</span> , <span class="n">1</span> , <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span> <span class="n">255</span>, <span class="n">255</span>, <span class="n">255</span> <span class="k2">)</span> , <span class="s">"%s CUR:%d b:%d %s STATE:%d "</span> , lib_s <span class="k3">-</span><span class="k3">&gt;</span> name , lib_s <span class="k3">-</span><span class="k3">&gt;</span> current , b, lib_s <span class="k3">-</span><span class="k3">&gt;</span> data<span class="k2">[</span> b <span class="k2">]</span> . name , lib_s <span class="k3">-</span><span class="k3">&gt;</span> data<span class="k2">[</span> b <span class="k2">]</span>.state <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 104</span>            
<span class="number"> 105</span>            
<span class="number"> 106</span>        <span class="k1">do</span> <span class="k2">{</span><span class="k2">}</span>
<span class="number"> 107</span>          <span class="k1">while</span> <span class="k2">(</span> <a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span> KEY_LEFT <span class="k2">]</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 108</span>          <span class="k2">}</span>
<span class="number"> 109</span>      <span class="k1">if</span> <span class="k2">(</span> <a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span> KEY_RIGHT <span class="k2">]</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> IT <span class="k3">&lt;</span> lib_s <span class="k3">-</span><span class="k3">&gt;</span> current <span class="k3">-</span> <span class="n">1</span> <span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 110</span>          clear<span class="k2">(</span> <a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 111</span>          <a href="http://www.allegro.cc/manual/stop_sample" target="_blank"><span class="a">stop_sample</span></a><span class="k2">(</span> lib_s <span class="k3">-</span><span class="k3">&gt;</span> data<span class="k2">[</span> IT <span class="k2">]</span>.sample <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 112</span>          IT<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 113</span>          <a href="http://www.allegro.cc/manual/play_sample" target="_blank"><span class="a">play_sample</span></a><span class="k2">(</span> lib_s <span class="k3">-</span><span class="k3">&gt;</span> data<span class="k2">[</span> IT <span class="k2">]</span> . sample , a, <span class="n">128</span>, <span class="n">1000</span>, <span class="n">0</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 114</span>          <a href="http://www.allegro.cc/manual/textprintf_ex" target="_blank"><span class="a">textprintf_ex</span></a><span class="k2">(</span> <a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a> , <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a> , <span class="n">10</span> , <span class="n">40</span> , <span class="n">1</span> , <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span> <span class="n">255</span>, <span class="n">255</span>, <span class="n">255</span> <span class="k2">)</span> , <span class="s">"%s CUR:%d IT:%d %s STATE:%d "</span> , lib_s <span class="k3">-</span><span class="k3">&gt;</span> name , lib_s <span class="k3">-</span><span class="k3">&gt;</span> current , IT , lib_s <span class="k3">-</span><span class="k3">&gt;</span> data<span class="k2">[</span> IT <span class="k2">]</span> . name , lib_s <span class="k3">-</span><span class="k3">&gt;</span> data<span class="k2">[</span> IT <span class="k2">]</span>.state <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 115</span>          b <span class="k3">=</span> search_sample_in<span class="k2">(</span> lib_s , lib_s <span class="k3">-</span><span class="k3">&gt;</span> data<span class="k2">[</span> IT <span class="k2">]</span> .name <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 116</span>          <span class="k1">if</span> <span class="k2">(</span> b <span class="k3">!</span><span class="k3">=</span> <span class="k3">-</span><span class="n">1</span> <span class="k2">)</span>
<span class="number"> 117</span>            <a href="http://www.allegro.cc/manual/textprintf_ex" target="_blank"><span class="a">textprintf_ex</span></a><span class="k2">(</span> <a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a> , <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a> , <span class="n">10</span> , <span class="n">50</span> , <span class="n">1</span> , <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span> <span class="n">255</span>, <span class="n">255</span>, <span class="n">255</span> <span class="k2">)</span> , <span class="s">"%s CUR:%d b:%d %s STATE:%d "</span> , lib_s <span class="k3">-</span><span class="k3">&gt;</span> name , lib_s <span class="k3">-</span><span class="k3">&gt;</span> current , b, lib_s <span class="k3">-</span><span class="k3">&gt;</span> data<span class="k2">[</span> b <span class="k2">]</span> . name , lib_s <span class="k3">-</span><span class="k3">&gt;</span> data<span class="k2">[</span> b <span class="k2">]</span>.state <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 118</span>        <span class="k1">do</span> <span class="k2">{</span><span class="k2">}</span>
<span class="number"> 119</span>          <span class="k1">while</span> <span class="k2">(</span> <a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span> KEY_RIGHT <span class="k2">]</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 120</span>          <span class="k2">}</span>
<span class="number"> 121</span>          
<span class="number"> 122</span>      <span class="k1">if</span> <span class="k2">(</span> <a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span> KEY_UP <span class="k2">]</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> a <span class="k3">&lt;</span> <span class="n">255</span> <span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 123</span>          a <span class="k3">+</span><span class="k3">=</span> <span class="n">5</span><span class="k2">;</span>
<span class="number"> 124</span>          <a href="http://www.allegro.cc/manual/adjust_sample" target="_blank"><span class="a">adjust_sample</span></a><span class="k2">(</span> lib_s <span class="k3">-</span><span class="k3">&gt;</span> data<span class="k2">[</span> IT <span class="k2">]</span> .sample, a, <span class="n">128</span>, <span class="n">1000</span>, <span class="n">0</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 125</span>          <span class="k1">do</span> <span class="k2">{</span><span class="k2">}</span>
<span class="number"> 126</span>          <span class="k1">while</span> <span class="k2">(</span> <a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span> KEY_UP <span class="k2">]</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 127</span>          <span class="k2">}</span>
<span class="number"> 128</span>      <span class="k1">if</span> <span class="k2">(</span> <a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span> KEY_DOWN <span class="k2">]</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> a <span class="k3">&gt;</span> <span class="n">0</span> <span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 129</span>          a <span class="k3">-</span><span class="k3">=</span> <span class="n">5</span><span class="k2">;</span>
<span class="number"> 130</span>          <a href="http://www.allegro.cc/manual/adjust_sample" target="_blank"><span class="a">adjust_sample</span></a><span class="k2">(</span> lib_s <span class="k3">-</span><span class="k3">&gt;</span> data<span class="k2">[</span> IT <span class="k2">]</span> .sample, a, <span class="n">128</span>, <span class="n">1000</span>, <span class="n">0</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 131</span>          <span class="k1">do</span> <span class="k2">{</span><span class="k2">}</span>
<span class="number"> 132</span>          <span class="k1">while</span> <span class="k2">(</span> <a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span> KEY_UP <span class="k2">]</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 133</span>          <span class="k2">}</span>
<span class="number"> 134</span>      <span class="k2">}</span>
<span class="number"> 135</span>  <span class="k1">while</span> <span class="k2">(</span> <span class="k3">!</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span> KEY_ESC <span class="k2">]</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 136</span>  
<span class="number"> 137</span>  
<span class="number"> 138</span>  pfile <span class="k3">=</span> <a href="http://www.allegro.cc/manual/pack_fopen" target="_blank"><span class="a">pack_fopen</span></a><span class="k2">(</span> <span class="s">"sounds.dat"</span> , <span class="s">"wp"</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 139</span>  save_libsound<span class="k2">(</span> lib_s , pfile <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 140</span>  <a href="http://www.allegro.cc/manual/pack_fclose" target="_blank"><span class="a">pack_fclose</span></a><span class="k2">(</span> pfile <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 141</span>  
<span class="number"> 142</span>  
<span class="number"> 143</span>  destroy_libsound<span class="k2">(</span> <span class="k3">&amp;</span>lib_s <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 144</span>  
<span class="number"> 145</span>  <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 146</span>  
<span class="number"> 147</span>  <span class="k2">}</span>
<span class="number"> 148</span><a href="http://www.allegro.cc/manual/END_OF_MAIN" target="_blank"><span class="a">END_OF_MAIN</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
</div></div><p>


Here are the functions for saving:</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="c">/*!\fn save_sample_in_datafile( SAMPLE *spl , PACKFILE *f )</span>
<span class="number">  2</span><span class="c"> *</span>
<span class="number">  3</span><span class="c"> *\brief Save a loaded sample in the specified opened datafile</span>
<span class="number">  4</span><span class="c"> *</span>
<span class="number">  5</span><span class="c"> *\param spl The SAMPLE *sample to save</span>
<span class="number">  6</span><span class="c"> *\param f An Opened PACKFILE *file</span>
<span class="number">  7</span><span class="c"> *</span>
<span class="number">  8</span><span class="c"> *\return TRUE or FALSE</span>
<span class="number">  9</span><span class="c"> */</span>
<span class="number"> 10</span>
<span class="number"> 11</span><span class="k1">int</span> save_sample_in_datafile<span class="k2">(</span> <a href="http://www.allegro.cc/manual/SAMPLE" target="_blank"><span class="a">SAMPLE</span></a> <span class="k3">*</span>spl , <a href="http://www.allegro.cc/manual/PACKFILE" target="_blank"><span class="a">PACKFILE</span></a> <span class="k3">*</span>f <span class="k2">)</span>
<span class="number"> 12</span><span class="k2">{</span>
<span class="number"> 13</span>   <span class="k3">*</span>allegro_errno <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 14</span>
<span class="number"> 15</span>   <a href="http://www.allegro.cc/manual/pack_mputw" target="_blank"><span class="a">pack_mputw</span></a><span class="k2">(</span><span class="k2">(</span>spl-&gt;stereo<span class="k2">)</span> ? <span class="k3">-</span>spl-&gt;bits <span class="k2">:</span> spl-&gt;bits, f<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 16</span>   <a href="http://www.allegro.cc/manual/pack_mputw" target="_blank"><span class="a">pack_mputw</span></a><span class="k2">(</span>spl-&gt;freq, f<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 17</span>   <a href="http://www.allegro.cc/manual/pack_mputl" target="_blank"><span class="a">pack_mputl</span></a><span class="k2">(</span>spl-&gt;len, f<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 18</span>
<span class="number"> 19</span>   <span class="k1">if</span> <span class="k2">(</span>spl-&gt;bits <span class="k3">=</span><span class="k3">=</span> <span class="n">8</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 20</span>      <a href="http://www.allegro.cc/manual/pack_fwrite" target="_blank"><span class="a">pack_fwrite</span></a><span class="k2">(</span>spl-&gt;data, spl-&gt;len <span class="k3">*</span> <span class="k2">(</span><span class="k2">(</span>spl-&gt;stereo<span class="k2">)</span> ? <span class="n">2</span> <span class="k2">:</span> <span class="n">1</span><span class="k2">)</span>, f<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 21</span>   <span class="k2">}</span>
<span class="number"> 22</span>   <span class="k1">else</span> <span class="k2">{</span>
<span class="number"> 23</span>      <span class="k1">int</span> i<span class="k2">;</span>
<span class="number"> 24</span>
<span class="number"> 25</span>      <span class="k1">for</span> <span class="k2">(</span>i<span class="k3">=</span><span class="n">0</span><span class="k2">;</span> i <span class="k3">&lt;</span> <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span>spl-&gt;len <span class="k3">*</span> <span class="k2">(</span><span class="k2">(</span>spl-&gt;stereo<span class="k2">)</span> ? <span class="n">2</span> <span class="k2">:</span> <span class="n">1</span><span class="k2">)</span><span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 26</span>   <a href="http://www.allegro.cc/manual/pack_iputw" target="_blank"><span class="a">pack_iputw</span></a><span class="k2">(</span><span class="k2">(</span><span class="k2">(</span>int16_t <span class="k3">*</span><span class="k2">)</span>spl-&gt;data<span class="k2">)</span><span class="k3">&lt;</span>i&gt;, f<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 27</span>      <span class="k2">}</span>
<span class="number"> 28</span>   <span class="k2">}</span>
<span class="number"> 29</span>
<span class="number"> 30</span>   <span class="k1">if</span> <span class="k2">(</span><span class="k3">*</span>allegro_errno<span class="k2">)</span>
<span class="number"> 31</span>      <span class="k1">return</span> FALSE<span class="k2">;</span>
<span class="number"> 32</span>   <span class="k1">else</span>
<span class="number"> 33</span>      <span class="k1">return</span> TRUE<span class="k2">;</span>
<span class="number"> 34</span>   <span class="k2">}</span> <span class="c">/* save_sample_in_datafile( ... ) */</span>
<span class="number"> 35</span>
<span class="number"> 36</span>
<span class="number"> 37</span>
<span class="number"> 38</span><span class="c">/*!\fn save_libsound( LIBSOUND *lib , PACKFILE *file )</span>
<span class="number"> 39</span><span class="c"> *</span>
<span class="number"> 40</span><span class="c"> *\brief Save a sound library in an opened packfile</span>
<span class="number"> 41</span><span class="c"> *</span>
<span class="number"> 42</span><span class="c"> *\param lib The library to save</span>
<span class="number"> 43</span><span class="c"> *\param file The opened packfile where to save the library</span>
<span class="number"> 44</span><span class="c"> *</span>
<span class="number"> 45</span><span class="c"> *\return TRUE of FALSE</span>
<span class="number"> 46</span><span class="c"> */</span>
<span class="number"> 47</span>
<span class="number"> 48</span><span class="k1">int</span> save_libsound<span class="k2">(</span> LIBSOUND <span class="k3">*</span>lib , <a href="http://www.allegro.cc/manual/PACKFILE" target="_blank"><span class="a">PACKFILE</span></a> <span class="k3">*</span>file <span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 49</span>
<span class="number"> 50</span>    <span class="k1">int</span> it <span class="k3">=</span> <span class="n">0</span>, len <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 51</span>
<span class="number"> 52</span>    <span class="k1">if</span><span class="k2">(</span> <span class="k3">!</span>lib <span class="k3">|</span><span class="k3">|</span> <span class="k3">!</span>file<span class="k2">)</span>
<span class="number"> 53</span>        <span class="k1">return</span> FALSE<span class="k2">;</span>
<span class="number"> 54</span>
<span class="number"> 55</span>    <span class="k1">if</span><span class="k2">(</span> <span class="k3">!</span>lib <span class="k3">-</span><span class="k3">&gt;</span> name <span class="k2">)</span><span class="k2">{</span>
<span class="number"> 56</span>        Malloc<span class="k2">(</span> lib <span class="k3">-</span><span class="k3">&gt;</span> name , <span class="k1">char</span> , <a href="http://www.allegro.cc/manual/uconvert_size" target="_blank"><span class="a">uconvert_size</span></a><span class="k2">(</span> <span class="s">"defaut"</span> , U_CURRENT, U_UNICODE<span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 57</span>        <a href="http://www.allegro.cc/manual/ustrncpy" target="_blank"><span class="a">ustrncpy</span></a><span class="k2">(</span> lib <span class="k3">-</span><span class="k3">&gt;</span> name , <span class="s">"defaut"</span> , <a href="http://www.allegro.cc/manual/ustrlen" target="_blank"><span class="a">ustrlen</span></a><span class="k2">(</span> <span class="s">"defaut"</span> <span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 58</span>    <span class="k2">}</span>
<span class="number"> 59</span>
<span class="number"> 60</span>    <a href="http://www.allegro.cc/manual/pack_iputl" target="_blank"><span class="a">pack_iputl</span></a><span class="k2">(</span> lib <span class="k3">-</span><span class="k3">&gt;</span> current , file <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 61</span>    <a href="http://www.allegro.cc/manual/pack_iputl" target="_blank"><span class="a">pack_iputl</span></a><span class="k2">(</span> lib <span class="k3">-</span><span class="k3">&gt;</span> max , file <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 62</span>    len <span class="k3">=</span> <a href="http://www.allegro.cc/manual/uconvert_size" target="_blank"><span class="a">uconvert_size</span></a><span class="k2">(</span> lib <span class="k3">-</span><span class="k3">&gt;</span> name , U_CURRENT, U_UNICODE<span class="k2">)</span>
<span class="number"> 63</span>    <a href="http://www.allegro.cc/manual/pack_iputl" target="_blank"><span class="a">pack_iputl</span></a><span class="k2">(</span> len , file <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 64</span>    <a href="http://www.allegro.cc/manual/pack_fwrite" target="_blank"><span class="a">pack_fwrite</span></a><span class="k2">(</span> lib <span class="k3">-</span><span class="k3">&gt;</span> name , len , file <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 65</span>
<span class="number"> 66</span>    <span class="k1">for</span><span class="k2">(</span> it <span class="k3">=</span> <span class="n">0</span> <span class="k2">;</span> it <span class="k3">&lt;</span> lib <span class="k3">-</span><span class="k3">&gt;</span> current <span class="k2">;</span> it <span class="k3">+</span><span class="k3">+</span> <span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 67</span>        <span class="k1">if</span><span class="k2">(</span> lib <span class="k3">-</span><span class="k3">&gt;</span> data<span class="k2">[</span> it <span class="k2">]</span> . state <span class="k3">!</span><span class="k3">=</span> NONE <span class="k2">)</span><span class="k2">{</span>
<span class="number"> 68</span>            <a href="http://www.allegro.cc/manual/pack_iputl" target="_blank"><span class="a">pack_iputl</span></a><span class="k2">(</span> <span class="n">1</span> , file <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 69</span>            <a href="http://www.allegro.cc/manual/pack_iputl" target="_blank"><span class="a">pack_iputl</span></a><span class="k2">(</span> <a href="http://www.allegro.cc/manual/uconvert_size" target="_blank"><span class="a">uconvert_size</span></a><span class="k2">(</span> lib <span class="k3">-</span><span class="k3">&gt;</span> data<span class="k2">[</span> it <span class="k2">]</span> . name , U_CURRENT, U_UNICODE<span class="k2">)</span>  , file <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 70</span>            <a href="http://www.allegro.cc/manual/pack_fwrite" target="_blank"><span class="a">pack_fwrite</span></a><span class="k2">(</span> lib <span class="k3">-</span><span class="k3">&gt;</span> data<span class="k2">[</span> it <span class="k2">]</span> . name , <a href="http://www.allegro.cc/manual/uconvert_size" target="_blank"><span class="a">uconvert_size</span></a><span class="k2">(</span> lib <span class="k3">-</span><span class="k3">&gt;</span> data<span class="k2">[</span> it <span class="k2">]</span> . name , U_CURRENT, U_UNICODE<span class="k2">)</span> , file <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 71</span>            save_sample_in_datafile<span class="k2">(</span>  lib <span class="k3">-</span><span class="k3">&gt;</span> data<span class="k2">[</span> it <span class="k2">]</span> . sample , file<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 72</span>    <span class="k2">}</span> <span class="k1">else</span>
<span class="number"> 73</span>            <a href="http://www.allegro.cc/manual/pack_iputl" target="_blank"><span class="a">pack_iputl</span></a><span class="k2">(</span> <span class="n">0</span> , file <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 74</span>
<span class="number"> 75</span>    <span class="k2">}</span>
<span class="number"> 76</span>
<span class="number"> 77</span>    <span class="k1">return</span> TRUE<span class="k2">;</span>
<span class="number"> 78</span>
<span class="number"> 79</span>
<span class="number"> 80</span><span class="k2">}</span> <span class="c">/* save_libsound( ... ) */</span>
</div></div><p>

With this I got 129 Meg of wav files compressed into ... 145 Megs compressed datafile !</p><p>I must be wrong somewhere ...</p><p>If anyone have any idea of WTF <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" /></p><p>EDIT: Humpf I&#039;m dumb. I&#039;m just reding somethinh as create_lzss_pack_data in the manual... Am I on the right way ? ...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (GullRaDriel)</author>
		<pubDate>Fri, 28 Apr 2006 13:12:42 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Of course you could always use .zip files, for example. Allegro uses some crappy compression routines because they don&#39;t require additional libraries (like gz).
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Fladimir da Gorf)</author>
		<pubDate>Fri, 28 Apr 2006 15:39:50 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I am taking a look at zlib. My problem will be to manage the dynamic loading-freeing of songs into memory.</p><p>Maybe I will add a special flag into &#39;SOUND&#39; and some test to see if i should load it, for how long, or if it is a &#39;permanent&#39; sample.</p><p>Making ressources handler is a pain in the <span class="cuss"><span>ass</span></span>, but it&#39;s a necessary war !
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (GullRaDriel)</author>
		<pubDate>Fri, 28 Apr 2006 15:53:10 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hi</p><p>I don&#39;t have that much experience in allegro packfiles, but if you try to compress some data that is already compressed, like mp3, xvid frames, jpeg, you get a bigger file. But I don&#39;t think that is the problem in this situation...</p><p>And, for a better compression ratio (better than zip) you can try the <a href="http://www.7-zip.org/sdk.html">LZMA SDK</a>. But the encoder is in C++...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (dudaskank)</author>
		<pubDate>Fri, 28 Apr 2006 17:21:42 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;ll give it a try, even if I am better at C ;-p
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (GullRaDriel)</author>
		<pubDate>Fri, 28 Apr 2006 17:26:57 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Maybe it is not exactly what you want but you could look into physfs which is a nice resource handler.</p><p><a href="http://icculus.org/physfs/">http://icculus.org/physfs/</a></p><p>Regards
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (umperio)</author>
		<pubDate>Fri, 28 Apr 2006 17:31:27 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Umpf ! umperio...<br />That a great link !<br />It&#39;s free, downloadable, api, doc, binaries, src ! And even a tutorial.</p><p>Now the thread is OK :-p
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (GullRaDriel)</author>
		<pubDate>Fri, 28 Apr 2006 17:36:21 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Sound that&#39;s writtend directly to a file rarely compresses well, because the data isn&#39;t very redundant.  If you encode the deltas between successive samples and compress <u>those</u>, it works much better.  In other words, the sloping &quot;side&quot; of a sound wave is relatively constant.  There&#39;s sound formats that already do this but I forget the name.  PCM?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Arthur Kalliokoski)</author>
		<pubDate>Sat, 29 Apr 2006 04:16:44 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>ADPCM, Adaptive Differential Pulse Code Modulation. PCM is the standard, uncompressed data.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Kitty Cat)</author>
		<pubDate>Sat, 29 Apr 2006 12:13:56 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>
If you have 129 meg of wav&#39;s than I&#39;d look at using OGG files instead.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Richard Phipps)</author>
		<pubDate>Sat, 29 Apr 2006 12:34:47 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>If you&#39;re interested in reading ZIP files, then there&#39;s an addon that allows you to do that. See <a href="http://www.allegro.cc/forums/thread/467091">http://www.allegro.cc/forums/thread/467091</a>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Evert)</author>
		<pubDate>Sat, 29 Apr 2006 14:01:58 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>For large amounts of sound data, I&#39;d strongly suggest you use some sort of lossy compression (ogg is good, mp3 has legal issues, wma even more so). Unless you do heavy processing on the audio, or use insane compression settings, you should be fine.<br />For music, you might also want to try tracker music instead of actual audio files; because of the typical repetitiveness of computer game music, tracker files are usually much smaller than audio files.<br />Finally, consider lowering audio quality. You don&#39;t need 96kHz, 24bit 5.1 samples. For a game, most sound effects can be 22.5 kHz, 16 bit, mono (some profit from being stereo though), without making much of an audible difference.</p><p>If all else fails, distribute on CD/DVD only <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Tobias Dammers)</author>
		<pubDate>Sun, 30 Apr 2006 22:58:39 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Richard said:</div><div class="quote"><p>

I&#39;d look at using OGG files instead
</p></div></div><p>

My bad, I never achieve to make any ogg playing with alogg or dumb+ogg</p><div class="quote_container"><div class="title">Evert said:</div><div class="quote"><p>

If you&#39;re interested in reading ZIP files
</p></div></div><p>

Not for the same thing as the topic, but I take the link ;-)</p><div class="quote_container"><div class="title">Tobias said:</div><div class="quote"><p>

If all else fails, distribute on CD/DVD only
</p></div></div><p>

Since all the game/source/stuff is spread around the world by the magic of internet, it&#39;s not possible. And I don&#39;t have a kopeck to buy and send some copy.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (GullRaDriel)</author>
		<pubDate>Tue, 02 May 2006 16:53:39 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You could always provide two versions:<br />One with small size and compressed audio<br />Other with big size and uncompressed audio.</p><p>Perhaps you can even charge a few $ for the uncompressed thingie <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (HoHo)</author>
		<pubDate>Tue, 02 May 2006 16:56:54 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>WavePack is a good lossless audio compression format but its very slow. It might be good for distributing large wav audio files that you don&#39;t want to compress into a lossy format.  Just a note: the PACKFILE compresion uses an LZW style compresion that is not audio friendly.  Audio data is to complex for LZW style compresion.  Maybe its time to create a media friendly compression format that selects the compression based on the contents.  Maybe a plug-in style compressor.</p><p>?Light bulb <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">typedef</span> <span class="k1">struct</span> C_VTABLE <span class="k2">{</span>
   <span class="k1">char</span> <span class="k3">*</span>name<span class="k2">;</span>     <span class="c">/* name of plugin */</span>
   <span class="k1">char</span> <span class="k3">*</span>author<span class="k2">;</span>   <span class="c">/* Name of author + email address + websit.... */</span>
   <span class="k1">char</span> <span class="k3">*</span>file_ext<span class="k2">;</span> <span class="c">/* input extensions that might be relavent to this plug */</span>
   <span class="k1">int</span>  type<span class="k2">;</span>      <span class="c">/* Type of data this plug in understands: TEXT=0, BIN=1, </span>
<span class="c">                    * BITMAP=2, AUDIO=3, VIDEO=4... </span>
<span class="c">                    */</span>
   <span class="k1">int</span>  init_compressor<span class="k2">(</span>DC, format_info, ...<span class="k2">)</span><span class="k2">;</span>
   <span class="k1">void</span> <span class="k3">*</span>compress<span class="k2">(</span>DC, <span class="k1">void</span> <span class="k3">*</span>src, <span class="k1">int</span> size_in, <span class="k1">int</span> <span class="k3">*</span>size_out<span class="k2">)</span><span class="k2">;</span>
   <span class="k1">int</span>  init_decompressor<span class="k2">(</span>DC, format_info, ...<span class="k2">)</span><span class="k2">;</span>
   <span class="k1">void</span> <span class="k3">*</span>decompress<span class="k2">(</span>DC, <span class="k1">void</span> <span class="k3">*</span>src, <span class="k1">int</span> size_in, <span class="k1">int</span> <span class="k3">*</span>size_out<span class="k2">)</span><span class="k2">;</span>
<span class="k2">}</span> C_VTABLE<span class="k2">;</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Ron Novy)</author>
		<pubDate>Tue, 02 May 2006 19:01:19 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Ron Novy, that&#39;s a nice start. I&#39;m still waiting for the plug <img src="http://www.allegro.cc/forums/smileys/grin.gif" alt=";D" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (GullRaDriel)</author>
		<pubDate>Wed, 03 May 2006 01:20:52 +0000</pubDate>
	</item>
</rss>
