summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorname2016-04-25 16:34:05 +0200
committername2016-04-25 16:34:05 +0200
commit9119fe577214e563955c19613629eb54bff634a5 (patch)
tree41a257a1134511b7a637e343354e20bd687e5c40
downloadaur-9119fe577214e563955c19613629eb54bff634a5.tar.gz
initial commit
copied from Arch Packages adjusted pkgname adjusted description
-rw-r--r--.SRCINFO36
-rw-r--r--PKGBUILD99
-rw-r--r--opencv-ffmpeg3.patch217
3 files changed, 352 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO
new file mode 100644
index 000000000000..0ed6920daaeb
--- /dev/null
+++ b/.SRCINFO
@@ -0,0 +1,36 @@
+pkgbase = opencv
+ pkgdesc = Open Source Computer Vision Library (Legacy Version)
+ pkgver = 2.4.12.3
+ pkgrel = 1
+ url = http://opencv.org/
+ arch = i686
+ arch = x86_64
+ license = BSD
+ makedepends = cmake
+ makedepends = python2-numpy
+ makedepends = mesa
+ makedepends = eigen2
+ depends = intel-tbb
+ depends = openexr
+ depends = xine-lib
+ depends = libdc1394
+ depends = gtkglext
+ optdepends = opencv-samples
+ optdepends = eigen2
+ optdepends = libcl: For coding with OpenCL
+ optdepends = python2-numpy: Python 2.x interface
+ source = opencv-2.4.12.3.zip::https://github.com/Itseez/opencv/archive/2.4.12.3.zip
+ source = opencv-ffmpeg3.patch
+ md5sums = eaede6500e9c2d56683196b0576db1f7
+ md5sums = c752f3e83ebb021171fdd04aa7fb2e5a
+
+pkgname = opencv2
+ conflicts = opencv
+ options = staticlibs
+
+pkgname = opencv2-samples
+ pkgdesc = Open Source Computer Vision Library (Legacy Version) (samples)
+ depends = opencv2=2.4.12.3
+ optdepends = python2
+ conflicts = opencv-samples
+
diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 000000000000..5434c9f00047
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,99 @@
+# Maintainer: Joshua Schüler <joshua.schueler at gmail dotcom>
+# Contributor: Ray Rashif <schiv@archlinux.org>
+# Contributor: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgbase=opencv
+pkgname=('opencv2' 'opencv2-samples')
+pkgver=2.4.12.3
+pkgrel=1
+pkgdesc="Open Source Computer Vision Library (Legacy Version)"
+arch=('i686' 'x86_64')
+license=('BSD')
+url="http://opencv.org/"
+depends=('intel-tbb' 'openexr' 'xine-lib' 'libdc1394' 'gtkglext')
+makedepends=('cmake' 'python2-numpy' 'mesa' 'eigen2')
+optdepends=('opencv-samples'
+ 'eigen2'
+ 'libcl: For coding with OpenCL'
+ 'python2-numpy: Python 2.x interface')
+source=("$pkgbase-$pkgver.zip::https://github.com/Itseez/opencv/archive/$pkgver.zip" opencv-ffmpeg3.patch)
+md5sums=('eaede6500e9c2d56683196b0576db1f7'
+ 'c752f3e83ebb021171fdd04aa7fb2e5a')
+
+_cmakeopts=('-D WITH_OPENCL=ON'
+ '-D WITH_OPENGL=ON'
+ '-D WITH_TBB=ON'
+ '-D WITH_XINE=ON'
+ '-D WITH_GSTREAMER=OFF'
+ '-D BUILD_WITH_DEBUG_INFO=OFF'
+ '-D BUILD_TESTS=OFF'
+ '-D BUILD_PERF_TESTS=OFF'
+ '-D BUILD_EXAMPLES=ON'
+ '-D INSTALL_C_EXAMPLES=ON'
+ '-D INSTALL_PYTHON_EXAMPLES=ON'
+ '-D CMAKE_BUILD_TYPE=Release'
+ '-D CMAKE_INSTALL_PREFIX=/usr'
+ '-D CMAKE_SKIP_RPATH=ON')
+
+# SSE only available from Pentium 3 onwards (i686 is way older)
+[[ "$CARCH" = 'i686' ]] && \
+ _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')
+
+prepare() {
+ cd $pkgbase-$pkgver
+# Fix build with ffmpeg 3.0 (Debian)
+ patch -p1 -i ../opencv-ffmpeg3.patch
+}
+
+build() {
+ cd "$srcdir/$pkgbase-$pkgver"
+
+ cmake ${_cmakeopts[@]} .
+
+ make
+}
+
+package_opencv2() {
+ options=('staticlibs')
+ conflicts=('opencv')
+
+ cd "$srcdir/$pkgbase-$pkgver"
+
+ make DESTDIR="$pkgdir" install
+
+ # install license file
+ install -Dm644 "$srcdir/$pkgbase-$pkgver/LICENSE" \
+ "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
+
+ cd "$pkgdir/usr/share"
+
+ # separate samples package; also be -R friendly
+ if [[ -d OpenCV/samples ]]; then
+ mv OpenCV/samples "$srcdir/$pkgbase-samples"
+ mv OpenCV $pkgbase # otherwise folder naming is inconsistent
+ elif [[ ! -d OpenCV ]]; then
+ warning "Directory naming issue; samples package may not be built!"
+ fi
+}
+
+package_opencv2-samples() {
+ pkgdesc+=" (samples)"
+ depends=("opencv2=$pkgver") # sample codes change with lib/API
+ unset optdepends
+ optdepends=("python2")
+ conflicts=('opencv-samples')
+
+ mkdir -p "$pkgdir/usr/share/$pkgbase"
+ cp -r "$srcdir/opencv-samples" "$pkgdir/usr/share/opencv/samples"
+
+ # install license file
+ install -Dm644 "$srcdir/opencv-$pkgver/LICENSE" \
+ "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/opencv-ffmpeg3.patch b/opencv-ffmpeg3.patch
new file mode 100644
index 000000000000..ea1557483c2e
--- /dev/null
+++ b/opencv-ffmpeg3.patch
@@ -0,0 +1,217 @@
+--- 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;
+