multimedia/kino: Added (video editor).

Signed-off-by: Matteo Bernardini <ponce@slackbuilds.org>
This commit is contained in:
Matteo Bernardini 2012-09-07 10:17:03 +02:00 committed by Robby Workman
parent abfb7d1c91
commit f9256e0cee
8 changed files with 329 additions and 0 deletions

11
multimedia/kino/README Normal file
View file

@ -0,0 +1,11 @@
Kino is a non-linear DV editor for GNU/Linux.
It features excellent integration with IEEE 1394 for capture, VTR
control, and recording back to the camera. It captures video to disk
in raw DV or AVI format in both type-1 DV and type-2 DV (separate
audio stream) encodings.
Kino does not support other video file formats or encodings, but it
can import them by transcoding with FFmpeg and optionally MEncoder.
This requires libavc1394, libiec61883, libdv, ffmpeg, and libquicktime.

View file

@ -0,0 +1,8 @@
if [ -x /usr/bin/update-desktop-database ]; then
/usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
fi
if [ -x /usr/bin/update-mime-database ]; then
/usr/bin/update-mime-database usr/share/mime >/dev/null 2>&1
fi

View file

@ -0,0 +1,138 @@
#!/bin/sh
#
# Pierre Cazenave (LQ.org pwc101)
# revision date 11/11/2007 (Armistice Day)
# re-revised for 12.2 and new udev locations on 23/12/2008 (day before
# Christmas Eve!).
# Updated for version 1.3.4 17/06/2010 Thanks for Heinz Wiesinger for the
# nudge.
#
# I have set the -enable-local-ffmpeg option since I can't figure
# out how to get the ffmpeg subdirectory configure script to be
# passed the correct install directory for the creation of the
# package. I figured this wasn't too much of an issue, since
# there's a ffmpeg SlackBuild script already.
#
# If you can figure out how to get it to compile so that ffmpeg
# obeys the variables we set, please modify this accordinly.
# Modified by Robby Workman <rworkman@slackbuilds.org> for better
# consistency with other scripts in our repository
# Re the note above, I wouldn't bother -- better to use ffmpeg
# that's installed on the system.
PRGNAM=kino
VERSION=1.3.4
BUILD=${BUILD:-4}
TAG=${TAG:-_SBo}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
i?86) ARCH=i486 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
CWD=$(pwd)
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
else
SLKCFLAGS="-O2"
LIBDIRSUFFIX=""
fi
set -eu
rm -rf $TMP/$PRGNAM-$VERSION $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
cd $PRGNAM-$VERSION
chown -R root:root .
chmod -R u+w,go+r-w,a-s .
# some fixes and patches from gentoo, thanks fellas!
# https://sourceforge.net/tracker/?func=detail&aid=3304495&group_id=14103&atid=314103
sed -i \
-e '/\$(LIBQUICKTIME_LIBS) \\/d' \
-e '/^[[:space:]]*\$(SRC_LIBS)/ a\
\$(LIBQUICKTIME_LIBS) \\' src/Makefile.in || die "sed failed"
# https://sourceforge.net/tracker/?func=detail&aid=3304499&group_id=14103&atid=314103
sed -i -e '$a\
ffmpeg/libavcodec/ps2/idct_mmi.c\
ffmpeg/libavcodec/sparc/dsputil_vis.c\
ffmpeg/libavcodec/sparc/vis.h\
ffmpeg/libavutil/bswap.h\
ffmpeg/libswscale/yuv2rgb_template.c\
src/export.h\
src/message.cc\
src/page_bttv.cc' po/POTFILES.in || die "sed failed"
sed -i -e 's:^#include <quicktime.h>:#include <lqt/quicktime.h>:' \
src/filehandler.h || die "sed failed"
# fix build with newer ffmpegs
patch -p1 < $CWD/libav-0.7.diff
patch -p1 < $CWD/libav-0.8.diff
# fix building on kernel > 2.6.37, like in -current
# https://launchpad.net/ubuntu/natty/+source/kino/1.3.4-1ubuntu3
patch -p1 < $CWD/v4l1_includes.diff
LDFLAGS="-L/usr/lib$LIBDIRSUFFIX -lavcodec -lavformat -lavutil" \
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
--libdir=/usr/lib$LIBDIRSUFFIX \
--sysconfdir=/etc \
--localstatedir=/var \
--mandir=/usr/man \
--disable-static \
--enable-quicktime \
--disable-local-ffmpeg
make
make install DESTDIR=$PKG
find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
find $PKG/usr/man -type f -exec gzip -9 {} \;
# Give the udev rules a number prefix to be consistent with other rules files
# and move to the new location for 12.2; then remove $PKG/etc directory
mkdir -p $PKG/lib/udev/rules.d
mv $PKG/etc/udev/rules.d/kino.rules $PKG/lib/udev/rules.d/96-kino.rules
rm -rf $PKG/etc
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a ChangeLog AUTHORS BUGS COPYING INSTALL NEWS README TODO help/ \
$PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
find $PKG/usr/doc/$PRGNAM-$VERSION -type f -exec chmod 644 {} \;
# Fix incorrect ownership/permissions on help directory (from sshd to root).
chown -R root:root $PKG/usr/share/kino/help
find $PKG/usr/share/kino/help/en -type d -exec chmod 0755 {} \;
find $PKG/usr/share/kino/help/en -type f -exec chmod 0644 {} \;
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}

10
multimedia/kino/kino.info Normal file
View file

@ -0,0 +1,10 @@
PRGNAM="kino"
VERSION="1.3.4"
HOMEPAGE="http://www.kinodv.org/"
DOWNLOAD="http://downloads.sourceforge.net/kino/kino-1.3.4.tar.gz"
MD5SUM="52f8ce690e45a089e3edc6c7af61a05c"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="libavc1394 libiec61883 libdv ffmpeg libquicktime"
MAINTAINER="Matteo Bernardini"
EMAIL="ponce@slackbuilds.org"

View file

@ -0,0 +1,60 @@
--- kino-1.3.4.orig/src/frame.cc 2011-07-17 14:54:59.089481638 +0200
+++ kino-1.3.4/src/frame.cc 2011-07-17 15:09:23.199481714 +0200
@@ -1063,7 +1063,12 @@
AVPicture dest;
int got_picture;
- avcodec_decode_video( libavcodec, frame, &got_picture, data, GetFrameSize() );
+ AVPacket pkt;
+ av_init_packet(&pkt);
+ pkt.data = data;
+ pkt.size = GetFrameSize();
+
+ avcodec_decode_video2( libavcodec, frame, &got_picture, &pkt );
if ( got_picture )
{
avpicture_fill( &dest, static_cast<uint8_t*>( rgb ), PIX_FMT_RGB24, GetWidth(), GetHeight() );
@@ -1123,7 +1128,12 @@
AVPicture output;
int got_picture;
- avcodec_decode_video( libavcodec, frame, &got_picture, data, GetFrameSize() );
+ AVPacket pkt;
+ av_init_packet(&pkt);
+ pkt.data = data;
+ pkt.size = GetFrameSize();
+
+ avcodec_decode_video2( libavcodec, frame, &got_picture, &pkt );
if ( got_picture )
{
avpicture_fill( &output, static_cast<uint8_t*>( yuv ), PIX_FMT_YUV422, GetWidth(), GetHeight() );
@@ -1156,7 +1166,12 @@
AVFrame *frame = avcodec_alloc_frame();
int got_picture;
- avcodec_decode_video( libavcodec, frame, &got_picture, data, GetFrameSize() );
+ AVPacket pkt;
+ av_init_packet(&pkt);
+ pkt.data = data;
+ pkt.size = GetFrameSize();
+
+ avcodec_decode_video2( libavcodec, frame, &got_picture, &pkt );
int width = GetWidth(), height = GetHeight();
@@ -1319,12 +1334,12 @@
#if defined(HAVE_LIBAVCODEC)
if ( avformatEncoder == NULL )
{
- avformatEncoder = av_alloc_format_context();
+ avformatEncoder = avformat_alloc_context();
if ( avformatEncoder )
{
- avformatEncoder->oformat = guess_format( "dv", NULL, NULL );
+ avformatEncoder->oformat = av_guess_format( "dv", NULL, NULL );
AVStream* vst = av_new_stream( avformatEncoder, 0 );
- vst->codec->codec_type = CODEC_TYPE_VIDEO;
+ vst->codec->codec_type = AVMEDIA_TYPE_VIDEO;
vst->codec->codec_id = CODEC_ID_DVVIDEO;
vst->codec->bit_rate = 25000000;
vst->start_time = 0;

View file

@ -0,0 +1,57 @@
--- kino-1.3.4.orig/src/frame.cc 2012-05-14 19:55:42.153772418 -0700
+++ kino-1.3.4/src/frame.cc 2012-05-14 20:28:34.448838653 -0700
@@ -101,8 +101,9 @@
#if defined(HAVE_LIBAVCODEC)
pthread_mutex_lock( &avcodec_mutex );
av_register_all();
- libavcodec = avcodec_alloc_context();
- avcodec_open( libavcodec, avcodec_find_decoder( CODEC_ID_DVVIDEO ) );
+ libavcodec = avcodec_alloc_context3(NULL);
+ avcodec_open2( libavcodec,
+ avcodec_find_decoder( CODEC_ID_DVVIDEO ), NULL );
pthread_mutex_unlock( &avcodec_mutex );
data = ( unsigned char* ) av_mallocz( 144000 );
#if defined(HAVE_SWSCALE)
@@ -1338,7 +1339,7 @@
if ( avformatEncoder )
{
avformatEncoder->oformat = av_guess_format( "dv", NULL, NULL );
- AVStream* vst = av_new_stream( avformatEncoder, 0 );
+ AVStream* vst = avformat_new_stream( avformatEncoder, NULL );
vst->codec->codec_type = AVMEDIA_TYPE_VIDEO;
vst->codec->codec_id = CODEC_ID_DVVIDEO;
vst->codec->bit_rate = 25000000;
@@ -1364,12 +1365,10 @@
vst->sample_aspect_ratio = avcodecEncoder->sample_aspect_ratio;
#endif
avcodecEncoder->thread_count = 2;
- avcodec_thread_init( avcodecEncoder, avcodecEncoder->thread_count );
avcodecEncoder->time_base= isPAL ? ( AVRational ){ 1, 25 } : ( AVRational ){ 1001, 30000 };
avcodecEncoder->pix_fmt = isPAL ? PIX_FMT_YUV420P : PIX_FMT_YUV411P;
avcodecEncoder->flags |= CODEC_FLAG_INTERLACED_DCT;
- av_set_parameters( avformatEncoder, NULL );
- avcodec_open( avcodecEncoder, avcodec_find_encoder( CODEC_ID_DVVIDEO ) );
+ avcodec_open2( avcodecEncoder, avcodec_find_encoder( CODEC_ID_DVVIDEO ), NULL );
av_new_packet( &avpacketEncoder, 144000 );
tempImage = ( uint8_t* ) av_malloc(
avpicture_get_size( avcodecEncoder->pix_fmt, avcodecEncoder->width, avcodecEncoder->height ) );
@@ -1475,16 +1474,16 @@
// Encode
bytesInFrame = avcodec_encode_video( avcodecEncoder, avpacketEncoder.data, size, output );
- url_open_buf( &avformatEncoder->pb, data, bytesInFrame, URL_WRONLY );
+ avformatEncoder->pb = avio_alloc_context(data, bytesInFrame, 0, NULL, NULL, NULL, NULL);
avpacketEncoder.size = bytesInFrame;
if ( !isEncoderHeaderWritten )
{
- av_write_header( avformatEncoder );
+ avformat_write_header( avformatEncoder, NULL );
isEncoderHeaderWritten = true;
}
av_write_frame( avformatEncoder, &avpacketEncoder );
#if LIBAVFORMAT_VERSION_INT >= ((52<<16)+(0<<8)+0)
- url_close_buf( avformatEncoder->pb );
+ avio_close( avformatEncoder->pb );
#else
url_close_buf( &avformatEncoder->pb );
#endif

View file

@ -0,0 +1,19 @@
# HOW TO EDIT THIS FILE:
# The "handy ruler" below makes it easier to edit a package description. Line
# up the first '|' above the ':' following the base package name, and the '|' on
# the right side marks the last column you can put a character in. You must make
# exactly 11 lines for the formatting to be correct. It's also customary to
# leave one space after the ':'.
|-----handy-ruler------------------------------------------------------|
kino: Kino (a non-linear DV editor for GNU/Linux)
kino:
kino: It features excellent integration with IEEE 1394 for capture, VTR
kino: control, and recording back to the camera. It captures video to disk
kino: in raw DV or AVI format in both type-1 DV and type-2 DV (separate
kino: audio stream) encodings.
kino: Kino does not support other video file formats or encodings, but it
kino: can import them by transcoding with FFmpeg and optionally MEncoder.
kino:
kino: http://www.kinodv.org/
kino:

View file

@ -0,0 +1,26 @@
Index: kino-1.3.4/ffmpeg/libavdevice/v4l.c
===================================================================
--- kino-1.3.4.orig/ffmpeg/libavdevice/v4l.c 2011-04-11 15:12:41.915593967 +0200
+++ kino-1.3.4/ffmpeg/libavdevice/v4l.c 2011-04-11 15:13:05.825593979 +0200
@@ -26,7 +26,7 @@
#include <sys/mman.h>
#include <sys/time.h>
#define _LINUX_TIME_H 1
-#include <linux/videodev.h>
+#include <libv4l1-videodev.h>
#include <time.h>
typedef struct {
Index: kino-1.3.4/src/v4l.h
===================================================================
--- kino-1.3.4.orig/src/v4l.h 2011-04-11 15:12:41.895593967 +0200
+++ kino-1.3.4/src/v4l.h 2011-04-11 15:12:57.555593975 +0200
@@ -40,7 +40,7 @@
#define _DEVICE_H_
#define _LINUX_TIME_H
-#include <linux/videodev.h>
+#include <libv4l1-videodev.h>
#include "displayer.h"