diff options
author | root <root@rshg054.dnsready.net> | 2012-07-11 03:35:23 +0000 |
---|---|---|
committer | root <root@rshg054.dnsready.net> | 2012-07-11 03:35:23 +0000 |
commit | b44e3e7f16abe5e4cb428571db65d300b7cc44be (patch) | |
tree | 7c1c6c30cb5f359d2d481d6a42b969999008a8ff | |
parent | 77ccbb95513007eebb5e10afe08d486498b9885d (diff) |
Wed Jul 11 03:35:23 UTC 2012
-rw-r--r-- | artistic/blender-spacenav-libre/PKGBUILD | 81 | ||||
-rw-r--r-- | artistic/blender-spacenav-libre/blender.install | 13 | ||||
-rw-r--r-- | artistic/blender-spacenav-libre/ffmpeg-0.11.patch | 434 | ||||
-rw-r--r-- | artistic/libspnav/Makefile.in.diff | 19 | ||||
-rw-r--r-- | artistic/libspnav/PKGBUILD | 24 | ||||
-rw-r--r-- | artistic/spnavcfg/PKGBUILD | 20 | ||||
-rw-r--r-- | libre/blender-libre/PKGBUILD | 74 | ||||
-rw-r--r-- | libre/blender-libre/ffmpeg-0.11.patch | 532 |
8 files changed, 869 insertions, 328 deletions
diff --git a/artistic/blender-spacenav-libre/PKGBUILD b/artistic/blender-spacenav-libre/PKGBUILD new file mode 100644 index 000000000..2c11b4d30 --- /dev/null +++ b/artistic/blender-spacenav-libre/PKGBUILD @@ -0,0 +1,81 @@ +# $Id$ +# Maintainer (Parabola): Márcio Silva <coadde@lavabit.com> + +_pkgname=blender +pkgname=blender-spacenav-libre +pkgver=2.63a +pkgrel=2.1 +epoch=4 +pkgdesc="A fully integrated 3D graphics creation suite, compiled with spacenav (without nonfree cuda-toolkit support)" +arch=('i686' 'x86_64' 'mips64el') +license=('GPL') +url="http://www.blender.org" +depends=('libpng' 'libtiff' 'openexr' 'python' 'desktop-file-utils' + 'shared-mime-info' 'hicolor-icon-theme' 'xdg-utils' 'glew' + 'freetype2' 'openal' 'ffmpeg' 'fftw' 'boost-libs' 'opencollada' + 'openimageio' 'libsndfile' 'jack' 'libspnav') +makedepends=('cmake' 'boost') +replaces=("${_pkgname}") +conflicts=("${_pkgname}" "${_pkgname}-libre") +provides=("${_pkgname}=${pkgver}" "${_pkgname}-libre=${pkgver}") +options=(!strip) +install=${_pkgname}.install +source=(http://download.${_pkgname}.org/source/${_pkgname}-${pkgver}.tar.gz ffmpeg-0.11.patch) +md5sums=('31a60b3ce5466d965cb7e2648995e092' '9e5649403e51654615d30b10bc460217') + +build() { + cd "${srcdir}/${_pkgname}-${pkgver}" + + patch -Np1 < "${srcdir}"/ffmpeg-0.11.patch + sed -i "/<libavcodec\/opt.h>/d" intern/ffmpeg/ffmpeg_compat.h + sed -i "/<libavcodec\/opt.h>/d" source/blender/blenkernel/intern/writeffmpeg.c + + mkdir build + cd build + + [[ $CARCH == i686 ]] && ENABLESSE2="-DSUPPORT_SSE2_BUILD=OFF" + + cmake .. \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_BUILD_TYPE=Release \ + -DWITH_INSTALL_PORTABLE=OFF \ + -DWITH_PYTHON_INSTALL=OFF \ + -DWITH_OPENCOLLADA=ON \ + -DOPENIMAGEIO_ROOT_DIR=/usr \ + -DWITH_GAMEENGINE=ON \ + -DWITH_JACK=ON \ + -DWITH_PLAYER=ON \ + -DWITH_BUILTIN_GLEW=OFF \ + -DWITH_CODEC_FFMPEG=ON \ + -DWITH_CODEC_SNDFILE=ON \ + -DWITH_CYCLES=ON \ + -DWITH_CYCLES_CUDA_BINARIES=OFF \ + -DWITH_FFTW3=ON \ + -DWITH_MOD_OCEANSIM=ON \ + -DPYTHON_VERSION=3.2 \ + -DPYTHON_LIBPATH=/usr/lib \ + -DPYTHON_LIBRARY=python3.2mu \ + -DPYTHON_INCLUDE_DIRS=/usr/include/python3.2mu \ + $ENABLESSE2 + + make $MAKEFLAGS + +# cp -rf "${srcdir}/${_pkgname}-${pkgver}"/release/plugins/* \ +# "${srcdir}/${_pkgname}-${pkgver}"/source/blender/blenpluginapi/ +# cd "${srcdir}/${_pkgname}-${pkgver}"/source/blender/blenpluginapi +# chmod 755 bmake + make +} + +package() { + cd "${srcdir}/${_pkgname}-${pkgver}/build" + make DESTDIR="${pkgdir}" install + python -m compileall "${pkgdir}/usr/share/blender" + +# install plugins +# install -d -m755 "${pkgdir}"/usr/share/blender/${pkgver%[a-z]}/plugins/{sequence,texture} +# cp "${srcdir}/${_pkgname}-${pkgver}"/source/blender/blenpluginapi/sequence/*.so \ +# "${pkgdir}"/usr/share/blender/${pkgver%[a-z]}/plugins/sequence/ +# cp "${srcdir}/${_pkgname}-${pkgver}"/source/blender/blenpluginapi/texture/*.so \ +# "${pkgdir}"/usr/share/blender/${pkgver%[a-z]}/plugins/texture/ +} diff --git a/artistic/blender-spacenav-libre/blender.install b/artistic/blender-spacenav-libre/blender.install new file mode 100644 index 000000000..724bfce00 --- /dev/null +++ b/artistic/blender-spacenav-libre/blender.install @@ -0,0 +1,13 @@ +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/artistic/blender-spacenav-libre/ffmpeg-0.11.patch b/artistic/blender-spacenav-libre/ffmpeg-0.11.patch new file mode 100644 index 000000000..45144140c --- /dev/null +++ b/artistic/blender-spacenav-libre/ffmpeg-0.11.patch @@ -0,0 +1,434 @@ +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); diff --git a/artistic/libspnav/Makefile.in.diff b/artistic/libspnav/Makefile.in.diff new file mode 100644 index 000000000..4c93b9cb6 --- /dev/null +++ b/artistic/libspnav/Makefile.in.diff @@ -0,0 +1,19 @@ +--- Makefile.in.orig 2009-04-18 00:12:45.000000000 +0200 ++++ Makefile.in 2009-04-18 00:16:06.000000000 +0200 +@@ -4,6 +4,7 @@ + lib_a = libspnav.a + soname = libspnav.so.0 + lib_so = $(soname).1 ++linkname = libspnav.so + + CC = gcc + AR = ar +@@ -34,6 +35,8 @@ + install: $(lib_a) $(lib_so) + cp $(lib_a) $(PREFIX)/$(libdir)/$(lib_a) + cp $(lib_so) $(PREFIX)/$(libdir)/$(lib_so) ++ ln -s $(lib_so) $(linkname) ++ cp -d $(linkname) $(PREFIX)/$(libdir)/$(linkname) + for h in $(hdr); do cp -p $(srcdir)/$$h $(PREFIX)/include/; done + + .PHONY: uninstall diff --git a/artistic/libspnav/PKGBUILD b/artistic/libspnav/PKGBUILD new file mode 100644 index 000000000..da0272ed7 --- /dev/null +++ b/artistic/libspnav/PKGBUILD @@ -0,0 +1,24 @@ +# Contributor: Jan Hambrecht <jaham at gmx dot net> +# Maintainer (Parabola): Márcio Silva <coadde@lavabit.com> + +pkgname=libspnav +pkgver=0.2.2 +pkgrel=3 +pkgdesc="The spacenav project provides a free, compatible alternative, to the proprietary 3Dconnexion device driver and SDK, for their 3D input devices (called 'space navigator', 'space pilot', 'space traveller', etc)." +arch=('i686' 'x86_64' 'mips64el') +url="http://spacenav.sourceforge.net/" +license=('GPL') +depends=('libx11') +source=(http://downloads.sourceforge.net/spacenav/$pkgname-$pkgver.tar.gz Makefile.in.diff) +md5sums=('b85a0f4ab711e2d4f73a40e2e371f5ae' + 'f9122ad4ca823e45bfa0538187df6270') + +build() { + cd $srcdir/$pkgname-$pkgver + patch -p0 < $srcdir/Makefile.in.diff + ./configure --prefix=$pkgdir/usr --disable-debug + make || return 1 + install -d $pkgdir/usr/lib + install -d $pkgdir/usr/include + make DESTDIR=$pkgdir install || return 1 +} diff --git a/artistic/spnavcfg/PKGBUILD b/artistic/spnavcfg/PKGBUILD new file mode 100644 index 000000000..df9027bc5 --- /dev/null +++ b/artistic/spnavcfg/PKGBUILD @@ -0,0 +1,20 @@ +# Contributor: Jan Hambrecht <jaham at gmx dot net> +# Maintainer (Parabola): Márcio Silva <coadde@lavabit.com> + +pkgname=spnavcfg +pkgver=0.2.1 +pkgrel=1 +pkgdesc="The spacenav project provides a free, compatible alternative, to the proprietary 3Dconnexion device driver and SDK, for their 3D input devices (called 'space navigator', 'space pilot', 'space traveller', etc)." +arch=('i686' 'x86_64' 'mips64el') +url="http://spacenav.sourceforge.net/" +license=('GPL') +depends=('gtk2') +source=(http://downloads.sourceforge.net/spacenav/$pkgname-$pkgver.tar.gz) +md5sums=('d20cf09515d1e39fd04877a00a2023b5') + +build() { + cd $srcdir/$pkgname-$pkgver + ./configure --prefix=$pkgdir/usr + make || return 1 + make DESTDIR=$pkgdir install || return 1 +} diff --git a/libre/blender-libre/PKGBUILD b/libre/blender-libre/PKGBUILD index 05b54f402..5dd14405d 100644 --- a/libre/blender-libre/PKGBUILD +++ b/libre/blender-libre/PKGBUILD @@ -1,20 +1,10 @@ # $Id$ -# Contributor: John Sowiak <john@archlinux.org> -# Contributor: tobias <tobias@archlinux.org> -# Maintainer: Sven-Hendrik Haase <sh@lutzhaase.com> # Maintainer (Parabola): Márcio Silva <coadde@lavabit.com> -# Apparently, the blender guys refuse to release source tarballs for -# intermediate releases that deal mainly with binaries but incorporate tiny -# minor changes from svn. Since I'm sick and tired of the urges of users that -# look for release numbers only, we make a messy PKGBUILD that can checkout svn -# release if necessary. - -_svn=true _pkgname=blender pkgname=blender-libre -true && pkgver=2.63a # Hack for svn -true && pkgrel=2.1 +pkgver=2.63a +pkgrel=2.1 epoch=4 pkgdesc="A fully integrated 3D graphics creation suite (without nonfree cuda-toolkit support)" arch=('i686' 'x86_64' 'mips64el') @@ -24,45 +14,19 @@ depends=('libpng' 'libtiff' 'openexr' 'python' 'desktop-file-utils' 'shared-mime-info' 'hicolor-icon-theme' 'xdg-utils' 'glew' 'freetype2' 'openal' 'ffmpeg' 'fftw' 'boost-libs' 'opencollada' 'openimageio' 'libsndfile' 'jack') -makedepends=('cmake' 'boost' 'subversion') +makedepends=('cmake' 'boost') replaces=("${_pkgname}") conflicts=("${_pkgname}") provides=("${_pkgname}=${pkgver}") options=(!strip) -install=blender.install -if [[ $_svn = false ]]; then - source=(http://download.blender.org/source/$_pkgname-$pkgver.tar.gz) - md5sums=('31a60b3ce5466d965cb7e2648995e092') -else - source=(ffmpeg-0.11.patch) - md5sums=('168db32487e363e71fd4671e204afccf') -fi - -_svntrunk="https://svn.blender.org/svnroot/bf-blender/trunk/blender" -_svnmod="blender" +install=${_pkgname}.install +source=(http://download.${_pkgname}.org/source/${_pkgname}-${pkgver}.tar.gz ffmpeg-0.11.patch) +md5sums=('31a60b3ce5466d965cb7e2648995e092' '9e5649403e51654615d30b10bc460217') build() { -if [[ $_svn = true ]]; then - cd "$srcdir" - msg "Connecting to SVN server...." - - if [[ -d "$_svnmod/.svn" ]]; then - (cd "$_svnmod" && svn up ) - else - svn co "$_svntrunk" --config-dir ./ "$_svnmod" - fi - - msg "SVN checkout done or server timeout" - msg "Starting build..." - - rm -rf "$srcdir/$_svnmod-build" - cp -r "$srcdir/$_svnmod" "$srcdir/$_svnmod-build" - cd "$srcdir/$_svnmod-build" -else - cd "$srcdir/$_pkgname-$pkgver" -fi + cd "${srcdir}/${_pkgname}-${pkgver}" - patch -Np0 < "$srcdir"/ffmpeg-0.11.patch + patch -Np1 < "${srcdir}"/ffmpeg-0.11.patch sed -i "/<libavcodec\/opt.h>/d" intern/ffmpeg/ffmpeg_compat.h sed -i "/<libavcodec\/opt.h>/d" source/blender/blenkernel/intern/writeffmpeg.c @@ -96,26 +60,22 @@ fi make $MAKEFLAGS -# cp -rf "$srcdir"/${_pkgname}-$pkgver/release/plugins/* \ -# "$srcdir"/${_pkgname}-$pkgver/source/blender/blenpluginapi/ -# cd "$srcdir"/${_pkgname}-$pkgver/source/blender/blenpluginapi +# cp -rf "${srcdir}/${_pkgname}-${pkgver}"/release/plugins/* \ +# "${srcdir}/${_pkgname}-${pkgver}"/source/blender/blenpluginapi/ +# cd "${srcdir}/${_pkgname}-${pkgver}"/source/blender/blenpluginapi # chmod 755 bmake make } package() { - if [[ $_svn = true ]]; then - cd "$srcdir/$_svnmod-build/build" - else - cd "$srcdir/$_pkgname-$pkgver/build" - fi + cd "${srcdir}/${_pkgname}-${pkgver}/build" make DESTDIR="${pkgdir}" install python -m compileall "${pkgdir}/usr/share/blender" # install plugins -# install -d -m755 "$pkgdir"/usr/share/blender/${pkgver%[a-z]}/plugins/{sequence,texture} -# cp "$srcdir"/${_pkgname}-$pkgver/source/blender/blenpluginapi/sequence/*.so \ -# "$pkgdir"/usr/share/blender/${pkgver%[a-z]}/plugins/sequence/ -# cp "$srcdir"/${_pkgname}-$pkgver/source/blender/blenpluginapi/texture/*.so \ -# "$pkgdir"/usr/share/blender/${pkgver%[a-z]}/plugins/texture/ +# install -d -m755 "${pkgdir}"/usr/share/blender/${pkgver%[a-z]}/plugins/{sequence,texture} +# cp "${srcdir}/${_pkgname}-${pkgver}"/source/blender/blenpluginapi/sequence/*.so \ +# "${pkgdir}"/usr/share/blender/${pkgver%[a-z]}/plugins/sequence/ +# cp "${srcdir}/${_pkgname}-${pkgver}"/source/blender/blenpluginapi/texture/*.so \ +# "${pkgdir}"/usr/share/blender/${pkgver%[a-z]}/plugins/texture/ } diff --git a/libre/blender-libre/ffmpeg-0.11.patch b/libre/blender-libre/ffmpeg-0.11.patch index bc67052bf..45144140c 100644 --- a/libre/blender-libre/ffmpeg-0.11.patch +++ b/libre/blender-libre/ffmpeg-0.11.patch @@ -1,104 +1,101 @@ -Index: intern/audaspace/ffmpeg/AUD_FFMPEGReader.cpp -=================================================================== ---- intern/audaspace/ffmpeg/AUD_FFMPEGReader.cpp (revision 47422) -+++ intern/audaspace/ffmpeg/AUD_FFMPEGReader.cpp (working copy) +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) - { + + 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; + 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; + 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; + 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; + 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; + m_convert = AUD_convert_double_float; + m_specs.format = AUD_FORMAT_FLOAT64; + break; @@ -189,7 +189,7 @@ - } - catch(AUD_Exception&) - { + } + catch(AUD_Exception&) + { - av_close_input_file(m_formatCtx); + avformat_close_input(&m_formatCtx); - throw; - } + throw; + } } @@ -227,7 +227,7 @@ - } - catch(AUD_Exception&) - { + } + catch(AUD_Exception&) + { - av_close_input_stream(m_formatCtx); + avformat_close_input(&m_formatCtx); - av_free(m_aviocontext); - throw; - } + av_free(m_aviocontext); + throw; + } @@ -239,7 +239,7 @@ - - if(m_aviocontext) - { + + if(m_aviocontext) + { - av_close_input_stream(m_formatCtx); + avformat_close_input(&m_formatCtx); - av_free(m_aviocontext); - } - else -Index: intern/audaspace/ffmpeg/AUD_FFMPEGWriter.cpp -=================================================================== ---- intern/audaspace/ffmpeg/AUD_FFMPEGWriter.cpp (revision 47422) -+++ intern/audaspace/ffmpeg/AUD_FFMPEGWriter.cpp (working copy) + 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; + { + 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; + 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; + 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>; + 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; + 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); -Index: intern/ffmpeg/ffmpeg_compat.h -=================================================================== ---- intern/ffmpeg/ffmpeg_compat.h (revision 47422) -+++ intern/ffmpeg/ffmpeg_compat.h (working copy) + 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 @@ -106,31 +103,30 @@ Index: intern/ffmpeg/ffmpeg_compat.h #ifndef FFMPEG_HAVE_AVIO #define AVIO_FLAG_WRITE URL_WRONLY #define avio_open url_fopen -Index: source/blender/blenkernel/intern/writeffmpeg.c -=================================================================== ---- source/blender/blenkernel/intern/writeffmpeg.c (revision 47422) -+++ source/blender/blenkernel/intern/writeffmpeg.c (working copy) -@@ -42,6 +42,7 @@ +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> - -@@ -615,7 +616,7 @@ - - c->sample_rate = rd->ffcodecdata.audio_mixrate; - c->bit_rate = ffmpeg_audio_bitrate * 1000; + +@@ -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) { -@@ -657,11 +658,21 @@ + 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]; @@ -142,134 +138,132 @@ Index: source/blender/blenkernel/intern/writeffmpeg.c + static int start_ffmpeg_impl(struct RenderData *rd, int rectx, int recty, ReportList *reports) { - /* Handle to the output file */ - AVFormatContext *of; - AVOutputFormat *fmt; + /* Handle to the output file */ + AVFormatContext* of; + AVOutputFormat* fmt; + AVDictionary *opts = NULL; - char name[256]; - const char **exts; - -@@ -707,13 +718,14 @@ - of->oformat = fmt; - of->packet_size = rd->ffcodecdata.mux_packet_size; - if (ffmpeg_audio_codec != CODEC_ID_NONE) { + 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 { + } + 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->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; -@@ -776,6 +788,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!"); + 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; - } - } -@@ -785,6 +798,7 @@ - printf("alloc video stream %p\n", video_stream); - if (!video_stream) { - BKE_report(reports, RPT_ERROR, "Error initializing video stream."); + 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; - } - } -@@ -793,27 +807,26 @@ - audio_stream = alloc_audio_stream(rd, fmt->audio_codec, of); - if (!audio_stream) { - BKE_report(reports, RPT_ERROR, "Error initializing audio stream."); + 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; - } - } + 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."); + 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; - } - } -- + 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); + 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; + + return 1; } -Index: source/blender/imbuf/intern/anim_movie.c -=================================================================== ---- source/blender/imbuf/intern/anim_movie.c (revision 47422) -+++ source/blender/imbuf/intern/anim_movie.c (working copy) -@@ -445,7 +445,7 @@ - int i, videoStream; - - AVCodec *pCodec; +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; -@@ -464,7 +464,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; - } - -@@ -998,7 +998,8 @@ - ret = av_seek_frame(anim->pFormatCtx, - -1, - pos, AVSEEK_FLAG_BYTE); + 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, -Index: source/blender/imbuf/intern/indexer.c -=================================================================== ---- source/blender/imbuf/intern/indexer.c (revision 47422) -+++ source/blender/imbuf/intern/indexer.c (working copy) -@@ -531,13 +531,6 @@ - rv->c->flags |= CODEC_FLAG_GLOBAL_HEADER; - } - + } + 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"); +- "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"); -@@ -574,7 +567,12 @@ - NULL, NULL, NULL); - } - + 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? " @@ -277,95 +271,92 @@ Index: source/blender/imbuf/intern/indexer.c + av_free(rv->of); + return 0; + } - - return rv; + + return rv; } -@@ -737,7 +735,7 @@ - memset(context->proxy_ctx, 0, sizeof(context->proxy_ctx)); - memset(context->indexer, 0, sizeof(context->indexer)); - +@@ -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; - } -Index: source/blender/imbuf/intern/util.c -=================================================================== ---- source/blender/imbuf/intern/util.c (revision 47422) -+++ source/blender/imbuf/intern/util.c (working copy) -@@ -247,7 +247,7 @@ - - static int isffmpeg(const char *filename) + 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; -@@ -268,7 +268,7 @@ - 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; - } -Index: source/gameengine/VideoTexture/VideoFFmpeg.cpp -=================================================================== ---- source/gameengine/VideoTexture/VideoFFmpeg.cpp (revision 47422) -+++ source/gameengine/VideoTexture/VideoFFmpeg.cpp (working copy) + 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; - + 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) + 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) || + // 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,14 +582,12 @@ + ) + { + // the file is in fact a streaming source, treat as cam to prevent seeking +@@ -586,13 +582,11 @@ { - // open camera source - AVInputFormat *inputFormat; + // open camera source + AVInputFormat *inputFormat; - AVFormatParameters formatParams; - AVRational frameRate; + AVDictionary *formatParams = NULL; - char filename[28], rateStr[20]; - char *p; - - do_init_ffmpeg(); - + 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"); -@@ -623,7 +617,13 @@ - sprintf(filename, "/dev/dv1394/%d", camIdx); - } else - { + // 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*); @@ -374,23 +365,23 @@ Index: source/gameengine/VideoTexture/VideoFFmpeg.cpp + if (inputFormat) + break; + } - sprintf(filename, "/dev/video%d", camIdx); - } - if (!inputFormat) -@@ -637,20 +637,22 @@ - if ((p = strchr(filename, ':')) != 0) - *p = 0; - } + 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); + //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 @@ -406,26 +397,25 @@ Index: source/gameengine/VideoTexture/VideoFFmpeg.cpp + 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; -@@ -665,6 +667,8 @@ - // no need to thread if the system has a single core - m_isThreaded = true; - } + + 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 -Index: source/gameengine/VideoTexture/VideoFFmpeg.h -=================================================================== ---- source/gameengine/VideoTexture/VideoFFmpeg.h (revision 47422) -+++ source/gameengine/VideoTexture/VideoFFmpeg.h (working copy) +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 @@ -434,11 +424,11 @@ Index: source/gameengine/VideoTexture/VideoFFmpeg.h 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 + 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); + + /// check if a frame is available and load it in pFrame, return true if a frame could be retrieved + AVFrame* grabFrame(long frame); |