diff options
author | piernov | 2017-04-09 13:50:36 +0200 |
---|---|---|
committer | piernov | 2017-04-09 13:50:36 +0200 |
commit | b39f991da47d85921220f581e6c1890cb24100b4 (patch) | |
tree | 830e985fcd13629623f9de6c349cf24281702b24 | |
download | aur-b39f991da47d85921220f581e6c1890cb24100b4.tar.gz |
Initial import
-rw-r--r-- | .SRCINFO | 37 | ||||
-rw-r--r-- | PKGBUILD | 56 | ||||
-rw-r--r-- | ffmpeg-3.0.patch | 323 |
3 files changed, 416 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 000000000000..71c052ecfda5 --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,37 @@ +pkgbase = synfig-git + pkgdesc = Professional vector animation program (CLI renderer only) + pkgver = r8165.bd7d8b2cc + pkgrel = 1 + url = http://synfig.org + arch = i686 + arch = x86_64 + license = GPL2 + makedepends = boost + depends = libxml++2.6 + depends = libsigc++2.0 + depends = etl-git + depends = imagemagick + depends = ffmpeg + depends = fontconfig + depends = libpng + depends = libtiff + depends = libdv + depends = libmng + depends = cairo + depends = pango + depends = boost-libs + depends = mlt + depends = fftw + optdepends = openexr + optdepends = libsigc++ + provides = synfig + conflicts = synfig-core + conflicts = synfig + replaces = synfig-core + source = git+https://github.com/synfig/synfig + source = ffmpeg-3.0.patch + md5sums = SKIP + md5sums = 62fb382cbf418f5e2f536ed73656cf89 + +pkgname = synfig-git + diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..17a9cf6d2459 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,56 @@ +# Maintainer: piernov <piernov@piernov.org> +# Contributor: Sergej Pupykin <pupykin.s+arch@gmail.com> +# Contributor: Franco Iacomella <yaco@gnu.org> + +pkgname=synfig-git +pkgver=r8165.bd7d8b2cc +pkgrel=1 +pkgdesc="Professional vector animation program (CLI renderer only)" +arch=(i686 x86_64) +url="http://synfig.org" +license=('GPL2') +depends=('libxml++2.6' 'libsigc++2.0' 'etl-git' 'imagemagick' 'ffmpeg' 'fontconfig' + 'libpng' 'libtiff' 'libdv' 'libmng' 'cairo' 'pango' 'boost-libs' 'mlt' + 'fftw') +makedepends=('boost') +optdepends=('openexr' 'libsigc++') +conflicts=('synfig-core' 'synfig') +replaces=('synfig-core') +provides=('synfig') +source=(git+https://github.com/synfig/synfig + ffmpeg-3.0.patch) +md5sums=('SKIP' + '62fb382cbf418f5e2f536ed73656cf89') + +pkgver() { + cd "$srcdir"/synfig/synfig-core + printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" +} + +prepare() { + cd synfig/synfig-core + patch -p1 -i "$srcdir"/ffmpeg-3.0.patch + + autoreconf -fi +} + +build() { + cd synfig/synfig-core + + CXXFLAGS="$CXXFLAGS -std=gnu++11" + ./configure --prefix=/usr \ + --sysconfdir=/etc \ + --disable-static \ + --with-imagemagick \ + --with-magickpp \ + --with-libavcodec \ + --with-libdv + + sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool + make +} + +package() { + cd synfig/synfig-core + make DESTDIR="$pkgdir" install +} diff --git a/ffmpeg-3.0.patch b/ffmpeg-3.0.patch new file mode 100644 index 000000000000..b20cbf7b2d46 --- /dev/null +++ b/ffmpeg-3.0.patch @@ -0,0 +1,323 @@ +diff --git a/src/modules/mod_libavcodec/mptr.cpp b/src/modules/mod_libavcodec/mptr.cpp +index 52d9a8f..79f568d 100644 +--- a/src/modules/mod_libavcodec/mptr.cpp ++++ b/src/modules/mod_libavcodec/mptr.cpp +@@ -57,8 +57,8 @@ SYNFIG_IMPORTER_SET_SUPPORTS_FILE_SYSTEM_WRAPPER(Importer_LibAVCodec, false); + /* === M E T H O D S ======================================================= */ + + +-Importer_LibAVCodec::Importer_LibAVCodec(const char *file): +- filename(file) ++Importer_LibAVCodec::Importer_LibAVCodec(const synfig::FileSystem::Identifier &identifier): ++ Importer(identifier) + { + } + +diff --git a/src/modules/mod_libavcodec/mptr.h b/src/modules/mod_libavcodec/mptr.h +index e2ffbc1..0d5365b 100644 +--- a/src/modules/mod_libavcodec/mptr.h ++++ b/src/modules/mod_libavcodec/mptr.h +@@ -46,7 +46,7 @@ private: + synfig::String filename; + + public: +- Importer_LibAVCodec(const char *filename); ++ Importer_LibAVCodec(const synfig::FileSystem::Identifier &identifier); + ~Importer_LibAVCodec(); + + virtual bool get_frame(synfig::Surface &surface, const synfig::RendDesc &renddesc, synfig::Time time, synfig::ProgressCallback *callback); +diff --git a/src/modules/mod_libavcodec/trgt_av.cpp b/src/modules/mod_libavcodec/trgt_av.cpp +index d5cc54c..30ae1dd 100644 +--- a/src/modules/mod_libavcodec/trgt_av.cpp ++++ b/src/modules/mod_libavcodec/trgt_av.cpp +@@ -58,7 +58,6 @@ extern "C" + # include <ffmpeg/swscale.h> + #endif + #endif +- + } + + #ifndef DISABLE_MODULE +@@ -74,6 +73,22 @@ extern "C" + + #ifndef DISABLE_MODULE + ++static int encode_frame(AVCodecContext *c, AVFrame *frame) ++{ ++ AVPacket pkt = { 0 }; ++ int ret, got_output; ++ ++ av_init_packet(&pkt); ++ av_init_packet(&pkt); ++ ret = avcodec_encode_video2(c, &pkt, frame, &got_output); ++ if (ret < 0) ++ return ret; ++ ++ ret = pkt.size; ++ av_free_packet(&pkt); ++ return ret; ++} ++ + #ifdef _WIN32 + #define snprintf _snprintf + #endif +@@ -119,17 +134,17 @@ AVFrame *alloc_picture(int pix_fmt, int width, int height) + uint8_t *picture_buf; + int size; + +- picture = avcodec_alloc_frame(); ++ picture = av_frame_alloc(); + if (!picture) + return NULL; +- size = avpicture_get_size(pix_fmt, width, height); ++ size = avpicture_get_size((AVPixelFormat)pix_fmt, width, height); + picture_buf = (uint8_t *)malloc(size); + if (!picture_buf) { + av_free(picture); + return NULL; + } + avpicture_fill((AVPicture *)picture, picture_buf, +- pix_fmt, width, height); ++ (AVPixelFormat)pix_fmt, width, height); + return picture; + } + +@@ -251,10 +266,10 @@ public: + if (context->frame_size <= 1) { + audio_input_frame_size = audiobuffer.size() / context->channels; + switch(stream->codec.codec_id) { +- case CODEC_ID_PCM_S16LE: +- case CODEC_ID_PCM_S16BE: +- case CODEC_ID_PCM_U16LE: +- case CODEC_ID_PCM_U16BE: ++ case AV_CODEC_ID_PCM_S16LE: ++ case AV_CODEC_ID_PCM_S16BE: ++ case AV_CODEC_ID_PCM_U16LE: ++ case AV_CODEC_ID_PCM_U16BE: + audio_input_frame_size >>= 1; + break; + default: +@@ -347,7 +362,7 @@ public: + } + + //try to open the codec +- if(avcodec_open(context, codec) < 0) ++ if(avcodec_open2(context, codec, NULL) < 0) + { + synfig::warning("open_video: could not open desired codec"); + return 0; +@@ -379,7 +394,7 @@ public: + (possibly translate directly to required coordinate systems later on... less error) + */ + encodable = NULL; +- if(context->pix_fmt != PIX_FMT_RGB24) ++ if(context->pix_fmt != AV_PIX_FMT_RGB24) + { + encodable = alloc_picture(context->pix_fmt, context->width, context->height); + if(!encodable) +@@ -415,12 +430,12 @@ public: + } + + +- if ( pict && context->pix_fmt != PIX_FMT_RGB24 ) ++ if ( pict && context->pix_fmt != AV_PIX_FMT_RGB24 ) + { + //We're using RGBA at the moment, write custom conversion code later (get less accuracy errors) + #ifdef WITH_LIBSWSCALE + struct SwsContext* img_convert_ctx = +- sws_getContext(context->width, context->height, PIX_FMT_RGB24, ++ sws_getContext(context->width, context->height, AV_PIX_FMT_RGB24, + context->width, context->height, context->pix_fmt, + SWS_BICUBIC, NULL, NULL, NULL); + +@@ -432,7 +447,7 @@ public: + sws_freeContext (img_convert_ctx); + #else + img_convert((AVPicture *)encodable, context->pix_fmt, +- (AVPicture *)pict, PIX_FMT_RGB24, ++ (AVPicture *)pict, AV_PIX_FMT_RGB24, + context->width, context->height); + #endif + +@@ -447,7 +462,7 @@ public: + if( context->coded_frame ) + pkt.pts = context->coded_frame->pts; + if( context->coded_frame && context->coded_frame->key_frame) +- pkt.flags |= PKT_FLAG_KEY; ++ pkt.flags |= AV_PKT_FLAG_KEY; + + //kluge for raw picture format (they said they'd fix) + if (formatc->oformat->flags & AVFMT_RAWPICTURE) +@@ -457,7 +472,7 @@ public: + else + { + //encode our given image +- size = avcodec_encode_video(context, &videobuffer[0], videobuffer.size(), pict); ++ size = encode_frame(context, pict); + + //if greater than zero we've got stuff to write + if (size > 0) +@@ -469,7 +484,7 @@ public: + if( context->coded_frame ) + pkt.pts = context->coded_frame->pts; + if( context->coded_frame && context->coded_frame->key_frame) +- pkt.flags |= PKT_FLAG_KEY; ++ pkt.flags |= AV_PKT_FLAG_KEY; + + ret = av_write_frame(formatc, &pkt); + +@@ -572,18 +587,18 @@ public: + //guess if we have a type string, otherwise use filename + if (typestring) + { +- //formatptr guess_format(type, filename, MIME type) +- format = guess_format(typestring,NULL,NULL); ++ //formatptr av_guess_format(type, filename, MIME type) ++ format = av_guess_format(typestring,NULL,NULL); + } + else + { +- format = guess_format(NULL, filename, NULL); ++ format = av_guess_format(NULL, filename, NULL); + } + + if(!format) + { + synfig::warning("Unable to Guess the output, defaulting to mpeg"); +- format = guess_format("mpeg", NULL, NULL); ++ format = av_guess_format("mpeg", NULL, NULL); + } + + if(!format) +@@ -610,7 +625,7 @@ public: + //audio_st = NULL; + + //video stream +- if(format->video_codec != CODEC_ID_NONE) ++ if(format->video_codec != AV_CODEC_ID_NONE) + { + video_st = add_video_stream(format->video_codec,vInfo); + if(!video_st) +@@ -620,7 +635,7 @@ public: + } + + //audio stream +- /*if(format->audio_codec != CODEC_ID_NONE) ++ /*if(format->audio_codec != AV_CODEC_ID_NONE) + { + audio_st = add_audio_stream(format->audio_codec,aInfo); + }*/ +@@ -630,10 +645,10 @@ public: + video_st->codec->time_base= (AVRational){1,vInfo.fps}; + video_st->codec->width = vInfo.w; + video_st->codec->height = vInfo.h; +- video_st->codec->pix_fmt = PIX_FMT_YUV420P; ++ video_st->codec->pix_fmt = AV_PIX_FMT_YUV420P; + + //dump the formatting information as the file header +- dump_format(formatc, 0, filename, 1); ++ av_dump_format(formatc, 0, filename, 1); + + //open codecs and allocate buffers + if(video_st) +@@ -657,7 +672,7 @@ public: + if(!(format->flags & AVFMT_NOFILE)) + { + //use libav's file open function (what does it do differently????) +- if(url_fopen(&formatc->pb, filename, URL_WRONLY) < 0) ++ if(avio_open(&formatc->pb, filename, AVIO_FLAG_WRITE) < 0) + { + synfig::warning("Unable to open file: %s", filename); + return 0; +@@ -666,7 +681,7 @@ public: + + //allocate the picture to render to + //may have to retrieve the width, height from the codec... for resizing... +- picture = alloc_picture(PIX_FMT_RGB24,vInfo.w,vInfo.h);//video_st->codec.width, video_st->codec.height); ++ picture = alloc_picture(AV_PIX_FMT_RGB24,vInfo.w,vInfo.h);//video_st->codec.width, video_st->codec.height); + if(!picture) + { + synfig::warning("Unable to allocate the temporary AVFrame surface"); +@@ -678,7 +693,7 @@ public: + //vInfo.h = video_st->codec.height; + + //write the stream header +- av_write_header(formatc); ++ avformat_write_header(formatc, NULL); + + return true; + } +@@ -718,9 +733,9 @@ public: + { + /* close the output file */ + #if LIBAVFORMAT_VERSION_INT >= (52<<16) +- url_fclose(formatc->pb); ++ avio_close(formatc->pb); + #else +- url_fclose(&formatc->pb); ++ avio_close(&formatc->pb); + #endif + } + +@@ -750,16 +765,17 @@ public: + AVCodecContext *context; + AVStream *st; + +- st = av_new_stream(formatc, 0); ++ st = avformat_new_stream(formatc, NULL); + if(!st) + { + synfig::warning("video-add_stream: Unable to allocate stream"); + return 0; + } ++ st->id = 0; + + context = st->codec; +- context->codec_id = (CodecID)codec_id; +- context->codec_type = CODEC_TYPE_VIDEO; ++ context->codec_id = (AVCodecID)codec_id; ++ context->codec_type = AVMEDIA_TYPE_VIDEO; + + //PARAMETERS MUST BE PASSED IN SOMEHOW (ANOTHER FUNCTION PARAMETER???) + +@@ -781,8 +797,8 @@ public: + context->gop_size = info.fps/4; /* emit one intra frame every twelve frames at most */ + + //HACK: MPEG requires b frames be set... any better way to do this? +- if (context->codec_id == CODEC_ID_MPEG1VIDEO || +- context->codec_id == CODEC_ID_MPEG2VIDEO) ++ if (context->codec_id == AV_CODEC_ID_MPEG1VIDEO || ++ context->codec_id == AV_CODEC_ID_MPEG2VIDEO) + { + /* just for testing, we also add B frames */ + context->max_b_frames = 2; +@@ -797,16 +813,17 @@ public: + AVCodecContext *context; + AVStream *stream; + +- stream = av_new_stream(formatc, 1); ++ stream = avformat_new_stream(formatc, NULL); + if(!stream) + { + synfig::warning("could not alloc stream"); + return 0; + } ++ stream->id = 1; + + context = stream->codec; +- context->codec_id = (CodecID)codec_id; +- context->codec_type = CODEC_TYPE_AUDIO; ++ context->codec_id = (AVCodecID)codec_id; ++ context->codec_type = AVMEDIA_TYPE_AUDIO; + + /* put sample parameters */ + context->bit_rate = 64000; +@@ -828,7 +845,7 @@ Target_LibAVCodec::Target_LibAVCodec(const char *Filename, + registered = true; + av_register_all(); + } +- set_remove_alpha(); ++ //set_remove_alpha(); + + data = new LibAVEncoder; + } |