diff --git a/CMakeLists.txt b/CMakeLists.txt index 4b160d9b1d15986e20dd19d4083d0f7d9080429a..5b08d4d0cd9c034e7fe40ac701053a9b1d72097e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -40,10 +40,11 @@ if (WITH_OPTFLOW) set(HAVE_OPTFLOW true) endif() -find_package( LibArchive ) -if (LibArchive_FOUND) - set(HAVE_LIBARCHIVE true) -endif() +# Enable if the old snapshot is still needed +#find_package( LibArchive ) +#if (LibArchive_FOUND) +# set(HAVE_LIBARCHIVE true) +#endif() if (WITH_OPENVR) ## OpenVR API path diff --git a/applications/calibration/src/lens.cpp b/applications/calibration/src/lens.cpp index c0c44bbe0cd387545b3f3f1980abf9fa6f5e701c..bc675d3659041a3598695ef3924566b7135a84e1 100644 --- a/applications/calibration/src/lens.cpp +++ b/applications/calibration/src/lens.cpp @@ -79,7 +79,7 @@ void ftl::calibration::intrinsic(map<string, string> &opt) { Size tmp_size; loadIntrinsics(filename_intrinsics, camera_matrix, tmp, tmp_size); - CHECK(camera_matrix.size() == n_cameras); // (camera_matrix.size() == dist_coeffs.size()) + CHECK(camera_matrix.size() == static_cast<unsigned int>(n_cameras)); // (camera_matrix.size() == dist_coeffs.size()) if ((tmp_size != image_size) && (!tmp_size.empty())) { Mat scale = Mat::eye(Size(3, 3), CV_64FC1); diff --git a/applications/ftl2mkv/src/main.cpp b/applications/ftl2mkv/src/main.cpp index 3e6b0e302bd7411f492a3a6eb9fbdc708dbe6fba..783bacb20290483955d7a50379a4268ad4a2cf66 100644 --- a/applications/ftl2mkv/src/main.cpp +++ b/applications/ftl2mkv/src/main.cpp @@ -18,7 +18,7 @@ using ftl::codecs::Channel; static AVStream *add_video_stream(AVFormatContext *oc, const ftl::codecs::Packet &pkt) { - AVCodecContext *c; + //AVCodecContext *c; AVStream *st; st = avformat_new_stream(oc, 0); @@ -29,7 +29,11 @@ static AVStream *add_video_stream(AVFormatContext *oc, const ftl::codecs::Packet AVCodecID codec_id; switch (pkt.codec) { + case codec_t::HEVC_LOSSLESS: case codec_t::HEVC : codec_id = AV_CODEC_ID_HEVC; break; + case codec_t::H264_LOSSLESS: + case codec_t::H264 : codec_id = AV_CODEC_ID_H264; break; + default: LOG(FATAL) << "Codec in FTL file must be HEVC or H264"; } //c = st->codec; diff --git a/applications/reconstruct/src/main.cpp b/applications/reconstruct/src/main.cpp index af7f5cac9ca1dfbb553b8ee5e4196b75a25d8375..f300b292a58ba18a1a0a4ee2e8c5e0352e4ed08f 100644 --- a/applications/reconstruct/src/main.cpp +++ b/applications/reconstruct/src/main.cpp @@ -116,9 +116,6 @@ static void run(ftl::Configurable *root) { Universe *net = ftl::create<Universe>(root, "net"); ftl::ctrl::Master ctrl(root, net); - // Controls - auto *controls = ftl::create<ftl::Configurable>(root, "controls"); - net->start(); net->waitConnections(); diff --git a/applications/reconstruct/src/reconstruction.cpp b/applications/reconstruct/src/reconstruction.cpp index 11e3ca6537ef2a1e989270406750be0e4f7a2ca5..5fab0496bb89bd059700f6da411b5ba3c11a42ef 100644 --- a/applications/reconstruct/src/reconstruction.cpp +++ b/applications/reconstruct/src/reconstruction.cpp @@ -61,9 +61,9 @@ size_t Reconstruction::size() { } -ftl::rgbd::FrameState &Reconstruction::state(int ix) { +ftl::rgbd::FrameState &Reconstruction::state(size_t ix) { UNIQUE_LOCK(exchange_mtx_, lk); - if (ix >= 0 && ix < fs_align_.frames.size()) { + if (ix < fs_align_.frames.size()) { return *fs_align_.frames[ix].origin(); } throw ftl::exception("State index out-of-bounds"); @@ -154,7 +154,7 @@ bool Reconstruction::render(ftl::rgbd::VirtualSource *vs, ftl::rgbd::Frame &out) // transform.setIdentity(); //} - Eigen::Affine3d sm = Eigen::Affine3d(Eigen::Scaling(double(value("scale", 1.0f)))); + //Eigen::Affine3d sm = Eigen::Affine3d(Eigen::Scaling(double(value("scale", 1.0f)))); bool res = false; //renderer_->render(vs, out, sm.matrix() * transform); //fs_render_.resetFull(); return res; diff --git a/applications/reconstruct/src/reconstruction.hpp b/applications/reconstruct/src/reconstruction.hpp index 5c2648b3e975209239ac0f2ab38ce9bae014e8cf..82cecd9ed8fa3466c15f1608c039dd8f2a9f8a8a 100644 --- a/applications/reconstruct/src/reconstruction.hpp +++ b/applications/reconstruct/src/reconstruction.hpp @@ -34,7 +34,7 @@ class Reconstruction : public ftl::Configurable, public ftl::rgbd::Generator { * Get the persistent state object for a frame. An exception is thrown * for a bad index. */ - ftl::rgbd::FrameState &state(int ix) override; + ftl::rgbd::FrameState &state(size_t ix) override; /** Register a callback to receive new frame sets. */ void onFrameSet(const ftl::rgbd::VideoCallback &) override; diff --git a/applications/tools/codec_eval/src/main.cpp b/applications/tools/codec_eval/src/main.cpp index c1730af505208497c38666e28f7e9df68f36259b..b4ba4355a0c3bf729339db61452fc522438e38a4 100644 --- a/applications/tools/codec_eval/src/main.cpp +++ b/applications/tools/codec_eval/src/main.cpp @@ -79,9 +79,6 @@ static void run(ftl::Configurable *root) { Universe *net = ftl::create<Universe>(root, "net"); ftl::ctrl::Master ctrl(root, net); - // Controls - auto *controls = ftl::create<ftl::Configurable>(root, "controls"); - net->start(); net->waitConnections(); diff --git a/components/audio/include/ftl/audio/buffer.hpp b/components/audio/include/ftl/audio/buffer.hpp index b96efc3399bb42824fb91d5555c6fc5da5e034ac..8fb6d580686b4fddf481fc6aa53e3f899c1220c4 100644 --- a/components/audio/include/ftl/audio/buffer.hpp +++ b/components/audio/include/ftl/audio/buffer.hpp @@ -79,8 +79,8 @@ class FixedBuffer { template <typename T, int CHAN> static T fracIndex(const std::vector<T> &in, float ix, int c) { - const int i1 = static_cast<int>(ix); - const int i2 = static_cast<int>(ix+1.0f); + const auto i1 = static_cast<unsigned int>(ix); + const auto i2 = static_cast<unsigned int>(ix+1.0f); const float alpha = ix - static_cast<float>(i1); return (i2*CHAN+CHAN >= in.size()) ? in[i1*CHAN+c] : in[i1*CHAN+c]*(1.0f-alpha) + in[i2*CHAN+c]*alpha; } diff --git a/components/audio/include/ftl/audio/source.hpp b/components/audio/include/ftl/audio/source.hpp index 87aafadd6e7388a613774b9cb713943d74ab5a5e..c7ba25608f35e478aa7828846e937e4bbd7938cc 100644 --- a/components/audio/include/ftl/audio/source.hpp +++ b/components/audio/include/ftl/audio/source.hpp @@ -29,7 +29,7 @@ class Source : public ftl::Configurable, public ftl::audio::Generator { * Get the persistent state object for a frame. An exception is thrown * for a bad index. */ - ftl::audio::FrameState &state(int ix) override; + ftl::audio::FrameState &state(size_t ix) override; /** Register a callback to receive new frame sets. */ void onFrameSet(const ftl::audio::FrameSet::Callback &) override; diff --git a/components/audio/src/source.cpp b/components/audio/src/source.cpp index 97aeac77ddc329ff34e6ed8e8bab034262f515d5..f43caeba2afb49c0e47de5575ca6f892b6d7bb2a 100644 --- a/components/audio/src/source.cpp +++ b/components/audio/src/source.cpp @@ -175,8 +175,8 @@ size_t Source::size() { return 1; } -ftl::audio::FrameState &Source::state(int ix) { - if (ix < 0 || ix > 1) throw ftl::exception("State index out-of-bounds"); +ftl::audio::FrameState &Source::state(size_t ix) { + if (ix >= 1) throw ftl::exception("State index out-of-bounds"); return state_; } diff --git a/components/codecs/src/decoder.cpp b/components/codecs/src/decoder.cpp index 3396233f18e294f130d27bebf632413ba050d831..af02fd7f1cd6a301d0c33c1054f897cbed516e0a 100644 --- a/components/codecs/src/decoder.cpp +++ b/components/codecs/src/decoder.cpp @@ -22,9 +22,8 @@ Decoder *ftl::codecs::allocateDecoder(const ftl::codecs::Packet &pkt) { case codec_t::H264_LOSSLESS: case codec_t::H264 : case codec_t::HEVC : return new ftl::codecs::NvPipeDecoder; + default : return nullptr; } - - return nullptr; } /** diff --git a/components/codecs/src/reader.cpp b/components/codecs/src/reader.cpp index ba68f26c9666da9a84ea86632caa1035bb6c5c88..00df80e3cb11c393ff9f3efe3e5156202449a77e 100644 --- a/components/codecs/src/reader.cpp +++ b/components/codecs/src/reader.cpp @@ -71,7 +71,7 @@ bool Reader::read(int64_t ts, const std::function<void(const ftl::codecs::Stream bool partial = false; int64_t extended_ts = ts + 200; // Buffer 200ms ahead - while (playing_ && stream_->good() || buffer_.nonparsed_size() > 0) { + while ((playing_ && stream_->good()) || buffer_.nonparsed_size() > 0) { if (buffer_.nonparsed_size() == 0 || (partial && buffer_.nonparsed_size() < 10000000)) { buffer_.reserve_buffer(10000000); stream_->read(buffer_.buffer(), buffer_.buffer_capacity()); @@ -143,7 +143,7 @@ bool Reader::read(int64_t ts) { } void Reader::onPacket(int streamID, const std::function<void(const ftl::codecs::StreamPacket &, ftl::codecs::Packet &)> &f) { - if (streamID >= handlers_.size()) handlers_.resize(streamID+1); + if (static_cast<unsigned int>(streamID) >= handlers_.size()) handlers_.resize(streamID+1); handlers_[streamID] = f; } diff --git a/components/codecs/test/nvpipe_codec_unit.cpp b/components/codecs/test/nvpipe_codec_unit.cpp index 2b32e28431890b0acc6e36a1ec8ce76968e7e122..9bb72b1a7916c310d9d35b058d99d0445589f0fb 100644 --- a/components/codecs/test/nvpipe_codec_unit.cpp +++ b/components/codecs/test/nvpipe_codec_unit.cpp @@ -289,8 +289,8 @@ TEST_CASE( "NvPipeDecoder::decode() - A colour test image" ) { REQUIRE( r ); REQUIRE( decoder.decode(pkt, out) ); - REQUIRE( out.cols == 1920 ); - REQUIRE( out.type() == CV_8UC4 ); + REQUIRE( (out.cols == 1920) ); + REQUIRE( (out.type() == CV_8UC4) ); //} REQUIRE( (cv::cuda::sum(out) != cv::Scalar(0,0,0)) ); @@ -317,9 +317,9 @@ TEST_CASE( "NvPipeDecoder::decode() - A tiled colour image" ) { REQUIRE( r ); REQUIRE( decoder.decode(pkt, out) ); - REQUIRE( out.cols == 2560 ); - REQUIRE( out.type() == CV_8UC4 ); - REQUIRE( pkt.definition == definition_t::HD720 ); + REQUIRE( (out.cols == 2560) ); + REQUIRE( (out.type() == CV_8UC4) ); + REQUIRE( (pkt.definition == definition_t::HD720) ); //} REQUIRE( (cv::cuda::sum(out) != cv::Scalar(0,0,0)) ); @@ -346,9 +346,9 @@ TEST_CASE( "NvPipeDecoder::decode() - A lossless depth image" ) { REQUIRE( r ); REQUIRE( decoder.decode(pkt, out) ); - REQUIRE( out.cols == 1280 ); - REQUIRE( out.type() == CV_16U ); - REQUIRE( pkt.definition == definition_t::HD720 ); + REQUIRE( (out.cols == 1280) ); + REQUIRE( (out.type() == CV_16U) ); + REQUIRE( (pkt.definition == definition_t::HD720) ); //} REQUIRE( (cv::cuda::sum(out) != cv::Scalar(0)) ); @@ -375,9 +375,9 @@ TEST_CASE( "NvPipeDecoder::decode() - A lossy depth image" ) { REQUIRE( r ); REQUIRE( decoder.decode(pkt, out) ); - REQUIRE( out.cols == 1280 ); - REQUIRE( out.type() == CV_16UC4 ); - REQUIRE( pkt.definition == definition_t::HD720 ); + REQUIRE( (out.cols == 1280) ); + REQUIRE( (out.type() == CV_16UC4) ); + REQUIRE( (pkt.definition == definition_t::HD720) ); //} REQUIRE( (cv::cuda::sum(out) != cv::Scalar(0)) ); diff --git a/components/net/cpp/src/peer.cpp b/components/net/cpp/src/peer.cpp index 8f280bad46ef512449cc0fa40876e9c13f059434..24aac7bb3eb6076d8f662fc4ed610e421d357028 100644 --- a/components/net/cpp/src/peer.cpp +++ b/components/net/cpp/src/peer.cpp @@ -555,7 +555,11 @@ void Peer::_dispatchResponse(uint32_t id, msgpack::object &res) { lk.unlock(); // Call the callback with unpacked return value - (*cb)(res); + try { + (*cb)(res); + } catch(std::exception &e) { + LOG(ERROR) << "Exception in RPC response: " << e.what(); + } } else { LOG(WARNING) << "Missing RPC callback for result - discarding"; } diff --git a/components/net/cpp/test/net_configurable_unit.cpp b/components/net/cpp/test/net_configurable_unit.cpp index 0b69512f11c0e33f9a83630f76591fec2c353333..183a13fab3bd799bba84a99f7605ba4697e1e07c 100644 --- a/components/net/cpp/test/net_configurable_unit.cpp +++ b/components/net/cpp/test/net_configurable_unit.cpp @@ -33,6 +33,8 @@ SCENARIO( "NetConfigurable::set()" ) { NetConfigurable nc(peer, suri, *controller, jsonTest); nc.set("test_value", 5); REQUIRE( nc.get<int>("test_value") == 5 ); + + delete controller; } // invalid peer UUID diff --git a/components/operators/src/depth.cpp b/components/operators/src/depth.cpp index ac84f668a4aab1b88b698e1787680ad659f23da7..c8a48df6399e45370737320eb49ddd49f6bff177 100644 --- a/components/operators/src/depth.cpp +++ b/components/operators/src/depth.cpp @@ -153,7 +153,7 @@ bool DepthChannel::apply(ftl::rgbd::FrameSet &in, ftl::rgbd::FrameSet &out, cuda rbuf_.resize(in.frames.size()); - for (int i=0; i<in.frames.size(); ++i) { + for (size_t i=0; i<in.frames.size(); ++i) { auto &f = in.frames[i]; if (!f.hasChannel(Channel::Depth) && f.hasChannel(Channel::Right)) { _createPipeline(); diff --git a/components/operators/src/mvmls.cpp b/components/operators/src/mvmls.cpp index 3a71dcf4c1350d454751319a38a6ed36c554009c..52bc22a02693ee4cb549be6617c9b5a4f0f02bf0 100644 --- a/components/operators/src/mvmls.cpp +++ b/components/operators/src/mvmls.cpp @@ -272,9 +272,9 @@ bool MultiViewMLS::apply(ftl::rgbd::FrameSet &in, ftl::rgbd::FrameSet &out, cuda if (d1.dot(d2) <= 0.0) continue; auto pose1 = MatrixConversion::toCUDA(f1.getPose().cast<float>()); - auto pose1_inv = MatrixConversion::toCUDA(f1.getPose().cast<float>().inverse()); + //auto pose1_inv = MatrixConversion::toCUDA(f1.getPose().cast<float>().inverse()); auto pose2 = MatrixConversion::toCUDA(f2.getPose().cast<float>().inverse()); - auto pose2_inv = MatrixConversion::toCUDA(f2.getPose().cast<float>()); + //auto pose2_inv = MatrixConversion::toCUDA(f2.getPose().cast<float>()); auto transform = pose2 * pose1; diff --git a/components/operators/src/operator.cpp b/components/operators/src/operator.cpp index ff1ebc6693e06ab7f5c6563470ef681c135e5deb..8dbbf168c0bcce749dbcbd119dbec9282fb3d51e 100644 --- a/components/operators/src/operator.cpp +++ b/components/operators/src/operator.cpp @@ -62,7 +62,7 @@ bool Graph::apply(FrameSet &in, FrameSet &out, cudaStream_t stream) { i.instances.push_back(i.maker->make()); } - for (int j=0; j<in.frames.size(); ++j) { + for (size_t j=0; j<in.frames.size(); ++j) { auto *instance = i.instances[j&0x1]; if (instance->enabled()) { diff --git a/components/operators/src/smoothing.cpp b/components/operators/src/smoothing.cpp index dd403d4b8508d66daf522a02714e8bcb4c8e09df..ef9cb58cb31f55fdf1f06843e681a3ed1bb42677 100644 --- a/components/operators/src/smoothing.cpp +++ b/components/operators/src/smoothing.cpp @@ -23,7 +23,7 @@ HFSmoother::~HFSmoother() { bool HFSmoother::apply(ftl::rgbd::Frame &in, ftl::rgbd::Frame &out, cudaStream_t stream) { float var_thresh = config()->value("variance_threshold", 0.0002f); - int levels = max(0, min(config()->value("levels",0), 4)); + //int levels = max(0, min(config()->value("levels",0), 4)); int iters = config()->value("iterations",5); // FIXME: in and out are assumed to be the same diff --git a/components/renderers/cpp/include/ftl/utility/matrix_conversion.hpp b/components/renderers/cpp/include/ftl/utility/matrix_conversion.hpp index 2888e928ebbe13c54585837882e81ad9c32cdad9..e0b363ccedec3c1bba35bc45ed1e5baf615dd04f 100644 --- a/components/renderers/cpp/include/ftl/utility/matrix_conversion.hpp +++ b/components/renderers/cpp/include/ftl/utility/matrix_conversion.hpp @@ -98,11 +98,11 @@ namespace MatrixConversion static float4x4 toCUDA(const mat4f& m) { return float4x4(m.ptr()); }*/ - static float4x4 toCUDA(const Eigen::Matrix4f& mat) { + inline float4x4 toCUDA(const Eigen::Matrix4f& mat) { return float4x4(mat.data()).getTranspose(); } - static Eigen::Matrix4f toEigen(const float4x4& m) { + inline Eigen::Matrix4f toEigen(const float4x4& m) { return Eigen::Matrix4f(m.ptr()).transpose(); } diff --git a/components/renderers/cpp/src/tri_render.cpp b/components/renderers/cpp/src/tri_render.cpp index 3f0f2cbd8778a9887ab1ca34840a4d1eac87ba3e..c9001bd2dd8ec604db9080bf8a45635db1c16970 100644 --- a/components/renderers/cpp/src/tri_render.cpp +++ b/components/renderers/cpp/src/tri_render.cpp @@ -508,7 +508,7 @@ void Triangular::_preprocessColours() { cv::cuda::Stream cvstream = cv::cuda::StreamAccessor::wrapStream(stream_); // Display mask values or otherwise alter colour image - for (int i=0; i<scene_->frames.size(); ++i) { + for (size_t i=0; i<scene_->frames.size(); ++i) { auto &f = scene_->frames[i]; if (colour_sources) { diff --git a/components/rgbd-sources/CMakeLists.txt b/components/rgbd-sources/CMakeLists.txt index 06db227d0feaa10e899a7e482dccba042cbd5dd1..92bab62acd2b5a8ce213f49b83251e2f4297304b 100644 --- a/components/rgbd-sources/CMakeLists.txt +++ b/components/rgbd-sources/CMakeLists.txt @@ -10,7 +10,7 @@ set(RGBDSRC src/colour.cpp src/group.cpp src/cb_segmentation.cpp - src/abr.cpp + #src/abr.cpp #src/sources/virtual/virtual.cpp #src/sources/ftlfile/file_source.cpp #src/sources/ftlfile/player.cpp diff --git a/components/rgbd-sources/include/ftl/rgbd/frameset.hpp b/components/rgbd-sources/include/ftl/rgbd/frameset.hpp index b85e99be987c31fdcb5f3116372efcb631d5442d..6a2efde2510ac23a0a762962bb81c8f5f8dd3b63 100644 --- a/components/rgbd-sources/include/ftl/rgbd/frameset.hpp +++ b/components/rgbd-sources/include/ftl/rgbd/frameset.hpp @@ -78,7 +78,7 @@ class Generator { * Get the persistent state object for a frame. An exception is thrown * for a bad index. */ - virtual ftl::rgbd::FrameState &state(int ix)=0; + virtual ftl::rgbd::FrameState &state(size_t ix)=0; inline ftl::rgbd::FrameState &operator[](int ix) { return state(ix); } @@ -103,14 +103,14 @@ class Builder : public Generator { size_t size() override; - ftl::rgbd::FrameState &state(int ix) override; + ftl::rgbd::FrameState &state(size_t ix) override; void onFrameSet(const ftl::rgbd::VideoCallback &) override; /** * Add a new frame at a given timestamp. */ - void push(int64_t timestamp, int ix, ftl::rgbd::Frame &f); + void push(int64_t timestamp, size_t ix, ftl::rgbd::Frame &f); void setName(const std::string &name); diff --git a/components/rgbd-sources/include/ftl/rgbd/group.hpp b/components/rgbd-sources/include/ftl/rgbd/group.hpp index a4955d1d83e8eff268bca6c0ea99baa4e9907f59..438d11febc632642592c45b5974cb5a339c5b0df 100644 --- a/components/rgbd-sources/include/ftl/rgbd/group.hpp +++ b/components/rgbd-sources/include/ftl/rgbd/group.hpp @@ -91,7 +91,7 @@ class Group : public ftl::rgbd::Generator { size_t size() override { return builder_.size(); } - ftl::rgbd::FrameState &state(int ix) override { return builder_.state(ix); } + ftl::rgbd::FrameState &state(size_t ix) override { return builder_.state(ix); } void stop() {} diff --git a/components/rgbd-sources/src/cb_segmentation.cpp b/components/rgbd-sources/src/cb_segmentation.cpp index 102524c101fc4e3b82223d5fccab221e12839e24..fed4b8806bd327033c444be6c9e0a1c34e52ab60 100644 --- a/components/rgbd-sources/src/cb_segmentation.cpp +++ b/components/rgbd-sources/src/cb_segmentation.cpp @@ -74,9 +74,9 @@ bool CBSegmentation::Codeword::colordiff(CBSegmentation::Pixel &px, float epsilo // bool CBSegmentation::Codeword::brightness(CBSegmentation::Pixel &px, float alpha, float beta) { return true; - float i_low = alpha * i_max; + /*float i_low = alpha * i_max; float i_hi = min(beta * i_max, i_min / alpha); - return (i_low <= px.i) && (px.i <= i_hi); + return (i_low <= px.i) && (px.i <= i_hi);*/ } CBSegmentation::CBSegmentation( @@ -169,7 +169,7 @@ bool CBSegmentation::processPixel(CBSegmentation::Pixel &px, CBSegmentation::Cod // TODO: Should not prefer H codewords over M codewords? if ((size_t)size < (size_ - 1)) { entry = start + size; - size++; + // size++; FIXME: This doesn't do anything (nick) entry->type = H; entry->cw.set(px); } @@ -195,7 +195,7 @@ void CBSegmentation::apply(Mat &in, Mat &out) { } // TODO: thread pool, queue N rows - #pragma omp parallel for + // #pragma omp parallel for - FIXME: Use thread pool. (nick) for (size_t y = 0; y < height_; ++y) { size_t idx = y * width_; uchar *ptr_in = in.ptr<uchar>(y); diff --git a/components/rgbd-sources/src/frameset.cpp b/components/rgbd-sources/src/frameset.cpp index a2d3f57da7fb2ad3573dca4c373091d4acc907b6..c632d0585816bbed7a720ffa43c1cd58a6deab6d 100644 --- a/components/rgbd-sources/src/frameset.cpp +++ b/components/rgbd-sources/src/frameset.cpp @@ -49,9 +49,9 @@ void FrameSet::swapTo(ftl::rgbd::FrameSet &fs) { void FrameSet::resetFull() { //count = 0; //stale = false; - for (auto &f : frames) { + //for (auto &f : frames) { //f.resetFull(); - } + //} } // ============================================================================= @@ -81,8 +81,8 @@ Builder::~Builder() { } -void Builder::push(int64_t timestamp, int ix, ftl::rgbd::Frame &frame) { - if (timestamp <= 0 || ix < 0 || ix >= kMaxFramesInSet) return; +void Builder::push(int64_t timestamp, size_t ix, ftl::rgbd::Frame &frame) { + if (timestamp <= 0 || ix >= kMaxFramesInSet) return; UNIQUE_LOCK(mutex_, lk); @@ -185,9 +185,9 @@ void Builder::onFrameSet(const std::function<bool(ftl::rgbd::FrameSet &)> &cb) { }); } -ftl::rgbd::FrameState &Builder::state(int ix) { +ftl::rgbd::FrameState &Builder::state(size_t ix) { UNIQUE_LOCK(mutex_, lk); - if (ix < 0 || ix >= states_.size()) { + if (ix >= states_.size()) { throw ftl::exception("Frame state out-of-bounds"); } if (!states_[ix]) throw ftl::exception("Missing framestate"); @@ -196,7 +196,7 @@ ftl::rgbd::FrameState &Builder::state(int ix) { static void mergeFrameset(ftl::rgbd::FrameSet &f1, ftl::rgbd::FrameSet &f2) { // Prepend all frame encodings in f2 into corresponding frame in f1. - for (int i=0; i<f1.frames.size(); ++i) { + for (size_t i=0; i<f1.frames.size(); ++i) { if (f2.frames.size() <= i) break; f1.frames[i].mergeEncoding(f2.frames[i]); } @@ -239,7 +239,7 @@ ftl::rgbd::FrameSet *Builder::_getFrameset() { for (auto i=framesets_.begin(); i!=framesets_.end(); i++) { auto *f = *i; //LOG(INFO) << "GET: " << f->count << " of " << size_; - if (!f->stale && f->count >= size_) { + if (!f->stale && static_cast<unsigned int>(f->count) >= size_) { //LOG(INFO) << "GET FRAMESET and remove: " << f->timestamp; auto j = framesets_.erase(i); diff --git a/components/rgbd-sources/src/group.cpp b/components/rgbd-sources/src/group.cpp index 409559d5881b55ff1826c12e5b5ea29852743a1a..02f3b6f70415ad943563b0dc67e830053578061c 100644 --- a/components/rgbd-sources/src/group.cpp +++ b/components/rgbd-sources/src/group.cpp @@ -78,7 +78,7 @@ void Group::_computeJob(ftl::rgbd::Source *src) { } int Group::streamID(const ftl::rgbd::Source *s) const { - for (int i=0; i<sources_.size(); ++i) { + for (size_t i=0; i<sources_.size(); ++i) { if (sources_[i] == s) return i; } return -1; diff --git a/components/rgbd-sources/src/sources/net/net.cpp b/components/rgbd-sources/src/sources/net/net.cpp index 7b21594cf48df7622c7990445800e96150fa07e8..3d262aa958d983d188ad7071f03613d2d7343d1a 100644 --- a/components/rgbd-sources/src/sources/net/net.cpp +++ b/components/rgbd-sources/src/sources/net/net.cpp @@ -168,8 +168,8 @@ NetSource::NetSource(ftl::rgbd::Source *host) default_quality_ = host->value("quality", 0); }); - abr_.setMaximumBitrate(host->value("max_bitrate", -1)); - abr_.setMinimumBitrate(host->value("min_bitrate", -1)); + //abr_.setMaximumBitrate(host->value("max_bitrate", -1)); + //abr_.setMinimumBitrate(host->value("min_bitrate", -1)); _updateURI(); @@ -390,7 +390,7 @@ void NetSource::_completeFrame(NetFrame &frame, int64_t latency) { frame.tx_latency = latency; // Note: Not used currently - adaptive_ = abr_.selectBitrate(frame); + //adaptive_ = abr_.selectBitrate(frame); frame_.reset(); frame_.setOrigin(&state_); @@ -492,7 +492,7 @@ bool NetSource::compute(int n, int b) { active_ = false; } - abr_.notifyChanged(); + //abr_.notifyChanged(); maxN_ = 1; // Reset to single frame minB_ = 9; // Reset to worst quality diff --git a/components/rgbd-sources/src/sources/net/net.hpp b/components/rgbd-sources/src/sources/net/net.hpp index 299325643cb400a2df4c00ecc672930cca08b500..fca089290669e27f26584d88ef38d349ccfffa2e 100644 --- a/components/rgbd-sources/src/sources/net/net.hpp +++ b/components/rgbd-sources/src/sources/net/net.hpp @@ -60,7 +60,7 @@ class NetSource : public detail::Source { ftl::codecs::Channel prev_chan_; ftl::rgbd::Camera params_right_; - ftl::rgbd::detail::ABRController abr_; + //ftl::rgbd::detail::ABRController abr_; int last_bitrate_; static int64_t last_msg_; diff --git a/components/rgbd-sources/src/sources/stereovideo/stereovideo.cpp b/components/rgbd-sources/src/sources/stereovideo/stereovideo.cpp index 0a15e0bde47b6d218aa2599dedb4642dab50eb30..c380a4a210ff86304f1d4e19b0d41560d8e6673a 100644 --- a/components/rgbd-sources/src/sources/stereovideo/stereovideo.cpp +++ b/components/rgbd-sources/src/sources/stereovideo/stereovideo.cpp @@ -284,7 +284,6 @@ void StereoVideoSource::swap() { bool StereoVideoSource::compute(int n, int b) { auto &frame = frames_[1]; - const ftl::codecs::Channel chan = host_->getChannel(); if (!frame.hasChannel(Channel::Left) || !frame.hasChannel(Channel::Right)) { return false; } diff --git a/components/streams/include/ftl/streams/receiver.hpp b/components/streams/include/ftl/streams/receiver.hpp index f79f6000e32d49201348faa83787cd59bd7a9007..a4bbfd917608a5c66fdf512ef6488fffc15f6319 100644 --- a/components/streams/include/ftl/streams/receiver.hpp +++ b/components/streams/include/ftl/streams/receiver.hpp @@ -30,7 +30,7 @@ class Receiver : public ftl::Configurable, public ftl::rgbd::Generator { size_t size() override; - ftl::rgbd::FrameState &state(int ix) override; + ftl::rgbd::FrameState &state(size_t ix) override; /** * Register a callback for received framesets. Sources are automatically diff --git a/components/streams/src/filestream.cpp b/components/streams/src/filestream.cpp index 0d7004dd7e3b63f33ea0d1b9939a9a156418f2dd..7d7f5d5f4b5f142abf395b8fd182ee4bf0be44e2 100644 --- a/components/streams/src/filestream.cpp +++ b/components/streams/src/filestream.cpp @@ -99,7 +99,7 @@ bool File::tick(int64_t ts) { bool partial = false; int64_t extended_ts = timestamp_ + 200; // Buffer 200ms ahead - while (active_ && istream_->good() || buffer_in_.nonparsed_size() > 0) { + while ((active_ && istream_->good()) || buffer_in_.nonparsed_size() > 0u) { if (buffer_in_.nonparsed_size() == 0 || (partial && buffer_in_.nonparsed_size() < 10000000)) { buffer_in_.reserve_buffer(10000000); istream_->read(buffer_in_.buffer(), buffer_in_.buffer_capacity()); diff --git a/components/streams/src/netstream.cpp b/components/streams/src/netstream.cpp index b11fdbb7d3908afcdef41820389ac4baac831380..f25983ccd093cb52e01f91c54dc5a4869b1df0d8 100644 --- a/components/streams/src/netstream.cpp +++ b/components/streams/src/netstream.cpp @@ -14,7 +14,7 @@ using std::optional; static constexpr int kTallyScale = 10; -Net::Net(nlohmann::json &config, ftl::net::Universe *net) : Stream(config), net_(net), active_(false) { +Net::Net(nlohmann::json &config, ftl::net::Universe *net) : Stream(config), active_(false), net_(net) { // TODO: Install "find_stream" binding if not installed... if (!net_->isBound("find_stream")) { net_->bind("find_stream", [this](const std::string &uri) -> optional<ftl::UUID> { @@ -190,7 +190,7 @@ bool Net::begin() { if (host_ && pkt.data.size() == 0) { // FIXME: Allow unselecting ...? if (spkt.frameSetID() == 255) { - for (int i=0; i<size(); ++i) { + for (size_t i=0; i<size(); ++i) { select(i, selected(i) + spkt.channel); } reqtally_[static_cast<int>(spkt.channel)] = static_cast<int>(pkt.frame_count)*kTallyScale; diff --git a/components/streams/src/receiver.cpp b/components/streams/src/receiver.cpp index 4cb7329462a7271ba4a53714216fb362999c804e..36d321c4346ca4586cfedc2293512f9bc0491458 100644 --- a/components/streams/src/receiver.cpp +++ b/components/streams/src/receiver.cpp @@ -65,7 +65,7 @@ Receiver::InternalVideoStates::InternalVideoStates() { } Receiver::InternalVideoStates &Receiver::_getVideoFrame(const StreamPacket &spkt, int ix) { - int fn = spkt.frameNumber()+ix; + uint32_t fn = spkt.frameNumber()+ix; UNIQUE_LOCK(mutex_, lk); while (video_frames_.size() <= fn) { @@ -83,7 +83,7 @@ Receiver::InternalAudioStates::InternalAudioStates() { } Receiver::InternalAudioStates &Receiver::_getAudioFrame(const StreamPacket &spkt, int ix) { - int fn = spkt.frameNumber()+ix; + uint32_t fn = spkt.frameNumber()+ix; UNIQUE_LOCK(mutex_, lk); while (audio_frames_.size() <= fn) { @@ -125,7 +125,7 @@ void Receiver::_processAudio(const StreamPacket &spkt, const Packet &pkt) { size_t size = pkt.data.size()/sizeof(short); audio.data().resize(size); auto *ptr = (short*)pkt.data.data(); - for (int i=0; i<size; i++) audio.data()[i] = ptr[i]; + for (size_t i=0; i<size; i++) audio.data()[i] = ptr[i]; if (audio_cb_) { // Create an audio frameset wrapper. @@ -289,8 +289,6 @@ void Receiver::setStream(ftl::stream::Stream *s) { stream_ = s; s->onPacket([this](const StreamPacket &spkt, const Packet &pkt) { - //const ftl::codecs::Channel chan = second_channel_; - const ftl::codecs::Channel rchan = spkt.channel; const unsigned int channum = (unsigned int)spkt.channel; //LOG(INFO) << "PACKET: " << spkt.timestamp << ", " << (int)spkt.channel << ", " << (int)pkt.codec << ", " << (int)pkt.definition; @@ -321,7 +319,7 @@ size_t Receiver::size() { return builder_.size(); } -ftl::rgbd::FrameState &Receiver::state(int ix) { +ftl::rgbd::FrameState &Receiver::state(size_t ix) { return builder_.state(ix); } diff --git a/components/streams/src/sender.cpp b/components/streams/src/sender.cpp index 0068f5ad3821d87045400c2e0954bddfe50891af..239597c7119056b85f1dea6e973c624c2668ac72 100644 --- a/components/streams/src/sender.cpp +++ b/components/streams/src/sender.cpp @@ -58,7 +58,7 @@ void Sender::post(const ftl::audio::FrameSet &fs) { //if (fs.stale) return; //fs.stale = true; - for (int i=0; i<fs.frames.size(); ++i) { + for (size_t i=0; i<fs.frames.size(); ++i) { if (!fs.frames[i].hasChannel(Channel::Audio)) continue; auto &data = fs.frames[i].get<ftl::audio::Audio>(Channel::Audio); @@ -125,7 +125,7 @@ void Sender::post(const ftl::rgbd::FrameSet &fs) { bool do_inject = !do_inject_.test_and_set(); - for (int i=0; i<fs.frames.size(); ++i) { + for (size_t i=0; i<fs.frames.size(); ++i) { const auto &frame = fs.frames[i]; if (do_inject) { @@ -224,10 +224,10 @@ void Sender::post(const ftl::rgbd::FrameSet &fs) { void Sender::_encodeChannel(const ftl::rgbd::FrameSet &fs, Channel c, bool reset) { bool lossless = value("lossless", false); int max_bitrate = std::max(0, std::min(255, value("max_bitrate", 255))); - int min_bitrate = std::max(0, std::min(255, value("min_bitrate", 0))); + //int min_bitrate = std::max(0, std::min(255, value("min_bitrate", 0))); // TODO: Use this codec_t codec = value("codec", codec_t::Any); - int offset = 0; + uint32_t offset = 0; while (offset < fs.frames.size()) { StreamPacket spkt; spkt.version = 4; @@ -347,7 +347,7 @@ int Sender::_generateTiles(const ftl::rgbd::FrameSet &fs, int offset, Channel c, int width = tx * rwidth; int height = ty * rheight; int tilecount = tx*ty; - int count = 0; + uint32_t count = 0; surface.surface.create(height, width, (lossless && m.type() == CV_32F) ? CV_16U : CV_8UC4); diff --git a/components/streams/src/stream.cpp b/components/streams/src/stream.cpp index 6e8c7770baa929bf207f5a61fca8f16eb45664fb..2c409d3b42630ce25b915c3c9e7f04e92fb11c9a 100644 --- a/components/streams/src/stream.cpp +++ b/components/streams/src/stream.cpp @@ -7,27 +7,27 @@ using ftl::stream::Stream; const ftl::codecs::Channels<0> &Stream::available(int fs) const { SHARED_LOCK(mtx_, lk); - if (fs < 0 || fs >= state_.size()) throw ftl::exception("Frameset index out-of-bounds"); + if (fs < 0 || static_cast<uint32_t>(fs) >= state_.size()) throw ftl::exception("Frameset index out-of-bounds"); return state_[fs].available; } const ftl::codecs::Channels<0> &Stream::selected(int fs) const { SHARED_LOCK(mtx_, lk); - if (fs < 0 || fs >= state_.size()) throw ftl::exception("Frameset index out-of-bounds"); + if (fs < 0 || static_cast<uint32_t>(fs) >= state_.size()) throw ftl::exception("Frameset index out-of-bounds"); return state_[fs].selected; } void Stream::select(int fs, const ftl::codecs::Channels<0> &s, bool make) { UNIQUE_LOCK(mtx_, lk); - if (fs < 0 || (!make && fs >= state_.size())) throw ftl::exception("Frameset index out-of-bounds"); - if (fs >= state_.size()) state_.resize(fs+1); + if (fs < 0 || (!make && static_cast<uint32_t>(fs) >= state_.size())) throw ftl::exception("Frameset index out-of-bounds"); + if (static_cast<uint32_t>(fs) >= state_.size()) state_.resize(fs+1); state_[fs].selected = s; } ftl::codecs::Channels<0> &Stream::available(int fs) { UNIQUE_LOCK(mtx_, lk); if (fs < 0) throw ftl::exception("Frameset index out-of-bounds"); - if (fs >= state_.size()) state_.resize(fs+1); + if (static_cast<uint32_t>(fs) >= state_.size()) state_.resize(fs+1); return state_[fs].available; } @@ -76,7 +76,7 @@ bool Muxer::onPacket(const std::function<void(const ftl::codecs::StreamPacket &, } int Muxer::originStream(int fsid, int fid) { - if (fid < revmap_.size()) { + if (static_cast<uint32_t>(fid) < revmap_.size()) { return std::get<0>(revmap_[fid]); } return -1; @@ -135,11 +135,11 @@ void Muxer::reset() { int Muxer::_lookup(int sid, int ssid) { SHARED_LOCK(mutex_, lk); auto &se = streams_[sid]; - if (ssid >= se.maps.size()) { + if (static_cast<uint32_t>(ssid) >= se.maps.size()) { lk.unlock(); { UNIQUE_LOCK(mutex_, lk2); - if (ssid >= se.maps.size()) { + if (static_cast<uint32_t>(ssid) >= se.maps.size()) { int nid = nid_++; se.maps.push_back(nid); revmap_.push_back({sid,ssid}); diff --git a/components/streams/test/receiver_unit.cpp b/components/streams/test/receiver_unit.cpp index 97e266d682c147347be18b36dd37c2ed42201a0c..f3bfe976137177b3fbac5857bb647a3e4bd79ad2 100644 --- a/components/streams/test/receiver_unit.cpp +++ b/components/streams/test/receiver_unit.cpp @@ -27,7 +27,7 @@ class TestStream : public ftl::stream::Stream { available(spkt.streamID) += spkt.channel; if (pkt.data.size() == 0) { if (spkt.frameSetID() == 255) { - for (int i=0; i<size(); ++i) { + for (size_t i=0; i<size(); ++i) { select(i, selected(i) + spkt.channel); } } else { diff --git a/components/streams/test/sender_unit.cpp b/components/streams/test/sender_unit.cpp index e6d945b51cc5717df4217bfa7b367e163657437c..9c7edd6a5cd8a7192c84d4ddee5d53b0ffe49f81 100644 --- a/components/streams/test/sender_unit.cpp +++ b/components/streams/test/sender_unit.cpp @@ -31,7 +31,7 @@ class TestStream : public ftl::stream::Stream { available(spkt.streamID) += spkt.channel; if (pkt.data.size() == 0) { if (spkt.frameSetID() == 255) { - for (int i=0; i<size(); ++i) { + for (size_t i=0; i<size(); ++i) { select(i, selected(i) + spkt.channel); } } else { diff --git a/components/structures/include/ftl/data/frame.hpp b/components/structures/include/ftl/data/frame.hpp index 5d717f6c4988aa6584ea8e76c119355361457e21..b0fa4192289aba9276cc8668cff45a0bbe0d4705 100644 --- a/components/structures/include/ftl/data/frame.hpp +++ b/components/structures/include/ftl/data/frame.hpp @@ -331,6 +331,7 @@ void ftl::data::Frame<BASE,N,STATE,DATA>::copyTo(ftl::codecs::Channels<BASE> cha } template <int BASE, int N, typename STATE, typename DATA> +// cppcheck-suppress * template <typename T> T& ftl::data::Frame<BASE,N,STATE,DATA>::get(ftl::codecs::Channel channel) { if (channel == ftl::codecs::Channel::None) { @@ -346,6 +347,7 @@ T& ftl::data::Frame<BASE,N,STATE,DATA>::get(ftl::codecs::Channel channel) { } template <int BASE, int N, typename STATE, typename DATA> +// cppcheck-suppress * template <typename T> const T& ftl::data::Frame<BASE,N,STATE,DATA>::get(ftl::codecs::Channel channel) const { if (channel == ftl::codecs::Channel::None) { @@ -370,6 +372,7 @@ const T& ftl::data::Frame<BASE,N,STATE,DATA>::get(ftl::codecs::Channel channel) // Default data channel implementation template <int BASE, int N, typename STATE, typename DATA> +// cppcheck-suppress * template <typename T> void ftl::data::Frame<BASE,N,STATE,DATA>::get(ftl::codecs::Channel channel, T ¶ms) const { if (static_cast<int>(channel) < static_cast<int>(ftl::codecs::Channel::Data)) throw ftl::exception("Cannot use generic type with non data channel"); @@ -383,6 +386,7 @@ void ftl::data::Frame<BASE,N,STATE,DATA>::get(ftl::codecs::Channel channel, T &p } template <int BASE, int N, typename STATE, typename DATA> +// cppcheck-suppress * template <typename T> T &ftl::data::Frame<BASE,N,STATE,DATA>::create(ftl::codecs::Channel c) { if (c == ftl::codecs::Channel::None) { @@ -395,6 +399,7 @@ T &ftl::data::Frame<BASE,N,STATE,DATA>::create(ftl::codecs::Channel c) { } template <int BASE, int N, typename STATE, typename DATA> +// cppcheck-suppress * template <typename T> void ftl::data::Frame<BASE,N,STATE,DATA>::create(ftl::codecs::Channel channel, const T &value) { if (static_cast<int>(channel) < static_cast<int>(ftl::codecs::Channel::Data)) throw ftl::exception("Cannot use generic type with non data channel"); diff --git a/components/structures/include/ftl/data/frameset.hpp b/components/structures/include/ftl/data/frameset.hpp index e33ee2e660f80fd0e648d56722c9f4ab81bebdaf..a233b8f9bd89b250ff0c0db1c95090450793e7e1 100644 --- a/components/structures/include/ftl/data/frameset.hpp +++ b/components/structures/include/ftl/data/frameset.hpp @@ -82,7 +82,7 @@ class Generator { * Get the persistent state object for a frame. An exception is thrown * for a bad index. */ - virtual typename FRAMESET::Frame::State &state(int ix)=0; + virtual typename FRAMESET::Frame::State &state(size_t ix)=0; inline typename FRAMESET::Frame::State &operator[](int ix) { return state(ix); }