<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>for the bits init I am using speex_bits_set_bit_buffer and I don't use the write to or read from because the data is already in the buffer I am reading from and I am writing to the final buffer so I don't need to move arrays around.&nbsp; </DIV>
<DIV>&nbsp;</DIV>
<DIV>what part is the vocoder part of the decode?</DIV>
<DIV>Thanks for your help!</DIV>
<DIV>&nbsp;</DIV>
<DIV>-Mike<BR><BR>&gt;&gt;&gt; Jean-Marc Valin &lt;jean-marc.valin@usherbrooke.ca&gt; 08/06/07 7:00 PM &gt;&gt;&gt;<BR></DIV>
<DIV style="COLOR: #000000">&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><BR>Assuming you're not changing your code, there are very few functions<BR>that would be "rarely called" (either it is every time, or it's not).<BR>The only exception might be the packet loss concealment function<BR>(nb_decode_lost).<BR><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><BR>You probably don't need most of these, but I'm surprised you're not at<BR>least using speex_bits_init(), speex_bits_read_from() and<BR>speex_bits_write(). What are you using instead?<BR><BR>&gt; In cd_search.c:<BR>&gt; noise_codebook_quant<BR>&gt; noise_codebook_unquant<BR><BR>No need for that (assuming you only want 8 kbps).<BR><BR>&gt; In filters.c:<BR>&gt; compute_rms<BR>&gt; syn_percep_zero16<BR>&gt; qmf_decomp<BR>&gt; qmf_synth<BR><BR>No need for that.<BR><BR>&gt; In ltp.c:<BR>&gt; forced_pitch_quant<BR>&gt; forced_pitch_unquant<BR><BR>No need for that.<BR><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><BR>No need for that.<BR><BR>&gt; In nb_celp.c:<BR>&gt; nb_encoder_destroy<BR>&gt; nb_decoder_destroy<BR><BR>No need for that if you never plan on freeing the memory<BR><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><BR>No need for that if you just want 8 kbps.<BR><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><BR>No need for that if you're not using them in your code.<BR><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><BR>No need for that.<BR><BR>&gt; In vbr.c:<BR>&gt; vbr_analysis<BR>&gt; vbr_destroy<BR><BR>No need for that.<BR><BR>&gt; In vq.c:<BR>&gt; vq_index<BR>&gt; vq_nbest_sign<BR><BR>No need for those.<BR><BR><BR>So yes, there's a lot of stuff you can remove. You can also get rid of<BR>the stereo preprocess, mdf files. You can also remove the VBR part of<BR>the narrowband encoder and the vocoder part of the decoder. As I was<BR>saying, there are very few codepaths that are only taken sometimes. So<BR>unless a bit of code was executed in your test, it's very likely you<BR>don't need it (packet loss concealment being the exception, because it's<BR>only needed when you lose packets).<BR><BR>&nbsp;&nbsp;&nbsp; Jean-Marc<BR></DIV></BODY></HTML>