multimedia/cinelerra: Updated for version cv_2.1.5.

Signed-off-by: Niels Horn <niels.horn@slackbuilds.org>
This commit is contained in:
Giovanne Castro 2011-07-15 15:07:37 -03:00 committed by Robby Workman
parent 632b1ce582
commit 8630ff272e
7 changed files with 220 additions and 57 deletions

View file

@ -2,13 +2,10 @@ Cinelerra is the most advanced non-linear video editor and compositor
for Linux. It does primarily 3 main things: capturing, compositing,
and editing audio and video with sample level accuracy.
This is a development version maintained by Einar Rünkaru:
http://git.cinelerra.org/gitweb?p=einar/cinelerra.git;a=summary
This is a development version maintained by official git cinelerra-cv:
http://git.cinelerra.org/gitweb?p=j6t/cinelerra.git;a=summary
This build script uses a git snapshot that was downloaded and hosted
by the script maintainer.
By default cinelerra builds with an internal ffmpeg. Building with
an external, system-wide installed ffmpeg is no longer possible.
Cinelerra requires a52dec, imlib2, libdv, faac, faad2 x264, lame,
libavc1394, libiec61883, and mjpegtools.
Cinelerra requires ffmpeg, a52dec, imlib2, libdv, faac, faad2 x264,
lame, libavc1394, libiec61883 and mjpegtools.

View file

@ -0,0 +1,126 @@
http://bugs.cinelerra.org/ticket/949
https://bugs.gentoo.org/show_bug.cgi?id=361709
diff -Nru cinelerra.orig//cinelerra/channelpicker.C cinelerra/cinelerra/channelpicker.C
--- cinelerra.orig//cinelerra/channelpicker.C 2010-11-24 18:18:03.000000000 -0500
+++ cinelerra/cinelerra/channelpicker.C 2011-02-17 13:31:30.147880002 -0500
@@ -39,7 +39,7 @@
#include "recordgui.h"
#include "recordmonitor.h"
#include "theme.h"
-#include "vdevicebuz.h"
+//#include "vdevicebuz.h"
#include "vdeviceprefs.h"
#include "videodevice.h"
@@ -280,7 +280,7 @@
// printf("PrefsChannelPicker::PrefsChannelPicker 1\n");
this->mwindow = mwindow;
this->prefs = prefs;
- VDeviceBUZ::get_inputs(&input_sources);
+// VDeviceBUZ::get_inputs(&input_sources);
}
PrefsChannelPicker::~PrefsChannelPicker()
diff -Nru cinelerra.orig//cinelerra/Makefile.am cinelerra/cinelerra/Makefile.am
--- cinelerra.orig//cinelerra/Makefile.am 2010-11-24 18:18:03.000000000 -0500
+++ cinelerra/cinelerra/Makefile.am 2011-02-17 13:31:30.147880002 -0500
@@ -305,10 +305,8 @@
vattachmentpoint.C \
vautomation.C \
vdevicebase.C \
- vdevicebuz.C \
vdevicedvb.C \
vdeviceprefs.C \
- vdevicev4l.C \
vdevicev4l2.C \
vdevicev4l2jpeg.C \
vdevicex11.C \
diff -Nru cinelerra.orig//cinelerra/reversemake cinelerra/cinelerra/reversemake
--- cinelerra.orig//cinelerra/reversemake 2010-11-24 18:18:03.000000000 -0500
+++ cinelerra/cinelerra/reversemake 2011-02-17 13:31:30.151880002 -0500
@@ -32,10 +32,8 @@
make $OBJDIR/vedits.o
make $OBJDIR/vedit.o
make $OBJDIR/vdevicex11.o
-make $OBJDIR/vdevicev4l.o
make $OBJDIR/vdeviceprefs.o
make $OBJDIR/vdevicelml.o
-make $OBJDIR/vdevicebuz.o
make $OBJDIR/vdevicebase.o
make $OBJDIR/vdevice1394.o
make $OBJDIR/vautomation.o
diff -Nru cinelerra.orig//cinelerra/videodevice.C cinelerra/cinelerra/videodevice.C
--- cinelerra.orig//cinelerra/videodevice.C 2010-11-24 18:18:03.000000000 -0500
+++ cinelerra/cinelerra/videodevice.C 2011-02-17 13:41:53.239880001 -0500
@@ -39,9 +39,9 @@
#ifdef HAVE_FIREWIRE
#include "vdevice1394.h"
#endif
-#include "vdevicebuz.h"
+//#include "vdevicebuz.h"
#include "vdevicedvb.h"
-#include "vdevicev4l.h"
+//#include "vdevicev4l.h"
#include "vdevicev4l2.h"
#include "vdevicev4l2jpeg.h"
#include "vdevicex11.h"
@@ -203,7 +203,6 @@
result = input_base->open_input();
break;
-
#ifdef HAVE_VIDEO4LINUX2
case VIDEO4LINUX2:
new_device_base();
@@ -250,8 +249,8 @@
{
switch(in_config->driver)
{
- case VIDEO4LINUX:
- return input_base = new VDeviceV4L(this);
+ //case VIDEO4LINUX:
+ // return input_base = new VDeviceV4L(this);
#ifdef HAVE_VIDEO4LINUX2
case VIDEO4LINUX2:
@@ -264,8 +263,8 @@
case SCREENCAPTURE:
return input_base = new VDeviceX11(this, 0);
- case CAPTURE_BUZ:
- return input_base = new VDeviceBUZ(this);
+ //case CAPTURE_BUZ:
+ // return input_base = new VDeviceBUZ(this);
#ifdef HAVE_FIREWIRE
case CAPTURE_FIREWIRE:
@@ -662,9 +661,9 @@
//printf("VideoDevice::open_output 1 %d\n", out_config->driver);
switch(out_config->driver)
{
- case PLAYBACK_BUZ:
- output_base = new VDeviceBUZ(this);
- break;
+ //case PLAYBACK_BUZ:
+ // output_base = new VDeviceBUZ(this);
+ // break;
case PLAYBACK_X11:
case PLAYBACK_X11_XV:
case PLAYBACK_X11_GL:
diff -Nru cinelerra.orig//cinelerra/videodevice.h cinelerra/cinelerra/videodevice.h
--- cinelerra.orig//cinelerra/videodevice.h 2010-11-24 18:18:03.000000000 -0500
+++ cinelerra/cinelerra/videodevice.h 2011-02-17 13:31:30.167880002 -0500
@@ -40,9 +40,9 @@
#include "thread.h"
#include "picture.inc"
#include "vdevicebase.inc"
-#include "vdevicebuz.inc"
+//#include "vdevicebuz.inc"
#include "vdevicelml.inc"
-#include "vdevicev4l.inc"
+//#include "vdevicev4l.inc"
#include "vdevicex11.inc"
#include "videoconfig.inc"
#include "videowindow.inc"

View file

@ -2,7 +2,7 @@
# Slackware build script for cinelerra
# Copyright 2010 by Giovanne Castro, Campinas, Sao Paulo, Brazil <giovannefc@ig.com.br>
# Copyright 2011 by Giovanne Castro, Campinas, Sao Paulo, Brazil <giovannefc@ig.com.br>
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@ -23,7 +23,7 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
PRGNAM=cinelerra
VERSION=${VERSION:-cv_einar_701e5e5f}
VERSION=${VERSION:-cv_2.1.5}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
@ -60,18 +60,6 @@ else
mmx="--enable-mmx"
fi
# --external-ffmpeg works only with version 0.5.x of FFMPEG.
# Not compatible with FFMPEG 0.6 series, in this case, cinelerra
# will be compiled with internal ffmpeg (includes in the package).
# Uses "yes" or "no". Default: "no".
EXTERNALFFMPEG=${EXTERNALFFMPEG:-no}
if [ "$EXTERNALFFMPEG" = "no" ]; then
externalffmpeg=""
else
externalffmpeg="--with-external-ffmpeg"
fi
set -e
rm -rf $PKG
@ -87,13 +75,15 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
# Fix build with libx264 version 76 and later.
patch -p1 < $CWD/x264_76.patch
# Patches (from gentoo repository) for drop v4l1 support and fix from upstream to build with ffmpeg trunk.
# http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/media-video/cinelerra/files/
patch -p1 < $CWD/ffmpeg.patch
patch -p1 < $CWD/cinelerra-v4l1_removal.patch
./autogen.sh
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
CFLAGS="$SLKCFLAGS -D__STDC_CONSTANT_MACROS" \
CXXFLAGS="$SLKCFLAGS -D__STDC_CONSTANT_MACROS" \
./configure \
--prefix=/usr \
--sysconfdir=/etc \
@ -106,18 +96,12 @@ CXXFLAGS="$SLKCFLAGS" \
--with-x \
--enable-opengl \
--build=$ARCH-slackware-linux \
$externalffmpeg \
--with-external-ffmpeg \
$mmx
make
make install DESTDIR=$PKG
# Delete ffmpeg headers and libraries to prevent conflicts with ffmpeg package.
if [ "$EXTERNALFFMPEG" = "no" ]; then
rm -rf $PKG/usr/lib${LIBDIRSUFFIX}/pkgconfig
rm -rf $PKG/usr/include/lib*
fi
find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true

View file

@ -1,10 +1,10 @@
PRGNAM="cinelerra"
VERSION="cv_einar_701e5e5f"
VERSION="cv_2.1.5"
HOMEPAGE="http://cinelerra.org/"
DOWNLOAD="http://www.ginoepri.com/linux/cinelerra-cv_einar_701e5e5f.tar.gz"
MD5SUM="3e8dc80e815f1ec2abc74d744c442374"
DOWNLOAD="http://www.ginoepri.com/linux/cinelerra-cv_2.1.5.tar.gz"
MD5SUM="e79452b6a6682005fa7b90248aebe32f"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
MAINTAINER="Giovanne Castro"
EMAIL="giovannefc@ig.com.br"
APPROVED="pprkut"
APPROVED="pprkut,Niels Horn"

View file

@ -0,0 +1,76 @@
Fix build with ffmpeg/libav trunk / 0.7
Index: cinelerra/cinelerra/ffmpeg.C
===================================================================
--- cinelerra.orig/cinelerra/ffmpeg.C
+++ cinelerra/cinelerra/ffmpeg.C
@@ -364,12 +364,15 @@ int FFMPEG::decode(uint8_t *data, long d
// NOTE: frame must already have data space allocated
+ AVPacket pkt;
got_picture = 0;
- int length = avcodec_decode_video(context,
+ av_init_packet( &pkt );
+ pkt.data = data;
+ pkt.size = data_size;
+ int length = avcodec_decode_video2(context,
picture,
&got_picture,
- data,
- data_size);
+ &pkt);
if (length < 0) {
printf("FFMPEG::decode error decoding frame\n");
Index: cinelerra/quicktime/qtffmpeg.c
===================================================================
--- cinelerra.orig/quicktime/qtffmpeg.c
+++ cinelerra/quicktime/qtffmpeg.c
@@ -181,6 +181,7 @@ static int decode_wrapper(quicktime_t *f
if(!result)
{
+ AVPacket pkt;
// No way to determine if there was an error based on nonzero status.
@@ -189,11 +190,13 @@ static int decode_wrapper(quicktime_t *f
ffmpeg->decoder_context[current_field]->skip_frame = AVDISCARD_NONREF /* AVDISCARD_BIDIR */;
else
ffmpeg->decoder_context[current_field]->skip_frame = AVDISCARD_DEFAULT;
- result = avcodec_decode_video(ffmpeg->decoder_context[current_field],
+ av_init_packet( &pkt );
+ pkt.data = ffmpeg->work_buffer;
+ pkt.size = bytes + header_bytes;
+ result = avcodec_decode_video2(ffmpeg->decoder_context[current_field],
&ffmpeg->picture[current_field],
&got_picture,
- ffmpeg->work_buffer,
- bytes + header_bytes);
+ &pkt);
Index: cinelerra/quicktime/wma.c
===================================================================
--- cinelerra.orig/quicktime/wma.c
+++ cinelerra/quicktime/wma.c
@@ -195,11 +195,14 @@ printf("decode 2 %x %llx %llx\n", chunk_
chunk_size);
#else
bytes_decoded = AVCODEC_MAX_AUDIO_FRAME_SIZE;
- result = avcodec_decode_audio2(codec->decoder_context,
+ AVPacket pkt;
+ av_init_packet( &pkt );
+ pkt.data = codec->packet_buffer;
+ pkt.size = chunk_size;
+ result = avcodec_decode_audio3(codec->decoder_context,
(int16_t*)(codec->work_buffer + codec->output_size * sample_size),
&bytes_decoded,
- codec->packet_buffer,
- chunk_size);
+ &pkt);
#endif
pthread_mutex_unlock(&ffmpeg_lock);

View file

@ -5,7 +5,7 @@
# make exactly 11 lines for the formatting to be correct. It's also
# customary to leave one space after the ':'.
|-----handy-ruler----------------------------------------------------|
|-----handy-ruler------------------------------------------------------|
cinelerra: cinelerra (GNU/Linux Video/Audio Studio)
cinelerra:
cinelerra: Cinelerra is the most advanced non-linear video editor

View file

@ -1,20 +0,0 @@
Index: cinelerra-20090210/quicktime/qth264.c
===================================================================
--- cinelerra-20090210.orig/quicktime/qth264.c
+++ cinelerra-20090210/quicktime/qth264.c
@@ -239,10 +239,15 @@ static int encode(quicktime_t *file, uns
codec->buffer_size = 0;
for(i = 0; i < nnal; i++)
{
+#if X264_BUILD >= 76
+ int size = nals[i].i_payload;
+ memcpy(codec->work_buffer + codec->buffer_size, nals[i].p_payload, nals[i].i_payload);
+#else
int size = x264_nal_encode(codec->work_buffer + codec->buffer_size,
&allocation,
1,
nals + i);
+#endif
unsigned char *ptr = codec->work_buffer + codec->buffer_size;
if(size > 0)