[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