[FFmpeg-cvslog] r29010 - in trunk/libswscale: yuv2rgb.c yuv2rgb_template.c

David Conrad lessen42
Sat Mar 21 11:40:54 CET 2009


On Mar 21, 2009, at 6:35 AM, C?dric Schieli wrote:

> 2009/3/21 Reimar D?ffinger <Reimar.Doeffinger at gmx.de>:
>> On Fri, Mar 20, 2009 at 08:42:55PM +0100, C?dric Schieli wrote:
>>> 2009/3/20 Reimar D?ffinger <Reimar.Doeffinger at gmx.de>:
>>>> On Fri, Mar 20, 2009 at 03:14:28PM +0100, sdrik wrote:
>>>>> Modified: trunk/libswscale/yuv2rgb_template.c
>>>>> =
>>>>> =
>>>>> =
>>>>> =
>>>>> =
>>>>> =
>>>>> =
>>>>> =
>>>>> =
>>>>> =
>>>>> =
>>>>> =
>>>>> ==================================================================
>>>>> --- trunk/libswscale/yuv2rgb_template.c       Fri Mar 20  
>>>>> 15:01:51 2009        (r29009)
>>>>> +++ trunk/libswscale/yuv2rgb_template.c       Fri Mar 20  
>>>>> 15:14:28 2009        (r29010)
>>>>> @@ -171,6 +171,14 @@
>>>>>      __asm__ volatile (EMMS); \
>>>>>      return srcSliceH; \
>>>>>
>>>>> +#define YUV2RGB_OPERANDS_ALPHA \
>>>>> +        : "+r" (index), "+r" (image) \
>>>>> +        : "r" (pu - index), "r" (pv - index), "r"(&c- 
>>>>> >redDither), "r" (py - 2*index), "r" (pa - 2*index) \
>>>>> +        ); \
>>>>> +    } \
>>>>> +    __asm__ volatile (EMMS); \
>>>>> +    return srcSliceH; \
>>>>> +
>>>>>  static inline int RENAME(yuv420_rgb16)(SwsContext *c, uint8_t*  
>>>>> src[], int srcStride[], int srcSliceY,
>>>>>                                         int srcSliceH, uint8_t*  
>>>>> dst[], int dstStride[]){
>>>>>      int y, h_size;
>>>>> @@ -456,3 +464,19 @@ static inline int RENAME(yuv420_rgb32)(S
>>>>>      YUV2RGB_ENDLOOP(4)
>>>>>      YUV2RGB_OPERANDS
>>>>>  }
>>>>> +
>>>>> +static inline int RENAME(yuva420_rgb32)(SwsContext *c, uint8_t*  
>>>>> src[], int srcStride[], int srcSliceY,
>>>>> +                                        int srcSliceH, uint8_t*  
>>>>> dst[], int dstStride[]){
>>>>> +    int y, h_size;
>>>>> +
>>>>> +    YUV2RGB_LOOP(4)
>>>>> +
>>>>> +        uint8_t *pa = src[3] + y*srcStride[3];
>>>>> +        YUV2RGB_INIT
>>>>> +        YUV2RGB
>>>>> +        "movq     (%6, %0, 2), %%mm3;"            /* Load 8 A  
>>>>> A7 A6 A5 A4 A3 A2 A1 A0 */
>>>>> +        RGB_PLANAR2PACKED32
>>>>> +
>>>>> +    YUV2RGB_ENDLOOP(4)
>>>>> +    YUV2RGB_OPERANDS_ALPHA
>>>>> +}
>>>>
>>>> Do _not_ commit assembler code without checking compilation with - 
>>>> fPIC
>>>> and --enable-debug.
>>>> This uses 7 registers and can only be used when the appropriate  
>>>> define
>>>> is set.
>>>
>>> That's why HAVE_7REGS is checked at the callsite :
>>
>> Well, then the function is not called, but it is still compiled, so  
>> that
>> doesn't help a bit.
>>
>>> It build for me with --enable-debug --extra-cflags=-fPIC on x86_32
>>
>> Forgot --enable-gpl maybe?
>
> No, --enable-gpl was set here.
>
>> Either way it is certain it broke the 32 bit OSX build:
>> http://fate.multimedia.cx/index.php?build_record=66730
>
> Yes, I saw this. I guess this has something to do with the compiler
> not optimizing out the building of yuva420_rgb32 when !HAVE_7REGS
>
> Does it build with the following (ugly) hack ?


After de-mangling the patch, it does fix the build.



More information about the ffmpeg-cvslog mailing list