From 0f7761b6f99c7c5d27f6f385cad48a05bdae1bba Mon Sep 17 00:00:00 2001 From: Fabrice Fontaine Date: Fri, 12 Nov 2021 14:16:45 +0100 Subject: [PATCH] package/opencv4: fix build with gcc 4.8 Fix the following build failure with gcc 4.8 raised since the addition of the package in commit c23612b5db036fe89accb8db48690d1ce1be4b1b: In file included from /home/buildroot/autobuild/instance-3/output-1/build/opencv4-4.5.4/modules/videoio/src/cap_ffmpeg_impl.hpp:100:0, from /home/buildroot/autobuild/instance-3/output-1/build/opencv4-4.5.4/modules/videoio/src/cap_ffmpeg.cpp:50: /home/buildroot/autobuild/instance-3/output-1/build/opencv4-4.5.4/modules/videoio/src/cap_ffmpeg_hw.hpp: In constructor 'HWAccelIterator::HWAccelIterator(cv::VideoAccelerationType, bool, AVDictionary*)': /home/buildroot/autobuild/instance-3/output-1/build/opencv4-4.5.4/modules/videoio/src/cap_ffmpeg_hw.hpp:939:23: error: use of deleted function 'std::basic_istringstream& std::basic_istringstream::operator=(const std::basic_istringstream&)' s_stream_ = std::istringstream(accel_list); ^ In file included from /home/buildroot/autobuild/instance-3/output-1/host/opt/ext-toolchain/arm-none-linux-gnueabi/include/c++/4.8.3/complex:45:0, from /home/buildroot/autobuild/instance-3/output-1/build/opencv4-4.5.4/modules/core/include/opencv2/core/cvstd.inl.hpp:47, from /home/buildroot/autobuild/instance-3/output-1/build/opencv4-4.5.4/modules/core/include/opencv2/core.hpp:3306, from /home/buildroot/autobuild/instance-3/output-1/build/opencv4-4.5.4/modules/videoio/include/opencv2/videoio.hpp:46, from /home/buildroot/autobuild/instance-3/output-1/build/opencv4-4.5.4/modules/videoio/src/precomp.hpp:57, from /home/buildroot/autobuild/instance-3/output-1/build/opencv4-4.5.4/modules/videoio/src/cap_ffmpeg.cpp:42: /home/buildroot/autobuild/instance-3/output-1/host/opt/ext-toolchain/arm-none-linux-gnueabi/include/c++/4.8.3/sstream:272:11: note: 'std::basic_istringstream& std::basic_istringstream::operator=(const std::basic_istringstream&)' is implicitly deleted because the default definition would be ill-formed: class basic_istringstream : public basic_istream<_CharT, _Traits> ^ /home/buildroot/autobuild/instance-3/output-1/host/opt/ext-toolchain/arm-none-linux-gnueabi/include/c++/4.8.3/sstream:272:11: error: use of deleted function 'std::basic_istream& std::basic_istream::operator=(const std::basic_istream&)' Fixes: - http://autobuild.buildroot.org/results/60f8846b435dafda0ced412d59ffe15bdff0810d Signed-off-by: Fabrice Fontaine Signed-off-by: Yann E. MORIN --- ...src-cap_ffmpeg_impl.hpp-fix-build-wi.patch | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 package/opencv4/0001-modules-videoio-src-cap_ffmpeg_impl.hpp-fix-build-wi.patch diff --git a/package/opencv4/0001-modules-videoio-src-cap_ffmpeg_impl.hpp-fix-build-wi.patch b/package/opencv4/0001-modules-videoio-src-cap_ffmpeg_impl.hpp-fix-build-wi.patch new file mode 100644 index 0000000000..6d5d6d0647 --- /dev/null +++ b/package/opencv4/0001-modules-videoio-src-cap_ffmpeg_impl.hpp-fix-build-wi.patch @@ -0,0 +1,52 @@ +From 4c92a2869b9a8f736a12ba859b74e5cadce62387 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Fri, 12 Nov 2021 09:50:17 +0100 +Subject: [PATCH] modules/videoio/src/cap_ffmpeg_impl.hpp: fix build with gcc + 4.8 + +Fix the following build failure with gcc 4.8: + +In file included from /home/buildroot/autobuild/instance-3/output-1/build/opencv4-4.5.4/modules/videoio/src/cap_ffmpeg_impl.hpp:100:0, + from /home/buildroot/autobuild/instance-3/output-1/build/opencv4-4.5.4/modules/videoio/src/cap_ffmpeg.cpp:50: +/home/buildroot/autobuild/instance-3/output-1/build/opencv4-4.5.4/modules/videoio/src/cap_ffmpeg_hw.hpp: In constructor 'HWAccelIterator::HWAccelIterator(cv::VideoAccelerationType, bool, AVDictionary*)': +/home/buildroot/autobuild/instance-3/output-1/build/opencv4-4.5.4/modules/videoio/src/cap_ffmpeg_hw.hpp:939:23: error: use of deleted function 'std::basic_istringstream& std::basic_istringstream::operator=(const std::basic_istringstream&)' + s_stream_ = std::istringstream(accel_list); + ^ +In file included from /home/buildroot/autobuild/instance-3/output-1/host/opt/ext-toolchain/arm-none-linux-gnueabi/include/c++/4.8.3/complex:45:0, + from /home/buildroot/autobuild/instance-3/output-1/build/opencv4-4.5.4/modules/core/include/opencv2/core/cvstd.inl.hpp:47, + from /home/buildroot/autobuild/instance-3/output-1/build/opencv4-4.5.4/modules/core/include/opencv2/core.hpp:3306, + from /home/buildroot/autobuild/instance-3/output-1/build/opencv4-4.5.4/modules/videoio/include/opencv2/videoio.hpp:46, + from /home/buildroot/autobuild/instance-3/output-1/build/opencv4-4.5.4/modules/videoio/src/precomp.hpp:57, + from /home/buildroot/autobuild/instance-3/output-1/build/opencv4-4.5.4/modules/videoio/src/cap_ffmpeg.cpp:42: +/home/buildroot/autobuild/instance-3/output-1/host/opt/ext-toolchain/arm-none-linux-gnueabi/include/c++/4.8.3/sstream:272:11: note: 'std::basic_istringstream& std::basic_istringstream::operator=(const std::basic_istringstream&)' is implicitly deleted because the default definition would be ill-formed: + class basic_istringstream : public basic_istream<_CharT, _Traits> + ^ +/home/buildroot/autobuild/instance-3/output-1/host/opt/ext-toolchain/arm-none-linux-gnueabi/include/c++/4.8.3/sstream:272:11: error: use of deleted function 'std::basic_istream& std::basic_istream::operator=(const std::basic_istream&)' + +Fixes: + - http://autobuild.buildroot.org/results/60f8846b435dafda0ced412d59ffe15bdff0810d + +Signed-off-by: Fabrice Fontaine +[Retrieved from: +https://github.com/opencv/opencv/commit/4c92a2869b9a8f736a12ba859b74e5cadce62387] +--- + modules/videoio/src/cap_ffmpeg_impl.hpp | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/modules/videoio/src/cap_ffmpeg_impl.hpp b/modules/videoio/src/cap_ffmpeg_impl.hpp +index d393b73ff4a2..76e1b855b7c8 100644 +--- a/modules/videoio/src/cap_ffmpeg_impl.hpp ++++ b/modules/videoio/src/cap_ffmpeg_impl.hpp +@@ -93,6 +93,12 @@ extern "C" { + } + #endif + ++// GCC 4.x compilation bug. Details: https://github.com/opencv/opencv/issues/20292 ++#if (defined(__GNUC__) && __GNUC__ < 5) && !defined(__clang__) ++#undef USE_AV_HW_CODECS ++#define USE_AV_HW_CODECS 0 ++#endif ++ + //#define USE_AV_HW_CODECS 0 + #ifndef USE_AV_HW_CODECS + #if LIBAVUTIL_VERSION_MAJOR >= 56 // FFMPEG 4.0+