On 05/27/2011 04:57 PM, Ronald S. Bultje wrote:

> Hi,
> 
> On Fri, May 27, 2011 at 4:08 PM, Justin Ruggles
> <[email protected]> wrote:
>>
>> This does all the actual bit counting as a final step.
>> ---
>> Updated the x86 implementation of compute_mantissa_size() based on Ronald's
>> suggestions.
>>
>> Instead of shifting by 17, I just used 16, which is still accurate enough
>> for the range here and simplifies a couple things. First of all, it gets rid
>> of the right shift altogether when using pmulhuw. Secondly, 65536 won't fit
>> in a word, but 32768 does.
>>
>>
>>  libavcodec/ac3dsp.c              |   42 +++++++++++-------
>>  libavcodec/ac3dsp.h              |   20 ++++++++-
>>  libavcodec/ac3enc.c              |   92 
>> ++++++++++++++++++++------------------
>>  libavcodec/arm/ac3dsp_arm.S      |   52 ---------------------
>>  libavcodec/arm/ac3dsp_init_arm.c |    2 -
>>  libavcodec/x86/ac3dsp.asm        |   53 ++++++++++++++++++++++
>>  libavcodec/x86/ac3dsp_mmx.c      |    3 +
>>  7 files changed, 150 insertions(+), 114 deletions(-)
>>  delete mode 100644 libavcodec/arm/ac3dsp_arm.S
> 
> Is this bitexact? The asm code looks nice here, but it's different
> enough from the C and from the previous version that I'm not sure. I
> suppose you're doing a FASTDIV()-type-thing, in which case this may be
> "good enough", but if it's not bitexact, you may want to
> if(!(avcodeccontext->flags & bitexact)) it...
> 
> Otherwise, nice work!


Yes, the division is bit-exact as long as the sum is below 32768, which
it always will be in this case.  This is basically the same as the
previous sse4.1 version, except that it works with words instead of
dwords and right shifts by 16 instead of 17.

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

Reply via email to