Closed
Bug 1122547
Opened 11 years ago
Closed 11 years ago
media/webrtc/trunk/webrtc/modules/video_coding/main/source/receiver.cc:162:14: error: call of overloaded 'abs(int64_t&)' is ambiguous
Categories
(Core :: WebRTC, defect)
Tracking
()
RESOLVED
FIXED
mozilla38
People
(Reporter: jbeich, Assigned: jbeich)
References
Details
Attachments
(1 file, 2 obsolete files)
1.87 KB,
patch
|
jesup
:
review+
|
Details | Diff | Splinter Review |
next_render_time_ms and now_ms are of |int64_t| type. On FreeBSD i386 (and other 32bit archs) it would be |long long|. While FreeBSD has llabs() it doesn't define _GLIBCXX_USE_C99 which means no std::llabs(). For old libstdc++ (from GCC 4.2.1) this also means no |long long std::abs(long long)|.
https://svnweb.freebsd.org/changeset/base/255294
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54686
Not sure why GCC-4.8 with _GLIBCXX_USE_LONG_LONG disabled doesn't fail like Clang-3.4 + libstdc++-4.2.
In file included from media/webrtc/trunk/webrtc/modules/modules_webrtc_video_coding/Unified_cpp__webrtc_video_coding0.cpp:137:
media/webrtc/trunk/webrtc/modules/video_coding/main/source/receiver.cc:162:14: error:
call to 'abs' is ambiguous
} else if (std::abs(next_render_time_ms - now_ms) > max_video_delay_ms_) {
^~~~~~~~
/usr/include/stdlib.h:83:6: note: candidate function
int abs(int) __pure2;
^
/usr/include/c++/4.2/cstdlib:143:3: note: candidate function
abs(long __i) { return labs(__i); }
^
In file included from media/webrtc/trunk/webrtc/modules/modules_webrtc_video_coding/Unified_cpp__webrtc_video_coding0.cpp:137:
media/webrtc/trunk/webrtc/modules/video_coding/main/source/receiver.cc:167:35: error:
call to 'abs' is ambiguous
static_cast<int>(std::abs(next_render_time_ms - now_ms)),
^~~~~~~~
/usr/include/stdlib.h:83:6: note: candidate function
int abs(int) __pure2;
^
/usr/include/c++/4.2/cstdlib:143:3: note: candidate function
abs(long __i) { return labs(__i); }
^
2 errors generated.
mozilla::Abs() adds |unsigned| so casting is required to avoid
In file included from media/webrtc/trunk/webrtc/modules/modules_webrtc_video_coding/Unified_cpp__webrtc_video_coding0.cpp:137:
media/webrtc/trunk/webrtc/modules/video_coding/main/source/receiver.cc:164:57: warning:
comparison of integers of different signs: 'typename detail::AbsReturnType<long long>::Type'
(aka 'unsigned long long') and 'int' [-Wsign-compare]
} else if (mozilla::Abs(next_render_time_ms - now_ms) > max_video_delay_ms_) {
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~
1 warning generated.
Attachment #8550309 -
Flags: review?(rjesup)
Oops, use static_cast like the rest of the file.
Attachment #8550309 -
Attachment is obsolete: true
Attachment #8550309 -
Flags: review?(rjesup)
Attachment #8550322 -
Flags: review?(rjesup)
Comment 3•11 years ago
|
||
Comment on attachment 8550322 [details] [diff] [review]
use mozilla::Abs, v2
Review of attachment 8550322 [details] [diff] [review]:
-----------------------------------------------------------------
::: media/webrtc/trunk/webrtc/modules/video_coding/main/source/receiver.cc
@@ +161,5 @@
> // Assume that render timing errors are due to changes in the video stream.
> if (next_render_time_ms < 0) {
> timing_error = true;
> + } else if (static_cast<int>(mozilla::Abs(next_render_time_ms - now_ms)) >
> + max_video_delay_ms_) {
We really, really try to avoid mozilla-isms in webrtc.org import files, unless #ifdefed (and mostly we try to avoid those other than platform ifdefs like GONK and BSD OS ifdefs).
a) can we redo this to be non-mozilla-specific but still have the std::abs() functionality needed here? Perhaps by casting other bits - such that it's upstreamable.
b) if not, let's make it #ifdef'd to the BSDs in question, and try to avoid mozillaisms in that as well.
Attachment #8550322 -
Flags: review?(rjesup) → review-
Let's cast before dropping sign. Return value of overloaded std::abs() is still signed, anyway. And WEBRTC_TRACE already assumes time delta cannot be larger than |int|.
https://treeherder.mozilla.org/#/jobs?repo=try&revision=97bc729b1d24
Attachment #8550322 -
Attachment is obsolete: true
Attachment #8550645 -
Flags: review?(rjesup)
Updated•11 years ago
|
Attachment #8550645 -
Flags: review?(rjesup) → review+
Keywords: checkin-needed
Comment 5•11 years ago
|
||
Assignee: nobody → jbeich
Keywords: checkin-needed
Comment 6•11 years ago
|
||
Status: NEW → RESOLVED
Closed: 11 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla38
You need to log in
before you can comment on or make changes to this bug.
Description
•