On 07/09/2011 09:45 PM, Måns Rullgård wrote:

> Justin Ruggles <[email protected]> writes:
> 
>> This is about 75% faster on Athlon64.
>> ---
>>  libavcodec/ac3dsp.c |    8 ++++++++
>>  1 files changed, 8 insertions(+), 0 deletions(-)
>>
>> diff --git a/libavcodec/ac3dsp.c b/libavcodec/ac3dsp.c
>> index 98c7357..883a723 100644
>> --- a/libavcodec/ac3dsp.c
>> +++ b/libavcodec/ac3dsp.c
>> @@ -20,6 +20,7 @@
>>   */
>>
>>  #include "libavutil/avassert.h"
>> +#include "libavutil/intreadwrite.h"
>>  #include "avcodec.h"
>>  #include "ac3.h"
>>  #include "ac3dsp.h"
>> @@ -164,8 +165,15 @@ static void ac3_extract_exponents_c(uint8_t *exp, 
>> int32_t *coef, int nb_coefs)
>>      int i;
>>
>>      for (i = 0; i < nb_coefs; i++) {
>> +#if HAVE_FAST_CLZ
>>          int v = abs(coef[i]);
>>          exp[i] = v ? 23 - av_log2(v) : 24;
>> +#else
>> +        /* av_log2() is slow without fast clz, so get exponent from float 
>> instead */
>> +        av_alias32 c;
>> +        c.f32  = (abs(coef[i]) << 1) | 0x1;
>> +        exp[i] = 151 - (c.u32 >> 23);
>> +#endif
>>      }
>>  }
>>
>> -- 
> 
> This is only good if floating-point is faster than the table-based av_log().
> In a soft-float implementation, that is almost certainly not the case.


Ah, true. And since it's not as beneficial as I first thought, patch
dropped.

Thanks,
Justin
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to