diff options
-rw-r--r-- | libre/opencv/5852.patch | 39 | ||||
-rw-r--r-- | libre/opencv/PKGBUILD | 63 | ||||
-rw-r--r-- | libre/opencv/opencv-ffmpeg3.patch | 217 |
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; - |