diff options
4 files changed, 275 insertions, 1 deletions
diff --git a/media-video/cinelerra-cvs/ChangeLog b/media-video/cinelerra-cvs/ChangeLog index 3a832c03e9b1..7b0965299952 100644 --- a/media-video/cinelerra-cvs/ChangeLog +++ b/media-video/cinelerra-cvs/ChangeLog @@ -1,6 +1,12 @@ # ChangeLog for media-video/cinelerra-cvs # Copyright 1999-2007 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/media-video/cinelerra-cvs/ChangeLog,v 1.31 2007/07/22 08:56:59 dberkholz Exp $ +# $Header: /var/cvsroot/gentoo-x86/media-video/cinelerra-cvs/ChangeLog,v 1.32 2007/07/26 03:52:32 aballier Exp $ + +*cinelerra-cvs-20070726 (26 Jul 2007) + + 26 Jul 2007; Alexis Ballier <aballier@gentoo.org> + +files/cinelerra-cvs-swscaler.patch, +cinelerra-cvs-20070726.ebuild: + Version bump, adding a patch to switch to swscaler api, closing bug #185132 22 Jul 2007; Donnie Berkholz <dberkholz@gentoo.org>; cinelerra-cvs-20070122.ebuild, cinelerra-cvs-20070607.ebuild: diff --git a/media-video/cinelerra-cvs/cinelerra-cvs-20070726.ebuild b/media-video/cinelerra-cvs/cinelerra-cvs-20070726.ebuild new file mode 100644 index 000000000000..58f4a9062869 --- /dev/null +++ b/media-video/cinelerra-cvs/cinelerra-cvs-20070726.ebuild @@ -0,0 +1,106 @@ +# Copyright 1999-2007 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/media-video/cinelerra-cvs/cinelerra-cvs-20070726.ebuild,v 1.1 2007/07/26 03:52:32 aballier Exp $ + +WANT_AUTOMAKE=1.9 +WANT_AUTOCONF=2.5 + +inherit toolchain-funcs eutils flag-o-matic autotools + +#filter-flags "-fPIC -fforce-addr" + +DESCRIPTION="Cinelerra - Professional Video Editor - Unofficial CVS-version" +HOMEPAGE="http://cvs.cinelerra.org/" +SRC_URI="mirror://gentoo/${P}.tar.bz2" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~ppc ~x86" +IUSE="3dnow alsa esd mmx oss static truetype ieee1394 css altivec opengl" +RDEPEND="media-libs/libpng + >=media-libs/libdv-1.0.0 + media-libs/faad2 + media-libs/faac + media-libs/a52dec + media-libs/libsndfile + media-libs/tiff + media-video/ffmpeg + media-sound/lame + >=sci-libs/fftw-3.0.1 + >=media-libs/x264-svn-20060302 + ieee1394? ( media-libs/libiec61883 >=sys-libs/libraw1394-1.2.0 \ + >=sys-libs/libavc1394-0.5.0 ) + media-video/mjpegtools + alsa? ( media-libs/alsa-lib ) + esd? ( >=media-sound/esound-0.2.34 ) + truetype? ( >=media-libs/freetype-2.1.10 ) + opengl? ( virtual/opengl ) + >=media-libs/openexr-1.2.2 + >=media-libs/libvorbis-1.1.0 + >=media-libs/libogg-1.1 + >=media-libs/libtheora-1.0_alpha4-r1 + x11-libs/libX11 + x11-libs/libXv + x11-libs/libXxf86vm + x11-libs/libXext + x11-libs/libXvMC + x11-libs/libXft" + +DEPEND="${RDEPEND} + x86? ( dev-lang/nasm )" + +S="${WORKDIR}/${PN}" + +pkg_setup() { + if [[ "$(gcc-major-version)" -lt "4" ]]; then + eerror "You need to have gcc 4 or better" + eerror "Please follow : http://www.gentoo.org/doc/en/gcc-upgrading.xml" + eerror "And have a look at bug #128659" + die "You must use gcc 4 or better." + fi +} + +src_unpack() { + unpack ${A} + cd "${S}" + epatch "${FILESDIR}/recentffmpeg.patch" + epatch "${FILESDIR}/${PN}-swscaler.patch" +} + +src_compile() { + AT_M4DIR="m4" eautoreconf + econf \ + `use_enable static` \ + `use_enable alsa` \ + `use_enable esd` \ + `use_enable oss` \ + `use_enable mmx` \ + `use_enable 3dnow` \ + --with-plugindir=/usr/$(get_libdir)/cinelerra \ + `use_enable truetype freetype2` \ + `use_enable ieee1394 firewire` \ + `use_enable css` \ + `use_enable opengl` \ + `use_enable altivec` \ + --with-external-ffmpeg \ + --with-buildinfo=cust/"Gentoo - SVN r1015" \ + || die "configure failed" + emake || die "make failed" +} + +src_install() { + emake DESTDIR="${D}" install || die + dohtml -a png,html,texi,sdw -r doc/* + # workaround + rm -fR "${D}/usr/include" + mv "${D}/usr/bin/mpeg3cat" "${D}/usr/bin/mpeg3cat.hv" + mv "${D}/usr/bin/mpeg3dump" "${D}/usr/bin/mpeg3dump.hv" + mv "${D}/usr/bin/mpeg3toc" "${D}/usr/bin/mpeg3toc.hv" + ln -s /usr/bin/mpeg2enc "${D}/usr/$(get_libdir)/cinelerra/mpeg2enc.plugin" +} + +pkg_postinst () { + elog "Please note that this is unofficial and somewhat experimental code." + elog "See cvs.cinelerra.org for a list of changes to the official cinelerra" + elog "release." +} diff --git a/media-video/cinelerra-cvs/files/cinelerra-cvs-swscaler.patch b/media-video/cinelerra-cvs/files/cinelerra-cvs-swscaler.patch new file mode 100644 index 000000000000..a478e3670ae7 --- /dev/null +++ b/media-video/cinelerra-cvs/files/cinelerra-cvs-swscaler.patch @@ -0,0 +1,159 @@ +Index: cinelerra-cvs/cinelerra/ffmpeg.C +=================================================================== +--- cinelerra-cvs.orig/cinelerra/ffmpeg.C ++++ cinelerra-cvs/cinelerra/ffmpeg.C +@@ -140,6 +140,11 @@ int FFMPEG::convert_cmodel(VFrame *frame + PixelFormat pix_fmt_out = + color_model_to_pix_fmt(frame_out->get_color_model()); + ++#ifdef HAVE_SWSCALER ++ // We need a context for swscale ++ struct SwsContext *convert_ctx; ++#endif ++ + // do conversion within libavcodec if possible + if (pix_fmt_in != PIX_FMT_NB && pix_fmt_out != PIX_FMT_NB) { + // set up a temporary pictures from frame_in and frame_out +@@ -147,7 +152,9 @@ int FFMPEG::convert_cmodel(VFrame *frame + init_picture_from_frame(&picture_in, frame_in); + init_picture_from_frame(&picture_out, frame_out); + +- int result = img_convert(&picture_out, ++ int result; ++#ifndef HAVE_SWSCALER ++ result = img_convert(&picture_out, + pix_fmt_out, + &picture_in, + pix_fmt_in, +@@ -156,6 +163,28 @@ int FFMPEG::convert_cmodel(VFrame *frame + if (result) { + printf("FFMPEG::convert_cmodel img_convert() failed\n"); + } ++#else ++ convert_ctx = sws_getContext(frame_in->get_w(), frame_in->get_h(),pix_fmt_in, ++ frame_out->get_w(),frame_out->get_h(),pix_fmt_out, ++ SWS_BICUBIC, NULL, NULL, NULL); ++ ++ if(convert_ctx == NULL){ ++ printf("FFMPEG::convert_cmodel : swscale context initialization failed\n"); ++ return 1; ++ } ++ ++ result = sws_scale(convert_ctx, ++ picture_in.data, picture_in.linesize, ++ 0, 0, ++ picture_out.data, picture_out.linesize); ++ ++ ++ sws_freeContext(convert_ctx); ++ ++ if(result){ ++ printf("FFMPEG::convert_cmodel sws_scale() failed\n"); ++ } ++#endif + return result; + } + +@@ -203,13 +232,19 @@ int FFMPEG::convert_cmodel(AVPicture *pi + + // set up a temporary picture_out from frame_out + AVPicture picture_out; ++#ifdef HAVE_SWSCALER ++ // We need a context for swscale ++ struct SwsContext *convert_ctx; ++#endif + init_picture_from_frame(&picture_out, frame_out); + int cmodel_out = frame_out->get_color_model(); + PixelFormat pix_fmt_out = color_model_to_pix_fmt(cmodel_out); + + // do conversion within libavcodec if possible + if (pix_fmt_out != PIX_FMT_NB) { +- int result = img_convert(&picture_out, ++ int result; ++#ifndef HAVE_SWSCALER ++ result = img_convert(&picture_out, + pix_fmt_out, + picture_in, + pix_fmt_in, +@@ -218,6 +253,28 @@ int FFMPEG::convert_cmodel(AVPicture *pi + if (result) { + printf("FFMPEG::convert_cmodel img_convert() failed\n"); + } ++#else ++ convert_ctx = sws_getContext(width_in, height_in,pix_fmt_in, ++ frame_out->get_w(),frame_out->get_h(),pix_fmt_out, ++ SWS_BICUBIC, NULL, NULL, NULL); ++ ++ if(convert_ctx == NULL){ ++ printf("FFMPEG::convert_cmodel : swscale context initialization failed\n"); ++ return 1; ++ } ++ ++ result = sws_scale(convert_ctx, ++ picture_in->data, picture_in->linesize, ++ 0, 0, ++ picture_out.data, picture_out.linesize); ++ ++ ++ sws_freeContext(convert_ctx); ++ ++ if(result){ ++ printf("FFMPEG::convert_cmodel sws_scale() failed\n"); ++ } ++#endif + return result; + } + +Index: cinelerra-cvs/cinelerra/ffmpeg.h +=================================================================== +--- cinelerra-cvs.orig/cinelerra/ffmpeg.h ++++ cinelerra-cvs/cinelerra/ffmpeg.h +@@ -3,6 +3,9 @@ + + extern "C" { + #include <avcodec.h> ++#ifdef HAVE_SWSCALER ++#include <swscale.h> ++#endif + } + + #include "asset.h" +Index: cinelerra-cvs/configure.in +=================================================================== +--- cinelerra-cvs.orig/configure.in ++++ cinelerra-cvs/configure.in +@@ -341,10 +341,33 @@ AC_SUBST(CPU_CFLAGS) + ############ external ffmpeg + AC_ARG_WITH([external-ffmpeg], AC_HELP_STRING([--with-external-ffmpeg], [use external ffmpeg library])) + ++AH_TEMPLATE(HAVE_SWSCALER, [Define to 1 if swscaler is available in ffmpeg.]) ++ + if test "x$with_external_ffmpeg" = "xyes"; then +- PKG_CHECK_MODULES([FFMPEG], [libavcodec libpostproc]) ++ PKG_CHECK_MODULES([FFMPEG_TEMP], [libavcodec libpostproc]) + FFMPEG_FOLDER="" + FFMPEG_EXTERNALTEXT="External ffmpeg" ++ ++ dnl -------------------------------------------------------------- ++ dnl check if libavcodec contains img_convert ++ dnl that means that libswscale is compiled in ++ ++ AC_MSG_CHECKING(for ffmpeg swscale support) ++ saved_LIBS="$LIBS" ++ LIBS="$saved_LIBS $FFMPEG_TEMP_LIBS" ++ AC_TRY_LINK([#include <ffmpeg/avcodec.h>], ++ [img_convert(0, 0, 0,0,0,0)], ++ enable_ffmpeg_swscale=no,enable_ffmpeg_swscale=yes) ++ LIBS="$saved_LIBS" ++ AC_MSG_RESULT($enable_ffmpeg_swscale) ++ ++ if test x"$enable_ffmpeg_swscale" == xyes; then ++ AC_DEFINE(HAVE_SWSCALER) ++ PKG_CHECK_MODULES([FFMPEG], [libavcodec libpostproc libswscale]) ++ else ++ PKG_CHECK_MODULES([FFMPEG], [libavcodec libpostproc]) ++ fi ++ + else + FFMPEG_FOLDER=ffmpeg + FFMPEG_CFLAGS="-I\$(top_srcdir)/quicktime/ffmpeg/libavcodec" diff --git a/media-video/cinelerra-cvs/files/digest-cinelerra-cvs-20070726 b/media-video/cinelerra-cvs/files/digest-cinelerra-cvs-20070726 new file mode 100644 index 000000000000..33aab6055c66 --- /dev/null +++ b/media-video/cinelerra-cvs/files/digest-cinelerra-cvs-20070726 @@ -0,0 +1,3 @@ +MD5 082eb4266f783357993ca903ff81a847 cinelerra-cvs-20070726.tar.bz2 23805203 +RMD160 5705ab77481a03dbc1f69b029cb4d97c59de3b79 cinelerra-cvs-20070726.tar.bz2 23805203 +SHA256 a43a832e2459fc9f9941dc57173373f5c22ae53a39ce16585bda2533608c8f22 cinelerra-cvs-20070726.tar.bz2 23805203 |