[Speex-dev] Attempting to shrink speex: Are these functions necessary?

Jean-Marc Valin jean-marc.valin at usherbrooke.ca
Tue Aug 7 06:16:09 PDT 2007


Michael Jacobson a écrit :
> 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.  

I see. Just be careful how you handle the bits.

> what part is the vocoder part of the decode?

Look for this bit:

/*Vocoder mode*/
if (st->submodeID==1)
{...

In general, any code that depends on st->submodeID being anything else
than the one you're using can go away.

	Jean-Marc

> Thanks for your help!
>  
> -Mike
> 
>>>> Jean-Marc Valin <jean-marc.valin at usherbrooke.ca> 08/06/07 7:00 PM
>>>>
> 
>> 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.  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.
> 
> Assuming you're not changing your code, there are very few functions
> that would be "rarely called" (either it is every time, or it's not).
> The only exception might be the packet loss concealment function
> (nb_decode_lost).
> 
>> these are the functions that I removed:
>>  
>> In bits.c:
>> speex_bits_init
>> speex_bits_init_buffer
>> speex_bits_destroy
>> speex_bits_reset
>> speex_bits_rewind
>> speex_bits_read_from
>> speex_bits_flush
>> speex_bits_read_whole_bytes
>> speex_bits_write
>> speex_bits_write_whole_bytes
>> speex_bits_unpack_signed
>> speex_bits_peek_unsigned
>> speex_bits_peek
>> speex_bits_nbytes
>> speex_bits_insert_terminator
> 
> You probably don't need most of these, but I'm surprised you're not at
> least using speex_bits_init(), speex_bits_read_from() and
> speex_bits_write(). What are you using instead?
> 
>> In cd_search.c:
>> noise_codebook_quant
>> noise_codebook_unquant
> 
> No need for that (assuming you only want 8 kbps).
> 
>> In filters.c:
>> compute_rms
>> syn_percep_zero16
>> qmf_decomp
>> qmf_synth
> 
> No need for that.
> 
>> In ltp.c:
>> forced_pitch_quant
>> forced_pitch_unquant
> 
> No need for that.
> 
>> In math_approx.c:
>> spx_ilog2
>> _spx_cos_pi_2
>> spx_cos_norm
>> spx_exp2
>> spx_atan
> 
> No need for that.
> 
>> In nb_celp.c:
>> nb_encoder_destroy
>> nb_decoder_destroy
> 
> No need for that if you never plan on freeing the memory
> 
>> In quant_lsp.c:
>> lsp_quant_nb
>> lsp_unquant_nb
>> lsp_quant_high
>> lsp_unquant_high
> 
> No need for that if you just want 8 kbps.
> 
>> In speex.c:
>> speex_encoder_destroy
>> speex_decoder_destroy
>> speex_encode
>> speex_decode
>> nb_mode_query
>> wb_mode_query
>> speex_lib_ctl
> 
> No need for that if you're not using them in your code.
> 
>> In speex_callbacks.c:
>> speex_inband_handler
>> speex_std_mode_request_handler
>> speex_std_low_mode_request_handler
>> speex_std_high_mode_request_handler
>> speex_std_vbr_request_handler
>> speex_std_enh_request_handler
>> speex_std_vbr_quality_request_handler
>> speex_std_char_handler
>> speex_default_user_handler
> 
> No need for that.
> 
>> In vbr.c:
>> vbr_analysis
>> vbr_destroy
> 
> No need for that.
> 
>> In vq.c:
>> vq_index
>> vq_nbest_sign
> 
> No need for those.
> 
> 
> So yes, there's a lot of stuff you can remove. You can also get rid of
> the stereo preprocess, mdf files. You can also remove the VBR part of
> the narrowband encoder and the vocoder part of the decoder. As I was
> saying, there are very few codepaths that are only taken sometimes. So
> unless a bit of code was executed in your test, it's very likely you
> don't need it (packet loss concealment being the exception, because
> it's
> only needed when you lose packets).
> 
>     Jean-Marc
> 
> 
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Speex-dev mailing list
> Speex-dev at xiph.org
> http://lists.xiph.org/mailman/listinfo/speex-dev


More information about the Speex-dev mailing list