aboutsummaryrefslogtreecommitdiff
path: root/math/octave-forge-video
diff options
context:
space:
mode:
authorStephen Montgomery-Smith <stephen@FreeBSD.org>2016-01-18 06:18:50 +0000
committerStephen Montgomery-Smith <stephen@FreeBSD.org>2016-01-18 06:18:50 +0000
commitcce56014e0880fb028bcefce5ce37c3fc433abd6 (patch)
tree741c2c23c11ad5cc96e0a07fb156549f217ce58d /math/octave-forge-video
parenteaa5eccff1ebf843d6305c4ecfcdc78538bf76cc (diff)
downloadports-cce56014e0880fb028bcefce5ce37c3fc433abd6.tar.gz
ports-cce56014e0880fb028bcefce5ce37c3fc433abd6.zip
Notes
Diffstat (limited to 'math/octave-forge-video')
-rw-r--r--math/octave-forge-video/Makefile19
-rw-r--r--math/octave-forge-video/files/patch-AVHandler.cc10
-rw-r--r--math/octave-forge-video/files/patch-ffmpeg_0132
-rw-r--r--math/octave-forge-video/files/patch-ffmpeg_1257
-rw-r--r--math/octave-forge-video/files/patch-ffmpeg_234
5 files changed, 13 insertions, 439 deletions
diff --git a/math/octave-forge-video/Makefile b/math/octave-forge-video/Makefile
index a3ae832db643..5f1ef1c642cf 100644
--- a/math/octave-forge-video/Makefile
+++ b/math/octave-forge-video/Makefile
@@ -2,23 +2,30 @@
# $FreeBSD$
PORTNAME= octave-forge-video
-PORTVERSION= 1.0.2
-PORTREVISION= 14
+PORTVERSION= 1.2.1
CATEGORIES= math
MAINTAINER= stephen@FreeBSD.org
COMMENT= Octave-forge package ${OCTAVE_PKGNAME}
LICENSE= BSD2CLAUSE
-LICENSE_FILE= ${WRKSRC}/COPYING
+LICENSE_FILE= ${WRKDIR}/${OCTSRC}/COPYING
-BROKEN= does not build with octave-4.0.0
-
-USES= pkgconfig
GNU_CONFIGURE= yes
CONFIGURE_ENV+= HOME=${WRKSRC}
+# OCTSRC is the name of the directory of the package.
+# It is usually ${OCTAVE_PKGNAME} or ${DISTNAME}.
+OCTSRC= ${DISTNAME}
+
+WRKSRC= ${WRKDIR}/${OCTSRC}/src
+
LIB_DEPENDS+= libavcodec.so:${PORTSDIR}/multimedia/ffmpeg
.include "${.CURDIR}/../../Mk/bsd.octave.mk"
+
+post-build:
+ ${RM} -f ${WRKSRC}/Makefile ${WRKSRC}/configure
+ cd ${WRKDIR} && ${TAR} cfz ${DISTNAME}.tar.gz ${OCTSRC}
+
.include <bsd.port.mk>
diff --git a/math/octave-forge-video/files/patch-AVHandler.cc b/math/octave-forge-video/files/patch-AVHandler.cc
deleted file mode 100644
index 22dbe5908863..000000000000
--- a/math/octave-forge-video/files/patch-AVHandler.cc
+++ /dev/null
@@ -1,10 +0,0 @@
---- src/AVHandler.cc.orig 2008-08-24 18:14:47.000000000 +0200
-+++ src/AVHandler.cc 2009-02-10 09:15:25.000000000 +0100
-@@ -24,6 +24,7 @@
-
- #include "AVHandler.h"
-
-+#include <stdlib.h>
- #include <string>
-
- #ifdef _MSC_VER
diff --git a/math/octave-forge-video/files/patch-ffmpeg_0 b/math/octave-forge-video/files/patch-ffmpeg_0
deleted file mode 100644
index 46a2a6aac661..000000000000
--- a/math/octave-forge-video/files/patch-ffmpeg_0
+++ /dev/null
@@ -1,132 +0,0 @@
-changeset: 11:a17550ef53d5
-user: carandraug
-date: Tue Jan 10 14:06:05 2012 +0000
-files: src/AVHandler.cc
-description:
-AVHandler.cc: up[dating code to be compatible with latest version, 0.9, of ffmpeg. Patch submitted by Cihan Baran <cihanb@gmail.com>
-
-
-diff -r db975a9b9954 -r a17550ef53d5 src/AVHandler.cc
---- src/AVHandler.cc Tue Sep 27 12:34:58 2011 +0000
-+++ src/AVHandler.cc Tue Jan 10 14:06:05 2012 +0000
-@@ -42,6 +42,8 @@
- #endif
-
- std::ostream *AVHandler::out = &std::cout;
-+/** head of registered output format linked list */
-+static AVOutputFormat *first_oformat = NULL;
-
- AVHandler::~AVHandler(void) {
- if (frame) {
-@@ -106,7 +108,7 @@
- return -1;
- }
-
-- av_output = av_alloc_format_context();
-+ av_output = avformat_alloc_context();
- if (!av_output) {
- (*out) << "AVHandler: Memory error allocating format context" << std::endl;
- return -1;
-@@ -127,9 +129,9 @@
- }
-
- snprintf(av_output->filename, sizeof(av_output->filename), "%s", filename.c_str());
-- snprintf(av_output->title, sizeof(av_output->title), "%s", title.c_str());
-- snprintf(av_output->author, sizeof(av_output->author), "%s", author.c_str());
-- snprintf(av_output->comment, sizeof(av_output->comment), "%s", comment.c_str());
-+// snprintf(av_output->title, sizeof(av_output->title), "%s", title.c_str());
-+// snprintf(av_output->author, sizeof(av_output->author), "%s", author.c_str());
-+// snprintf(av_output->comment, sizeof(av_output->comment), "%s", comment.c_str());
-
- if (url_fopen(&av_output->pb, filename.c_str(), URL_WRONLY) < 0) {
- (*out) << "AVHandler: Could not open \"" << filename << "\" for output" << std::endl;
-@@ -162,7 +164,7 @@
- }
-
- for (int i=0; i < av_input->nb_streams; i++) {
-- if (av_input->streams[i]->codec->codec_type == CODEC_TYPE_VIDEO) {
-+ if (av_input->streams[i]->codec->codec_type == AVMEDIA_TYPE_VIDEO) {
- vstream = av_input->streams[i];
- break;
- }
-@@ -173,7 +175,7 @@
- }
-
- for (int i=0; i < av_input->nb_streams; i++) {
-- if (av_input->streams[i]->codec->codec_type == CODEC_TYPE_AUDIO) {
-+ if (av_input->streams[i]->codec->codec_type == AVMEDIA_TYPE_AUDIO) {
- astream = av_input->streams[i];
- break;
- }
-@@ -204,9 +206,9 @@
- width = vstream->codec->width;
- height = vstream->codec->height;
-
-- title = av_input->title;
-- author = av_input->author;
-- comment = av_input->comment;
-+// title = av_input->title;
-+// author = av_input->author;
-+// comment = av_input->comment;
-
- rgbframe = create_frame(PIX_FMT_RGB24);
- if (!rgbframe) return -1;
-@@ -258,7 +260,7 @@
- if (c->coded_frame)
- pkt.pts = c->coded_frame->pts;
- if (c->coded_frame && c->coded_frame->key_frame)
-- pkt.flags |= PKT_FLAG_KEY;
-+ pkt.flags |= AV_PKT_FLAG_KEY;
- /// XXX FIXME XXX does this ensure that the first frame is always a key frame?
-
- if (av_write_frame(av_output, &pkt) != 0) {
-@@ -296,7 +298,7 @@
- (*out) << "AVHandler: Error seeking to " << target_timestamp << std::endl;
- return -1;
- }
-- cc->hurry_up = 1;
-+ cc->skip_frame;
-
- // Flush stream buffers after seek
- avcodec_flush_buffers(cc);
-@@ -331,7 +333,11 @@
-
- // Decode the packet into a frame
- int frameFinished;
-- if (avcodec_decode_video(cc, frame, &frameFinished, packet.data, packet.size) < 0) {
-+
-+ // HACK for CorePNG to decode as normal PNG by default
-+ packet.flags = AV_PKT_FLAG_KEY;
-+
-+ if (avcodec_decode_video2(cc, frame, &frameFinished, &packet) < 0) {
- (*out) << "AVHandler: Error decoding video stream" << std::endl;
- av_free_packet(&packet);
- av_free(frame); frame = NULL;
-@@ -342,7 +348,7 @@
- current_timestamp = (uint64_t)(vstream->cur_dts * AV_TIME_BASE * (long double)stream_time_base);
- }
- }
-- cc->hurry_up = 0;
-+// cc->hurry_up = 0;
-
- SwsContext *sc = sws_getContext(cc->width, cc->height, cc->pix_fmt,
- cc->width, cc->height, PIX_FMT_BGR24,
-@@ -375,7 +381,7 @@
-
- AVCodec *codec;
- for (codec = av_codec_next(0); codec != NULL; codec = av_codec_next(codec)) {
-- if ((codec->type == CODEC_TYPE_VIDEO) &&
-+ if ((codec->type == AVMEDIA_TYPE_VIDEO) &&
- (codec->encode)) {
- (*out) << codec->name << " ";
- }
-@@ -395,7 +401,7 @@
-
- cc = vstream->codec;
-
-- cc->codec_type = CODEC_TYPE_VIDEO;
-+ cc->codec_type = AVMEDIA_TYPE_VIDEO;
-
- cc->bit_rate = bitrate;
- cc->width = width;
-
diff --git a/math/octave-forge-video/files/patch-ffmpeg_1 b/math/octave-forge-video/files/patch-ffmpeg_1
deleted file mode 100644
index 9b2372b68667..000000000000
--- a/math/octave-forge-video/files/patch-ffmpeg_1
+++ /dev/null
@@ -1,257 +0,0 @@
-changeset: 12:7caa40bb8a47
-user: carandraug
-date: Tue Oct 09 21:26:03 2012 +0000
-files: DESCRIPTION src/AVHandler.cc src/AVHandler.h src/aviinfo.cc src/oct-avifile.cc
-description:
-video: fixes for new versions of ffmpeg and do not reject videos with odd dimension sizes (patch by Donjan Rodic <drodic@student.ethz.ch>
-
-
-diff -r a17550ef53d5 -r 7caa40bb8a47 DESCRIPTION
---- DESCRIPTION Tue Jan 10 14:06:05 2012 +0000
-+++ DESCRIPTION Tue Oct 09 21:26:03 2012 +0000
-@@ -7,6 +7,6 @@
- Description: Implements addframe, avifile, aviinfo, and aviread, using ffmpeg. (and approximately conforms to Matlab interface)
- Depends: octave (>= 2.9.12)
- Autoload: yes
--SystemRequirements: ffmpeg
-+SystemRequirements: >=ffmpeg-0.7
- License: BSD
- Url: http://octave.sf.net
-diff -r a17550ef53d5 -r 7caa40bb8a47 src/AVHandler.cc
---- src/AVHandler.cc Tue Jan 10 14:06:05 2012 +0000
-+++ src/AVHandler.cc Tue Oct 09 21:26:03 2012 +0000
-@@ -42,8 +42,6 @@
- #endif
-
- std::ostream *AVHandler::out = &std::cout;
--/** head of registered output format linked list */
--static AVOutputFormat *first_oformat = NULL;
-
- AVHandler::~AVHandler(void) {
- if (frame) {
-@@ -66,7 +64,7 @@
- if (av_output->pb->buf_ptr) {
- while (write_frame() > 0) {}
- av_write_trailer(av_output);
-- if (url_fclose( av_output->pb ) < 0)
-+ if (avio_close( av_output->pb ) < 0)
- (*out) << "AVHandler: cannot close output file" << std::endl;
- }
- av_free(av_output);
-@@ -80,7 +78,7 @@
- }
-
- if (av_input) {
-- av_close_input_file(av_input);
-+ avformat_close_input(&av_input);
- } else {
- // close output stream
- if (vstream) av_freep(&vstream);
-@@ -96,8 +94,8 @@
- AVHandler::setup_write() {
- av_register_all();
-
-- AVOutputFormat *avifmt;
-- for (avifmt = first_oformat; avifmt != NULL; avifmt = avifmt->next) {
-+ AVOutputFormat *avifmt = NULL;
-+ while (NULL != (avifmt = av_oformat_next(avifmt))) {
- if (std::string(avifmt->name) == "avi") {
- break;
- }
-@@ -123,17 +121,18 @@
- }
-
- /* av_set_parameters is mandatory */
-+ // FIXME: deprecated, but there's no replacement yet
- if (av_set_parameters(av_output, NULL) < 0) {
- (*out) << "AVHandler: Error setting output format parameters" << std::endl;
- return -1;
- }
-
- snprintf(av_output->filename, sizeof(av_output->filename), "%s", filename.c_str());
--// snprintf(av_output->title, sizeof(av_output->title), "%s", title.c_str());
--// snprintf(av_output->author, sizeof(av_output->author), "%s", author.c_str());
--// snprintf(av_output->comment, sizeof(av_output->comment), "%s", comment.c_str());
-+// FIXME: snprintf(av_output->title, sizeof(av_output->title), "%s", title.c_str());
-+// FIXME: snprintf(av_output->author, sizeof(av_output->author), "%s", author.c_str());
-+// FIXME: snprintf(av_output->comment, sizeof(av_output->comment), "%s", comment.c_str());
-
-- if (url_fopen(&av_output->pb, filename.c_str(), URL_WRONLY) < 0) {
-+ if (avio_open(&av_output->pb, filename.c_str(), URL_WRONLY) < 0) {
- (*out) << "AVHandler: Could not open \"" << filename << "\" for output" << std::endl;
- return -1;
- }
-@@ -143,8 +142,8 @@
- frame = create_frame(vstream->codec->pix_fmt);
- rgbframe = create_frame(PIX_FMT_RGB24);
- if (!frame || !rgbframe) return -1;
--
-- av_write_header(av_output);
-+
-+ avformat_write_header(av_output, NULL);
-
- return 0;
- }
-@@ -153,12 +152,12 @@
- AVHandler::setup_read() {
- av_register_all();
-
-- if (av_open_input_file(&av_input, filename.c_str(), NULL, 0, NULL) != 0) {
-+ if (avformat_open_input(&av_input, filename.c_str(), NULL, NULL) != 0) {
- (*out) << "AVHandler: Could not open \"" << filename << "\" for reading" << std::endl;
- return -1;
- }
-
-- if (av_find_stream_info(av_input) < 0) {
-+ if (avformat_find_stream_info(av_input, NULL) < 0) {
- (*out) << "AVHandler: No stream information available" << std::endl;
- return -1;
- }
-@@ -194,7 +193,7 @@
- if (codec->capabilities & CODEC_CAP_TRUNCATED)
- vstream->codec->flags |= CODEC_FLAG_TRUNCATED;
-
-- if (avcodec_open(vstream->codec, codec) < 0) {
-+ if (avcodec_open2(vstream->codec, codec, NULL) < 0) {
- (*out) << "AVHandler: Cannot open codec " << codec_name << std::endl;
- vstream->codec->codec = NULL;
- return -1;
-@@ -206,9 +205,9 @@
- width = vstream->codec->width;
- height = vstream->codec->height;
-
--// title = av_input->title;
--// author = av_input->author;
--// comment = av_input->comment;
-+// FIXME: title = av_input->title;
-+// FIXME: author = av_input->author;
-+// FIXME: comment = av_input->comment;
-
- rgbframe = create_frame(PIX_FMT_RGB24);
- if (!rgbframe) return -1;
-@@ -326,7 +325,7 @@
- return -1;
- }
-
-- if (url_feof(av_input->pb)) {
-+ if (av_input->pb->eof_reached) {
- (*out) << "AVHandler: EOF reached" << std::endl;
- }
- }
-@@ -348,6 +347,8 @@
- current_timestamp = (uint64_t)(vstream->cur_dts * AV_TIME_BASE * (long double)stream_time_base);
- }
- }
-+// http://ffmpeg.org/pipermail/ffmpeg-cvslog/2011-April/035933.html
-+// FIXME maybe use: cc->skip_frame;
- // cc->hurry_up = 0;
-
- SwsContext *sc = sws_getContext(cc->width, cc->height, cc->pix_fmt,
-@@ -367,9 +368,9 @@
- (*out) << "Supported file formats:" << std::endl;
- av_register_all();
-
-- AVOutputFormat *ofmt;
-- for (ofmt = first_oformat; ofmt != NULL; ofmt = ofmt->next) {
-- (*out) << ofmt->name << " ";
-+ AVOutputFormat *ofmt = NULL;
-+ while (NULL != (ofmt = av_oformat_next(ofmt))) {
-+ (*out) << ofmt->name << " ";
- }
- (*out) << std::endl << std::endl;
- }
-@@ -392,8 +393,9 @@
- int
- AVHandler::add_video_stream() {
- AVCodecContext *cc;
--
-- vstream = av_new_stream(av_output, 0);
-+
-+ // FIXME: vstream = avformat_new_stream(av_output, av_find_default_stream_index(av_output));
-+ vstream = avformat_new_stream(av_output, NULL);
- if (!vstream) {
- (*out) << "AVHandler: error opening video output stream" << std::endl;
- return -1;
-@@ -402,7 +404,7 @@
- cc = vstream->codec;
-
- cc->codec_type = AVMEDIA_TYPE_VIDEO;
--
-+
- cc->bit_rate = bitrate;
- cc->width = width;
- cc->height = height;
-@@ -432,7 +434,7 @@
- return -1;
- }
-
-- if (avcodec_open(cc, codec) < 0) {
-+ if (avcodec_open2(cc, codec, NULL) < 0) {
- (*out) << "AVHandler: cannot open codec" << std::endl;
- cc->codec = NULL;
- return -1;
-diff -r a17550ef53d5 -r 7caa40bb8a47 src/AVHandler.h
---- src/AVHandler.h Tue Jan 10 14:06:05 2012 +0000
-+++ src/AVHandler.h Tue Oct 09 21:26:03 2012 +0000
-@@ -27,8 +27,11 @@
-
- #define VIDEO_OUTBUF_SIZE 200000
-
-+// FIXME: should define -D__STDC_CONSTANT_MACROS instead of the following
- #define INT64_C
-+#define UINT64_C
- #define __STDC_CONSTANT_MACROS
-+
- #include <errno.h>
- extern "C" {
- #if defined (HAVE_FFMPEG_AVFORMAT_H)
-@@ -165,7 +168,7 @@
-
- unsigned int get_total_frames() const {
- if (vstream) {
-- return (unsigned int)((double)framerate * vstream->duration / AV_TIME_BASE);
-+ return (unsigned int) vstream->nb_frames;
- } else {
- return 0;
- }
-@@ -173,7 +176,7 @@
-
- unsigned int get_filesize() const {
- if (av_input) {
-- return av_input->file_size;
-+ return avio_size(av_input->pb);
- } else {
- return 0;
- }
-diff -r a17550ef53d5 -r 7caa40bb8a47 src/aviinfo.cc
---- src/aviinfo.cc Tue Jan 10 14:06:05 2012 +0000
-+++ src/aviinfo.cc Tue Oct 09 21:26:03 2012 +0000
-@@ -66,6 +66,7 @@
- av.set_log(&octave_stdout);
-
- if (av.setup_read() != 0) {
-+ error("aviread: AVHandler setup failed");
- return retval;
- }
-
-diff -r a17550ef53d5 -r 7caa40bb8a47 src/oct-avifile.cc
---- src/oct-avifile.cc Tue Jan 10 14:06:05 2012 +0000
-+++ src/oct-avifile.cc Tue Oct 09 21:26:03 2012 +0000
-@@ -56,10 +56,12 @@
- void
- Avifile::addframe(const NDArray &f) {
- if (frames == 0) {
-- if ( (f.columns() % 2 != 0) || (f.rows() % 2 != 0) ) {
-- error("avifile: matrix dimensions must be multiple of two");
-- return;
-- }
-+// FIXME: this suppresses warnings from ffmpeg, but completely prevents
-+// working with many videos.
-+// if ( (f.columns() % 2 != 0) || (f.rows() % 2 != 0) ) {
-+// error("avifile: matrix dimensions must be multiple of two");
-+// return;
-+// }
-
- if ( (f.columns() == 0) || (f.rows() == 0) ) {
- error("avifile: matrix must have non-zero dimensions");
-
diff --git a/math/octave-forge-video/files/patch-ffmpeg_2 b/math/octave-forge-video/files/patch-ffmpeg_2
deleted file mode 100644
index a7749a2df1a3..000000000000
--- a/math/octave-forge-video/files/patch-ffmpeg_2
+++ /dev/null
@@ -1,34 +0,0 @@
---- src/AVHandler.cc.orig 2013-10-28 13:54:16.834945990 -0200
-+++ src/AVHandler.cc 2013-10-28 13:59:18.276945264 -0200
-@@ -123,17 +123,17 @@
-
- /* av_set_parameters is mandatory */
- // FIXME: deprecated, but there's no replacement yet
-- if (av_set_parameters(av_output, NULL) < 0) {
-- (*out) << "AVHandler: Error setting output format parameters" << std::endl;
-- return -1;
-- }
-+ //if (av_set_parameters(av_output, NULL) < 0) {
-+ // (*out) << "AVHandler: Error setting output format parameters" << std::endl;
-+ // return -1;
-+ //}
-
- snprintf(av_output->filename, sizeof(av_output->filename), "%s", filename.c_str());
- // FIXME: snprintf(av_output->title, sizeof(av_output->title), "%s", title.c_str());
- // FIXME: snprintf(av_output->author, sizeof(av_output->author), "%s", author.c_str());
- // FIXME: snprintf(av_output->comment, sizeof(av_output->comment), "%s", comment.c_str());
-
-- if (avio_open(&av_output->pb, filename.c_str(), URL_WRONLY) < 0) {
-+ if (avio_open(&av_output->pb, filename.c_str(), AVIO_FLAG_WRITE) < 0) {
- (*out) << "AVHandler: Could not open \"" << filename << "\" for output" << std::endl;
- return -1;
- }
-@@ -384,7 +384,7 @@
- AVCodec *codec;
- for (codec = av_codec_next(0); codec != NULL; codec = av_codec_next(codec)) {
- if ((codec->type == AVMEDIA_TYPE_VIDEO) &&
-- (codec->encode)) {
-+ av_codec_is_encoder(codec)) {
- (*out) << codec->name << " ";
- }
- }