[FFmpeg-devel] [PATCH] do not hardcode filter order in ff_acelp_lspd2lpc()
Vitor Sessak
vitor1001
Sat Nov 7 00:03:39 CET 2009
Michael Niedermayer wrote:
> On Thu, Nov 05, 2009 at 05:36:36AM +0100, Vitor Sessak wrote:
>> Reynaldo H. Verdejo Pinochet wrote:
>>> Hello Vitor
>>> Vitor Sessak wrote:
>>>> $subj. It is useful for SIPR but also it makes sense to make shared
>>>> functions as general as possible.
>>> QCELP part is ok but I'd make lp_half_order
>>> a single-byte sized type.
>> Fine for me (I suppose comparing uint8_t with int is not slower in any arch
>> we support). New version attached.
>>
>> -Vitor
>
>> lsp.c | 12 ++++++------
>> lsp.h | 2 +-
>> qcelpdec.c | 2 +-
>> 3 files changed, 8 insertions(+), 8 deletions(-)
>> 4c16615dbbd30c5ab006c8da8b879ea577097b39 lspd2lpc_2.diff
>> Index: libavcodec/lsp.c
>> ===================================================================
>> --- libavcodec/lsp.c (revision 20450)
>> +++ libavcodec/lsp.c (working copy)
>> @@ -155,20 +155,20 @@
>> }
>> }
>>
>> -void ff_acelp_lspd2lpc(const double *lsp, float *lpc)
>> +void ff_acelp_lspd2lpc(const double *lsp, float *lpc, uint8_t lp_half_order)
>> {
>> - double pa[6], qa[6];
>> + double pa[lp_half_order+1], qa[lp_half_order+1];
>> int i;
>>
>> - lsp2polyf(lsp, pa, 5);
>> - lsp2polyf(lsp + 1, qa, 5);
>> + lsp2polyf(lsp, pa, lp_half_order);
>> + lsp2polyf(lsp + 1, qa, lp_half_order);
>>
>> - for (i=4; i>=0; i--)
>> + for (i=lp_half_order-1; i>=0; i--)
>> {
>> double paf = pa[i+1] + pa[i];
>> double qaf = qa[i+1] - qa[i];
>>
>> lpc[i ] = 0.5*(paf+qaf);
>> - lpc[9-i] = 0.5*(paf-qaf);
>> + lpc[(lp_half_order << 1) - 1 -i] = 0.5*(paf-qaf);
>> }
>
> i would
> lpc2= lpc + (lp_half_order << 1) - 1;
> and
> lpc2[-i] = ...
>
> that way lp_half_order and i also become redundant and one can be droped
> about int8 vs. int, its possible that using int8 as index into an array
> like lpc[int8_variable] could be slower in some archs (x86 being one)
Since pa[] is an array not a pointer I cannot do the
while(lp_half_order--) { (...) pa++; ga++; lpc++; lpc2--;} trick not to
use the var "i" (and the other option would use lpc[int8_var]). In this
new version I've also made the loop count forward to make it more readable.
-Vitor
-------------- next part --------------
A non-text attachment was scrubbed...
Name: lspd2lpc_3.diff
Type: text/x-patch
Size: 1704 bytes
Desc: not available
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20091107/c81469e1/attachment.bin>
More information about the ffmpeg-devel
mailing list