aboutsummaryrefslogtreecommitdiff
path: root/graphics/opencv
diff options
context:
space:
mode:
authorMartin Wilke <miwi@FreeBSD.org>2008-05-02 11:40:05 +0000
committerMartin Wilke <miwi@FreeBSD.org>2008-05-02 11:40:05 +0000
commit6c3173f6e2c7649b44d67cbf896a0794950bcfab (patch)
tree3149dbb328853d9a16e31f1d59b7473b0792d9eb /graphics/opencv
parentd1096f5f82520f74cd3471b83364ebf1a1db28ee (diff)
downloadports-6c3173f6e2c7649b44d67cbf896a0794950bcfab.tar.gz
ports-6c3173f6e2c7649b44d67cbf896a0794950bcfab.zip
Notes
Diffstat (limited to 'graphics/opencv')
-rw-r--r--graphics/opencv/files/patch-otherlibs-highgui.cpp85
1 files changed, 85 insertions, 0 deletions
diff --git a/graphics/opencv/files/patch-otherlibs-highgui.cpp b/graphics/opencv/files/patch-otherlibs-highgui.cpp
new file mode 100644
index 000000000000..0294d7b7c779
--- /dev/null
+++ b/graphics/opencv/files/patch-otherlibs-highgui.cpp
@@ -0,0 +1,85 @@
+--- otherlibs/highgui/cvcap_ffmpeg.cpp.orgi 2008-04-28 20:29:51.000000000 +0200
++++ otherlibs/highgui/cvcap_ffmpeg.cpp 2008-04-28 20:32:58.000000000 +0200
+@@ -41,9 +41,14 @@
+
+ #include "_highgui.h"
+
++#define __STDC_CONSTANT_MACROS
+
+ extern "C" {
+ #include <ffmpeg/avformat.h>
++#include <ffmpeg/avcodec.h>
++#include <ffmpeg/swscale.h>
++#include <sys/types.h> /* size_t */
++#include <sys/errno.h>
+ }
+
+ #ifdef NDEBUG
+@@ -52,6 +57,8 @@
+ #define CV_WARN(message) fprintf(stderr, "warning: %s (%s:%d)\n", message, __FILE__, __LINE__)
+ #endif
+
++static struct SwsContext *img_convert_ctx;
++
+ typedef struct CvCaptureAVI_FFMPEG
+ {
+ CvCaptureVTable * vtable;
+@@ -214,19 +221,21 @@
+ {
+ if( !capture || !capture->video_st || !capture->picture->data[0] )
+ return 0;
+-#if LIBAVFORMAT_BUILD > 4628
+- img_convert( (AVPicture*)&capture->rgb_picture, PIX_FMT_BGR24,
+- (AVPicture*)capture->picture,
+- capture->video_st->codec->pix_fmt,
+- capture->video_st->codec->width,
+- capture->video_st->codec->height );
+-#else
+- img_convert( (AVPicture*)&capture->rgb_picture, PIX_FMT_BGR24,
+- (AVPicture*)capture->picture,
+- capture->video_st->codec.pix_fmt,
+- capture->video_st->codec.width,
+- capture->video_st->codec.height );
+-#endif
++
++ img_convert_ctx = sws_getContext(capture->video_st->codec->width,
++ capture->video_st->codec->height,
++ capture->video_st->codec->pix_fmt,
++ capture->video_st->codec->width,
++ capture->video_st->codec->height,
++ PIX_FMT_BGR24,
++ SWS_BICUBIC,
++ NULL, NULL, NULL);
++
++ sws_scale(img_convert_ctx, capture->picture->data,
++ capture->picture->linesize, 0,
++ capture->video_st->codec->height,
++ capture->rgb_picture.data, capture->rgb_picture.linesize);
++
+ return &capture->frame;
+ }
+
+@@ -713,9 +722,20 @@
+ PIX_FMT_BGR24, image->width, image->height);
+
+ // convert to the color format needed by the codec
+- if( img_convert((AVPicture *)mywriter->picture, c->pix_fmt,
+- (AVPicture *)mywriter->rgb_picture, PIX_FMT_BGR24,
+- image->width, image->height) < 0){
++ img_convert_ctx = sws_getContext(image->width,
++ image->height,
++ PIX_FMT_BGR24,
++ c->width,
++ c->height,
++ c->pix_fmt,
++ SWS_BICUBIC,
++ NULL, NULL, NULL);
++
++ if ( sws_scale(img_convert_ctx, mywriter->rgb_picture->data,
++ mywriter->rgb_picture->linesize, 0,
++ image->height,
++ mywriter->picture->data, mywriter->picture->linesize) < 0 )
++ {
+ CV_ERROR(CV_StsUnsupportedFormat, "FFMPEG::img_convert pixel format conversion from BGR24 not handled");
+ }
+ }