[MPlayer-dev-eng] [PATCH] SSE2 optimizations for libmpeg2

Alexander Strange astrange at ithinksw.com
Thu Apr 3 02:42:01 CEST 2008


On Apr 2, 2008, at 7:48 PM, Diego Biurrun wrote:
> On Wed, Apr 02, 2008 at 07:18:39PM -0400, Alexander Strange wrote:
>>
>> On Apr 2, 2008, at 7:15 PM, Diego Biurrun wrote:
>>> On Wed, Apr 02, 2008 at 05:39:57AM -0400, Alexander Strange wrote:
>>>>
>>>> On Apr 1, 2008, at 2:27 PM, Diego Biurrun wrote:
>>>>> On Tue, Mar 11, 2008 at 11:34:44AM +0800, Zuxy Meng wrote:
>>>>>>
>>>>>> 2008/2/19, Diego Biurrun <diego at biurrun.de>:
>>>>>>>
>>>>>>> And here is a version without the (apparently ineffectual)  
>>>>>>> motion
>>>>>>> compensation bits.
>>>>>>
>>>>>> Are u going to apply this?
>>>>>
>>>>> I'm not at all sure. According to Christophe Massiot on libmpeg2-
>>>>> devel the output of this IDCT differs from the MMXEXT one even
>>>>> though
>>>>> they use the same algorithm. Thus I'm not sure if it will ever be
>>>>> acceptable upstream.
>>>>>
>>>>> There must still be a bug lurking in there.  Maybe you can find  
>>>>> it?
>>>>
>>>> This should be rounder_sse2 (0):
>>>> static const int32_t rounder4_128[] ATTR_ALIGN(16) = rounder (0);
>>>>
>>>> Attached patch fixes that and builds with the last change to
>>>> libmpeg2.
>>>
>>> You also make the following changes respective to the patch I  
>>> posted:
>>>
>>> diff -u libmpeg2/idct_mmx.c libmpeg2/idct_mmx.c
>>> --- libmpeg2/idct_mmx.c	(working copy)
>>> +++ libmpeg2/idct_mmx.c	(working copy)
>>> @@ -869,7 +869,7 @@
>>>
>>> -static inline void idct (int16_t * const block)
>>> +void idct (int16_t * const block)
>>> {
>>> @@ -902,7 +902,7 @@
>>>
>>> -static inline void sse2_idct (int16_t * const block)
>>> +void sse2_idct (int16_t * const block)
>>>
>>> Is this on purpose?
>>
>> That's accidentally left over from testing it. I only meant to change
>> rounder(0) and the idct init function.
>
> IOW, I should just apply the following change to my patch, right?
>
> -+    static const int32_t rounder4_128[] ATTR_ALIGN(16) = rounder  
> (0);
> ++    static const int32_t rounder4_128[] ATTR_ALIGN(16) =  
> rounder_sse2 (0);

Yes.


> Or what do you mean by the "idct init function"?

Your r26314 made the patch not apply to idct.c/mpeg2_idct_init, since  
the #ifdefs changed.




More information about the MPlayer-dev-eng mailing list