<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.6000.16481" name=GENERATOR></HEAD>
<BODY style="MARGIN: 4px 4px 1px; FONT: 10pt Tahoma">
<DIV>I'm glad to hear that my data size can be shrunk considerably, however I do not know the minimum values that I would set the static arrays to be.&nbsp; I hate to be a bother but could you tell me the minimum values for these arrays/structures in the state structure? Thanks!</DIV>
<DIV>&nbsp;</DIV>
<DIV><STRONG>encode:</STRONG></DIV>
<DIV>stack</DIV>
<DIV>winBuf</DIV>
<DIV>excBuf</DIV>
<DIV>swBuf</DIV>
<DIV>lagWindow</DIV>
<DIV>old_lsp</DIV>
<DIV>old_qlsp</DIV>
<DIV>mem_sp</DIV>
<DIV>mem_sw</DIV>
<DIV>mem_sw_whole</DIV>
<DIV>mem_exc</DIV>
<DIV>mem_exc2</DIV>
<DIV>pi_gain</DIV>
<DIV>pitch</DIV>
<DIV>&nbsp;</DIV>
<DIV><STRONG>decode:</STRONG></DIV>
<DIV>stack</DIV>
<DIV>excBuf</DIV>
<DIV>interp_qlpc</DIV>
<DIV>old_qlsp</DIV>
<DIV>mem_sp</DIV>
<DIV>pi_gain<BR><BR>&gt;&gt;&gt; Jean-Marc Valin &lt;jean-marc.valin@usherbrooke.ca&gt; 08/06/07 7:04 PM &gt;&gt;&gt;<BR></DIV>
<DIV style="COLOR: #000000">Last thing. All the codebooks are stored as tables of char, so you're<BR>probably wasting a lot of space from the fact that chars on C5x are<BR>16-bit long. You might be able to pack the values in one 16-bit value<BR>and unpack in the code. As for the memory allocation in the encoder, the<BR>best is to use C99 variable-size arrays (VAR_ARRAYS) or alloca<BR>(USE_ALLOCA). Otherwise, you can make the static array much smaller. For<BR>8 kbps, the total RAM requirement (not counting code or static tables)<BR>should be around 4 kB (2 kWords).<BR><BR>&nbsp;&nbsp;&nbsp; Jean-Marc<BR><BR>Michael Jacobson a écrit :<BR>&gt; Hi,<BR>&gt;&nbsp; <BR>&gt; I am using speex 1.2beta2 on a narrowband 16-bit, 8khz system that has<BR>&gt; a severe program space problem and will not fit speex in its normal<BR>&gt; operation.&nbsp; In an attempt to shrink speex I placed a breakpoint in every<BR>&gt; function and ran a decode and encode and removed the breakpoints that I<BR>&gt; hit.&nbsp; in the functions that had a breakpoint that I didn't hit I<BR>&gt; commented out those functions (as well as some functions that I know I<BR>&gt; won't hit).&nbsp; <BR>&gt;&nbsp; <BR>&gt; I am aware that some of these functions are only not called because I<BR>&gt; don't do a GET_ in the ctl functions or don't use ALLOC to initialize<BR>&gt; the bit buffer, but some of these I am not entirely sure why they would<BR>&gt; or would not be used.&nbsp; I would like to know if they are just rarely<BR>&gt; called functions and that I could be breaking the codec by removing them<BR>&gt; or if all that I removed is just fine.<BR>&gt;&nbsp; <BR>&gt; I did get a .patch file from Jim Crichton as well to shrink nb_celp,<BR>&gt; but is there anything else I can do to shrink the code or am I reaching<BR>&gt; my limit? Thanks.<BR>&gt;&nbsp; <BR>&gt;&nbsp; <BR>&gt; these are the functions that I removed:<BR>&gt;&nbsp; <BR>&gt; In bits.c:<BR>&gt; speex_bits_init<BR>&gt; speex_bits_init_buffer<BR>&gt; speex_bits_destroy<BR>&gt; speex_bits_reset<BR>&gt; speex_bits_rewind<BR>&gt; speex_bits_read_from<BR>&gt; speex_bits_flush<BR>&gt; speex_bits_read_whole_bytes<BR>&gt; speex_bits_write<BR>&gt; speex_bits_write_whole_bytes<BR>&gt; speex_bits_unpack_signed<BR>&gt; speex_bits_peek_unsigned<BR>&gt; speex_bits_peek<BR>&gt; speex_bits_nbytes<BR>&gt; speex_bits_insert_terminator<BR>&gt;&nbsp; <BR>&gt; In cd_search.c:<BR>&gt; noise_codebook_quant<BR>&gt; noise_codebook_unquant<BR>&gt;&nbsp; <BR>&gt; In filters.c:<BR>&gt; compute_rms<BR>&gt; syn_percep_zero16<BR>&gt; qmf_decomp<BR>&gt; qmf_synth<BR>&gt;&nbsp; <BR>&gt; In ltp.c:<BR>&gt; forced_pitch_quant<BR>&gt; forced_pitch_unquant<BR>&gt;&nbsp; <BR>&gt; In math_approx.c:<BR>&gt; spx_ilog2<BR>&gt; _spx_cos_pi_2<BR>&gt; spx_cos_norm<BR>&gt; spx_exp2<BR>&gt; spx_atan<BR>&gt;&nbsp; <BR>&gt; In nb_celp.c:<BR>&gt; nb_encoder_destroy<BR>&gt; nb_decoder_destroy<BR>&gt;&nbsp; <BR>&gt; In quant_lsp.c:<BR>&gt; lsp_quant_nb<BR>&gt; lsp_unquant_nb<BR>&gt; lsp_quant_high<BR>&gt; lsp_unquant_high<BR>&gt;&nbsp; <BR>&gt; In speex.c:<BR>&gt; speex_encoder_destroy<BR>&gt; speex_decoder_destroy<BR>&gt; speex_encode<BR>&gt; speex_decode<BR>&gt; nb_mode_query<BR>&gt; wb_mode_query<BR>&gt; speex_lib_ctl<BR>&gt;&nbsp; <BR>&gt; In speex_callbacks.c:<BR>&gt; speex_inband_handler<BR>&gt; speex_std_mode_request_handler<BR>&gt; speex_std_low_mode_request_handler<BR>&gt; speex_std_high_mode_request_handler<BR>&gt; speex_std_vbr_request_handler<BR>&gt; speex_std_enh_request_handler<BR>&gt; speex_std_vbr_quality_request_handler<BR>&gt; speex_std_char_handler<BR>&gt; speex_default_user_handler<BR>&gt;&nbsp; <BR>&gt; In vbr.c:<BR>&gt; vbr_analysis<BR>&gt; vbr_destroy<BR>&gt;&nbsp; <BR>&gt; In vq.c:<BR>&gt; vq_index<BR>&gt; vq_nbest_sign<BR>&gt;&nbsp; <BR>&gt;&nbsp; <BR>&gt; <BR>&gt; <BR>&gt; <BR>&gt; ------------------------------------------------------------------------<BR>&gt; <BR>&gt; _______________________________________________<BR>&gt; Speex-dev mailing list<BR>&gt; Speex-dev@xiph.org<BR>&gt; <A href="http://lists.xiph.org/mailman/listinfo/speex-dev">http://lists.xiph.org/mailman/listinfo/speex-dev</A><BR></DIV></BODY></HTML>