From 88405c002c74a39c97eb425cd3a292337dcc6324 Mon Sep 17 00:00:00 2001 From: atraczyk <andreastraczyk@gmail.com> Date: Wed, 22 Jun 2016 10:35:07 -0400 Subject: [PATCH] daemon: replace remaining usleep with sleep_for Provide better cross platform compiler compliance by using c++11 standard library's std::this_thread::sleep_for. Change-Id: Ib0ef9bec8336ae620315c05b53706e4605ab00fb Tuleap: #794 --- src/media/audio/jack/jacklayer.cpp | 2 +- src/media/media_decoder.cpp | 16 ++++------------ src/media/video/test/test_shm.cpp | 4 ++-- src/media/video/test/test_video_input.cpp | 3 +-- src/media/video/video_mixer.cpp | 10 +++++----- 5 files changed, 13 insertions(+), 22 deletions(-) diff --git a/src/media/audio/jack/jacklayer.cpp b/src/media/audio/jack/jacklayer.cpp index 5692b35b3f..f56e8cccd6 100644 --- a/src/media/audio/jack/jacklayer.cpp +++ b/src/media/audio/jack/jacklayer.cpp @@ -251,7 +251,7 @@ JackLayer::ringbuffer_worker() return; // FIXME this is all kinds of evil - usleep(20000); + std::this_thread::sleep_for(std::chrono::milliseconds(20)); capture(); playback(); diff --git a/src/media/media_decoder.cpp b/src/media/media_decoder.cpp index cd9f5b4a62..d1a3d71720 100644 --- a/src/media/media_decoder.cpp +++ b/src/media/media_decoder.cpp @@ -324,14 +324,10 @@ MediaDecoder::decode(VideoFrame& result) frame->format = (AVPixelFormat) correctPixFmt(frame->format); if (emulateRate_ and frame->pkt_pts != AV_NOPTS_VALUE) { auto frame_time = getTimeBase()*(frame->pkt_pts - avStream_->start_time); - auto target = startTime_ + frame_time.real() * 1000000; + auto target = startTime_ + static_cast<std::int64_t>(frame_time.real() * 1e6); auto now = av_gettime(); if (target > now) { -#if LIBAVUTIL_VERSION_CHECK(51, 34, 0, 61, 100) - av_usleep(target - now); -#else - usleep(target - now); -#endif + std::this_thread::sleep_for(std::chrono::milliseconds(target - now)); } } return Status::FrameFinished; @@ -379,14 +375,10 @@ MediaDecoder::decode(const AudioFrame& decodedFrame) if (frameFinished) { if (emulateRate_ and frame->pkt_pts != AV_NOPTS_VALUE) { auto frame_time = getTimeBase()*(frame->pkt_pts - avStream_->start_time); - auto target = startTime_ + frame_time.real() * 1000000; + auto target = startTime_ + static_cast<std::int64_t>(frame_time.real() * 1e6); auto now = av_gettime(); if (target > now) { -#if LIBAVUTIL_VERSION_CHECK(51, 34, 0, 61, 100) - av_usleep(target - now); -#else - usleep(target - now); -#endif + std::this_thread::sleep_for(std::chrono::milliseconds(target - now)); } } return Status::FrameFinished; diff --git a/src/media/video/test/test_shm.cpp b/src/media/video/test/test_shm.cpp index 1c3ad80426..6512436766 100644 --- a/src/media/video/test/test_shm.cpp +++ b/src/media/video/test/test_shm.cpp @@ -49,7 +49,7 @@ sink_thread() while (!done) { sink.render(test_vec); - usleep(1000); + std::this_thread::sleep_for(std::chrono::milliseconds(1)); } sink.stop(); std::cerr << std::endl; @@ -77,7 +77,7 @@ run_client() assert(dest.size() == test_data_str.size()); while (not done and dest != test_data_str) { src.render(dest.data(), dest.size()); - usleep(1000); + std::this_thread::sleep_for(std::chrono::milliseconds(1)); } src.stop(); std::cerr << "Got characters, exitting client process" << std::endl; diff --git a/src/media/video/test/test_video_input.cpp b/src/media/video/test/test_video_input.cpp index 5f7a57c4cc..732a0621d6 100644 --- a/src/media/video/test/test_video_input.cpp +++ b/src/media/video/test/test_video_input.cpp @@ -18,7 +18,6 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#include <unistd.h> // for sleep #include "test_video_input.h" #include "video_input.h" #include "media_const.h" @@ -33,7 +32,7 @@ void VideoInputTest::testInput() std::string resource = DRing::Media::VideoProtocolPrefix::DISPLAY + sep + std::string(getenv("DISPLAY") ? : ":0.0"); VideoInput video; video.switchInput(resource); - usleep(10000); + std::this_thread::sleep_for(std::chrono::milliseconds(10)); } }}} // namespace ring::video::test diff --git a/src/media/video/video_mixer.cpp b/src/media/video/video_mixer.cpp index 78a56d5f4b..48c914df32 100644 --- a/src/media/video/video_mixer.cpp +++ b/src/media/video/video_mixer.cpp @@ -44,7 +44,7 @@ private: std::mutex mutex_; }; -static constexpr const double FRAME_DURATION = 1/30.; +static constexpr const auto FRAME_DURATION = std::chrono::duration<double>(1/30.); VideoMixer::VideoMixer(const std::string& id) : VideoGenerator::VideoGenerator() @@ -122,10 +122,10 @@ void VideoMixer::process() { const auto now = std::chrono::system_clock::now(); - const std::chrono::duration<double> diff = now - lastProcess_; - const double delay = FRAME_DURATION - diff.count(); - if (delay > 0) - usleep(delay * 1e6); + const auto diff = now - lastProcess_; + const auto delay = FRAME_DURATION - diff; + if (delay.count() > 0) + std::this_thread::sleep_for(delay); lastProcess_ = now; VideoFrame& output = getNewFrame(); -- GitLab