<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>Hi,</DIV>
<DIV>&nbsp;</DIV>
<DIV>I am using speex 1.2beta2 on a narrowband 16-bit, 8khz system that has a severe program space problem and will not fit speex in its normal operation.&nbsp; In an attempt to shrink speex I placed a breakpoint in every function and ran a decode and encode and removed the breakpoints that I hit.&nbsp; in the functions that had a breakpoint that I didn't hit I commented out those functions (as well as some functions that I know I won't hit).&nbsp; </DIV>
<DIV>&nbsp;</DIV>
<DIV>I am aware that some of these functions are only not called because I don't do a GET_ in the ctl functions or don't use ALLOC to initialize the bit buffer, but some of these I am not entirely sure why they would or would not be used.&nbsp; I would like to know if they are just rarely called functions and that I could be breaking the codec by removing them or if all that I removed is just fine.</DIV>
<DIV>&nbsp;</DIV>
<DIV>I did get a .patch file from Jim Crichton as well to shrink nb_celp, but is there anything else I can do to shrink the code or am I reaching my limit? Thanks.</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>these are the functions that I removed:</DIV>
<DIV>&nbsp;</DIV>
<DIV><STRONG>In bits.c:</STRONG></DIV>
<DIV>speex_bits_init</DIV>
<DIV>speex_bits_init_buffer</DIV>
<DIV>speex_bits_destroy</DIV>
<DIV>speex_bits_reset</DIV>
<DIV>speex_bits_rewind</DIV>
<DIV>speex_bits_read_from</DIV>
<DIV>speex_bits_flush</DIV>
<DIV>speex_bits_read_whole_bytes</DIV>
<DIV>speex_bits_write</DIV>
<DIV>speex_bits_write_whole_bytes</DIV>
<DIV>speex_bits_unpack_signed</DIV>
<DIV>speex_bits_peek_unsigned</DIV>
<DIV>speex_bits_peek</DIV>
<DIV>speex_bits_nbytes</DIV>
<DIV>speex_bits_insert_terminator</DIV>
<DIV>&nbsp;</DIV>
<DIV><STRONG>In cd_search.c:</STRONG></DIV>
<DIV>noise_codebook_quant</DIV>
<DIV>noise_codebook_unquant</DIV>
<DIV>&nbsp;</DIV>
<DIV><STRONG>In filters.c:</STRONG></DIV>
<DIV>compute_rms</DIV>
<DIV>syn_percep_zero16</DIV>
<DIV>qmf_decomp</DIV>
<DIV>qmf_synth</DIV>
<DIV>&nbsp;</DIV>
<DIV><STRONG>In ltp.c:</STRONG></DIV>
<DIV>forced_pitch_quant</DIV>
<DIV>forced_pitch_unquant</DIV>
<DIV>&nbsp;</DIV>
<DIV><STRONG>In math_approx.c:</STRONG></DIV>
<DIV>spx_ilog2</DIV>
<DIV>_spx_cos_pi_2</DIV>
<DIV>spx_cos_norm</DIV>
<DIV>spx_exp2</DIV>
<DIV>spx_atan</DIV>
<DIV>&nbsp;</DIV>
<DIV><STRONG>In nb_celp.c:</STRONG></DIV>
<DIV>nb_encoder_destroy</DIV>
<DIV>nb_decoder_destroy</DIV>
<DIV>&nbsp;</DIV>
<DIV><STRONG>In quant_lsp.c:</STRONG></DIV>
<DIV>lsp_quant_nb</DIV>
<DIV>lsp_unquant_nb</DIV>
<DIV>lsp_quant_high</DIV>
<DIV>lsp_unquant_high</DIV>
<DIV>&nbsp;</DIV>
<DIV><STRONG>In speex.c:</STRONG></DIV>
<DIV>speex_encoder_destroy</DIV>
<DIV>speex_decoder_destroy</DIV>
<DIV>speex_encode</DIV>
<DIV>speex_decode</DIV>
<DIV>nb_mode_query</DIV>
<DIV>wb_mode_query</DIV>
<DIV>speex_lib_ctl</DIV>
<DIV>&nbsp;</DIV>
<DIV><STRONG>In speex_callbacks.c:</STRONG></DIV>
<DIV>speex_inband_handler</DIV>
<DIV>speex_std_mode_request_handler</DIV>
<DIV>speex_std_low_mode_request_handler</DIV>
<DIV>speex_std_high_mode_request_handler</DIV>
<DIV>speex_std_vbr_request_handler</DIV>
<DIV>speex_std_enh_request_handler</DIV>
<DIV>speex_std_vbr_quality_request_handler</DIV>
<DIV>speex_std_char_handler</DIV>
<DIV>speex_default_user_handler</DIV>
<DIV>&nbsp;</DIV>
<DIV><STRONG>In vbr.c:</STRONG></DIV>
<DIV>vbr_analysis</DIV>
<DIV>vbr_destroy</DIV>
<DIV>&nbsp;</DIV>
<DIV><STRONG>In vq.c:</STRONG></DIV>
<DIV>vq_index</DIV>
<DIV>vq_nbest_sign</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV></BODY></HTML>