[FFmpeg-cvslog] r21735 - trunk/libavutil/internal.h
Michael Kostylev
michael.kostylev
Sat Feb 20 00:07:17 CET 2010
On Fri Feb 19 19:44:04 2010
M?ns Rullg?rd wrote:
>>>>>> On Tue Feb 9 23:55:16 2010
>>>>>> mru wrote:
>>>>>>
>>>>>>> Define missing llrint() as macro instead of inline function
>>>>>>>
>>>>>>> This fixes building on some broken systems.
>>>>>>>
>>>>>>> Modified:
>>>>>>> trunk/libavutil/internal.h
>>>>>>>
>>>>>>> Modified: trunk/libavutil/internal.h
>>>>>>> ==============================================================================
>>>>>>> --- trunk/libavutil/internal.h Tue Feb 9 23:55:13 2010 (r21734)
>>>>>>> +++ trunk/libavutil/internal.h Tue Feb 9 23:55:16 2010 (r21735)
>>>>>>> @@ -225,10 +225,8 @@ static inline av_const unsigned int ff_s
>>>>>>> #endif /* HAVE_EXP2F */
>>>>>>>
>>>>>>> #if !HAVE_LLRINT
>>>>>>> -static av_always_inline av_const long long llrint(double x)
>>>>>>> -{
>>>>>>> - return rint(x);
>>>>>>> -}
>>>>>>> +#undef llrint
>>>>>>> +#define llrint(x) rint(x)
>>>>>>
>>>>>> The dos machine is unhappy with this macro.
>>>>>
>>>>> Please elaborate.
>>>>
>>>> A bunch of tests from the regression suite and the idroq-video-encode
>>>> test no longer pass since r21735 (reverting it or applying a quick
>>>> hack attached in the previous message make them pass again).
>>>
>>> Weird. Which call to llrint() is causing the trouble?
>>
>> libavcodec/opt.c, line 67:
>> case FF_OPT_TYPE_INT: *(int *)dst= llrint(num/den)*intnum; break;
>
> Applying your cast to that expression should have no effect at all
> since the usual arithmetic conversions already specify that action.
Under dos the argument of rint might be too big, e.g. 0xa0080004.0/1 while
normally it should be equal to 0x80004.0/1.
> Do I smell a broken compiler?
s/compiler/libc/
Michael
More information about the ffmpeg-cvslog
mailing list