summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libre/opencv/5852.patch39
-rw-r--r--libre/opencv/PKGBUILD63
-rw-r--r--libre/opencv/opencv-ffmpeg3.patch217
3 files changed, 75 insertions, 244 deletions
diff --git a/libre/opencv/5852.patch b/libre/opencv/5852.patch
new file mode 100644
index 000000000..e34dfad7e
--- /dev/null
+++ b/libre/opencv/5852.patch
@@ -0,0 +1,39 @@
+From 24dbb43c096691d0333cacf231e22f1369f8c826 Mon Sep 17 00:00:00 2001
+From: Alexander Alekhin <alexander.alekhin@itseez.com>
+Date: Tue, 22 Dec 2015 17:10:33 +0300
+Subject: [PATCH] pkg-config: modules list contains only OpenCV modules (fixes
+ #5852)
+
+---
+ cmake/OpenCVUtils.cmake | 11 +++++++----
+ 1 file changed, 7 insertions(+), 4 deletions(-)
+
+diff --git a/cmake/OpenCVUtils.cmake b/cmake/OpenCVUtils.cmake
+index 3a23cd7..75412eb 100644
+--- a/cmake/OpenCVUtils.cmake
++++ b/cmake/OpenCVUtils.cmake
+@@ -806,7 +806,13 @@ macro(ocv_get_all_libs _modules _extra _3rdparty)
+ else()
+ set(deps "")
+ endif()
+- list(INSERT ${_modules} 0 ${deps} ${m})
++ set(_rev_deps "${deps};${m}")
++ ocv_list_reverse(_rev_deps)
++ foreach (dep ${_rev_deps})
++ if(DEFINED OPENCV_MODULE_${dep}_LOCATION)
++ list(INSERT ${_modules} 0 ${dep})
++ endif()
++ endforeach()
+ foreach (dep ${deps} ${OPENCV_LINKER_LIBS})
+ if (NOT DEFINED OPENCV_MODULE_${dep}_LOCATION)
+ if (TARGET ${dep})
+@@ -832,9 +838,6 @@ macro(ocv_get_all_libs _modules _extra _3rdparty)
+ endif()
+ endif()
+
+- # split 3rdparty libs and modules
+- list(REMOVE_ITEM ${_modules} ${${_3rdparty}} ${${_extra}} non_empty_list)
+-
+ ocv_list_filterout(${_modules} "^[\$]<")
+ ocv_list_filterout(${_3rdparty} "^[\$]<")
+ ocv_list_filterout(${_extra} "^[\$]<")
diff --git a/libre/opencv/PKGBUILD b/libre/opencv/PKGBUILD
index 77d8b570c..20e706163 100644
--- a/libre/opencv/PKGBUILD
+++ b/libre/opencv/PKGBUILD
@@ -7,24 +7,27 @@
pkgbase=opencv
pkgname=opencv
-pkgver=2.4.12.3
-pkgrel=1.parabola1
+pkgver=3.1.0
+pkgrel=3.parabola1
pkgdesc="Free Computer Vision Library, without nonfree SIFT algorithm and nonfree Milky icons"
-arch=('i686' 'x86_64')
+arch=('i686' 'x86_64' 'armv7h')
license=('BSD')
url="http://opencv.org/"
depends=('intel-tbb' 'openexr' 'xine-lib' 'libdc1394' 'gtkglext')
-makedepends=('cmake' 'python2-numpy' 'mesa' 'eigen2')
+makedepends=('cmake' 'python-numpy' 'python2-numpy' 'mesa' 'eigen')
optdepends=('opencv-samples'
- 'eigen2'
+ 'eigen'
'libcl: For coding with OpenCL'
- 'python2-numpy: Python 2.x interface')
+ 'python-numpy: Python 3 interface'
+ 'python2-numpy: Python 2 interface')
mksource=("$pkgbase-$pkgver::https://github.com/Itseez/opencv/archive/$pkgver.zip")
source=("https://repo.parabola.nu/other/${pkgname}-libre/${pkgname}-libre-${pkgver}.zip"
- opencv-ffmpeg3.patch)
-mkmd5sums=('eaede6500e9c2d56683196b0576db1f7')
+ "opencv_contrib-$pkgver.tar.gz::https://github.com/Itseez/opencv_contrib/archive/$pkgver.tar.gz"
+ '5852.patch')
+mkmd5sums=('91b88a4e56509ea741c3e11f42ea738b')
md5sums=('7a5f152bdbd730928aaebf1dcb960747'
- 'c752f3e83ebb021171fdd04aa7fb2e5a')
+ 'a822839ad3ab79ff837c16785ea9dd10'
+ '5bd9cd736b171c15cedee3a32a0c47ff')
_cmakeopts=('-D WITH_OPENCL=ON'
'-D WITH_OPENGL=ON'
@@ -39,44 +42,50 @@ _cmakeopts=('-D WITH_OPENCL=ON'
'-D INSTALL_PYTHON_EXAMPLES=ON'
'-D CMAKE_BUILD_TYPE=Release'
'-D CMAKE_INSTALL_PREFIX=/usr'
- '-D CMAKE_SKIP_RPATH=ON')
+ '-D CMAKE_SKIP_RPATH=ON'
+ #'-D WITH_IPP=ON'
+ #'-D INSTALL_CREATE_DISTRIB=ON'
+ )
# SSE only available from Pentium 3 onwards (i686 is way older)
-[[ "$CARCH" = 'i686' ]] && \
+# SSE only available x86 hardware and ARM uses NEON
+[[ "$CARCH" = 'i686' || "$CARCH" = 'armv7h' ]] && \
_cmakeopts+=('-D ENABLE_SSE=OFF'
'-D ENABLE_SSE2=OFF'
'-D ENABLE_SSE3=OFF')
-# all x64 CPUs support SSE2 but not SSE3
-[[ "$CARCH" = 'x86_64' ]] && _cmakeopts+=('-D ENABLE_SSE3=OFF')
-
mksource() {
- cd "$srcdir/$pkgname-$pkgver"
+ cd "$srcdir/$pkgname_contrib-$pkgver"
+
+ # remove nonfree SIFT algorithm that is patented in some countries and have some other limitations on the use
+ rm -rv modules/xfeatures2d/src/sift.cpp
- # remove nonfree SIFT algorithm that is patented in some countries and have some other limitations on the use
- rm -rv modules/nonfree/src/sift.cpp
+ cd "$srcdir/$pkgname-$pkgver"
- # remove nonfree Milky icons
- rm -rv modules/highgui/src/files_Qt/Milky
+ # remove nonfree Milky icons
+ rm -rv modules/highgui/src/files_Qt/Milky
}
prepare() {
- cd "$srcdir/$pkgname-$pkgver"
+ cd "$srcdir/$pkgname-$pkgver"
+
+ # remove nonfree SIFT references
+ rm -rv modules/nonfree
- # remove useless folder
- rm -rv 3rdparty
+ cd "$srcdir/$pkgname-$pkgver"
- # remove nonfree SIFT references
- rm -rv modules/nonfree
+ # remove useless folder
+ rm -rv 3rdparty
- # fix build with ffmpeg 3.0 (Debian)
- patch -p1 -i ../opencv-ffmpeg3.patch
+ patch -p1 -i "$srcdir/5852.patch"
}
build() {
cd "$srcdir/$pkgname-$pkgver"
- cmake ${_cmakeopts[@]} .
+ cmake ${_cmakeopts[@]} \
+ -DOPENCV_EXTRA_MODULES_PATH="$srcdir/opencv_contrib-$pkgver/modules" \
+ .
make
}
diff --git a/libre/opencv/opencv-ffmpeg3.patch b/libre/opencv/opencv-ffmpeg3.patch
deleted file mode 100644
index ea1557483..000000000
--- a/libre/opencv/opencv-ffmpeg3.patch
+++ /dev/null
@@ -1,217 +0,0 @@
---- opencv-2.4.9.1+dfsg.orig/modules/highgui/src/cap_ffmpeg_impl.hpp
-+++ opencv-2.4.9.1+dfsg/modules/highgui/src/cap_ffmpeg_impl.hpp
-@@ -136,9 +136,9 @@ extern "C" {
- #define CV_WARN(message) fprintf(stderr, "warning: %s (%s:%d)\n", message, __FILE__, __LINE__)
- #endif
-
--/* PIX_FMT_RGBA32 macro changed in newer ffmpeg versions */
--#ifndef PIX_FMT_RGBA32
--#define PIX_FMT_RGBA32 PIX_FMT_RGB32
-+/* AV_PIX_FMT_RGBA32 macro changed in newer ffmpeg versions */
-+#ifndef AV_PIX_FMT_RGBA32
-+#define AV_PIX_FMT_RGBA32 AV_PIX_FMT_RGB32
- #endif
-
- #define CALC_FFMPEG_VERSION(a,b,c) ( a<<16 | b<<8 | c )
-@@ -304,7 +304,7 @@ {
- // FFmpeg and Libav added avcodec_free_frame in different versions.
- #if LIBAVCODEC_BUILD >= (LIBAVCODEC_VERSION_MICRO >= 100 \
- ? CALC_FFMPEG_VERSION(54, 59, 100) : CALC_FFMPEG_VERSION(54, 28, 0))
-- avcodec_free_frame(&picture);
-+ av_frame_free(&picture);
- #else
- av_free(picture);
- #endif
-@@ -572,13 +572,13 @@ bool CvCapture_FFMPEG::open( const char*
-
- video_stream = i;
- video_st = ic->streams[i];
-- picture = avcodec_alloc_frame();
-+ picture = av_frame_alloc();
-
- rgb_picture.data[0] = (uint8_t*)malloc(
-- avpicture_get_size( PIX_FMT_BGR24,
-+ avpicture_get_size( AV_PIX_FMT_BGR24,
- enc->width, enc->height ));
- avpicture_fill( (AVPicture*)&rgb_picture, rgb_picture.data[0],
-- PIX_FMT_BGR24, enc->width, enc->height );
-+ AV_PIX_FMT_BGR24, enc->width, enc->height );
-
- frame.width = enc->width;
- frame.height = enc->height;
-@@ -670,7 +670,7 @@ bool CvCapture_FFMPEG::retrieveFrame(int
- if( !video_st || !picture->data[0] )
- return false;
-
-- avpicture_fill((AVPicture*)&rgb_picture, rgb_picture.data[0], PIX_FMT_RGB24,
-+ avpicture_fill((AVPicture*)&rgb_picture, rgb_picture.data[0], AV_PIX_FMT_RGB24,
- video_st->codec->width, video_st->codec->height);
-
- if( img_convert_ctx == NULL ||
-@@ -688,7 +688,7 @@ bool CvCapture_FFMPEG::retrieveFrame(int
- video_st->codec->width, video_st->codec->height,
- video_st->codec->pix_fmt,
- video_st->codec->width, video_st->codec->height,
-- PIX_FMT_BGR24,
-+ AV_PIX_FMT_BGR24,
- SWS_BICUBIC,
- NULL, NULL, NULL
- );
-@@ -1001,10 +1001,10 @@ static AVFrame * icv_alloc_picture_FFMPE
- uint8_t * picture_buf;
- int size;
-
-- picture = avcodec_alloc_frame();
-+ picture = av_frame_alloc();
- if (!picture)
- return NULL;
-- size = avpicture_get_size( (PixelFormat) pix_fmt, width, height);
-+ size = avpicture_get_size( (AVPixelFormat) pix_fmt, width, height);
- if(alloc){
- picture_buf = (uint8_t *) malloc(size);
- if (!picture_buf)
-@@ -1013,7 +1013,7 @@ static AVFrame * icv_alloc_picture_FFMPE
- return NULL;
- }
- avpicture_fill((AVPicture *)picture, picture_buf,
-- (PixelFormat) pix_fmt, width, height);
-+ (AVPixelFormat) pix_fmt, width, height);
- }
- else {
- }
-@@ -1096,7 +1096,7 @@ static AVStream *icv_add_video_stream_FF
- }
-
- c->gop_size = 12; /* emit one intra frame every twelve frames at most */
-- c->pix_fmt = (PixelFormat) pixel_format;
-+ c->pix_fmt = (AVPixelFormat) pixel_format;
-
- if (c->codec_id == CV_CODEC(CODEC_ID_MPEG2VIDEO)) {
- c->max_b_frames = 2;
-@@ -1220,12 +1220,12 @@ bool CvVideoWriter_FFMPEG::writeFrame( c
- }
-
- // check parameters
-- if (input_pix_fmt == PIX_FMT_BGR24) {
-+ if (input_pix_fmt == AV_PIX_FMT_BGR24) {
- if (cn != 3) {
- return false;
- }
- }
-- else if (input_pix_fmt == PIX_FMT_GRAY8) {
-+ else if (input_pix_fmt == AV_PIX_FMT_GRAY8) {
- if (cn != 1) {
- return false;
- }
-@@ -1238,13 +1238,13 @@ bool CvVideoWriter_FFMPEG::writeFrame( c
- assert( input_picture );
- // let input_picture point to the raw data buffer of 'image'
- avpicture_fill((AVPicture *)input_picture, (uint8_t *) data,
-- (PixelFormat)input_pix_fmt, width, height);
-+ (AVPixelFormat)input_pix_fmt, width, height);
-
- if( !img_convert_ctx )
- {
- img_convert_ctx = sws_getContext(width,
- height,
-- (PixelFormat)input_pix_fmt,
-+ (AVPixelFormat)input_pix_fmt,
- c->width,
- c->height,
- c->pix_fmt,
-@@ -1262,7 +1262,7 @@ bool CvVideoWriter_FFMPEG::writeFrame( c
- }
- else{
- avpicture_fill((AVPicture *)picture, (uint8_t *) data,
-- (PixelFormat)input_pix_fmt, width, height);
-+ (AVPixelFormat)input_pix_fmt, width, height);
- }
-
- ret = icv_av_write_frame_FFMPEG( oc, video_st, outbuf, outbuf_size, picture) >= 0;
-@@ -1373,10 +1373,10 @@ bool CvVideoWriter_FFMPEG::open( const c
-
- /* determine optimal pixel format */
- if (is_color) {
-- input_pix_fmt = PIX_FMT_BGR24;
-+ input_pix_fmt = AV_PIX_FMT_BGR24;
- }
- else {
-- input_pix_fmt = PIX_FMT_GRAY8;
-+ input_pix_fmt = AV_PIX_FMT_GRAY8;
- }
-
- /* Lookup codec_id for given fourcc */
-@@ -1402,21 +1402,21 @@ bool CvVideoWriter_FFMPEG::open( const c
- codec_pix_fmt = input_pix_fmt;
- break;
- case CV_CODEC(CODEC_ID_HUFFYUV):
-- codec_pix_fmt = PIX_FMT_YUV422P;
-+ codec_pix_fmt = AV_PIX_FMT_YUV422P;
- break;
- case CV_CODEC(CODEC_ID_MJPEG):
- case CV_CODEC(CODEC_ID_LJPEG):
-- codec_pix_fmt = PIX_FMT_YUVJ420P;
-+ codec_pix_fmt = AV_PIX_FMT_YUVJ420P;
- bitrate_scale = 3;
- break;
- case CV_CODEC(CODEC_ID_RAWVIDEO):
-- codec_pix_fmt = input_pix_fmt == PIX_FMT_GRAY8 ||
-- input_pix_fmt == PIX_FMT_GRAY16LE ||
-- input_pix_fmt == PIX_FMT_GRAY16BE ? input_pix_fmt : PIX_FMT_YUV420P;
-+ codec_pix_fmt = input_pix_fmt == AV_PIX_FMT_GRAY8 ||
-+ input_pix_fmt == AV_PIX_FMT_GRAY16LE ||
-+ input_pix_fmt == AV_PIX_FMT_GRAY16BE ? input_pix_fmt : AV_PIX_FMT_YUV420P;
- break;
- default:
- // good for lossy formats, MPEG, etc.
-- codec_pix_fmt = PIX_FMT_YUV420P;
-+ codec_pix_fmt = AV_PIX_FMT_YUV420P;
- break;
- }
-
-@@ -1609,7 +1609,7 @@ struct OutputMediaStream_FFMPEG
- void write(unsigned char* data, int size, int keyFrame);
-
- // add a video output stream to the container
-- static AVStream* addVideoStream(AVFormatContext *oc, CV_CODEC_ID codec_id, int w, int h, int bitrate, double fps, PixelFormat pixel_format);
-+ static AVStream* addVideoStream(AVFormatContext *oc, CV_CODEC_ID codec_id, int w, int h, int bitrate, double fps, AVPixelFormat pixel_format);
-
- AVOutputFormat* fmt_;
- AVFormatContext* oc_;
-@@ -1648,7 +1648,7 @@ void OutputMediaStream_FFMPEG::close()
- }
- }
-
--AVStream* OutputMediaStream_FFMPEG::addVideoStream(AVFormatContext *oc, CV_CODEC_ID codec_id, int w, int h, int bitrate, double fps, PixelFormat pixel_format)
-+AVStream* OutputMediaStream_FFMPEG::addVideoStream(AVFormatContext *oc, CV_CODEC_ID codec_id, int w, int h, int bitrate, double fps, AVPixelFormat pixel_format)
- {
- AVStream* st = avformat_new_stream(oc, 0);
- if (!st)
-@@ -1766,7 +1766,7 @@ bool OutputMediaStream_FFMPEG::open(cons
- oc_->max_delay = (int)(0.7 * AV_TIME_BASE); // This reduces buffer underrun warnings with MPEG
-
- // set a few optimal pixel formats for lossless codecs of interest..
-- PixelFormat codec_pix_fmt = PIX_FMT_YUV420P;
-+ AVPixelFormat codec_pix_fmt = AV_PIX_FMT_YUV420P;
- int bitrate_scale = 64;
-
- // TODO -- safe to ignore output audio stream?
-@@ -1943,15 +1943,15 @@ bool InputMediaStream_FFMPEG::open(const
-
- switch (enc->pix_fmt)
- {
-- case PIX_FMT_YUV420P:
-+ case AV_PIX_FMT_YUV420P:
- *chroma_format = ::VideoChromaFormat_YUV420;
- break;
-
-- case PIX_FMT_YUV422P:
-+ case AV_PIX_FMT_YUV422P:
- *chroma_format = ::VideoChromaFormat_YUV422;
- break;
-
-- case PIX_FMT_YUV444P:
-+ case AV_PIX_FMT_YUV444P:
- *chroma_format = ::VideoChromaFormat_YUV444;
- break;
-