summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libre/blender-libre/PKGBUILD82
-rw-r--r--libre/blender-libre/blender.install13
-rw-r--r--libre/blender-libre/boost-1.50.patch42
-rw-r--r--libre/blender-libre/ffmpeg-0.11.patch434
4 files changed, 33 insertions, 538 deletions
diff --git a/libre/blender-libre/PKGBUILD b/libre/blender-libre/PKGBUILD
index 94e5b00cb..8baed7927 100644
--- a/libre/blender-libre/PKGBUILD
+++ b/libre/blender-libre/PKGBUILD
@@ -1,33 +1,28 @@
# $Id$
-# Maintainer (Parabola): Márcio Silva <coadde@lavabit.com>
+# Maintainer: Márcio Silva <coadde@lavabit.com>
-spacenav=false
-pkgbase=blender-libre
-pkgflag=-libre
-if [ $spacenav == true ]; then
- pkgname=(
- blender-spacenav-libre
- )
- spndesc=' (with spacenav support)'
+_spacenav=false
+_pkgname=blender-libre
+_pkgflag=libre
+if [ $_spacenav == true ]; then
+ pkgname=blender-spacenav-libre
+ _spndesc=' (with spacenav support)'
else
- pkgname=(
- blender-libre
- )
- spndesc=''
+ pkgname=blender-libre
+ _spndesc=''
fi
-pkgdesc="Fully integrated 3D graphics creation suite, without nonfree cuda-toolkit and redcode image format support$spndesc"
-pkgver=2.66
-pkgrel=2
-pkgaev=6
+epoch=7
+pkgver=2.66a
+_pyver=3.3
+pkgrel=1
+pkgdesc="Fully integrated 3D graphics creation suite, without nonfree cuda-toolkit and redcode image format support$_spndesc"
arch=(
i686
x86_64
mips64el
)
-license=(
- GPL
-)
-url="http://www.${pkgbase%$pkgflag}.org"
+license=GPL
+url="http://www.${_pkgname%-$_pkgflag}.org"
depends=(
desktop-file-utils
ffmpeg
@@ -45,41 +40,27 @@ depends=(
shared-mime-info
xdg-utils
)
-if [ $spacenav == true ]; then
+if [ $_spacenav == true ]; then
depends+=(
- # dependencies tree of binaries software (root) #
libspnav
)
fi
-optdepends=(
- 'bullet: for Physics Simulation in BGE'
-)
+optdepends='bullet: for Rigid Bodies and Physics Simulation'
makedepends=(
- # make dependencies tree (root) #
boost
cmake
mesa
subversion
)
-provides=(
- ${pkgbase%$pkgflag}=$pkgaev:$pkgver
-)
-conflicts=(
- ${pkgbase%$pkgflag}
-)
-replaces=(
- ${pkgbase%$pkgflag}
-)
-install=$pkgbase.install
-source=(
- "http://download.${pkgbase%$pkgflag}.org/source/${pkgbase%$pkgflag}-$pkgver.tar.gz"
-)
-sha512sums=(
- f76499edc5f8179a42ec6d6334c6fa03f830570d054061ae40c2e8e1ec0a0090efcbb642f4f7f3b99d3941d4c4b791a0e357a275acf1b3ac251d58906f23b2b4
-)
+provides=${_pkgname%-$_pkgflag}=$epoch:$pkgver
+conflicts=${_pkgname%-$_pkgflag}
+replaces=${_pkgname%-$_pkgflag}
+install=$_pkgname.install
+source="http://download.${_pkgname%-$_pkgflag}.org/source/${_pkgname%-$_pkgflag}-$pkgver.tar.gz"
+sha512sums=ea5def031daa220991f6165950234b311e8ae3baa6785d6226efefa90b64e1b83e8635f71f9a7fc7ae23923ce313d5ae48ffa0c54cf7ff794a4fb2dacbe8714f
build() {
- cd $srcdir/${pkgbase%$pkgflag}-$pkgver
+ cd $srcdir/${_pkgname%-$_pkgflag}-$pkgver
mkdir build
cd build
@@ -90,10 +71,10 @@ build() {
-DCMAKE_BUILD_TYPE=Release\
-DCMAKE_INSTALL_PREFIX=/usr\
-DOPENIMAGEIO_ROOT_DIR=/usr\
- -DPYTHON_INCLUDE_DIRS=/usr/include/python3.3m\
+ -DPYTHON_INCLUDE_DIRS=/usr/include/python${_pyver}m\
-DPYTHON_LIBPATH=/usr/lib\
- -DPYTHON_LIBRARY=python3.3m\
- -DPYTHON_VERSION=3.3\
+ -DPYTHON_LIBRARY=python${_pyver}m\
+ -DPYTHON_VERSION=${_pyver}\
$DSUPPORT_SSE2_BUILD\
-DWITH_CODEC_FFMPEG=ON\
-DWITH_CODEC_SNDFILE=ON\
@@ -110,12 +91,15 @@ build() {
-DWITH_PLAYER=ON\
-DWITH_PYTHON_INSTALL=OFF\
-DWITH_SYSTEM_GLEW=ON
+
setarch $CARCH make $MAKEFLAGS
setarch $CARCH make
}
package() {
- cd $srcdir/${pkgbase%$pkgflag}-$pkgver/build
+ cd $srcdir/${_pkgname%-$_pkgflag}-$pkgver/build
setarch $CARCH make DESTDIR=$pkgdir install
- setarch $CARCH python -m compileall $pkgdir/usr/share/${pkgbase%$pkgflag}
+ setarch $CARCH python -m compileall $pkgdir/usr/share/${_pkgname%-$_pkgflag}
}
+
+# vim:set ts=2 sw=2 et:
diff --git a/libre/blender-libre/blender.install b/libre/blender-libre/blender.install
deleted file mode 100644
index 724bfce00..000000000
--- a/libre/blender-libre/blender.install
+++ /dev/null
@@ -1,13 +0,0 @@
-post_install() {
- update-desktop-database -q
- update-mime-database usr/share/mime &> /dev/null
- xdg-icon-resource forceupdate --theme hicolor &> /dev/null
-}
-
-post_upgrade() {
- post_install
-}
-
-post_remove() {
- post_install
-}
diff --git a/libre/blender-libre/boost-1.50.patch b/libre/blender-libre/boost-1.50.patch
deleted file mode 100644
index fa698a3a6..000000000
--- a/libre/blender-libre/boost-1.50.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-diff -Naur a/intern/cycles/util/util_cache.cpp b/intern/cycles/util/util_cache.cpp
---- a/intern/cycles/util/util_cache.cpp 2012-05-10 11:44:09.000000000 -0300
-+++ b/intern/cycles/util/util_cache.cpp 2012-07-15 14:19:34.893238929 -0300
-@@ -26,8 +26,6 @@
- #include "util_path.h"
- #include "util_types.h"
-
--#define BOOST_FILESYSTEM_VERSION 2
--
- #include <boost/filesystem.hpp>
- #include <boost/algorithm/string.hpp>
-
-@@ -117,7 +115,7 @@
- boost::filesystem::directory_iterator it(dir), it_end;
-
- for(; it != it_end; it++) {
-- string filename = it->path().filename();
-+ string filename = it->path().filename().string();
-
- if(boost::starts_with(filename, name))
- if(except.find(filename) == except.end())
-diff -Naur blender-2.63a/intern/cycles/util/util_path.cpp blender-2.63a-new/intern/cycles/util/util_path.cpp
---- a/intern/cycles/util/util_path.cpp 2012-05-10 11:44:09.000000000 -0300
-+++ b/intern/cycles/util/util_path.cpp 2012-07-15 14:19:14.126293394 -0300
-@@ -26,8 +26,6 @@
-
- #include <stdio.h>
-
--#define BOOST_FILESYSTEM_VERSION 2
--
- #include <boost/filesystem.hpp>
- #include <boost/algorithm/string.hpp>
-
-@@ -60,7 +58,7 @@
-
- string path_filename(const string& path)
- {
-- return boost::filesystem::path(path).filename();
-+ return boost::filesystem::path(path).filename().string();
- }
-
- string path_dirname(const string& path)
diff --git a/libre/blender-libre/ffmpeg-0.11.patch b/libre/blender-libre/ffmpeg-0.11.patch
deleted file mode 100644
index 45144140c..000000000
--- a/libre/blender-libre/ffmpeg-0.11.patch
+++ /dev/null
@@ -1,434 +0,0 @@
-diff -Naur blender-2.63a.orig/intern/audaspace/ffmpeg/AUD_FFMPEGReader.cpp blender-2.63a/intern/audaspace/ffmpeg/AUD_FFMPEGReader.cpp
---- blender-2.63a.orig/intern/audaspace/ffmpeg/AUD_FFMPEGReader.cpp 2012-05-10 11:45:40.000000000 -0300
-+++ blender-2.63a/intern/audaspace/ffmpeg/AUD_FFMPEGReader.cpp 2012-07-10 18:12:55.727129720 -0300
-@@ -143,23 +143,23 @@
-
- switch(m_codecCtx->sample_fmt)
- {
-- case SAMPLE_FMT_U8:
-+ case AV_SAMPLE_FMT_U8:
- m_convert = AUD_convert_u8_float;
- m_specs.format = AUD_FORMAT_U8;
- break;
-- case SAMPLE_FMT_S16:
-+ case AV_SAMPLE_FMT_S16:
- m_convert = AUD_convert_s16_float;
- m_specs.format = AUD_FORMAT_S16;
- break;
-- case SAMPLE_FMT_S32:
-+ case AV_SAMPLE_FMT_S32:
- m_convert = AUD_convert_s32_float;
- m_specs.format = AUD_FORMAT_S32;
- break;
-- case SAMPLE_FMT_FLT:
-+ case AV_SAMPLE_FMT_FLT:
- m_convert = AUD_convert_copy<float>;
- m_specs.format = AUD_FORMAT_FLOAT32;
- break;
-- case SAMPLE_FMT_DBL:
-+ case AV_SAMPLE_FMT_DBL:
- m_convert = AUD_convert_double_float;
- m_specs.format = AUD_FORMAT_FLOAT64;
- break;
-@@ -189,7 +189,7 @@
- }
- catch(AUD_Exception&)
- {
-- av_close_input_file(m_formatCtx);
-+ avformat_close_input(&m_formatCtx);
- throw;
- }
- }
-@@ -227,7 +227,7 @@
- }
- catch(AUD_Exception&)
- {
-- av_close_input_stream(m_formatCtx);
-+ avformat_close_input(&m_formatCtx);
- av_free(m_aviocontext);
- throw;
- }
-@@ -239,7 +239,7 @@
-
- if(m_aviocontext)
- {
-- av_close_input_stream(m_formatCtx);
-+ avformat_close_input(&m_formatCtx);
- av_free(m_aviocontext);
- }
- else
-diff -Naur blender-2.63a.orig/intern/audaspace/ffmpeg/AUD_FFMPEGWriter.cpp blender-2.63a/intern/audaspace/ffmpeg/AUD_FFMPEGWriter.cpp
---- blender-2.63a.orig/intern/audaspace/ffmpeg/AUD_FFMPEGWriter.cpp 2012-05-10 11:45:40.000000000 -0300
-+++ blender-2.63a/intern/audaspace/ffmpeg/AUD_FFMPEGWriter.cpp 2012-07-10 18:14:55.893790273 -0300
-@@ -133,23 +133,23 @@
- {
- case AUD_FORMAT_U8:
- m_convert = AUD_convert_float_u8;
-- m_codecCtx->sample_fmt = SAMPLE_FMT_U8;
-+ m_codecCtx->sample_fmt = AV_SAMPLE_FMT_U8;
- break;
- case AUD_FORMAT_S16:
- m_convert = AUD_convert_float_s16;
-- m_codecCtx->sample_fmt = SAMPLE_FMT_S16;
-+ m_codecCtx->sample_fmt = AV_SAMPLE_FMT_S16;
- break;
- case AUD_FORMAT_S32:
- m_convert = AUD_convert_float_s32;
-- m_codecCtx->sample_fmt = SAMPLE_FMT_S32;
-+ m_codecCtx->sample_fmt = AV_SAMPLE_FMT_S32;
- break;
- case AUD_FORMAT_FLOAT32:
- m_convert = AUD_convert_copy<float>;
-- m_codecCtx->sample_fmt = SAMPLE_FMT_FLT;
-+ m_codecCtx->sample_fmt = AV_SAMPLE_FMT_FLT;
- break;
- case AUD_FORMAT_FLOAT64:
- m_convert = AUD_convert_float_double;
-- m_codecCtx->sample_fmt = SAMPLE_FMT_DBL;
-+ m_codecCtx->sample_fmt = AV_SAMPLE_FMT_DBL;
- break;
- default:
- AUD_THROW(AUD_ERROR_FFMPEG, format_error);
-diff -Naur blender-2.63a.orig/intern/ffmpeg/ffmpeg_compat.h blender-2.63a/intern/ffmpeg/ffmpeg_compat.h
---- blender-2.63a.orig/intern/ffmpeg/ffmpeg_compat.h 2012-05-10 11:46:17.000000000 -0300
-+++ blender-2.63a/intern/ffmpeg/ffmpeg_compat.h 2012-07-10 18:17:04.823783714 -0300
-@@ -76,6 +76,10 @@
- #define FFMPEG_FFV1_ALPHA_SUPPORTED
- #endif
-
-+#if ((LIBAVFORMAT_VERSION_MAJOR < 53) || ((LIBAVFORMAT_VERSION_MAJOR == 53) && (LIBAVFORMAT_VERSION_MINOR < 24)) || ((LIBAVFORMAT_VERSION_MAJOR == 53) && (LIBAVFORMAT_VERSION_MINOR < 24) && (LIBAVFORMAT_VERSION_MICRO < 2)))
-+#define avformat_close_input(x) av_close_input_file(*(x))
-+#endif
-+
- #ifndef FFMPEG_HAVE_AVIO
- #define AVIO_FLAG_WRITE URL_WRONLY
- #define avio_open url_fopen
-diff -Naur blender-2.63a.orig/source/blender/blenkernel/intern/writeffmpeg.c blender-2.63a/source/blender/blenkernel/intern/writeffmpeg.c
---- blender-2.63a.orig/source/blender/blenkernel/intern/writeffmpeg.c 2012-05-10 11:50:20.000000000 -0300
-+++ blender-2.63a/source/blender/blenkernel/intern/writeffmpeg.c 2012-07-10 18:27:00.213753426 -0300
-@@ -36,6 +36,7 @@
- #include <libavformat/avformat.h>
- #include <libavcodec/avcodec.h>
- #include <libavutil/rational.h>
-+#include <libavutil/samplefmt.h>
- #include <libswscale/swscale.h>
- #include <libavcodec/opt.h>
-
-@@ -612,7 +613,7 @@
-
- c->sample_rate = rd->ffcodecdata.audio_mixrate;
- c->bit_rate = ffmpeg_audio_bitrate*1000;
-- c->sample_fmt = SAMPLE_FMT_S16;
-+ c->sample_fmt = AV_SAMPLE_FMT_S16;
- c->channels = rd->ffcodecdata.audio_channels;
- codec = avcodec_find_encoder(c->codec_id);
- if (!codec) {
-@@ -654,11 +655,21 @@
- }
- /* essential functions -- start, append, end */
-
-+static void ffmpeg_dict_set_int(AVDictionary **dict, const char *key, int value)
-+{
-+ char buffer[32];
-+
-+ BLI_snprintf(buffer, sizeof(buffer), "%d", value);
-+
-+ av_dict_set(dict, key, buffer, 0);
-+}
-+
- static int start_ffmpeg_impl(struct RenderData *rd, int rectx, int recty, ReportList *reports)
- {
- /* Handle to the output file */
- AVFormatContext* of;
- AVOutputFormat* fmt;
-+ AVDictionary *opts = NULL;
- char name[256];
- const char ** exts;
-
-@@ -704,13 +715,14 @@
- of->oformat = fmt;
- of->packet_size= rd->ffcodecdata.mux_packet_size;
- if (ffmpeg_audio_codec != CODEC_ID_NONE) {
-- of->mux_rate = rd->ffcodecdata.mux_rate;
-+ ffmpeg_dict_set_int(&opts, "muxrate", rd->ffcodecdata.mux_rate);
- }
- else {
-- of->mux_rate = 0;
-+ av_dict_set(&opts, "muxrate", "0", 0);
- }
-
-- of->preload = (int)(0.5*AV_TIME_BASE);
-+ ffmpeg_dict_set_int(&opts, "preload", (int)(0.5*AV_TIME_BASE));
-+
- of->max_delay = (int)(0.7*AV_TIME_BASE);
-
- fmt->audio_codec = ffmpeg_audio_codec;
-@@ -773,6 +785,7 @@
- fmt->audio_codec = CODEC_ID_PCM_S16LE;
- if (ffmpeg_audio_codec != CODEC_ID_NONE && rd->ffcodecdata.audio_mixrate != 48000 && rd->ffcodecdata.audio_channels != 2) {
- BKE_report(reports, RPT_ERROR, "FFMPEG only supports 48khz / stereo audio for DV!");
-+ av_dict_free(&opts);
- return 0;
- }
- }
-@@ -782,6 +795,7 @@
- printf("alloc video stream %p\n", video_stream);
- if (!video_stream) {
- BKE_report(reports, RPT_ERROR, "Error initializing video stream.");
-+ av_dict_free(&opts);
- return 0;
- }
- }
-@@ -790,27 +804,27 @@
- audio_stream = alloc_audio_stream(rd, fmt->audio_codec, of);
- if (!audio_stream) {
- BKE_report(reports, RPT_ERROR, "Error initializing audio stream.");
-+ av_dict_free(&opts);
- return 0;
- }
- }
-- if (av_set_parameters(of, NULL) < 0) {
-- BKE_report(reports, RPT_ERROR, "Error setting output parameters.");
-- return 0;
-- }
- if (!(fmt->flags & AVFMT_NOFILE)) {
- if (avio_open(&of->pb, name, AVIO_FLAG_WRITE) < 0) {
- BKE_report(reports, RPT_ERROR, "Could not open file for writing.");
-+ av_dict_free(&opts);
- return 0;
- }
- }
-
-- if (av_write_header(of) < 0) {
-+ if (avformat_write_header(of, NULL) < 0) {
- BKE_report(reports, RPT_ERROR, "Could not initialize streams. Probably unsupported codec combination.");
-+ av_dict_free(&opts);
- return 0;
- }
-
- outfile = of;
- av_dump_format(of, 0, name, 1);
-+ av_dict_free(&opts);
-
- return 1;
- }
-diff -Naur blender-2.63a.orig/source/blender/imbuf/intern/anim_movie.c blender-2.63a/source/blender/imbuf/intern/anim_movie.c
---- blender-2.63a.orig/source/blender/imbuf/intern/anim_movie.c 2012-05-10 11:50:59.000000000 -0300
-+++ blender-2.63a/source/blender/imbuf/intern/anim_movie.c 2012-07-10 18:30:19.413743294 -0300
-@@ -436,7 +436,7 @@
- int i, videoStream;
-
- AVCodec *pCodec;
-- AVFormatContext *pFormatCtx;
-+ AVFormatContext *pFormatCtx = NULL;
- AVCodecContext *pCodecCtx;
- int frs_num;
- double frs_den;
-@@ -455,7 +455,7 @@
-
- do_init_ffmpeg();
-
-- if (av_open_input_file(&pFormatCtx, anim->name, NULL, 0, NULL)!=0) {
-+ if (avformat_open_input(&pFormatCtx, anim->name, NULL, NULL)!=0) {
- return -1;
- }
-
-@@ -990,7 +990,8 @@
- ret = av_seek_frame(anim->pFormatCtx,
- -1,
- pos, AVSEEK_FLAG_BYTE);
-- av_update_cur_dts(anim->pFormatCtx, v_st, dts);
-+ // XXX: need double verification
-+ // av_update_cur_dts(anim->pFormatCtx, v_st, dts);
- }
- else {
- av_log(anim->pFormatCtx, AV_LOG_DEBUG,
-diff -Naur blender-2.63a.orig/source/blender/imbuf/intern/indexer.c blender-2.63a/source/blender/imbuf/intern/indexer.c
---- blender-2.63a.orig/source/blender/imbuf/intern/indexer.c 2012-05-10 11:50:59.000000000 -0300
-+++ blender-2.63a/source/blender/imbuf/intern/indexer.c 2012-07-10 18:38:25.737051891 -0300
-@@ -533,13 +533,6 @@
- rv->c->flags |= CODEC_FLAG_GLOBAL_HEADER;
- }
-
-- if (av_set_parameters(rv->of, NULL) < 0) {
-- fprintf(stderr, "Couldn't set output parameters? "
-- "Proxy not built!\n");
-- av_free(rv->of);
-- return 0;
-- }
--
- if (avio_open(&rv->of->pb, fname, AVIO_FLAG_WRITE) < 0) {
- fprintf(stderr, "Couldn't open outputfile! "
- "Proxy not built!\n");
-@@ -576,7 +569,12 @@
- NULL, NULL, NULL);
- }
-
-- av_write_header(rv->of);
-+ if (avformat_write_header(rv->of, NULL) < 0) {
-+ fprintf(stderr, "Couldn't set output parameters? "
-+ "Proxy not built!\n");
-+ av_free(rv->of);
-+ return 0;
-+ }
-
- return rv;
- }
-@@ -739,7 +737,7 @@
- memset(context->proxy_ctx, 0, sizeof(context->proxy_ctx));
- memset(context->indexer, 0, sizeof(context->indexer));
-
-- if (av_open_input_file(&context->iFormatCtx, anim->name, NULL, 0, NULL) != 0) {
-+ if (avformat_open_input(&context->iFormatCtx, anim->name, NULL, NULL) != 0) {
- MEM_freeN(context);
- return NULL;
- }
-diff -Naur blender-2.63a.orig/source/blender/imbuf/intern/util.c blender-2.63a/source/blender/imbuf/intern/util.c
---- blender-2.63a.orig/source/blender/imbuf/intern/util.c 2012-05-10 11:50:59.000000000 -0300
-+++ blender-2.63a/source/blender/imbuf/intern/util.c 2012-07-10 18:40:49.950377886 -0300
-@@ -243,7 +243,7 @@
-
- static int isffmpeg (const char *filename)
- {
-- AVFormatContext *pFormatCtx;
-+ AVFormatContext *pFormatCtx = NULL;
- unsigned int i;
- int videoStream;
- AVCodec *pCodec;
-@@ -261,7 +261,7 @@
- BLI_testextensie(filename, ".cin") ||
- BLI_testextensie(filename, ".wav")) return 0;
-
-- if (av_open_input_file(&pFormatCtx, filename, NULL, 0, NULL)!=0) {
-+ if (avformat_open_input(&pFormatCtx, filename, NULL, NULL)!=0) {
- if (UTIL_DEBUG) fprintf(stderr, "isffmpeg: av_open_input_file failed\n");
- return 0;
- }
-diff -Naur blender-2.63a.orig/source/gameengine/VideoTexture/VideoFFmpeg.cpp blender-2.63a/source/gameengine/VideoTexture/VideoFFmpeg.cpp
---- blender-2.63a.orig/source/gameengine/VideoTexture/VideoFFmpeg.cpp 2012-05-10 11:48:50.000000000 -0300
-+++ blender-2.63a/source/gameengine/VideoTexture/VideoFFmpeg.cpp 2012-07-10 18:56:03.696998071 -0300
-@@ -162,14 +162,14 @@
- }
-
-
--int VideoFFmpeg::openStream(const char *filename, AVInputFormat *inputFormat, AVFormatParameters *formatParams)
-+int VideoFFmpeg::openStream(const char *filename, AVInputFormat *inputFormat, AVDictionary **formatParams)
- {
-- AVFormatContext *formatCtx;
-+ AVFormatContext *formatCtx = NULL;
- int i, videoStream;
- AVCodec *codec;
- AVCodecContext *codecCtx;
-
-- if (av_open_input_file(&formatCtx, filename, inputFormat, 0, formatParams)!=0)
-+ if (avformat_open_input(&formatCtx, filename, inputFormat, formatParams)!=0)
- return -1;
-
- if (av_find_stream_info(formatCtx)<0)
-@@ -545,11 +545,7 @@
- // but it is really not desirable to seek on http file, so force streaming.
- // It would be good to find this information from the context but there are no simple indication
- !strncmp(filename, "http://", 7) ||
--#ifdef FFMPEG_PB_IS_POINTER
-- (m_formatCtx->pb && m_formatCtx->pb->is_streamed)
--#else
-- m_formatCtx->pb.is_streamed
--#endif
-+ (m_formatCtx->pb && !m_formatCtx->pb->seekable)
- )
- {
- // the file is in fact a streaming source, treat as cam to prevent seeking
-@@ -586,13 +582,11 @@
- {
- // open camera source
- AVInputFormat *inputFormat;
-- AVFormatParameters formatParams;
-- AVRational frameRate;
-+ AVDictionary *formatParams = NULL;
- char *p, filename[28], rateStr[20];
-
- do_init_ffmpeg();
-
-- memset(&formatParams, 0, sizeof(formatParams));
- #ifdef WIN32
- // video capture on windows only through Video For Windows driver
- inputFormat = av_find_input_format("vfwcap");
-@@ -622,7 +616,13 @@
- sprintf(filename, "/dev/dv1394/%d", camIdx);
- } else
- {
-- inputFormat = av_find_input_format("video4linux");
-+ const char *formats[] = {"video4linux2,v4l2", "video4linux2", "video4linux"};
-+ int i, formatsCount = sizeof(formats) / sizeof(char*);
-+ for (i = 0; i < formatsCount; i++) {
-+ inputFormat = av_find_input_format(formats[i]);
-+ if (inputFormat)
-+ break;
-+ }
- sprintf(filename, "/dev/video%d", camIdx);
- }
- if (!inputFormat)
-@@ -636,20 +636,22 @@
- if ((p = strchr(filename, ':')) != 0)
- *p = 0;
- }
-- if (file && (p = strchr(file, ':')) != NULL)
-- formatParams.standard = p+1;
-+ if (file && (p = strchr(file, ':')) != NULL) {
-+ av_dict_set(&formatParams, "standard", p+1, 0);
-+ }
- #endif
- //frame rate
- if (m_captRate <= 0.f)
- m_captRate = defFrameRate;
- sprintf(rateStr, "%f", m_captRate);
-- av_parse_video_rate(&frameRate, rateStr);
-- // populate format parameters
-- // need to specify the time base = inverse of rate
-- formatParams.time_base.num = frameRate.den;
-- formatParams.time_base.den = frameRate.num;
-- formatParams.width = m_captWidth;
-- formatParams.height = m_captHeight;
-+
-+ av_dict_set(&formatParams, "framerate", rateStr, 0);
-+
-+ if (m_captWidth > 0 && m_captHeight > 0) {
-+ char video_size[64];
-+ BLI_snprintf(video_size, sizeof(video_size), "%dx%d", m_captWidth, m_captHeight);
-+ av_dict_set(&formatParams, "video_size", video_size, 0);
-+ }
-
- if (openStream(filename, inputFormat, &formatParams) != 0)
- return;
-@@ -664,6 +666,8 @@
- // no need to thread if the system has a single core
- m_isThreaded = true;
- }
-+
-+ av_dict_free(&formatParams);
- }
-
- // play video
-diff -Naur blender-2.63a.orig/source/gameengine/VideoTexture/VideoFFmpeg.h blender-2.63a/source/gameengine/VideoTexture/VideoFFmpeg.h
---- blender-2.63a.orig/source/gameengine/VideoTexture/VideoFFmpeg.h 2012-05-10 11:48:50.000000000 -0300
-+++ blender-2.63a/source/gameengine/VideoTexture/VideoFFmpeg.h 2012-07-10 18:57:21.710327435 -0300
-@@ -46,10 +46,6 @@
- # define FFMPEG_CODEC_IS_POINTER 1
- #endif
-
--#if LIBAVFORMAT_VERSION_INT >= (52 << 16)
--# define FFMPEG_PB_IS_POINTER 1
--#endif
--
- #ifdef FFMPEG_CODEC_IS_POINTER
- static inline AVCodecContext* get_codec_from_stream(AVStream* stream)
- {
-@@ -172,7 +168,7 @@
- double actFrameRate (void) { return m_frameRate * m_baseFrameRate; }
-
- /// common function to video file and capture
-- int openStream(const char *filename, AVInputFormat *inputFormat, AVFormatParameters *formatParams);
-+ int openStream(const char *filename, AVInputFormat *inputFormat, AVDictionary **formatParams);
-
- /// check if a frame is available and load it in pFrame, return true if a frame could be retrieved
- AVFrame* grabFrame(long frame);