multimedia/cinelerra: Updated for version cv_2.3.
Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
This commit is contained in:
parent
a9902270f2
commit
9c6ab49f59
|
@ -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.
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
# Slackware build script for cinelerra
|
||||
|
||||
# Copyright 2011 by Giovanne Castro, Campinas, Sao Paulo, Brazil <giovannefc@ig.com.br>
|
||||
# Copyright 2015 by Danny Schmarsel <danny@schmarsel.de>
|
||||
# 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
|
||||
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
|
@ -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);
|
|
@ -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();
|
||||
}
|
||||
|
|
@ -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 <sys/ioctl.h>
|
||||
#include <sys/mman.h>
|
||||
#include <unistd.h>
|
||||
+#include <string.h>
|
||||
+#include <strings.h>
|
||||
|
||||
#define BASE_VIDIOCPRIVATE 192
|
||||
|
||||
--- a/cinelerra/videodevice.C
|
||||
+++ b/cinelerra/videodevice.C
|
||||
@@ -53,6 +53,7 @@
|
||||
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
+#include <string.h>
|
||||
|
||||
KeepaliveThread::KeepaliveThread(VideoDevice *device)
|
||||
: Thread()
|
||||
--- a/libmpeg3/audio/ac3.c
|
||||
+++ b/libmpeg3/audio/ac3.c
|
||||
@@ -1,3 +1,4 @@
|
||||
+#include <stdlib.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
|
||||
--- a/libmpeg3/audio/layer3.c
|
||||
+++ b/libmpeg3/audio/layer3.c
|
||||
@@ -4,6 +4,7 @@
|
||||
#include "tables.h"
|
||||
|
||||
#include <stdio.h>
|
||||
+#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
struct gr_info_s
|
||||
--- a/mplexlo/mplex.c
|
||||
+++ b/mplexlo/mplex.c
|
||||
@@ -1,6 +1,6 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
-
|
||||
+#include <string.h>
|
||||
|
||||
#include "libmpeg3.h"
|
||||
#include "mpeg3protos.h"
|
||||
--- a/quicktime/graphics.c
|
||||
+++ b/quicktime/graphics.c
|
||||
@@ -1,5 +1,6 @@
|
||||
#include "graphics.h"
|
||||
|
||||
+#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
/* Graphics acceleration routines */
|
||||
--- a/quicktime/libmjpeg.c
|
||||
+++ b/quicktime/libmjpeg.c
|
||||
@@ -17,6 +17,7 @@
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
+#include <string.h>
|
||||
#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 <png.h>
|
||||
+#include <string.h>
|
||||
#include "quicktime.h"
|
||||
#include "qtpng.h"
|
||||
|
|
@ -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;
|
||||
|
|
@ -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_id<entries; pseudo_stream_id++) {
|
||||
//Parsing Sample description table
|
||||
- enum CodecID id;
|
||||
+ enum AVCodecID id;
|
||||
int dref_id;
|
||||
MOV_atom_t a = { 0, 0, 0 };
|
||||
offset_t start_pos = url_ftell(pb);
|
||||
--- a/quicktime/ffmpeg/libavformat/mxf.c.ORIG 2012-07-06 22:40:26.000000000 +0200
|
||||
+++ a/quicktime/ffmpeg/libavformat/mxf.c 2013-08-01 12:59:12.025474720 +0200
|
||||
@@ -157,7 +157,7 @@
|
||||
typedef struct {
|
||||
UID uid;
|
||||
unsigned matching_len;
|
||||
- enum CodecID id;
|
||||
+ enum AVCodecID id;
|
||||
} MXFCodecUL;
|
||||
|
||||
typedef struct {
|
||||
--- a/quicktime/ffmpeg/libavformat/riff.h.ORIG 2012-07-06 22:40:26.000000000 +0200
|
||||
+++ a/quicktime/ffmpeg/libavformat/riff.h 2013-08-01 12:59:45.950475052 +0200
|
||||
@@ -48,7 +48,7 @@
|
||||
extern const AVCodecTag codec_wav_tags[];
|
||||
|
||||
unsigned int codec_get_tag(const AVCodecTag *tags, int id);
|
||||
-enum CodecID codec_get_id(const AVCodecTag *tags, unsigned int tag);
|
||||
+enum AVCodecID codec_get_id(const AVCodecTag *tags, unsigned int tag);
|
||||
void ff_parse_specific_params(AVCodecContext *stream, int *au_rate, int *au_ssize, int *au_scale);
|
||||
|
||||
#endif /* FFMPEG_RIFF_H */
|
||||
--- a/quicktime/ffmpeg/libavformat/rtp.c.ORIG 2012-07-06 22:40:26.000000000 +0200
|
||||
+++ a/quicktime/ffmpeg/libavformat/rtp.c 2013-08-01 12:59:01.778474619 +0200
|
||||
@@ -40,7 +40,7 @@
|
||||
int pt;
|
||||
const char enc_name[6];
|
||||
enum CodecType codec_type;
|
||||
- enum CodecID codec_id;
|
||||
+ enum AVCodecID codec_id;
|
||||
int clock_rate;
|
||||
int audio_channels;
|
||||
} AVRtpPayloadTypes[]=
|
||||
@@ -120,7 +120,7 @@
|
||||
return "";
|
||||
}
|
||||
|
||||
-enum CodecID ff_rtp_codec_id(const char *buf, enum CodecType codec_type)
|
||||
+enum AVCodecID ff_rtp_codec_id(const char *buf, enum CodecType codec_type)
|
||||
{
|
||||
int i;
|
||||
|
||||
--- a/quicktime/ffmpeg/libavformat/rtp_internal.h.ORIG 2012-07-06 22:40:26.000000000 +0200
|
||||
+++ a/quicktime/ffmpeg/libavformat/rtp_internal.h 2013-08-01 13:00:09.147475279 +0200
|
||||
@@ -61,7 +61,7 @@
|
||||
// fields from AVRtpDynamicPayloadType_s
|
||||
const char enc_name[50]; /* XXX: still why 50 ? ;-) */
|
||||
enum CodecType codec_type;
|
||||
- enum CodecID codec_id;
|
||||
+ enum AVCodecID codec_id;
|
||||
|
||||
// may be null
|
||||
int (*parse_sdp_a_line) (AVStream * stream,
|
||||
@@ -123,7 +123,7 @@
|
||||
|
||||
void ff_rtp_send_data(AVFormatContext *s1, const uint8_t *buf1, int len, int m);
|
||||
const char *ff_rtp_enc_name(int payload_type);
|
||||
-enum CodecID ff_rtp_codec_id(const char *buf, enum CodecType codec_type);
|
||||
+enum AVCodecID ff_rtp_codec_id(const char *buf, enum CodecType codec_type);
|
||||
|
||||
void av_register_rtp_dynamic_payload_handlers(void);
|
||||
|
||||
--- a/quicktime/wma.h.ORIG 2012-07-06 22:40:26.000000000 +0200
|
||||
+++ a/quicktime/wma.h 2013-08-01 13:11:46.431482103 +0200
|
||||
@@ -3,5 +3,6 @@
|
||||
|
||||
extern void quicktime_init_codec_wmav1(quicktime_audio_map_t *);
|
||||
extern void quicktime_init_codec_wmav2(quicktime_audio_map_t *);
|
||||
+#define AVCODEC_MAX_AUDIO_FRAME_SIZE 192000
|
||||
|
||||
#endif
|
|
@ -0,0 +1,98 @@
|
|||
diff --git a/cinelerra/ffmpeg.C b/cinelerra/ffmpeg.C
|
||||
index b762d46..53ad7a1 100644
|
||||
--- a/cinelerra/ffmpeg.C
|
||||
+++ b/cinelerra/ffmpeg.C
|
||||
@@ -32,9 +32,9 @@ int FFMPEG::init(char *codec_string) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
- context = avcodec_alloc_context();
|
||||
+ context = avcodec_alloc_context3(codec);
|
||||
|
||||
- if (avcodec_open(context, codec)) {
|
||||
+ if (avcodec_open2(context, codec,NULL)) {
|
||||
printf("FFMPEG::init avcodec_open() failed\n");
|
||||
}
|
||||
|
||||
diff --git a/cinelerra/fileac3.C b/cinelerra/fileac3.C
|
||||
index e56705f..119c2d5 100644
|
||||
--- a/cinelerra/fileac3.C
|
||||
+++ b/cinelerra/fileac3.C
|
||||
@@ -91,11 +91,11 @@ int FileAC3::open_file(int rd, int wr)
|
||||
eprintf("codec not found.\n");
|
||||
return 1;
|
||||
}
|
||||
- codec_context = avcodec_alloc_context();
|
||||
+ codec_context = avcodec_alloc_context3(codec);
|
||||
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 --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;
|
|
@ -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 <swscale.h>
|
||||
+#include <libswscale/swscale.h>
|
||||
}
|
||||
#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);
|
|
@ -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:
|
||||
|
|
Loading…
Reference in New Issue