From 9c6ab49f59ff66d2291677731b4787ded1ba5f6c Mon Sep 17 00:00:00 2001 From: Danny Schmarsel Date: Fri, 23 Oct 2015 11:50:19 +0700 Subject: multimedia/cinelerra: Updated for version cv_2.3. Signed-off-by: Willy Sudiarto Raharjo --- multimedia/cinelerra/README | 9 +- multimedia/cinelerra/cinelerra.SlackBuild | 29 ++- multimedia/cinelerra/cinelerra.info | 12 +- .../cinelerra/patches/01-cinelerra-entry.patch | 14 -- .../cinelerra/patches/02-cinelerra-ffmpeg.patch | 76 ------- .../patches/04-cinelerra-ffmpeg-0.11.patch | 156 --------------- .../patches/05-cinelerra-std_and_str_h.patch | 81 -------- .../cinelerra/patches/06-cinelerra-libav9.patch | 93 --------- .../cinelerra/patches/07-cinelerra-ffmpeg2.patch | 218 --------------------- .../cinelerra/patches/cinelerra-cv-ffmpeg2.0.patch | 98 +++++++++ .../patches/cinelerra-cv-ffmpeg_api2.2.patch | 200 +++++++++++++++++++ multimedia/cinelerra/slack-desc | 4 +- 12 files changed, 322 insertions(+), 668 deletions(-) delete mode 100644 multimedia/cinelerra/patches/01-cinelerra-entry.patch delete mode 100644 multimedia/cinelerra/patches/02-cinelerra-ffmpeg.patch delete mode 100644 multimedia/cinelerra/patches/04-cinelerra-ffmpeg-0.11.patch delete mode 100644 multimedia/cinelerra/patches/05-cinelerra-std_and_str_h.patch delete mode 100644 multimedia/cinelerra/patches/06-cinelerra-libav9.patch delete mode 100644 multimedia/cinelerra/patches/07-cinelerra-ffmpeg2.patch create mode 100644 multimedia/cinelerra/patches/cinelerra-cv-ffmpeg2.0.patch create mode 100644 multimedia/cinelerra/patches/cinelerra-cv-ffmpeg_api2.2.patch (limited to 'multimedia/cinelerra') diff --git a/multimedia/cinelerra/README b/multimedia/cinelerra/README index 729b141a32..1e25a9bae5 100644 --- a/multimedia/cinelerra/README +++ b/multimedia/cinelerra/README @@ -1,8 +1,3 @@ -Cinelerra is the most advanced non-linear video editor and compositor -for Linux. It does primarily 3 main things: capturing, compositing, +Cinelerra CV 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 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. diff --git a/multimedia/cinelerra/cinelerra.SlackBuild b/multimedia/cinelerra/cinelerra.SlackBuild index 9642f9a0bb..ab3d600603 100644 --- a/multimedia/cinelerra/cinelerra.SlackBuild +++ b/multimedia/cinelerra/cinelerra.SlackBuild @@ -2,7 +2,7 @@ # Slackware build script for cinelerra -# Copyright 2011 by Giovanne Castro, Campinas, Sao Paulo, Brazil +# Copyright 2015 by Danny Schmarsel # All rights reserved. # # Redistribution and use of this script, with or without modification, is @@ -23,8 +23,8 @@ # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. PRGNAM=cinelerra -VERSION=${VERSION:-cv_2.2} -BUILD=${BUILD:-2} +VERSION=${VERSION:-cv_2.3} +BUILD=${BUILD:-1} TAG=${TAG:-_SBo} if [ -z "$ARCH" ]; then @@ -65,19 +65,19 @@ set -e rm -rf $PKG mkdir -p $TMP $PKG $OUTPUT cd $TMP -rm -rf $PRGNAM -tar xvf $CWD/$PRGNAM-$VERSION.tar.?z* -cd $PRGNAM +rm -rf CinelerraCV-2.3 +tar xvf $CWD/CinelerraCV-2.3.tar.xz +cd CinelerraCV-2.3 chown -R root:root . find -L . \ - \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \ - -exec chmod 755 {} \; -o \ - \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ - -exec chmod 644 {} \; + \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \ + -o -perm 511 \) -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \ + -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \; -# Patches (from gentoo repository) -# http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/media-video/cinelerra/files/ -for i in $CWD/patches/* ; do patch -p1 < $i ; done +# Patches (from the official website) for compatibility with ffmpeg-2.x +patch -p1 < $CWD/patches/cinelerra-cv-ffmpeg_api2.2.patch +patch -p1 < $CWD/patches/cinelerra-cv-ffmpeg2.0.patch ./autogen.sh @@ -106,8 +106,7 @@ find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION -cp -a \ - AUTHORS COPYING ChangeLog INSTALL LICENSE NEWS README* TODO \ +cp -a AUTHORS COPYING ChangeLog INSTALL LICENSE NEWS README* TODO \ $PKG/usr/doc/$PRGNAM-$VERSION cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild diff --git a/multimedia/cinelerra/cinelerra.info b/multimedia/cinelerra/cinelerra.info index 67302dd042..d1284cffc2 100644 --- a/multimedia/cinelerra/cinelerra.info +++ b/multimedia/cinelerra/cinelerra.info @@ -1,10 +1,10 @@ PRGNAM="cinelerra" -VERSION="cv_2.2" -HOMEPAGE="http://cinelerra.org/" -DOWNLOAD="http://ponce.cc/slackware/sources/repo/cinelerra-cv_2.2.tar.xz" -MD5SUM="b13dafcdcbf75264ff136f5a17d1ac82" +VERSION="cv_2.3" +HOMEPAGE="http://cinelerra-cv.org/" +DOWNLOAD="http://www.cinelerra-cv.org/releases/CinelerraCV-2.3.tar.xz" +MD5SUM="a1e7bfaf9827f74900d58d25955bdf3f" DOWNLOAD_x86_64="" MD5SUM_x86_64="" REQUIRES="a52dec faac faad2 ffmpeg imlib2 libavc1394 libdv libiec61883 mjpegtools lame x264" -MAINTAINER="Giovanne Castro" -EMAIL="giovannefc@ig.com.br" +MAINTAINER="Danny Schmarsel" +EMAIL="danny@schmarsel.de" diff --git a/multimedia/cinelerra/patches/01-cinelerra-entry.patch b/multimedia/cinelerra/patches/01-cinelerra-entry.patch deleted file mode 100644 index 5ece08c419..0000000000 --- a/multimedia/cinelerra/patches/01-cinelerra-entry.patch +++ /dev/null @@ -1,14 +0,0 @@ ---- a/image/cinelerra.desktop -+++ b/image/cinelerra.desktop -@@ -5,9 +5,8 @@ - Name[fr]=Cinelerra - Name[es]=Cinelerra - Comment=Video Editor --Categories=Application;AudioVideo;Multimedia; --Encoding=UTF-8 -+Categories=AudioVideo; - Exec=cinelerra --Icon=cinelerra.xpm -+Icon=cinelerra - Terminal=false - Type=Application diff --git a/multimedia/cinelerra/patches/02-cinelerra-ffmpeg.patch b/multimedia/cinelerra/patches/02-cinelerra-ffmpeg.patch deleted file mode 100644 index 6f7962fb1a..0000000000 --- a/multimedia/cinelerra/patches/02-cinelerra-ffmpeg.patch +++ /dev/null @@ -1,76 +0,0 @@ -Fix build with ffmpeg/libav trunk / 0.7 - -Index: cinelerra-20101104/cinelerra/ffmpeg.C -=================================================================== ---- cinelerra-20101104.orig/cinelerra/ffmpeg.C -+++ cinelerra-20101104/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-20101104/quicktime/qtffmpeg.c -=================================================================== ---- cinelerra-20101104.orig/quicktime/qtffmpeg.c -+++ cinelerra-20101104/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-20101104/quicktime/wma.c -=================================================================== ---- cinelerra-20101104.orig/quicktime/wma.c -+++ cinelerra-20101104/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); diff --git a/multimedia/cinelerra/patches/04-cinelerra-ffmpeg-0.11.patch b/multimedia/cinelerra/patches/04-cinelerra-ffmpeg-0.11.patch deleted file mode 100644 index 6d59cc8408..0000000000 --- a/multimedia/cinelerra/patches/04-cinelerra-ffmpeg-0.11.patch +++ /dev/null @@ -1,156 +0,0 @@ -Let it build with ffmpeg-0.11 - -Index: cinelerra-20111223/cinelerra/ffmpeg.C -=================================================================== ---- cinelerra-20111223.orig/cinelerra/ffmpeg.C -+++ cinelerra-20111223/cinelerra/ffmpeg.C -@@ -23,7 +23,6 @@ FFMPEG::FFMPEG(Asset *asset) { - - int FFMPEG::init(char *codec_string) { - -- avcodec_init(); - avcodec_register_all(); - - CodecID id = codec_id(codec_string); -Index: cinelerra-20111223/cinelerra/fileac3.C -=================================================================== ---- cinelerra-20111223.orig/cinelerra/fileac3.C -+++ cinelerra-20111223/cinelerra/fileac3.C -@@ -84,7 +84,6 @@ int FileAC3::open_file(int rd, int wr) - - if(wr) - { -- avcodec_init(); - avcodec_register_all(); - codec = avcodec_find_encoder(CODEC_ID_AC3); - if(!codec) -Index: cinelerra-20111223/configure.in -=================================================================== ---- cinelerra-20111223.orig/configure.in -+++ cinelerra-20111223/configure.in -@@ -338,7 +338,7 @@ AC_SUBST(CPU_CFLAGS) - AC_ARG_WITH([external-ffmpeg], AC_HELP_STRING([--with-external-ffmpeg], [use external ffmpeg library])) - - if test "x$with_external_ffmpeg" = "xyes"; then -- PKG_CHECK_MODULES([FFMPEG_TEMP], [libavcodec libpostproc]) -+ PKG_CHECK_MODULES([FFMPEG_TEMP], [libavcodec libpostproc libavutil]) - FFMPEG_FOLDER="" - FFMPEG_EXTERNALTEXT="External ffmpeg" - -@@ -356,10 +356,10 @@ if test "x$with_external_ffmpeg" = "xyes - AC_MSG_RESULT($enable_ffmpeg_swscale) - if test x"$enable_ffmpeg_swscale" = xyes; then - dnl AC_DEFINE(HAVE_SWSCALER) -- PKG_CHECK_MODULES([FFMPEG], [libavcodec libpostproc libswscale]) -+ PKG_CHECK_MODULES([FFMPEG], [libavcodec libpostproc libswscale libavutil]) - FFMPEG_CFLAGS="$FFMPEG_CFLAGS -I/usr/include/libavcodec -I/usr/include/libswscale -DHAVE_SWSCALER" - else -- PKG_CHECK_MODULES([FFMPEG], [libavcodec libpostproc]) -+ PKG_CHECK_MODULES([FFMPEG], [libavcodec libpostproc libavutil]) - fi - FFMPEG_EXTERNALTEXT="External ffmpeg" - else -Index: cinelerra-20111223/quicktime/mpeg4.c -=================================================================== ---- cinelerra-20111223.orig/quicktime/mpeg4.c -+++ cinelerra-20111223/quicktime/mpeg4.c -@@ -8,6 +8,7 @@ - - - #include "libavcodec/avcodec.h" -+#include "libavutil/dict.h" - #include "colormodels.h" - #include "funcprotos.h" - #include "qtffmpeg.h" -@@ -624,12 +625,12 @@ static int encode(quicktime_t *file, uns - else - // ffmpeg section - { -+ AVDictionary ** opts = NULL; - static char *video_rc_eq="tex^qComp"; - codec->encode_initialized[current_field] = 1; - if(!ffmpeg_initialized) - { - ffmpeg_initialized = 1; -- avcodec_init(); - avcodec_register_all(); - } - -@@ -673,8 +674,10 @@ static int encode(quicktime_t *file, uns - context->b_quant_offset = 1.25; - #if LIBAVCODEC_VERSION_INT < ((52<<16)+(0<<8)+0) - context->error_resilience = FF_ER_CAREFUL; --#else -+#elif LIBAVCODEC_VERSION_INT < ((54<<16)+(0<<8)+0) - context->error_recognition = FF_ER_CAREFUL; -+#else -+ context->err_recognition |= AV_EF_CAREFUL; - #endif - context->error_concealment = 3; - context->frame_skip_cmp = FF_CMP_DCTMAX; -@@ -699,7 +702,7 @@ static int encode(quicktime_t *file, uns - context->profile= FF_PROFILE_UNKNOWN; - context->rc_buffer_aggressivity = 1.0; - context->level= FF_LEVEL_UNKNOWN; -- context->flags |= CODEC_FLAG_H263P_UMV; -+ av_dict_set(opts, "umv", "1", 0); - context->flags |= CODEC_FLAG_AC_PRED; - - // All the forbidden settings can be extracted from libavcodec/mpegvideo.c of ffmpeg... -@@ -717,10 +720,8 @@ static int encode(quicktime_t *file, uns - (codec->ffmpeg_id == CODEC_ID_MPEG4 || - codec->ffmpeg_id == CODEC_ID_MPEG1VIDEO || - codec->ffmpeg_id == CODEC_ID_MPEG2VIDEO || -- codec->ffmpeg_id == CODEC_ID_H263P || -- codec->ffmpeg_id == CODEC_FLAG_H263P_SLICE_STRUCT)) -+ codec->ffmpeg_id == CODEC_ID_H263P )) - { -- avcodec_thread_init(context, file->cpus); - context->thread_count = file->cpus; - } - -@@ -740,7 +741,7 @@ static int encode(quicktime_t *file, uns - * codec->fix_bitrate, - * codec->quantizer); - */ -- avcodec_open(context, codec->encoder[current_field]); -+ avcodec_open2(context, codec->encoder[current_field], opts); - - avcodec_get_frame_defaults(&codec->picture[current_field]); - -Index: cinelerra-20111223/quicktime/qtffmpeg.c -=================================================================== ---- cinelerra-20111223.orig/quicktime/qtffmpeg.c -+++ cinelerra-20111223/quicktime/qtffmpeg.c -@@ -54,7 +54,6 @@ quicktime_ffmpeg_t* quicktime_new_ffmpeg - if(!ffmpeg_initialized) - { - ffmpeg_initialized = 1; -- avcodec_init(); - avcodec_register_all(); - } - -@@ -90,10 +89,8 @@ quicktime_ffmpeg_t* quicktime_new_ffmpeg - (ffmpeg_id == CODEC_ID_MPEG4 || - ffmpeg_id == CODEC_ID_MPEG1VIDEO || - ffmpeg_id == CODEC_ID_MPEG2VIDEO || -- ffmpeg_id == CODEC_ID_H263P || -- ffmpeg_id == CODEC_FLAG_H263P_SLICE_STRUCT)) -+ ffmpeg_id == CODEC_ID_H263P )) - { -- avcodec_thread_init(context, cpus); - context->thread_count = cpus; - } - if(avcodec_open(context, -Index: cinelerra-20111223/quicktime/wma.c -=================================================================== ---- cinelerra-20111223.orig/quicktime/wma.c -+++ cinelerra-20111223/quicktime/wma.c -@@ -67,7 +67,6 @@ static int init_decode(quicktime_audio_m - if(!ffmpeg_initialized) - { - ffmpeg_initialized = 1; -- avcodec_init(); - avcodec_register_all(); - } - diff --git a/multimedia/cinelerra/patches/05-cinelerra-std_and_str_h.patch b/multimedia/cinelerra/patches/05-cinelerra-std_and_str_h.patch deleted file mode 100644 index 66622a9c8e..0000000000 --- a/multimedia/cinelerra/patches/05-cinelerra-std_and_str_h.patch +++ /dev/null @@ -1,81 +0,0 @@ -Include required headers for free(), memcpy(), strcpy(), bcopy(), and more -Thanks to Martin von Gagern for reporting and initial patch -See, http://bugs.gentoo.org/show_bug.cgi?id=465478 - ---- a/cinelerra/vdevicebuz.C -+++ b/cinelerra/vdevicebuz.C -@@ -49,6 +49,8 @@ - #include - #include - #include -+#include -+#include - - #define BASE_VIDIOCPRIVATE 192 - ---- a/cinelerra/videodevice.C -+++ b/cinelerra/videodevice.C -@@ -53,6 +53,7 @@ - - #include - #include -+#include - - KeepaliveThread::KeepaliveThread(VideoDevice *device) - : Thread() ---- a/libmpeg3/audio/ac3.c -+++ b/libmpeg3/audio/ac3.c -@@ -1,3 +1,4 @@ -+#include - #include - #include - ---- a/libmpeg3/audio/layer3.c -+++ b/libmpeg3/audio/layer3.c -@@ -4,6 +4,7 @@ - #include "tables.h" - - #include -+#include - #include - - struct gr_info_s ---- a/mplexlo/mplex.c -+++ b/mplexlo/mplex.c -@@ -1,6 +1,6 @@ - #include - #include -- -+#include - - #include "libmpeg3.h" - #include "mpeg3protos.h" ---- a/quicktime/graphics.c -+++ b/quicktime/graphics.c -@@ -1,5 +1,6 @@ - #include "graphics.h" - -+#include - #include - - /* Graphics acceleration routines */ ---- a/quicktime/libmjpeg.c -+++ b/quicktime/libmjpeg.c -@@ -17,6 +17,7 @@ - - #include - #include -+#include - #include "colormodels.h" - #include "libmjpeg.h" - ---- a/quicktime/qtpng.c -+++ b/quicktime/qtpng.c -@@ -1,6 +1,7 @@ - #include "colormodels.h" - #include "funcprotos.h" - #include -+#include - #include "quicktime.h" - #include "qtpng.h" - diff --git a/multimedia/cinelerra/patches/06-cinelerra-libav9.patch b/multimedia/cinelerra/patches/06-cinelerra-libav9.patch deleted file mode 100644 index 47a4d6f231..0000000000 --- a/multimedia/cinelerra/patches/06-cinelerra-libav9.patch +++ /dev/null @@ -1,93 +0,0 @@ -diff -urN cinelerra-20120707/cinelerra/ffmpeg.C /tmp/cinelerra-20120707/cinelerra/ffmpeg.C ---- cinelerra-20120707/cinelerra/ffmpeg.C 2013-06-22 18:07:43.632978553 +0200 -+++ /tmp/cinelerra-20120707/cinelerra/ffmpeg.C 2013-06-22 18:07:21.668979334 +0200 -@@ -32,9 +32,9 @@ - return 1; - } - -- context = avcodec_alloc_context(); -+ context = avcodec_alloc_context3(NULL); - -- if (avcodec_open(context, codec)) { -+ if (avcodec_open2(context, codec, NULL)) { - printf("FFMPEG::init avcodec_open() failed\n"); - } - -diff -urN cinelerra-20120707/cinelerra/fileac3.C /tmp/cinelerra-20120707/cinelerra/fileac3.C ---- cinelerra-20120707/cinelerra/fileac3.C 2013-06-22 18:07:43.632978553 +0200 -+++ /tmp/cinelerra-20120707/cinelerra/fileac3.C 2013-06-22 18:07:21.668979334 +0200 -@@ -91,11 +91,11 @@ - eprintf("codec not found.\n"); - return 1; - } -- codec_context = avcodec_alloc_context(); -+ codec_context = avcodec_alloc_context3(NULL); - codec_context->bit_rate = asset->ac3_bitrate * 1000; - codec_context->sample_rate = asset->sample_rate; - codec_context->channels = asset->channels; -- if(avcodec_open(codec_context, codec)) -+ if(avcodec_open2(codec_context, codec, NULL)) - { - eprintf("failed to open codec.\n"); - return 1; -diff -urN cinelerra-20120707/quicktime/mpeg4.c /tmp/cinelerra-20120707/quicktime/mpeg4.c ---- cinelerra-20120707/quicktime/mpeg4.c 2013-06-22 18:07:43.633978553 +0200 -+++ /tmp/cinelerra-20120707/quicktime/mpeg4.c 2013-06-22 18:07:21.690979334 +0200 -@@ -642,7 +642,7 @@ - return 1; - } - -- codec->encoder_context[current_field] = avcodec_alloc_context(); -+ codec->encoder_context[current_field] = avcodec_alloc_context3(NULL); - AVCodecContext *context = codec->encoder_context[current_field]; - - context->width = width_i; -@@ -676,8 +676,6 @@ - context->error_resilience = FF_ER_CAREFUL; - #elif LIBAVCODEC_VERSION_INT < ((54<<16)+(0<<8)+0) - context->error_recognition = FF_ER_CAREFUL; --#else -- context->err_recognition |= AV_EF_CAREFUL; - #endif - context->error_concealment = 3; - context->frame_skip_cmp = FF_CMP_DCTMAX; -diff -urN cinelerra-20120707/quicktime/qtffmpeg.c /tmp/cinelerra-20120707/quicktime/qtffmpeg.c ---- cinelerra-20120707/quicktime/qtffmpeg.c 2013-06-22 18:07:43.633978553 +0200 -+++ /tmp/cinelerra-20120707/quicktime/qtffmpeg.c 2013-06-22 18:07:21.690979334 +0200 -@@ -67,7 +67,7 @@ - return 0; - } - -- AVCodecContext *context = ptr->decoder_context[i] = avcodec_alloc_context(); -+ AVCodecContext *context = ptr->decoder_context[i] = avcodec_alloc_context3(NULL); - static char fake_data[] = { 0, 0, 0, 0, 0, 0, 0, 0 }; - context->width = ptr->width_i; - context->height = ptr->height_i; -@@ -93,8 +93,8 @@ - { - context->thread_count = cpus; - } -- if(avcodec_open(context, -- ptr->decoder[i]) < 0) -+ if(avcodec_open2(context, -+ ptr->decoder[i], NULL) < 0) - { - printf("quicktime_new_ffmpeg: avcodec_open failed.\n"); - quicktime_delete_ffmpeg(ptr); -diff -urN cinelerra-20120707/quicktime/wma.c /tmp/cinelerra-20120707/quicktime/wma.c ---- cinelerra-20120707/quicktime/wma.c 2013-06-22 18:07:43.634978553 +0200 -+++ /tmp/cinelerra-20120707/quicktime/wma.c 2013-06-22 18:07:21.690979334 +0200 -@@ -76,10 +76,10 @@ - printf("init_decode: avcodec_find_decoder returned NULL.\n"); - return 1; - } -- codec->decoder_context = avcodec_alloc_context(); -+ codec->decoder_context = avcodec_alloc_context3(NULL); - codec->decoder_context->sample_rate = trak->mdia.minf.stbl.stsd.table[0].sample_rate; - codec->decoder_context->channels = track_map->channels; -- if(avcodec_open(codec->decoder_context, codec->decoder) < 0) -+ if(avcodec_open2(codec->decoder_context, codec->decoder, NULL) < 0) - { - printf("init_decode: avcodec_open failed.\n"); - return 1; - diff --git a/multimedia/cinelerra/patches/07-cinelerra-ffmpeg2.patch b/multimedia/cinelerra/patches/07-cinelerra-ffmpeg2.patch deleted file mode 100644 index eb172d1ce4..0000000000 --- a/multimedia/cinelerra/patches/07-cinelerra-ffmpeg2.patch +++ /dev/null @@ -1,218 +0,0 @@ -https://bugs.gentoo.org/show_bug.cgi?id=479394 -By Helmut Jarausch - ---- a/cinelerra/ffmpeg.h.ORIG 2012-07-06 22:40:26.000000000 +0200 -+++ a/cinelerra/ffmpeg.h 2013-08-01 12:58:12.342474136 +0200 -@@ -26,7 +26,7 @@ - static int convert_cmodel_transfer(VFrame *frame_in,VFrame *frame_out); - static int init_picture_from_frame(AVPicture *picture, VFrame *frame); - -- static CodecID codec_id(char *codec_string); -+ static AVCodecID codec_id(char *codec_string); - - private: - static PixelFormat color_model_to_pix_fmt(int color_model); ---- a/cinelerra/ffmpeg.C.ORIG 2013-08-01 11:24:43.794419246 +0200 -+++ a/cinelerra/ffmpeg.C 2013-08-01 12:57:48.121473899 +0200 -@@ -25,7 +25,7 @@ - - avcodec_register_all(); - -- CodecID id = codec_id(codec_string); -+ AVCodecID id = codec_id(codec_string); - codec = avcodec_find_decoder(id); - if (codec == NULL) { - printf("FFMPEG::init no decoder for '%s'", codec_string); -@@ -51,7 +51,7 @@ - } - - --CodecID FFMPEG::codec_id(char *codec_string) { -+AVCodecID FFMPEG::codec_id(char *codec_string) { - #define CODEC_IS(x) (! strncmp(codec_string, x, 4)) - - if (CODEC_IS(QUICKTIME_DV) || ---- a/quicktime/ffmpeg/ffmpeg.c.ORIG 2012-07-06 22:40:26.000000000 +0200 -+++ a/quicktime/ffmpeg/ffmpeg.c 2013-08-01 12:57:59.025474005 +0200 -@@ -2663,7 +2663,7 @@ - return 0; - } - --static enum CodecID find_codec_or_die(const char *name, int type, int encoder) -+static enum AVCodecID find_codec_or_die(const char *name, int type, int encoder) - { - const char *codec_string = encoder ? "encoder" : "decoder"; - AVCodec *codec; ---- a/quicktime/ffmpeg/libavformat/electronicarts.c.ORIG 2012-07-06 22:40:26.000000000 +0200 -+++ a/quicktime/ffmpeg/libavformat/electronicarts.c 2013-08-01 13:00:57.855475755 +0200 -@@ -49,11 +49,11 @@ - typedef struct EaDemuxContext { - int big_endian; - -- enum CodecID video_codec; -+ enum AVCodecID video_codec; - AVRational time_base; - int video_stream_index; - -- enum CodecID audio_codec; -+ enum AVCodecID audio_codec; - int audio_stream_index; - int audio_frame_counter; - ---- a/quicktime/ffmpeg/libavformat/img2.c.ORIG 2012-07-06 22:40:26.000000000 +0200 -+++ a/quicktime/ffmpeg/libavformat/img2.c 2013-08-01 12:59:21.408474812 +0200 -@@ -34,7 +34,7 @@ - } VideoData; - - typedef struct { -- enum CodecID id; -+ enum AVCodecID id; - const char *str; - } IdStrMap; - -@@ -97,7 +97,7 @@ - } - return -1; - } --static enum CodecID av_str2id(const IdStrMap *tags, const char *str) -+static enum AVCodecID av_str2id(const IdStrMap *tags, const char *str) - { - str= strrchr(str, '.'); - if(!str) return CODEC_ID_NONE; -@@ -175,7 +175,7 @@ - return 0; - } - --enum CodecID av_guess_image2_codec(const char *filename){ -+enum AVCodecID av_guess_image2_codec(const char *filename){ - return av_str2id(img_tags, filename); - } - ---- a/quicktime/ffmpeg/libavformat/matroskadec.c.ORIG 2012-07-06 22:40:26.000000000 +0200 -+++ a/quicktime/ffmpeg/libavformat/matroskadec.c 2013-08-01 12:59:57.556475165 +0200 -@@ -2476,7 +2476,7 @@ - AVStream *st; - - for (i = 0; i < matroska->num_tracks; i++) { -- enum CodecID codec_id = CODEC_ID_NONE; -+ enum AVCodecID codec_id = CODEC_ID_NONE; - uint8_t *extradata = NULL; - int extradata_size = 0; - int extradata_offset = 0; -@@ -2495,7 +2495,7 @@ - } - } - -- /* Set the FourCC from the CodecID. */ -+ /* Set the FourCC from the AVCodecID. */ - /* This is the MS compatibility mode which stores a - * BITMAPINFOHEADER in the CodecPrivate. */ - if (!strcmp(track->codec_id, -@@ -2600,7 +2600,7 @@ - - if (codec_id == CODEC_ID_NONE) { - av_log(matroska->ctx, AV_LOG_INFO, -- "Unknown/unsupported CodecID %s.\n", -+ "Unknown/unsupported AVCodecID %s.\n", - track->codec_id); - } - ---- a/quicktime/ffmpeg/libavformat/matroska.h.ORIG 2012-07-06 22:40:26.000000000 +0200 -+++ a/quicktime/ffmpeg/libavformat/matroska.h 2013-08-01 13:00:22.218475407 +0200 -@@ -220,12 +220,12 @@ - - typedef struct CodecTags{ - char str[16]; -- enum CodecID id; -+ enum AVCodecID id; - }CodecTags; - - typedef struct CodecMime{ - char str[32]; -- enum CodecID id; -+ enum AVCodecID id; - }CodecMime; - - #define MATROSKA_CODEC_ID_VIDEO_VFW_FOURCC "V_MS/VFW/FOURCC" ---- a/quicktime/ffmpeg/libavformat/mov.c.ORIG 2012-07-06 22:40:26.000000000 +0200 -+++ a/quicktime/ffmpeg/libavformat/mov.c 2013-08-01 12:59:33.935474934 +0200 -@@ -678,7 +678,7 @@ - - for(pseudo_stream_id=0; pseudo_stream_idbit_rate = asset->ac3_bitrate * 1000; + codec_context->sample_rate = asset->sample_rate; + codec_context->channels = asset->channels; +- if(avcodec_open(codec_context, codec)) ++ if(avcodec_open2(codec_context, codec,NULL)) + { + eprintf("failed to open codec.\n"); + return 1; +diff --git a/quicktime/mpeg4.c b/quicktime/mpeg4.c +index 67bcab8..d78055e 100644 +--- a/quicktime/mpeg4.c ++++ b/quicktime/mpeg4.c +@@ -640,7 +640,7 @@ static int encode(quicktime_t *file, unsigned char **row_pointers, int track) + return 1; + } + +- codec->encoder_context[current_field] = avcodec_alloc_context(); ++ codec->encoder_context[current_field] = avcodec_alloc_context3(codec->encoder[current_field]); + AVCodecContext *context = codec->encoder_context[current_field]; + + context->width = width_i; +@@ -736,7 +736,7 @@ static int encode(quicktime_t *file, unsigned char **row_pointers, int track) + * codec->fix_bitrate, + * codec->quantizer); + */ +- avcodec_open(context, codec->encoder[current_field]); ++ avcodec_open2(context, codec->encoder[current_field],NULL); + + avcodec_get_frame_defaults(&codec->picture[current_field]); + +diff --git a/quicktime/qtffmpeg.c b/quicktime/qtffmpeg.c +index c808da7..522d23c 100644 +--- a/quicktime/qtffmpeg.c ++++ b/quicktime/qtffmpeg.c +@@ -67,7 +67,9 @@ quicktime_ffmpeg_t* quicktime_new_ffmpeg(int cpus, + return 0; + } + +- AVCodecContext *context = ptr->decoder_context[i] = avcodec_alloc_context(); ++ //AVCodecContext *context = ptr->decoder_context[i] = avcodec_alloc_context(); ++ AVCodecContext *context = avcodec_alloc_context3(ptr->decoder[i]); ++ ptr->decoder_context[i] = context; + static char fake_data[] = { 0, 0, 0, 0, 0, 0, 0, 0 }; + context->width = ptr->width_i; + context->height = ptr->height_i; +@@ -93,8 +95,7 @@ quicktime_ffmpeg_t* quicktime_new_ffmpeg(int cpus, + { + context->thread_count = cpus; + } +- if(avcodec_open(context, +- ptr->decoder[i]) < 0) ++ if(avcodec_open2(context, ptr->decoder[i], NULL) < 0) + { + printf("quicktime_new_ffmpeg: avcodec_open failed.\n"); + quicktime_delete_ffmpeg(ptr); +diff --git a/quicktime/wma.c b/quicktime/wma.c +index f38bdce..4be0274 100644 +--- a/quicktime/wma.c ++++ b/quicktime/wma.c +@@ -76,10 +76,10 @@ static int init_decode(quicktime_audio_map_t *track_map, + printf("init_decode: avcodec_find_decoder returned NULL.\n"); + return 1; + } +- codec->decoder_context = avcodec_alloc_context(); ++ codec->decoder_context = avcodec_alloc_context3(codec->decoder); + codec->decoder_context->sample_rate = trak->mdia.minf.stbl.stsd.table[0].sample_rate; + codec->decoder_context->channels = track_map->channels; +- if(avcodec_open(codec->decoder_context, codec->decoder) < 0) ++ if(avcodec_open2(codec->decoder_context, codec->decoder,NULL) < 0) + { + printf("init_decode: avcodec_open failed.\n"); + return 1; diff --git a/multimedia/cinelerra/patches/cinelerra-cv-ffmpeg_api2.2.patch b/multimedia/cinelerra/patches/cinelerra-cv-ffmpeg_api2.2.patch new file mode 100644 index 0000000000..2def7089b2 --- /dev/null +++ b/multimedia/cinelerra/patches/cinelerra-cv-ffmpeg_api2.2.patch @@ -0,0 +1,200 @@ +diff --git a/cinelerra/ffmpeg.C b/cinelerra/ffmpeg.C +index 6ab6047..b762d46 100644 +--- a/cinelerra/ffmpeg.C ++++ b/cinelerra/ffmpeg.C +@@ -2,7 +2,7 @@ + + #ifdef HAVE_SWSCALER + extern "C" { +-#include ++#include + } + #endif + +@@ -23,10 +23,9 @@ FFMPEG::FFMPEG(Asset *asset) { + + int FFMPEG::init(char *codec_string) { + +- avcodec_init(); + avcodec_register_all(); + +- CodecID id = codec_id(codec_string); ++ AVCodecID id = codec_id(codec_string); + codec = avcodec_find_decoder(id); + if (codec == NULL) { + printf("FFMPEG::init no decoder for '%s'", codec_string); +@@ -52,7 +51,7 @@ FFMPEG::~FFMPEG() { + } + + +-CodecID FFMPEG::codec_id(char *codec_string) { ++AVCodecID FFMPEG::codec_id(char *codec_string) { + #define CODEC_IS(x) (! strncmp(codec_string, x, 4)) + + if (CODEC_IS(QUICKTIME_DV) || +@@ -364,12 +363,15 @@ int FFMPEG::decode(uint8_t *data, long data_size, VFrame *frame_out) { + + // 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"); +diff --git a/cinelerra/ffmpeg.h b/cinelerra/ffmpeg.h +index 69c9956..dc7174e 100644 +--- a/cinelerra/ffmpeg.h ++++ b/cinelerra/ffmpeg.h +@@ -26,7 +26,7 @@ class FFMPEG + static int convert_cmodel_transfer(VFrame *frame_in,VFrame *frame_out); + static int init_picture_from_frame(AVPicture *picture, VFrame *frame); + +- static CodecID codec_id(char *codec_string); ++ static AVCodecID codec_id(char *codec_string); + + private: + static PixelFormat color_model_to_pix_fmt(int color_model); +diff --git a/cinelerra/fileac3.C b/cinelerra/fileac3.C +index a1ef61e..e56705f 100644 +--- a/cinelerra/fileac3.C ++++ b/cinelerra/fileac3.C +@@ -84,7 +84,6 @@ int FileAC3::open_file(int rd, int wr) + + if(wr) + { +- avcodec_init(); + avcodec_register_all(); + codec = avcodec_find_encoder(CODEC_ID_AC3); + if(!codec) +diff --git a/quicktime/mpeg4.c b/quicktime/mpeg4.c +index 81cb72b..67bcab8 100644 +--- a/quicktime/mpeg4.c ++++ b/quicktime/mpeg4.c +@@ -629,7 +629,6 @@ static int encode(quicktime_t *file, unsigned char **row_pointers, int track) + if(!ffmpeg_initialized) + { + ffmpeg_initialized = 1; +- avcodec_init(); + avcodec_register_all(); + } + +@@ -674,7 +673,7 @@ static int encode(quicktime_t *file, unsigned char **row_pointers, int track) + #if LIBAVCODEC_VERSION_INT < ((52<<16)+(0<<8)+0) + context->error_resilience = FF_ER_CAREFUL; + #else +- context->error_recognition = FF_ER_CAREFUL; ++ context->err_recognition = AV_EF_CRCCHECK; + #endif + context->error_concealment = 3; + context->frame_skip_cmp = FF_CMP_DCTMAX; +@@ -699,7 +698,6 @@ static int encode(quicktime_t *file, unsigned char **row_pointers, int track) + context->profile= FF_PROFILE_UNKNOWN; + context->rc_buffer_aggressivity = 1.0; + context->level= FF_LEVEL_UNKNOWN; +- context->flags |= CODEC_FLAG_H263P_UMV; + context->flags |= CODEC_FLAG_AC_PRED; + + // All the forbidden settings can be extracted from libavcodec/mpegvideo.c of ffmpeg... +@@ -717,10 +715,8 @@ static int encode(quicktime_t *file, unsigned char **row_pointers, int track) + (codec->ffmpeg_id == CODEC_ID_MPEG4 || + codec->ffmpeg_id == CODEC_ID_MPEG1VIDEO || + codec->ffmpeg_id == CODEC_ID_MPEG2VIDEO || +- codec->ffmpeg_id == CODEC_ID_H263P || +- codec->ffmpeg_id == CODEC_FLAG_H263P_SLICE_STRUCT)) ++ codec->ffmpeg_id == CODEC_ID_H263P)) + { +- avcodec_thread_init(context, file->cpus); + context->thread_count = file->cpus; + } + +diff --git a/quicktime/qtffmpeg.c b/quicktime/qtffmpeg.c +index b384a83..c808da7 100644 +--- a/quicktime/qtffmpeg.c ++++ b/quicktime/qtffmpeg.c +@@ -54,7 +54,6 @@ quicktime_ffmpeg_t* quicktime_new_ffmpeg(int cpus, + if(!ffmpeg_initialized) + { + ffmpeg_initialized = 1; +- avcodec_init(); + avcodec_register_all(); + } + +@@ -90,10 +89,8 @@ quicktime_ffmpeg_t* quicktime_new_ffmpeg(int cpus, + (ffmpeg_id == CODEC_ID_MPEG4 || + ffmpeg_id == CODEC_ID_MPEG1VIDEO || + ffmpeg_id == CODEC_ID_MPEG2VIDEO || +- ffmpeg_id == CODEC_ID_H263P || +- ffmpeg_id == CODEC_FLAG_H263P_SLICE_STRUCT)) ++ ffmpeg_id == CODEC_ID_H263P)) + { +- avcodec_thread_init(context, cpus); + context->thread_count = cpus; + } + if(avcodec_open(context, +@@ -183,6 +180,7 @@ static int decode_wrapper(quicktime_t *file, + + if(!result) + { ++ AVPacket pkt; + + + // No way to determine if there was an error based on nonzero status. +@@ -191,11 +189,13 @@ static int decode_wrapper(quicktime_t *file, + 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); + + + +diff --git a/quicktime/wma.c b/quicktime/wma.c +index c045741..f38bdce 100644 +--- a/quicktime/wma.c ++++ b/quicktime/wma.c +@@ -67,7 +67,6 @@ static int init_decode(quicktime_audio_map_t *track_map, + if(!ffmpeg_initialized) + { + ffmpeg_initialized = 1; +- avcodec_init(); + avcodec_register_all(); + } + +@@ -194,12 +193,16 @@ printf("decode 2 %x %llx %llx\n", chunk_size, chunk_offset, chunk_offset + chunk + codec->packet_buffer, + chunk_size); + #else ++#define AVCODEC_MAX_AUDIO_FRAME_SIZE 192000 + 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); diff --git a/multimedia/cinelerra/slack-desc b/multimedia/cinelerra/slack-desc index 60cd2cad5b..bbeb099ad8 100644 --- a/multimedia/cinelerra/slack-desc +++ b/multimedia/cinelerra/slack-desc @@ -8,12 +8,12 @@ |-----handy-ruler------------------------------------------------------| cinelerra: cinelerra (GNU/Linux Video/Audio Studio) cinelerra: -cinelerra: Cinelerra is the most advanced non-linear video editor +cinelerra: Cinelerra CV is the most advanced non-linear video editor cinelerra: and compositor for Linux. It does primarily three main cinelerra: things: capturing, compositing, and editing audio and cinelerra: video with sample level accuracy. cinelerra: -cinelerra: Homepage: http://cinelerra.org/ +cinelerra: Homepage: http://cinelerra-cv.org/ cinelerra: cinelerra: cinelerra: -- cgit v1.2.3