diff --git a/bindings/spatialmp4.cpp b/bindings/spatialmp4.cpp index 21739d8..c1ea99b 100644 --- a/bindings/spatialmp4.cpp +++ b/bindings/spatialmp4.cpp @@ -153,7 +153,7 @@ PYBIND11_MODULE(spatialmp4, m) { // Bind Reader class py::class_(m, "Reader") - .def(py::init()) + .def(py::init(), py::arg("filename"), py::arg("log_level") = "quiet") .def("has_rgb", &SpatialML::Reader::HasRGB) .def("has_depth", &SpatialML::Reader::HasDepth) .def("has_pose", &SpatialML::Reader::HasPose) diff --git a/scripts/build_ffmpeg.sh b/scripts/build_ffmpeg.sh index b7ca258..77ce5f6 100755 --- a/scripts/build_ffmpeg.sh +++ b/scripts/build_ffmpeg.sh @@ -126,7 +126,7 @@ build_install_opencv() { BUILD_FLAGS=" -D CMAKE_BUILD_TYPE=RELEASE -D BUILD_LIST=core,imgproc,imgcodecs - -D WITH_TBB=ON + -D WITH_TBB=OFF -D WITH_OPENEXR=ON -D WITH_EIGEN=ON -D WITH_GSTREAMER=OFF diff --git a/src/spatialmp4/reader.cc b/src/spatialmp4/reader.cc index 86b481c..bab228a 100644 --- a/src/spatialmp4/reader.cc +++ b/src/spatialmp4/reader.cc @@ -226,8 +226,31 @@ AVFrame* RandomAccessVideoReader::process_frame(AVFrame* frame) { /******************** Reader ********************/ -Reader::Reader(const std::string& filename) +void SetFFmpegLogLevel(const std::string& log_level) { + static const std::unordered_map log_level_map = { + {"quiet", AV_LOG_QUIET}, + {"panic", AV_LOG_PANIC}, + {"fatal", AV_LOG_FATAL}, + {"error", AV_LOG_ERROR}, + {"warning", AV_LOG_WARNING}, + {"info", AV_LOG_INFO}, + {"verbose", AV_LOG_VERBOSE}, + {"debug", AV_LOG_DEBUG}, + {"trace", AV_LOG_TRACE} + }; + + auto it = log_level_map.find(log_level); + if (it != log_level_map.end()) { + av_log_set_level(it->second); + } else { + spdlog::warn("Invalid FFmpeg log level: '{}'. Using 'warning' as default.", log_level); + av_log_set_level(AV_LOG_WARNING); + } +} + +Reader::Reader(const std::string& filename, const std::string& log_level) : filename_(filename), + log_level_(log_level), read_mode_(ReadMode::DEPTH_FIRST), pFormatCtx_(NULL), has_rgb_(false), @@ -253,7 +276,8 @@ Reader::Reader(const std::string& filename) keyframe_rgb_idx_(0), allframe_rgb_idx_(0), keyframe_depth_idx_(0) { - // av_log_set_level(AV_LOG_DEBUG); + + SetFFmpegLogLevel(log_level_); if (filename_.find(' ') != std::string::npos) { throw std::runtime_error("Find blank in filename, please fix it."); @@ -821,7 +845,7 @@ bool Reader::SeekToRgbKeyframe(int64_t target_pts) { } bool Reader::IsLastFrame() { - std::cout << "GetIndex: " << GetIndex() << ", GetFrameCount: " << GetFrameCount() << std::endl; + // std::cout << "GetIndex: " << GetIndex() << ", GetFrameCount: " << GetFrameCount() << std::endl; return GetIndex() == GetFrameCount() - 1; } diff --git a/src/spatialmp4/reader.h b/src/spatialmp4/reader.h index 1cdc884..cf89223 100644 --- a/src/spatialmp4/reader.h +++ b/src/spatialmp4/reader.h @@ -102,7 +102,7 @@ class SPATIALMP4_EXPORT Reader { } } - Reader(const std::string& filename); + Reader(const std::string& filename, const std::string& log_level); ~Reader(); bool HasRGB() const { return has_rgb_; } @@ -157,6 +157,7 @@ class SPATIALMP4_EXPORT Reader { private: std::string filename_; + std::string log_level_; ReadMode read_mode_; AVFormatContext* pFormatCtx_; AVPacket current_packet_;