rebuilt with debug package and patches from Arch linux [release 1.2.4-2mamba;Sat Dec 12 2020]

This commit is contained in:
Silvan Calarco 2024-01-06 05:31:42 +01:00
parent 5619c8e8f6
commit 76639c5d22
9 changed files with 1712 additions and 37 deletions

View File

@ -0,0 +1,25 @@
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=855099
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-2399
diff --git a/src/util.c b/src/util.c
index d8dc3c3..9422fc5 100644
--- a/src/util.c
+++ b/src/util.c
@@ -340,9 +340,14 @@ int64_t quicktime_byte_position(quicktime_t *file)
void quicktime_read_pascal(quicktime_t *file, char *data)
{
- char len = quicktime_read_char(file);
- quicktime_read_data(file, (uint8_t*)data, len);
- data[(int)len] = 0;
+ int len = quicktime_read_char(file);
+ if ((len > 0) && (len < 256)) {
+ /* data[] is expected to be 256 bytes long */
+ quicktime_read_data(file, (uint8_t*)data, len);
+ data[len] = 0;
+ } else {
+ data[0] = 0;
+ }
}
void quicktime_write_pascal(quicktime_t *file, char *data)

View File

@ -0,0 +1,151 @@
From: Burkhard Plaum <plaum@ipf.uni-stuttgart.de>
Origin: https://sourceforge.net/p/libquicktime/mailman/libquicktime-devel/?viewmonth=201706
Hi,
I committed some (mostly trivial) updates to CVS. The following CVE's
are fixed and/or no longer reproducible:
CVE-2017-9122
CVE-2017-9123
CVE-2017-9124
CVE-2017-9125
CVE-2017-9126
CVE-2017-9127
CVE-2017-9128
I was a bit surprised that one simple sanity check fixes a whole bunch of files.
So it could be, that the problems are still there, but better hidden since the
critical code isn't executed anymore with the sample files I got.
If someone encounters more crashes, feel free to report them.
Burkhard
--- a/include/lqt_funcprotos.h
+++ b/include/lqt_funcprotos.h
@@ -1345,9 +1345,9 @@ int quicktime_write_int32_le(quicktime_t
int quicktime_write_char32(quicktime_t *file, char *string);
float quicktime_read_fixed16(quicktime_t *file);
int quicktime_write_fixed16(quicktime_t *file, float number);
-unsigned long quicktime_read_uint32(quicktime_t *file);
-long quicktime_read_int32(quicktime_t *file);
-long quicktime_read_int32_le(quicktime_t *file);
+uint32_t quicktime_read_uint32(quicktime_t *file);
+int32_t quicktime_read_int32(quicktime_t *file);
+int32_t quicktime_read_int32_le(quicktime_t *file);
int64_t quicktime_read_int64(quicktime_t *file);
int64_t quicktime_read_int64_le(quicktime_t *file);
long quicktime_read_int24(quicktime_t *file);
--- a/src/atom.c
+++ b/src/atom.c
@@ -131,6 +131,9 @@ int quicktime_atom_read_header(quicktime
atom->size = read_size64(header);
atom->end = atom->start + atom->size;
}
+/* Avoid broken files */
+ if(atom->end > file->total_length)
+ result = 1;
}
--- a/src/lqt_quicktime.c
+++ b/src/lqt_quicktime.c
@@ -1788,8 +1788,8 @@ int quicktime_read_info(quicktime_t *fil
quicktime_set_position(file, start_position);
free(temp);
- quicktime_read_moov(file, &file->moov, &leaf_atom);
- got_header = 1;
+ if(!quicktime_read_moov(file, &file->moov, &leaf_atom))
+ got_header = 1;
}
else
quicktime_atom_skip(file, &leaf_atom);
--- a/src/moov.c
+++ b/src/moov.c
@@ -218,7 +218,8 @@ int quicktime_read_moov(quicktime_t *fil
if(quicktime_atom_is(&leaf_atom, "trak"))
{
quicktime_trak_t *trak = quicktime_add_trak(file);
- quicktime_read_trak(file, trak, &leaf_atom);
+ if(quicktime_read_trak(file, trak, &leaf_atom))
+ return 1;
}
else
if(quicktime_atom_is(&leaf_atom, "udta"))
--- a/src/trak.c
+++ b/src/trak.c
@@ -269,6 +269,14 @@ int quicktime_read_trak(quicktime_t *fil
else quicktime_atom_skip(file, &leaf_atom);
} while(quicktime_position(file) < trak_atom->end);
+ /* Do some sanity checks to prevent later crashes */
+ if(trak->mdia.minf.is_video || trak->mdia.minf.is_video)
+ {
+ if(!trak->mdia.minf.stbl.stsc.table ||
+ !trak->mdia.minf.stbl.stco.table)
+ return 1;
+ }
+
#if 1
if(trak->mdia.minf.is_video &&
quicktime_match_32(trak->mdia.minf.stbl.stsd.table[0].format, "drac"))
--- a/src/util.c
+++ b/src/util.c
@@ -647,10 +647,10 @@ int quicktime_write_fixed16(quicktime_t
return quicktime_write_data(file, data, 2);
}
-unsigned long quicktime_read_uint32(quicktime_t *file)
+uint32_t quicktime_read_uint32(quicktime_t *file)
{
- unsigned long result;
- unsigned long a, b, c, d;
+ uint32_t result;
+ uint32_t a, b, c, d;
uint8_t data[4];
quicktime_read_data(file, data, 4);
@@ -663,10 +663,10 @@ unsigned long quicktime_read_uint32(quic
return result;
}
-long quicktime_read_int32(quicktime_t *file)
+int32_t quicktime_read_int32(quicktime_t *file)
{
- unsigned long result;
- unsigned long a, b, c, d;
+ uint32_t result;
+ uint32_t a, b, c, d;
uint8_t data[4];
quicktime_read_data(file, data, 4);
@@ -676,13 +676,13 @@ long quicktime_read_int32(quicktime_t *f
d = data[3];
result = (a << 24) | (b << 16) | (c << 8) | d;
- return (long)result;
+ return (int32_t)result;
}
-long quicktime_read_int32_le(quicktime_t *file)
+int32_t quicktime_read_int32_le(quicktime_t *file)
{
- unsigned long result;
- unsigned long a, b, c, d;
+ uint32_t result;
+ uint32_t a, b, c, d;
uint8_t data[4];
quicktime_read_data(file, data, 4);
@@ -692,7 +692,7 @@ long quicktime_read_int32_le(quicktime_t
d = data[3];
result = (d << 24) | (c << 16) | (b << 8) | a;
- return (long)result;
+ return (int32_t)result;
}
int64_t quicktime_read_int64(quicktime_t *file)

View File

@ -0,0 +1,86 @@
diff -ruN a/configure.ac b/configure.ac
--- a/configure.ac 2012-03-29 21:44:28.000000000 +0200
+++ b/configure.ac 2020-02-09 18:27:31.599127781 +0100
@@ -728,82 +728,9 @@
if test "x$with_faad2" != "xno"; then
-OLD_CFLAGS=$CFLAGS
-OLD_LIBS=$LIBS
-
CFLAGS="$CFLAGS"
LIBS="$LIBS -lfaad -lm"
-AC_MSG_CHECKING(for neaacdec.h usability for faad2)
-
-
-AC_TRY_RUN([
- #include <neaacdec.h>
- #include <stdio.h>
- main()
- {
- int faad_major;
- int faad_minor;
- faacDecHandle dec;
-
- if(sscanf(FAAD2_VERSION, "%d.%d", &faad_major, &faad_minor) < 2)
- return -1;
- dec = faacDecOpen();
- if(!dec)
- return -1;
- return 0;
- }
- ],
- [
- # program could be run
- have_faad2="true"
- AC_MSG_RESULT(yes)
- FAAD2_CFLAGS=$CFLAGS
- FAAD2_LIBS=$LIBS
- AC_DEFINE(HAVE_NEAACDEC_H)
- ],
- # program could not be run
- AC_MSG_RESULT(no)
-)
-
-if test "x$have_faad2" != "xtrue"; then
-
-AC_MSG_CHECKING(for faad.h usability for faad2)
-
-AC_TRY_RUN([
- #include <faad.h>
- #include <stdio.h>
- main()
- {
- int faad_major;
- int faad_minor;
- faacDecHandle dec;
-
- if(sscanf(FAAD2_VERSION, "%d.%d", &faad_major, &faad_minor) < 2)
- return -1;
- dec = faacDecOpen();
- if(!dec)
- return -1;
- return 0;
- }
- ],
- [
- # program could be run
- have_faad2="true"
- AC_MSG_RESULT(yes)
- FAAD2_CFLAGS=$CFLAGS
- FAAD2_LIBS=$LIBS
-
-
- ],
- # program could not be run
- AC_MSG_RESULT(no)
-)
-
-fi
-
-CFLAGS=$OLD_CFLAGS
-LIBS=$OLD_LIBS
fi

View File

@ -0,0 +1,651 @@
diff -ruN a/plugins/ffmpeg/audio.c b/plugins/ffmpeg/audio.c
--- a/plugins/ffmpeg/audio.c 2012-03-29 21:44:28.000000000 +0200
+++ b/plugins/ffmpeg/audio.c 2020-02-09 19:08:03.716063846 +0100
@@ -626,7 +626,7 @@
{
/* If the codec is mp3, make sure to decode the very last frame */
- if((codec->avctx->codec_id == CODEC_ID_MP3) &&
+ if((codec->avctx->codec_id == AV_CODEC_ID_MP3) &&
(codec->bytes_in_chunk_buffer >= 4))
{
if(!mpa_decode_header(&mph, codec->chunk_buffer, (const mpa_header*)0))
@@ -695,7 +695,7 @@
/* Some really broken mp3 files have the header bytes split across 2 chunks */
- if(codec->avctx->codec_id == CODEC_ID_MP3)
+ if(codec->avctx->codec_id == AV_CODEC_ID_MP3)
{
if(codec->bytes_in_chunk_buffer < 4)
{
@@ -806,7 +806,7 @@
if(bytes_decoded < 0)
{
- if(codec->avctx->codec_id == CODEC_ID_MP3)
+ if(codec->avctx->codec_id == AV_CODEC_ID_MP3)
{
/* For mp3, bytes_decoded < 0 means, that the frame should be muted */
memset(&codec->sample_buffer[track_map->channels * (codec->sample_buffer_end -
@@ -866,8 +866,8 @@
quicktime_audio_map_t *track_map = &file->atracks[track];
quicktime_ffmpeg_audio_codec_t *codec = track_map->codec->priv;
- if((codec->decoder->id == CODEC_ID_MP2) ||
- (codec->decoder->id == CODEC_ID_MP3))
+ if((codec->decoder->id == AV_CODEC_ID_MP2) ||
+ (codec->decoder->id == AV_CODEC_ID_MP3))
{
mpa_header h;
uint32_t header;
@@ -909,7 +909,7 @@
else
track_map->ci.bitrate = h.bitrate;
}
- else if(codec->decoder->id == CODEC_ID_AC3)
+ else if(codec->decoder->id == AV_CODEC_ID_AC3)
{
a52_header h;
uint8_t * ptr;
@@ -986,7 +986,7 @@
#endif
/* Some codecs need extra stuff */
- if(codec->decoder->id == CODEC_ID_ALAC)
+ if(codec->decoder->id == AV_CODEC_ID_ALAC)
{
header = quicktime_wave_get_user_atom(track_map->track, "alac", &header_len);
if(header)
@@ -995,7 +995,7 @@
codec->avctx->extradata_size = header_len;
}
}
- if(codec->decoder->id == CODEC_ID_QDM2)
+ if(codec->decoder->id == AV_CODEC_ID_QDM2)
{
header = quicktime_wave_get_user_atom(track_map->track, "QDCA", &header_len);
if(header)
@@ -1495,9 +1495,9 @@
codec_base->decode_audio = lqt_ffmpeg_decode_audio;
codec_base->set_parameter = set_parameter;
- if((decoder->id == CODEC_ID_MP3) || (decoder->id == CODEC_ID_MP2))
+ if((decoder->id == AV_CODEC_ID_MP3) || (decoder->id == AV_CODEC_ID_MP2))
codec_base->read_packet = read_packet_mpa;
- else if(decoder->id == CODEC_ID_AC3)
+ else if(decoder->id == AV_CODEC_ID_AC3)
{
codec_base->write_packet = write_packet_ac3;
codec_base->read_packet = read_packet_ac3;
diff -ruN a/plugins/ffmpeg/lqt_ffmpeg.c b/plugins/ffmpeg/lqt_ffmpeg.c
--- a/plugins/ffmpeg/lqt_ffmpeg.c 2012-02-15 20:48:30.000000000 +0100
+++ b/plugins/ffmpeg/lqt_ffmpeg.c 2020-02-09 19:07:17.929831925 +0100
@@ -386,7 +386,7 @@
struct CODECIDMAP codecidmap_v[] =
{
{
- .id = CODEC_ID_MPEG1VIDEO,
+ .id = AV_CODEC_ID_MPEG1VIDEO,
.index = -1,
.encoder = NULL,
.decoder = NULL,
@@ -397,7 +397,7 @@
.wav_ids = { LQT_WAV_ID_NONE }
},
{
- .id = CODEC_ID_MPEG4,
+ .id = AV_CODEC_ID_MPEG4,
.index = -1,
.encoder = NULL,
.decoder = NULL,
@@ -415,7 +415,7 @@
.compression_id = LQT_COMPRESSION_MPEG4_ASP,
},
{
- .id = CODEC_ID_MSMPEG4V1,
+ .id = AV_CODEC_ID_MSMPEG4V1,
.index = -1,
.encoder = NULL,
.decoder = NULL,
@@ -426,7 +426,7 @@
.wav_ids = { LQT_WAV_ID_NONE },
},
{
- .id = CODEC_ID_MSMPEG4V2,
+ .id = AV_CODEC_ID_MSMPEG4V2,
.index = -1,
.encoder = NULL,
.decoder = NULL,
@@ -437,7 +437,7 @@
.wav_ids = { LQT_WAV_ID_NONE },
},
{
- .id = CODEC_ID_MSMPEG4V3,
+ .id = AV_CODEC_ID_MSMPEG4V3,
.index = -1,
.encoder = NULL,
.decoder = NULL,
@@ -453,7 +453,7 @@
.do_encode = 1,
},
{
- .id = CODEC_ID_MSMPEG4V3,
+ .id = AV_CODEC_ID_MSMPEG4V3,
.index = -1,
.encoder = NULL,
.decoder = NULL,
@@ -468,7 +468,7 @@
},
#if 0
{
- .id = CODEC_ID_WMV1,
+ .id = AV_CODEC_ID_WMV1,
.index = -1,
.encoder = NULL,
.decoder = NULL,
@@ -481,7 +481,7 @@
},
#endif
{
- .id = CODEC_ID_H263,
+ .id = AV_CODEC_ID_H263,
.index = -1,
.encoder = NULL,
.decoder = NULL,
@@ -493,7 +493,7 @@
.compatibility_flags = LQT_FILE_QT_OLD | LQT_FILE_QT | LQT_FILE_MP4 | LQT_FILE_3GP,
},
{
- .id = CODEC_ID_H263,
+ .id = AV_CODEC_ID_H263,
.index = -1,
.encoder = NULL,
.decoder = NULL,
@@ -508,7 +508,7 @@
.do_encode = 1,
},
{
- .id = CODEC_ID_H264,
+ .id = AV_CODEC_ID_H264,
.index = -1,
.encoder = NULL,
.decoder = NULL,
@@ -519,7 +519,7 @@
.wav_ids = { LQT_WAV_ID_NONE },
},
{
- .id = CODEC_ID_H263P,
+ .id = AV_CODEC_ID_H263P,
.index = -1,
.encoder = NULL,
.decoder = NULL,
@@ -533,7 +533,7 @@
.do_encode = 1,
},
{
- .id = CODEC_ID_H263I,
+ .id = AV_CODEC_ID_H263I,
.index = -1,
.encoder = NULL,
.decoder = NULL,
@@ -544,7 +544,7 @@
.wav_ids = { LQT_WAV_ID_NONE },
},
{
- .id = CODEC_ID_SVQ1,
+ .id = AV_CODEC_ID_SVQ1,
.index = -1,
.encoder = NULL,
.decoder = NULL,
@@ -555,7 +555,7 @@
.wav_ids = { LQT_WAV_ID_NONE },
},
{
- .id = CODEC_ID_SVQ3,
+ .id = AV_CODEC_ID_SVQ3,
.index = -1,
.encoder = NULL,
.decoder = NULL,
@@ -566,7 +566,7 @@
.wav_ids = { LQT_WAV_ID_NONE },
},
{
- .id = CODEC_ID_MJPEG,
+ .id = AV_CODEC_ID_MJPEG,
.index = -1,
.encoder = NULL,
.decoder = NULL,
@@ -580,7 +580,7 @@
.do_encode = 1,
},
{
- .id = CODEC_ID_MJPEGB,
+ .id = AV_CODEC_ID_MJPEGB,
.index = -1,
.encoder = NULL,
.decoder = NULL,
@@ -594,7 +594,7 @@
},
#if LIBAVCODEC_BUILD >= 3346688
{
- .id = CODEC_ID_TARGA,
+ .id = AV_CODEC_ID_TARGA,
.index = -1,
.encoder = NULL,
.decoder = NULL,
@@ -606,7 +606,7 @@
#endif
#if LIBAVCODEC_BUILD >= 3347456
{
- .id = CODEC_ID_TIFF,
+ .id = AV_CODEC_ID_TIFF,
.index = -1,
.encoder = NULL,
.decoder = NULL,
@@ -617,7 +617,7 @@
},
#endif
{
- .id = CODEC_ID_8BPS,
+ .id = AV_CODEC_ID_8BPS,
.index = -1,
.encoder = NULL,
.decoder = NULL,
@@ -627,7 +627,7 @@
.wav_ids = { LQT_WAV_ID_NONE },
},
{
- .id = CODEC_ID_INDEO3,
+ .id = AV_CODEC_ID_INDEO3,
.index = -1,
.encoder = NULL,
.decoder = NULL,
@@ -638,7 +638,7 @@
.wav_ids = { LQT_WAV_ID_NONE },
},
{
- .id = CODEC_ID_RPZA,
+ .id = AV_CODEC_ID_RPZA,
.index = -1,
.encoder = NULL,
.decoder = NULL,
@@ -648,7 +648,7 @@
.wav_ids = { LQT_WAV_ID_NONE },
},
{
- .id = CODEC_ID_SMC,
+ .id = AV_CODEC_ID_SMC,
.index = -1,
.encoder = NULL,
.decoder = NULL,
@@ -658,7 +658,7 @@
.wav_ids = { LQT_WAV_ID_NONE },
},
{
- .id = CODEC_ID_CINEPAK,
+ .id = AV_CODEC_ID_CINEPAK,
.index = -1,
.encoder = NULL,
.decoder = NULL,
@@ -669,7 +669,7 @@
.wav_ids = { LQT_WAV_ID_NONE },
},
{
- .id = CODEC_ID_CYUV,
+ .id = AV_CODEC_ID_CYUV,
.index = -1,
.encoder = NULL,
.decoder = NULL,
@@ -680,7 +680,7 @@
.wav_ids = { LQT_WAV_ID_NONE },
},
{
- .id = CODEC_ID_QTRLE,
+ .id = AV_CODEC_ID_QTRLE,
.index = -1,
.encoder = NULL,
.decoder = NULL,
@@ -693,7 +693,7 @@
.encoding_colormodels = (int[]){ BC_RGB888, BC_RGBA8888, LQT_COLORMODEL_NONE },
},
{
- .id = CODEC_ID_MSRLE,
+ .id = AV_CODEC_ID_MSRLE,
.index = -1,
.encoder = NULL,
.decoder = NULL,
@@ -703,7 +703,7 @@
.wav_ids = { LQT_WAV_ID_NONE },
},
{
- .id = CODEC_ID_DVVIDEO,
+ .id = AV_CODEC_ID_DVVIDEO,
.index = -1,
.encoder = NULL,
.decoder = NULL,
@@ -719,7 +719,7 @@
.image_sizes = image_sizes_dv,
},
{
- .id = CODEC_ID_DVVIDEO,
+ .id = AV_CODEC_ID_DVVIDEO,
.index = -1,
.encoder = NULL,
.decoder = NULL,
@@ -735,7 +735,7 @@
.image_sizes = image_sizes_dv,
},
{
- .id = CODEC_ID_DVVIDEO,
+ .id = AV_CODEC_ID_DVVIDEO,
.index = -1,
.encoder = NULL,
.decoder = NULL,
@@ -751,7 +751,7 @@
},
/* DVCPRO HD (decoding only for now) */
{
- .id = CODEC_ID_DVVIDEO,
+ .id = AV_CODEC_ID_DVVIDEO,
.index = -1,
.encoder = NULL,
.decoder = NULL,
@@ -772,7 +772,7 @@
// .do_encode = 1
},
{
- .id = CODEC_ID_FFVHUFF,
+ .id = AV_CODEC_ID_FFVHUFF,
.index = -1,
.encoder = NULL,
.decoder = NULL,
@@ -785,7 +785,7 @@
.do_encode = 1
},
{
- .id = CODEC_ID_FFV1,
+ .id = AV_CODEC_ID_FFV1,
.index = -1,
.encoder = NULL,
.decoder = NULL,
@@ -801,7 +801,7 @@
},
#if LIBAVCODEC_BUILD >= 3352576
{
- .id = CODEC_ID_DNXHD,
+ .id = AV_CODEC_ID_DNXHD,
.index = -1,
.encoder = NULL,
.decoder = NULL,
@@ -817,7 +817,7 @@
},
#endif
{
- .id = CODEC_ID_MPEG2VIDEO,
+ .id = AV_CODEC_ID_MPEG2VIDEO,
.index = -1,
.encoder = NULL,
.decoder = NULL,
@@ -839,7 +839,7 @@
struct CODECIDMAP codecidmap_a[] =
{
{
- .id = CODEC_ID_MP3,
+ .id = AV_CODEC_ID_MP3,
.index = -1,
.encoder = NULL,
.decoder = NULL,
@@ -851,7 +851,7 @@
.wav_ids = { 0x50, 0x55, LQT_WAV_ID_NONE },
},
{
- .id = CODEC_ID_MP2,
+ .id = AV_CODEC_ID_MP2,
.index = -1,
.encoder = NULL,
.decoder = NULL,
@@ -866,7 +866,7 @@
.compression_id = LQT_COMPRESSION_MP2,
},
{
- .id = CODEC_ID_AC3,
+ .id = AV_CODEC_ID_AC3,
.index = -1,
.encoder = NULL,
.decoder = NULL,
@@ -881,7 +881,7 @@
.compression_id = LQT_COMPRESSION_AC3,
},
{
- .id = CODEC_ID_QDM2,
+ .id = AV_CODEC_ID_QDM2,
.index = -1,
.encoder = NULL,
.decoder = NULL,
@@ -896,7 +896,7 @@
#if 1
/* Doesn't work as long as audio chunks are not split into VBR "Samples" */
{
- .id = CODEC_ID_ALAC,
+ .id = AV_CODEC_ID_ALAC,
.index = -1,
.encoder = NULL,
.decoder = NULL,
@@ -909,7 +909,7 @@
#if 1
/* Sounds ugly */
{
- .id = CODEC_ID_ADPCM_MS,
+ .id = AV_CODEC_ID_ADPCM_MS,
.index = -1,
.encoder = NULL,
.decoder = NULL,
@@ -922,7 +922,7 @@
#if 1
/* Sounds ugly */
{
- .id = CODEC_ID_ADPCM_IMA_WAV,
+ .id = AV_CODEC_ID_ADPCM_IMA_WAV,
.index = -1,
.encoder = NULL,
.decoder = NULL,
diff -ruN a/plugins/ffmpeg/video.c b/plugins/ffmpeg/video.c
--- a/plugins/ffmpeg/video.c 2012-02-25 20:46:56.000000000 +0100
+++ b/plugins/ffmpeg/video.c 2020-02-09 19:07:44.399580606 +0100
@@ -400,7 +400,7 @@
codec->reinterpret_pix_fmt = codec->avctx->pix_fmt;
/* First we try codec-specific colormodel matching. */
- if(codec->decoder->id == CODEC_ID_DNXHD)
+ if(codec->decoder->id == AV_CODEC_ID_DNXHD)
{
/* FFMpeg supports PIX_FMT_YUV422P and PIX_FMT_YUV422P10 for DNxHD, which
we sometimes interpret as PIX_FMT_YUVJ422P and PIX_FMT_YUVJ422P10. */
@@ -438,7 +438,7 @@
quicktime_ffmpeg_video_codec_t *codec = vtrack->codec->priv;
codec->avctx->pix_fmt = lqt_ffmpeg_get_ffmpeg_colormodel(vtrack->stream_cmodel);
- if (codec->encoder->id == CODEC_ID_DNXHD)
+ if (codec->encoder->id == AV_CODEC_ID_DNXHD)
{
/* FFMpeg's DNxHD encoder only supports PIX_FMT_YUV422P and PIX_FMT_YUV422P10
and doesn't know anything about PIX_FMT_YUVJ422P and PIX_FMT_YUVJ422P10
@@ -728,13 +728,13 @@
/* Set extradata: It's done differently for each codec */
- if(codec->decoder->id == CODEC_ID_SVQ3)
+ if(codec->decoder->id == AV_CODEC_ID_SVQ3)
{
extradata = trak->mdia.minf.stbl.stsd.table[0].table_raw + 4;
extradata_size = trak->mdia.minf.stbl.stsd.table[0].table_raw_size - 4;
}
- else if(codec->decoder->id == CODEC_ID_H264)
+ else if(codec->decoder->id == AV_CODEC_ID_H264)
{
user_atom = quicktime_stsd_get_user_atom(trak, "avcC", &user_atom_len);
@@ -753,7 +753,7 @@
}
}
- else if(codec->decoder->id == CODEC_ID_MPEG4)
+ else if(codec->decoder->id == AV_CODEC_ID_MPEG4)
{
if(trak->mdia.minf.stbl.stsd.table[0].has_esds)
{
@@ -947,15 +947,15 @@
}
#endif
}
- if(codec->decoder->id == CODEC_ID_DVVIDEO)
+ if(codec->decoder->id == AV_CODEC_ID_DVVIDEO)
{
if(vtrack->stream_cmodel == BC_YUV420P)
vtrack->chroma_placement = LQT_CHROMA_PLACEMENT_DVPAL;
vtrack->interlace_mode = LQT_INTERLACE_BOTTOM_FIRST;
vtrack->ci.id = LQT_COMPRESSION_DV;
}
- else if((codec->decoder->id == CODEC_ID_MPEG4) ||
- (codec->decoder->id == CODEC_ID_H264))
+ else if((codec->decoder->id == AV_CODEC_ID_MPEG4) ||
+ (codec->decoder->id == AV_CODEC_ID_H264))
{
if(vtrack->stream_cmodel == BC_YUV420P)
vtrack->chroma_placement = LQT_CHROMA_PLACEMENT_MPEG2;
@@ -1299,13 +1299,13 @@
{
if(vtrack->stream_cmodel == BC_YUV420P)
{
- if(codec->encoder->id == CODEC_ID_MPEG4)
+ if(codec->encoder->id == AV_CODEC_ID_MPEG4)
{
vtrack->chroma_placement = LQT_CHROMA_PLACEMENT_MPEG2;
/* enable interlaced encoding */
vtrack->interlace_mode = LQT_INTERLACE_NONE;
}
- else if(codec->encoder->id == CODEC_ID_DVVIDEO)
+ else if(codec->encoder->id == AV_CODEC_ID_DVVIDEO)
{
vtrack->chroma_placement = LQT_CHROMA_PLACEMENT_DVPAL;
}
@@ -1340,7 +1340,7 @@
codec->avctx->sample_aspect_ratio.num = pixel_width;
codec->avctx->sample_aspect_ratio.den = pixel_height;
/* Use global headers for mp4v */
- if(codec->encoder->id == CODEC_ID_MPEG4)
+ if(codec->encoder->id == AV_CODEC_ID_MPEG4)
{
if(!(file->file_type & (LQT_FILE_AVI|LQT_FILE_AVI_ODML)))
{
@@ -1364,12 +1364,12 @@
}
#endif
}
- else if((codec->encoder->id == CODEC_ID_MSMPEG4V3) && (trak->strl) &&
+ else if((codec->encoder->id == AV_CODEC_ID_MSMPEG4V3) && (trak->strl) &&
!strncmp(trak->strl->strf.bh.biCompression, "DIV3", 4))
{
strncpy(trak->strl->strh.fccHandler, "div3", 4);
}
- else if((codec->encoder->id == CODEC_ID_H263) &&
+ else if((codec->encoder->id == AV_CODEC_ID_H263) &&
(file->file_type & (LQT_FILE_MP4|LQT_FILE_3GP)))
{
uint8_t d263_data[] =
@@ -1383,7 +1383,7 @@
strncpy(trak->mdia.minf.stbl.stsd.table[0].format,
"s263", 4);
}
- else if(codec->encoder->id == CODEC_ID_FFVHUFF)
+ else if(codec->encoder->id == AV_CODEC_ID_FFVHUFF)
{
if(!(file->file_type & (LQT_FILE_AVI|LQT_FILE_AVI_ODML)))
{
@@ -1391,7 +1391,7 @@
codec->write_global_header = 1;
}
}
- else if(codec->encoder->id == CODEC_ID_QTRLE)
+ else if(codec->encoder->id == AV_CODEC_ID_QTRLE)
{
if(vtrack->stream_cmodel == BC_RGBA8888)
{
@@ -1402,11 +1402,11 @@
vtrack->track->mdia.minf.stbl.stsd.table[0].depth = 32;
}
}
- else if(codec->encoder->id == CODEC_ID_DVVIDEO)
+ else if(codec->encoder->id == AV_CODEC_ID_DVVIDEO)
{
set_dv_fourcc(width, height, vtrack->stream_cmodel, trak);
}
- else if(codec->encoder->id == CODEC_ID_DNXHD)
+ else if(codec->encoder->id == AV_CODEC_ID_DNXHD)
{
if(vtrack->interlace_mode != LQT_INTERLACE_NONE)
{
@@ -1558,12 +1558,12 @@
#endif
- if(!was_initialized && codec->encoder->id == CODEC_ID_DNXHD)
+ if(!was_initialized && codec->encoder->id == AV_CODEC_ID_DNXHD)
setup_avid_atoms(file, vtrack, codec->buffer, bytes_encoded);
if(bytes_encoded)
{
- if (pts == AV_NOPTS_VALUE || (codec->encoder->id == CODEC_ID_DNXHD && pts == 0))
+ if (pts == AV_NOPTS_VALUE || (codec->encoder->id == AV_CODEC_ID_DNXHD && pts == 0))
{
/* Some codecs don't bother generating presentation timestamps.
FFMpeg's DNxHD encoder doesn't even bother to set it to AV_NOPTS_VALUE. */
@@ -1590,13 +1590,13 @@
if(codec->write_global_header && !codec->global_header_written)
{
- if(codec->encoder->id == CODEC_ID_FFVHUFF)
+ if(codec->encoder->id == AV_CODEC_ID_FFVHUFF)
{
quicktime_user_atoms_add_atom(&trak->mdia.minf.stbl.stsd.table[0].user_atoms,
"glbl",
codec->avctx->extradata, codec->avctx->extradata_size );
}
- else if(codec->encoder->id == CODEC_ID_MPEG4)
+ else if(codec->encoder->id == AV_CODEC_ID_MPEG4)
{
int advanced = 0;
if(codec->avctx->max_b_frames ||
@@ -1903,18 +1903,18 @@
codec_base->encode_video = lqt_ffmpeg_encode_video;
codec_base->set_pass = set_pass_ffmpeg;
- if(encoder->id == CODEC_ID_MPEG4)
+ if(encoder->id == AV_CODEC_ID_MPEG4)
{
codec_base->writes_compressed = writes_compressed_mpeg4;
codec_base->init_compressed = init_compressed_mpeg4;
codec_base->write_packet = write_packet_mpeg4;
}
- else if(encoder->id == CODEC_ID_MPEG2VIDEO)
+ else if(encoder->id == AV_CODEC_ID_MPEG2VIDEO)
{
codec_base->writes_compressed = writes_compressed_imx;
codec_base->init_compressed = init_compressed_imx;
}
- else if(encoder->id == CODEC_ID_DVVIDEO)
+ else if(encoder->id == AV_CODEC_ID_DVVIDEO)
{
codec_base->init_compressed = init_compressed_dv;
}
@@ -1922,7 +1922,7 @@
}
if(decoder)
{
- if(decoder->id == CODEC_ID_H264)
+ if(decoder->id == AV_CODEC_ID_H264)
codec_base->read_packet = read_packet_h264;
codec_base->decode_video = lqt_ffmpeg_decode_video;
}

View File

@ -0,0 +1,98 @@
Extracted from upstream CVS.
https://bugs.gentoo.org/show_bug.cgi?id=476498
Index: libquicktime-1.2.4/plugins/ffmpeg/audio.c
===================================================================
--- libquicktime-1.2.4.orig/plugins/ffmpeg/audio.c
+++ libquicktime-1.2.4/plugins/ffmpeg/audio.c
@@ -45,6 +45,11 @@
#define ENCODE_AUDIO 1
#endif
+#ifndef AVCODEC_MAX_AUDIO_FRAME_SIZE
+/* from libavcodec/avcodec.h dated Dec 23 2012 */
+#define AVCODEC_MAX_AUDIO_FRAME_SIZE 192000 // 1 second of 48khz 32bit audio
+#endif
+
/* The following code was ported from gmerlin_avdecoder (http://gmerlin.sourceforge.net) */
/* MPEG Audio header parsing code */
Index: libquicktime-1.2.4/plugins/ffmpeg/params.c
===================================================================
--- libquicktime-1.2.4.orig/plugins/ffmpeg/params.c
+++ libquicktime-1.2.4/plugins/ffmpeg/params.c
@@ -101,6 +101,17 @@ typedef struct
} \
}
+#define PARAM_DICT_INT(name, dict_name) \
+ { \
+ if(!strcasecmp(name, key)) \
+ { \
+ char buf[128]; \
+ snprintf(buf, sizeof(buf), "%d", *(int*)value); \
+ av_dict_set(options, dict_name, buf, 0); \
+ found = 1; \
+ } \
+ }
+
#define PARAM_DICT_FLAG(name, dict_name) \
{ \
if(!strcasecmp(name, key)) \
@@ -202,8 +213,15 @@ void lqt_ffmpeg_set_parameter(AVCodecCon
PARAM_INT("ff_max_b_frames",max_b_frames);
PARAM_FLOAT("ff_b_quant_factor",b_quant_factor);
PARAM_INT("ff_b_frame_strategy",b_frame_strategy);
+
+#if LIBAVCODEC_VERSION_MAJOR >= 55
+ PARAM_DICT_INT("ff_luma_elim_threshold","luma_elim_threshold");
+ PARAM_DICT_INT("ff_chroma_elim_threshold","chroma_elim_threshold");
+#else
PARAM_INT("ff_luma_elim_threshold",luma_elim_threshold);
PARAM_INT("ff_chroma_elim_threshold",chroma_elim_threshold);
+#endif
+
PARAM_INT("ff_strict_std_compliance",strict_std_compliance);
PARAM_QP2LAMBDA("ff_b_quant_offset",b_quant_offset);
PARAM_INT("ff_rc_min_rate",rc_min_rate);
@@ -241,8 +259,15 @@ void lqt_ffmpeg_set_parameter(AVCodecCon
PARAM_QP2LAMBDA("ff_lmax", lmax);
PARAM_INT("ff_noise_reduction",noise_reduction);
PARAM_INT_SCALE("ff_rc_initial_buffer_occupancy",rc_initial_buffer_occupancy,1000);
+
+#if LIBAVCODEC_VERSION_MAJOR >= 55
+ PARAM_DICT_INT("ff_inter_threshold","inter_threshold");
+ PARAM_DICT_INT("ff_quantizer_noise_shaping","quantizer_noise_shaping");
+#else
PARAM_INT("ff_inter_threshold",inter_threshold);
PARAM_INT("ff_quantizer_noise_shaping",quantizer_noise_shaping);
+#endif
+
PARAM_INT("ff_thread_count",thread_count);
PARAM_INT("ff_me_threshold",me_threshold);
PARAM_INT("ff_mb_threshold",mb_threshold);
@@ -272,8 +297,16 @@ void lqt_ffmpeg_set_parameter(AVCodecCon
PARAM_FLAG("ff_flag_bitexact",CODEC_FLAG_BITEXACT);
PARAM_FLAG("ff_flag_ac_pred",CODEC_FLAG_AC_PRED);
// PARAM_FLAG("ff_flag_h263p_umv",CODEC_FLAG_H263P_UMV); // Unused
+
+#if LIBAVCODEC_VERSION_MAJOR >= 55
+ PARAM_DICT_FLAG("ff_flag_cbp_rd","cbp_rd");
+ PARAM_DICT_FLAG("ff_flag_qp_rd","qp_rd");
+ PARAM_DICT_FLAG("ff_flag2_strict_gop","strict_gop");
+#else
PARAM_FLAG("ff_flag_cbp_rd",CODEC_FLAG_CBP_RD);
PARAM_FLAG("ff_flag_qp_rd",CODEC_FLAG_QP_RD);
+ PARAM_FLAG2("ff_flag2_strict_gop",CODEC_FLAG2_STRICT_GOP);
+#endif
#if LIBAVCODEC_VERSION_MAJOR >= 54
PARAM_DICT_FLAG("ff_flag_h263p_aiv", "aiv");
@@ -288,7 +321,6 @@ void lqt_ffmpeg_set_parameter(AVCodecCon
PARAM_FLAG("ff_flag_loop_filter",CODEC_FLAG_LOOP_FILTER);
PARAM_FLAG("ff_flag_closed_gop",CODEC_FLAG_CLOSED_GOP);
PARAM_FLAG2("ff_flag2_fast",CODEC_FLAG2_FAST);
- PARAM_FLAG2("ff_flag2_strict_gop",CODEC_FLAG2_STRICT_GOP);
PARAM_ENUM("ff_coder_type",coder_type,coder_type);
}

View File

@ -0,0 +1,287 @@
Index: libquicktime-1.2.4/plugins/ffmpeg/video.c
===================================================================
--- libquicktime-1.2.4.orig/plugins/ffmpeg/video.c
+++ libquicktime-1.2.4/plugins/ffmpeg/video.c
@@ -37,10 +37,10 @@
#endif
-#ifdef PIX_FMT_YUV422P10
-#define PIX_FMT_YUV422P10_OR_DUMMY PIX_FMT_YUV422P10
+#ifdef AV_PIX_FMT_YUV422P10
+#define AV_PIX_FMT_YUV422P10_OR_DUMMY AV_PIX_FMT_YUV422P10
#else
-#define PIX_FMT_YUV422P10_OR_DUMMY -1234
+#define AV_PIX_FMT_YUV422P10_OR_DUMMY -1234
#endif
#if LIBAVCODEC_VERSION_INT >= ((54<<16)|(1<<8)|0)
@@ -90,9 +90,9 @@ typedef struct
int imx_bitrate;
int imx_strip_vbi;
- /* In some cases FFMpeg would report something like PIX_FMT_YUV422P, while
- we would like to treat it as PIX_FMT_YUVJ422P. It's only used for decoding */
- enum PixelFormat reinterpret_pix_fmt;
+ /* In some cases FFMpeg would report something like AV_PIX_FMT_YUV422P, while
+ we would like to treat it as AV_PIX_FMT_YUVJ422P. It's only used for decoding */
+ enum AVPixelFormat reinterpret_pix_fmt;
int is_imx;
int y_offset;
@@ -137,42 +137,42 @@ typedef struct
static const struct
{
- enum PixelFormat ffmpeg_id;
+ enum AVPixelFormat ffmpeg_id;
int lqt_id;
int exact;
}
colormodels[] =
{
- { PIX_FMT_YUV420P, BC_YUV420P, 1 }, ///< Planar YUV 4:2:0 (1 Cr & Cb sample per 2x2 Y samples)
+ { AV_PIX_FMT_YUV420P, BC_YUV420P, 1 }, ///< Planar YUV 4:2:0 (1 Cr & Cb sample per 2x2 Y samples)
#if LIBAVUTIL_VERSION_INT < (50<<16)
- { PIX_FMT_YUV422, BC_YUV422, 1 },
+ { AV_PIX_FMT_YUV422, BC_YUV422, 1 },
#else
- { PIX_FMT_YUYV422, BC_YUV422, 1 },
+ { AV_PIX_FMT_YUYV422, BC_YUV422, 1 },
#endif
- { PIX_FMT_RGB24, BC_RGB888, 1 }, ///< Packed pixel, 3 bytes per pixel, RGBRGB...
- { PIX_FMT_BGR24, BC_BGR888, 1 }, ///< Packed pixel, 3 bytes per pixel, BGRBGR...
- { PIX_FMT_YUV422P, BC_YUV422P, 1 }, ///< Planar YUV 4:2:2 (1 Cr & Cb sample per 2x1 Y samples)
- { PIX_FMT_YUV444P, BC_YUV444P, 1 }, ///< Planar YUV 4:4:4 (1 Cr & Cb sample per 1x1 Y samples)
- { PIX_FMT_YUV411P, BC_YUV411P, 1 }, ///< Planar YUV 4:1:1 (1 Cr & Cb sample per 4x1 Y samples)
- { PIX_FMT_YUV422P16, BC_YUV422P16, 1 }, ///< Planar 16 bit YUV 4:2:2 (1 Cr & Cb sample per 2x1 Y samples)
-#ifdef PIX_FMT_YUV422P10
- { PIX_FMT_YUV422P10, BC_YUV422P10, 1 }, ///< 10 bit samples in uint16_t containers, planar 4:2:2
-#endif
- { PIX_FMT_RGB565, BC_RGB565, 1 }, ///< always stored in cpu endianness
- { PIX_FMT_YUVJ420P, BC_YUVJ420P, 1 }, ///< Planar YUV 4:2:0 full scale (jpeg)
- { PIX_FMT_YUVJ422P, BC_YUVJ422P, 1 }, ///< Planar YUV 4:2:2 full scale (jpeg)
- { PIX_FMT_YUVJ444P, BC_YUVJ444P, 1 }, ///< Planar YUV 4:4:4 full scale (jpeg)
+ { AV_PIX_FMT_RGB24, BC_RGB888, 1 }, ///< Packed pixel, 3 bytes per pixel, RGBRGB...
+ { AV_PIX_FMT_BGR24, BC_BGR888, 1 }, ///< Packed pixel, 3 bytes per pixel, BGRBGR...
+ { AV_PIX_FMT_YUV422P, BC_YUV422P, 1 }, ///< Planar YUV 4:2:2 (1 Cr & Cb sample per 2x1 Y samples)
+ { AV_PIX_FMT_YUV444P, BC_YUV444P, 1 }, ///< Planar YUV 4:4:4 (1 Cr & Cb sample per 1x1 Y samples)
+ { AV_PIX_FMT_YUV411P, BC_YUV411P, 1 }, ///< Planar YUV 4:1:1 (1 Cr & Cb sample per 4x1 Y samples)
+ { AV_PIX_FMT_YUV422P16, BC_YUV422P16, 1 }, ///< Planar 16 bit YUV 4:2:2 (1 Cr & Cb sample per 2x1 Y samples)
+#ifdef AV_PIX_FMT_YUV422P10
+ { AV_PIX_FMT_YUV422P10, BC_YUV422P10, 1 }, ///< 10 bit samples in uint16_t containers, planar 4:2:2
+#endif
+ { AV_PIX_FMT_RGB565, BC_RGB565, 1 }, ///< always stored in cpu endianness
+ { AV_PIX_FMT_YUVJ420P, BC_YUVJ420P, 1 }, ///< Planar YUV 4:2:0 full scale (jpeg)
+ { AV_PIX_FMT_YUVJ422P, BC_YUVJ422P, 1 }, ///< Planar YUV 4:2:2 full scale (jpeg)
+ { AV_PIX_FMT_YUVJ444P, BC_YUVJ444P, 1 }, ///< Planar YUV 4:4:4 full scale (jpeg)
#if LIBAVUTIL_VERSION_INT < (50<<16)
- { PIX_FMT_RGBA32, BC_RGBA8888, 0 }, ///< Packed pixel, 4 bytes per pixel, BGRABGRA...
+ { AV_PIX_FMT_RGBA32, BC_RGBA8888, 0 }, ///< Packed pixel, 4 bytes per pixel, BGRABGRA...
#else
- { PIX_FMT_RGB32, BC_RGBA8888, 0 }, ///< Packed pixel, 4 bytes per pixel, BGRABGRA...
+ { AV_PIX_FMT_RGB32, BC_RGBA8888, 0 }, ///< Packed pixel, 4 bytes per pixel, BGRABGRA...
#endif
- { PIX_FMT_RGB555, BC_RGB888, 0 }, ///< always stored in cpu endianness, most significant bit to 1
- { PIX_FMT_GRAY8, BC_RGB888, 0 },
- { PIX_FMT_MONOWHITE, BC_RGB888, 0 }, ///< 0 is white
- { PIX_FMT_MONOBLACK, BC_RGB888, 0 }, ///< 0 is black
- { PIX_FMT_PAL8, BC_RGB888, 0 }, ///< 8 bit with RGBA palette
- { PIX_FMT_YUV410P, BC_YUV420P, 0 }, ///< Planar YUV 4:1:0 (1 Cr & Cb sample per 4x4 Y samples)
+ { AV_PIX_FMT_RGB555, BC_RGB888, 0 }, ///< always stored in cpu endianness, most significant bit to 1
+ { AV_PIX_FMT_GRAY8, BC_RGB888, 0 },
+ { AV_PIX_FMT_MONOWHITE, BC_RGB888, 0 }, ///< 0 is white
+ { AV_PIX_FMT_MONOBLACK, BC_RGB888, 0 }, ///< 0 is black
+ { AV_PIX_FMT_PAL8, BC_RGB888, 0 }, ///< 8 bit with RGBA palette
+ { AV_PIX_FMT_YUV410P, BC_YUV420P, 0 }, ///< Planar YUV 4:1:0 (1 Cr & Cb sample per 4x4 Y samples)
};
static const struct
@@ -343,16 +343,16 @@ static int lqt_tenbit_dnxhd_supported(AV
if (!codec->pix_fmts)
return 0;
- for (i = 0; codec->pix_fmts[i] != PIX_FMT_NONE; ++i)
+ for (i = 0; codec->pix_fmts[i] != AV_PIX_FMT_NONE; ++i)
{
- if (codec->pix_fmts[i] == PIX_FMT_YUV422P10_OR_DUMMY)
+ if (codec->pix_fmts[i] == AV_PIX_FMT_YUV422P10_OR_DUMMY)
return 1;
}
return 0;
}
-static enum PixelFormat lqt_ffmpeg_get_ffmpeg_colormodel(int id)
+static enum AVPixelFormat lqt_ffmpeg_get_ffmpeg_colormodel(int id)
{
int i;
@@ -361,10 +361,10 @@ static enum PixelFormat lqt_ffmpeg_get_f
if(colormodels[i].lqt_id == id)
return colormodels[i].ffmpeg_id;
}
- return PIX_FMT_NB;
+ return AV_PIX_FMT_NB;
}
-static int lqt_ffmpeg_get_lqt_colormodel(enum PixelFormat id, int * exact)
+static int lqt_ffmpeg_get_lqt_colormodel(enum AVPixelFormat id, int * exact)
{
int i;
@@ -402,24 +402,24 @@ static void lqt_ffmpeg_setup_decoding_co
/* First we try codec-specific colormodel matching. */
if(codec->decoder->id == AV_CODEC_ID_DNXHD)
{
- /* FFMpeg supports PIX_FMT_YUV422P and PIX_FMT_YUV422P10 for DNxHD, which
- we sometimes interpret as PIX_FMT_YUVJ422P and PIX_FMT_YUVJ422P10. */
- if (codec->avctx->pix_fmt == PIX_FMT_YUV422P || codec->avctx->pix_fmt == PIX_FMT_YUV422P10_OR_DUMMY)
+ /* FFMpeg supports AV_PIX_FMT_YUV422P and AV_PIX_FMT_YUV422P10 for DNxHD, which
+ we sometimes interpret as AV_PIX_FMT_YUVJ422P and AV_PIX_FMT_YUVJ422P10. */
+ if (codec->avctx->pix_fmt == AV_PIX_FMT_YUV422P || codec->avctx->pix_fmt == AV_PIX_FMT_YUV422P10_OR_DUMMY)
{
- int p10 = (codec->avctx->pix_fmt == PIX_FMT_YUV422P10_OR_DUMMY);
+ int p10 = (codec->avctx->pix_fmt == AV_PIX_FMT_YUV422P10_OR_DUMMY);
*exact = 1;
if (lqt_ffmpeg_get_avid_yuv_range(vtrack->track) == AVID_FULL_YUV_RANGE)
{
vtrack->stream_cmodel = p10 ? BC_YUVJ422P10 : BC_YUVJ422P;
- codec->reinterpret_pix_fmt = p10 ? PIX_FMT_YUV422P10_OR_DUMMY : PIX_FMT_YUVJ422P;
- // Note: reinterpret_pix_fmt should really be PIX_FMT_YUVJ422P10, except
+ codec->reinterpret_pix_fmt = p10 ? AV_PIX_FMT_YUV422P10_OR_DUMMY : AV_PIX_FMT_YUVJ422P;
+ // Note: reinterpret_pix_fmt should really be AV_PIX_FMT_YUVJ422P10, except
// there is no such colormodel in FFMpeg. Fortunately, it's not a problem
// in this case, as reinterpret_pix_fmt is only used when *exact == 0.
}
else
{
vtrack->stream_cmodel = p10 ? BC_YUV422P10 : BC_YUV422P;
- codec->reinterpret_pix_fmt = p10 ? PIX_FMT_YUV422P10_OR_DUMMY : PIX_FMT_YUV422P;
+ codec->reinterpret_pix_fmt = p10 ? AV_PIX_FMT_YUV422P10_OR_DUMMY : AV_PIX_FMT_YUV422P;
}
return;
}
@@ -440,14 +440,14 @@ static void lqt_ffmpeg_setup_encoding_co
if (codec->encoder->id == AV_CODEC_ID_DNXHD)
{
- /* FFMpeg's DNxHD encoder only supports PIX_FMT_YUV422P and PIX_FMT_YUV422P10
- and doesn't know anything about PIX_FMT_YUVJ422P and PIX_FMT_YUVJ422P10
+ /* FFMpeg's DNxHD encoder only supports AV_PIX_FMT_YUV422P and AV_PIX_FMT_YUV422P10
+ and doesn't know anything about AV_PIX_FMT_YUVJ422P and AV_PIX_FMT_YUVJ422P10
(in fact, the latter doesn't even exist) */
- codec->avctx->pix_fmt = PIX_FMT_YUV422P;
+ codec->avctx->pix_fmt = AV_PIX_FMT_YUV422P;
if (vtrack->stream_cmodel == BC_YUV422P10 || vtrack->stream_cmodel == BC_YUVJ422P10)
{
if (lqt_tenbit_dnxhd_supported(codec->encoder))
- codec->avctx->pix_fmt = PIX_FMT_YUV422P10_OR_DUMMY;
+ codec->avctx->pix_fmt = AV_PIX_FMT_YUV422P10_OR_DUMMY;
}
}
}
@@ -458,7 +458,7 @@ static void lqt_ffmpeg_setup_encoding_co
/* From avcodec.h: */
/*
- * PIX_FMT_RGBA32 is handled in an endian-specific manner. A RGBA
+ * AV_PIX_FMT_RGBA32 is handled in an endian-specific manner. A RGBA
* color is put together as:
* (A << 24) | (R << 16) | (G << 8) | B
* This is stored as BGRA on little endian CPU architectures and ARGB on
@@ -530,7 +530,7 @@ static void convert_rgba_to_argb(uint8_t
*/
static void convert_image_decode(quicktime_ffmpeg_video_codec_t *codec,
- AVFrame * in_frame, enum PixelFormat in_format,
+ AVFrame * in_frame, enum AVPixelFormat in_format,
unsigned char ** out_frame, int out_format,
int width, int height, int row_span, int row_span_uv)
{
@@ -547,9 +547,9 @@ static void convert_image_decode(quickti
* RGBA format like in ffmpeg??
*/
#if LIBAVUTIL_VERSION_INT < (50<<16)
- if((in_format == PIX_FMT_RGBA32) && (out_format == BC_RGBA8888))
+ if((in_format == AV_PIX_FMT_RGBA32) && (out_format == BC_RGBA8888))
#else
- if((in_format == PIX_FMT_RGB32) && (out_format == BC_RGBA8888))
+ if((in_format == AV_PIX_FMT_RGB32) && (out_format == BC_RGBA8888))
#endif
{
convert_image_decode_rgba(in_frame, out_frame, width, height, codec->y_offset);
@@ -829,7 +829,7 @@ static int lqt_ffmpeg_decode_video(quick
if(avcodec_open2(codec->avctx, codec->decoder, NULL) != 0)
return -1;
#endif
- codec->frame = avcodec_alloc_frame();
+ codec->frame = av_frame_alloc();
vtrack->stream_cmodel = LQT_COLORMODEL_NONE;
codec->initialized = 1;
}
@@ -929,10 +929,10 @@ static int lqt_ffmpeg_decode_video(quick
#ifdef HAVE_LIBSWSCALE
#if LIBAVUTIL_VERSION_INT < (50<<16)
- if(!((codec->avctx->pix_fmt == PIX_FMT_RGBA32) &&
+ if(!((codec->avctx->pix_fmt == AV_PIX_FMT_RGBA32) &&
(vtrack->stream_cmodel == BC_RGBA8888)))
#else
- if(!((codec->avctx->pix_fmt == PIX_FMT_RGB32) &&
+ if(!((codec->avctx->pix_fmt == AV_PIX_FMT_RGB32) &&
(vtrack->stream_cmodel == BC_RGBA8888)))
#endif
{
@@ -1318,7 +1318,7 @@ static int lqt_ffmpeg_encode_video(quick
if(!codec->initialized)
{
- codec->frame = avcodec_alloc_frame();
+ codec->frame = av_frame_alloc();
/* time_base is 1/framerate for constant framerate */
@@ -1396,9 +1396,9 @@ static int lqt_ffmpeg_encode_video(quick
if(vtrack->stream_cmodel == BC_RGBA8888)
{
/* Libquicktime doesn't natively support a color model equivalent
- to PIX_FMT_ARGB, which is required for QTRLE with alpha channel.
+ to AV_PIX_FMT_ARGB, which is required for QTRLE with alpha channel.
So, we use BC_RGBA8888 and do ad hoc conversion below. */
- codec->avctx->pix_fmt = PIX_FMT_ARGB;
+ codec->avctx->pix_fmt = AV_PIX_FMT_ARGB;
vtrack->track->mdia.minf.stbl.stsd.table[0].depth = 32;
}
}
@@ -1467,7 +1467,7 @@ static int lqt_ffmpeg_encode_video(quick
}
// codec->lqt_colormodel = ffmepg_2_lqt(codec->com.ffcodec_enc);
- if(codec->y_offset != 0 || codec->avctx->pix_fmt == PIX_FMT_ARGB)
+ if(codec->y_offset != 0 || codec->avctx->pix_fmt == AV_PIX_FMT_ARGB)
{
if(!codec->tmp_rows)
{
@@ -1492,7 +1492,7 @@ static int lqt_ffmpeg_encode_video(quick
vtrack->stream_cmodel,
0, 0, 0, codec->y_offset);
}
- else if(codec->avctx->pix_fmt == PIX_FMT_ARGB)
+ else if(codec->avctx->pix_fmt == AV_PIX_FMT_ARGB)
{
convert_rgba_to_argb(row_pointers[0], vtrack->stream_row_span,
codec->tmp_rows[0], codec->tmp_row_span,
Index: libquicktime-1.2.4/plugins/ffmpeg/audio.c
===================================================================
--- libquicktime-1.2.4.orig/plugins/ffmpeg/audio.c
+++ libquicktime-1.2.4/plugins/ffmpeg/audio.c
@@ -1266,7 +1266,7 @@ static int lqt_ffmpeg_encode_audio(quick
pkt.data = codec->chunk_buffer;
pkt.size = codec->chunk_buffer_alloc;
- avcodec_get_frame_defaults(&f);
+ av_frame_unref(&f);
f.nb_samples = codec->avctx->frame_size;
avcodec_fill_audio_frame(&f, channels, codec->avctx->sample_fmt,

View File

@ -0,0 +1,342 @@
Index: libquicktime-1.2.4/plugins/ffmpeg/audio.c
===================================================================
--- libquicktime-1.2.4.orig/plugins/ffmpeg/audio.c
+++ libquicktime-1.2.4/plugins/ffmpeg/audio.c
@@ -545,7 +545,7 @@ static int decode_chunk_vbr(quicktime_t
#if DECODE_AUDIO3 || DECODE_AUDIO4
codec->pkt.data = codec->chunk_buffer;
- codec->pkt.size = packet_size + FF_INPUT_BUFFER_PADDING_SIZE;
+ codec->pkt.size = packet_size + AV_INPUT_BUFFER_PADDING_SIZE;
#if DECODE_AUDIO4
frame_bytes = avcodec_decode_audio4(codec->avctx, &f,
@@ -583,7 +583,7 @@ static int decode_chunk_vbr(quicktime_t
(codec->sample_buffer_end - codec->sample_buffer_start)],
&bytes_decoded,
codec->chunk_buffer,
- packet_size + FF_INPUT_BUFFER_PADDING_SIZE);
+ packet_size + AV_INPUT_BUFFER_PADDING_SIZE);
if(frame_bytes < 0)
{
lqt_log(file, LQT_LOG_ERROR, LOG_DOMAIN, "avcodec_decode_audio2 error");
@@ -645,13 +645,13 @@ static int decode_chunk(quicktime_t * fi
return 0;
}
- if(codec->chunk_buffer_alloc < mph.frame_bytes + FF_INPUT_BUFFER_PADDING_SIZE)
+ if(codec->chunk_buffer_alloc < mph.frame_bytes + AV_INPUT_BUFFER_PADDING_SIZE)
{
- codec->chunk_buffer_alloc = mph.frame_bytes + FF_INPUT_BUFFER_PADDING_SIZE;
+ codec->chunk_buffer_alloc = mph.frame_bytes + AV_INPUT_BUFFER_PADDING_SIZE;
codec->chunk_buffer = realloc(codec->chunk_buffer, codec->chunk_buffer_alloc);
}
memset(codec->chunk_buffer + codec->bytes_in_chunk_buffer, 0,
- mph.frame_bytes - codec->bytes_in_chunk_buffer + FF_INPUT_BUFFER_PADDING_SIZE);
+ mph.frame_bytes - codec->bytes_in_chunk_buffer + AV_INPUT_BUFFER_PADDING_SIZE);
num_samples = mph.samples_per_frame;
codec->bytes_in_chunk_buffer = mph.frame_bytes;
}
@@ -695,7 +695,7 @@ static int decode_chunk(quicktime_t * fi
{
- /* BIG NOTE: We pass extra FF_INPUT_BUFFER_PADDING_SIZE for the buffer size
+ /* BIG NOTE: We pass extra AV_INPUT_BUFFER_PADDING_SIZE for the buffer size
because we know, that lqt_read_audio_chunk allocates 16 extra bytes for us */
/* Some really broken mp3 files have the header bytes split across 2 chunks */
@@ -761,7 +761,7 @@ static int decode_chunk(quicktime_t * fi
#if DECODE_AUDIO3 || DECODE_AUDIO4
codec->pkt.data = &codec->chunk_buffer[bytes_used];
- codec->pkt.size = codec->bytes_in_chunk_buffer + FF_INPUT_BUFFER_PADDING_SIZE;
+ codec->pkt.size = codec->bytes_in_chunk_buffer + AV_INPUT_BUFFER_PADDING_SIZE;
#if DECODE_AUDIO4
@@ -798,7 +798,7 @@ static int decode_chunk(quicktime_t * fi
(codec->sample_buffer_end - codec->sample_buffer_start)],
&bytes_decoded,
&codec->chunk_buffer[bytes_used],
- codec->bytes_in_chunk_buffer + FF_INPUT_BUFFER_PADDING_SIZE);
+ codec->bytes_in_chunk_buffer + AV_INPUT_BUFFER_PADDING_SIZE);
#endif
if(frame_bytes < 0)
{
@@ -838,7 +838,7 @@ static int decode_chunk(quicktime_t * fi
}
}
- /* This happens because ffmpeg adds FF_INPUT_BUFFER_PADDING_SIZE to the bytes returned */
+ /* This happens because ffmpeg adds AV_INPUT_BUFFER_PADDING_SIZE to the bytes returned */
if(codec->bytes_in_chunk_buffer < 0)
codec->bytes_in_chunk_buffer = 0;
Index: libquicktime-1.2.4/plugins/ffmpeg/params.c
===================================================================
--- libquicktime-1.2.4.orig/plugins/ffmpeg/params.c
+++ libquicktime-1.2.4/plugins/ffmpeg/params.c
@@ -124,16 +124,6 @@ typedef struct
}
-enum_t me_method[] =
- {
- { "Zero", ME_ZERO },
- { "Phods", ME_PHODS },
- { "Log", ME_LOG },
- { "X1", ME_X1 },
- { "Epzs", ME_EPZS },
- { "Full", ME_FULL }
- };
-
enum_t prediction_method[] =
{
{ "Left", FF_PRED_LEFT },
@@ -163,15 +153,6 @@ enum_t mb_decision[] =
{ "Rate distoration", FF_MB_DECISION_RD }
};
-enum_t coder_type[] =
- {
- { "VLC", FF_CODER_TYPE_VLC },
- { "Arithmetic", FF_CODER_TYPE_AC },
- { "Raw", FF_CODER_TYPE_RAW },
- { "RLE", FF_CODER_TYPE_RLE },
- { "Deflate", FF_CODER_TYPE_DEFLATE },
- };
-
#define PARAM_ENUM(name, var, arr) \
if(!strcasecmp(key, name)) \
{ \
@@ -203,7 +184,7 @@ void lqt_ffmpeg_set_parameter(AVCodecCon
PARAM_INT_SCALE("ff_bit_rate_audio",bit_rate,1000);
PARAM_INT_SCALE("ff_bit_rate_video",bit_rate,1000);
PARAM_INT_SCALE("ff_bit_rate_tolerance",bit_rate_tolerance,1000);
- PARAM_ENUM("ff_me_method",me_method,me_method);
+ PARAM_DICT_INT("ff_me_method","motion-est");
PARAM_INT("ff_gop_size",gop_size);
PARAM_FLOAT("ff_qcompress",qcompress);
PARAM_FLOAT("ff_qblur",qblur);
@@ -227,10 +208,9 @@ void lqt_ffmpeg_set_parameter(AVCodecCon
PARAM_INT("ff_rc_min_rate",rc_min_rate);
PARAM_INT("ff_rc_max_rate",rc_max_rate);
PARAM_INT_SCALE("ff_rc_buffer_size",rc_buffer_size,1000);
- PARAM_FLOAT("ff_rc_buffer_aggressivity",rc_buffer_aggressivity);
PARAM_FLOAT("ff_i_quant_factor",i_quant_factor);
PARAM_QP2LAMBDA("ff_i_quant_offset",i_quant_offset);
- PARAM_FLOAT("ff_rc_initial_cplx",rc_initial_cplx);
+ PARAM_DICT_INT("ff_rc_initial_cplx","rc_init_cplx");
PARAM_FLOAT("ff_lumi_masking",lumi_masking);
PARAM_FLOAT("ff_temporal_cplx_masking",temporal_cplx_masking);
PARAM_FLOAT("ff_spatial_cplx_masking",spatial_cplx_masking);
@@ -255,8 +235,8 @@ void lqt_ffmpeg_set_parameter(AVCodecCon
PARAM_INT("ff_me_range",me_range);
PARAM_ENUM("ff_mb_decision",mb_decision,mb_decision);
PARAM_INT("ff_scenechange_threshold",scenechange_threshold);
- PARAM_QP2LAMBDA("ff_lmin", lmin);
- PARAM_QP2LAMBDA("ff_lmax", lmax);
+ PARAM_DICT_INT("ff_lmin", "lmin");
+ PARAM_DICT_INT("ff_lmax", "lmax");
PARAM_INT("ff_noise_reduction",noise_reduction);
PARAM_INT_SCALE("ff_rc_initial_buffer_occupancy",rc_initial_buffer_occupancy,1000);
@@ -269,33 +249,29 @@ void lqt_ffmpeg_set_parameter(AVCodecCon
#endif
PARAM_INT("ff_thread_count",thread_count);
- PARAM_INT("ff_me_threshold",me_threshold);
- PARAM_INT("ff_mb_threshold",mb_threshold);
PARAM_INT("ff_nsse_weight",nsse_weight);
- PARAM_FLOAT("ff_border_masking",border_masking);
+ PARAM_DICT_INT("ff_border_masking","border_mask");
PARAM_QP2LAMBDA("ff_mb_lmin", mb_lmin);
PARAM_QP2LAMBDA("ff_mb_lmax", mb_lmax);
PARAM_INT("ff_me_penalty_compensation",me_penalty_compensation);
PARAM_INT("ff_bidir_refine",bidir_refine);
PARAM_INT("ff_brd_scale",brd_scale);
- PARAM_INT("ff_scenechange_factor",scenechange_factor);
- PARAM_FLAG("ff_flag_qscale",CODEC_FLAG_QSCALE);
- PARAM_FLAG("ff_flag_4mv",CODEC_FLAG_4MV);
- PARAM_FLAG("ff_flag_qpel",CODEC_FLAG_QPEL);
- PARAM_FLAG("ff_flag_gmc",CODEC_FLAG_GMC);
- PARAM_FLAG("ff_flag_mv0",CODEC_FLAG_MV0);
+ PARAM_FLAG("ff_flag_qscale",AV_CODEC_FLAG_QSCALE);
+ PARAM_FLAG("ff_flag_4mv",AV_CODEC_FLAG_4MV);
+ PARAM_FLAG("ff_flag_qpel",AV_CODEC_FLAG_QPEL);
+ PARAM_DICT_FLAG("ff_flag_gmc","gmc");
+ PARAM_DICT_FLAG("ff_flag_mv0","mpv_flags");
// PARAM_FLAG("ff_flag_part",CODEC_FLAG_PART); // Unused
- PARAM_FLAG("ff_flag_gray",CODEC_FLAG_GRAY);
- PARAM_FLAG("ff_flag_emu_edge",CODEC_FLAG_EMU_EDGE);
- PARAM_FLAG("ff_flag_normalize_aqp",CODEC_FLAG_NORMALIZE_AQP);
+ PARAM_FLAG("ff_flag_gray",AV_CODEC_FLAG_GRAY);
+ PARAM_DICT_FLAG("ff_flag_normalize_aqp","naq");
// PARAM_FLAG("ff_flag_alt_scan",CODEC_FLAG_ALT_SCAN); // Unused
#if LIBAVCODEC_VERSION_INT < ((52<<16)+(0<<8)+0)
PARAM_FLAG("ff_flag_trellis_quant",CODEC_FLAG_TRELLIS_QUANT);
#else
PARAM_INT("ff_trellis",trellis);
#endif
- PARAM_FLAG("ff_flag_bitexact",CODEC_FLAG_BITEXACT);
- PARAM_FLAG("ff_flag_ac_pred",CODEC_FLAG_AC_PRED);
+ PARAM_FLAG("ff_flag_bitexact",AV_CODEC_FLAG_BITEXACT);
+ PARAM_FLAG("ff_flag_ac_pred",AV_CODEC_FLAG_AC_PRED);
// PARAM_FLAG("ff_flag_h263p_umv",CODEC_FLAG_H263P_UMV); // Unused
#if LIBAVCODEC_VERSION_MAJOR >= 55
@@ -303,9 +279,9 @@ void lqt_ffmpeg_set_parameter(AVCodecCon
PARAM_DICT_FLAG("ff_flag_qp_rd","qp_rd");
PARAM_DICT_FLAG("ff_flag2_strict_gop","strict_gop");
#else
- PARAM_FLAG("ff_flag_cbp_rd",CODEC_FLAG_CBP_RD);
- PARAM_FLAG("ff_flag_qp_rd",CODEC_FLAG_QP_RD);
- PARAM_FLAG2("ff_flag2_strict_gop",CODEC_FLAG2_STRICT_GOP);
+ PARAM_FLAG("ff_flag_cbp_rd",AV_CODEC_FLAG_CBP_RD);
+ PARAM_FLAG("ff_flag_qp_rd",AV_CODEC_FLAG_QP_RD);
+ PARAM_FLAG2("ff_flag2_strict_gop",AV_CODEC_FLAG2_STRICT_GOP);
#endif
#if LIBAVCODEC_VERSION_MAJOR >= 54
@@ -313,14 +289,14 @@ void lqt_ffmpeg_set_parameter(AVCodecCon
PARAM_DICT_FLAG("ff_flag_obmc","obmc");
PARAM_DICT_FLAG("ff_flag_h263p_slice_struct","structured_slices");
#else
- PARAM_FLAG("ff_flag_h263p_aiv",CODEC_FLAG_H263P_AIV);
- PARAM_FLAG("ff_flag_obmc",CODEC_FLAG_OBMC);
- PARAM_FLAG("ff_flag_h263p_slice_struct",CODEC_FLAG_H263P_SLICE_STRUCT);
+ PARAM_FLAG("ff_flag_h263p_aiv",AV_CODEC_FLAG_H263P_AIV);
+ PARAM_FLAG("ff_flag_obmc",AV_CODEC_FLAG_OBMC);
+ PARAM_FLAG("ff_flag_h263p_slice_struct",AV_CODEC_FLAG_H263P_SLICE_STRUCT);
#endif
- PARAM_FLAG("ff_flag_loop_filter",CODEC_FLAG_LOOP_FILTER);
- PARAM_FLAG("ff_flag_closed_gop",CODEC_FLAG_CLOSED_GOP);
- PARAM_FLAG2("ff_flag2_fast",CODEC_FLAG2_FAST);
- PARAM_ENUM("ff_coder_type",coder_type,coder_type);
+ PARAM_FLAG("ff_flag_loop_filter",AV_CODEC_FLAG_LOOP_FILTER);
+ PARAM_FLAG("ff_flag_closed_gop",AV_CODEC_FLAG_CLOSED_GOP);
+ PARAM_FLAG2("ff_flag2_fast",AV_CODEC_FLAG2_FAST);
+ PARAM_DICT_INT("ff_coder_type","coder");
}
Index: libquicktime-1.2.4/plugins/ffmpeg/params.h
===================================================================
--- libquicktime-1.2.4.orig/plugins/ffmpeg/params.h
+++ libquicktime-1.2.4/plugins/ffmpeg/params.h
@@ -149,7 +149,7 @@ the reference. Unused for constant quant
.type = LQT_PARAMETER_INT, \
.val_default = { .val_int = 0 }, \
.val_min = { .val_int = 0 }, \
- .val_max = { .val_int = FF_MAX_B_FRAMES }, \
+ .val_max = { .val_int = 16 }, \
.help_string = TRS("Maximum number of B-frames between non B-frames") \
}
Index: libquicktime-1.2.4/plugins/ffmpeg/video.c
===================================================================
--- libquicktime-1.2.4.orig/plugins/ffmpeg/video.c
+++ libquicktime-1.2.4/plugins/ffmpeg/video.c
@@ -781,7 +781,7 @@ static int lqt_ffmpeg_decode_video(quick
if(extradata)
{
codec->extradata =
- calloc(1, extradata_size + FF_INPUT_BUFFER_PADDING_SIZE);
+ calloc(1, extradata_size + AV_INPUT_BUFFER_PADDING_SIZE);
memcpy(codec->extradata, extradata, extradata_size);
codec->avctx->extradata_size = extradata_size;
codec->avctx->extradata = codec->extradata;
@@ -1140,8 +1140,8 @@ static int init_imx_encoder(quicktime_t
codec->avctx->qmin = 1;
codec->avctx->qmax = 3;
codec->avctx->rtp_payload_size = 1; // ??
- codec->avctx->rc_buffer_aggressivity = 0.25;
- codec->avctx->flags |= CODEC_FLAG_INTERLACED_DCT|CODEC_FLAG_LOW_DELAY;
+ av_dict_set(&codec->options, "rc_buf_aggressivity", "0.25", 0);
+ codec->avctx->flags |= AV_CODEC_FLAG_INTERLACED_DCT|AV_CODEC_FLAG_LOW_DELAY;
#if (LIBAVCODEC_VERSION_MAJOR < 54)
codec->avctx->flags2 |= CODEC_FLAG2_INTRA_VLC|CODEC_FLAG2_NON_LINEAR_QUANT;
@@ -1328,7 +1328,7 @@ static int lqt_ffmpeg_encode_video(quick
// codec->avctx->time_base.den = 1;
// codec->avctx->time_base.num = lqt_video_time_scale(file, track);
- if(codec->avctx->flags & CODEC_FLAG_QSCALE)
+ if(codec->avctx->flags & AV_CODEC_FLAG_QSCALE)
codec->avctx->global_quality = codec->qscale;
codec->avctx->width = width;
@@ -1344,7 +1344,7 @@ static int lqt_ffmpeg_encode_video(quick
{
if(!(file->file_type & (LQT_FILE_AVI|LQT_FILE_AVI_ODML)))
{
- codec->avctx->flags |= CODEC_FLAG_GLOBAL_HEADER;
+ codec->avctx->flags |= AV_CODEC_FLAG_GLOBAL_HEADER;
codec->write_global_header = 1;
}
@@ -1360,7 +1360,7 @@ static int lqt_ffmpeg_encode_video(quick
{
lqt_log(file, LQT_LOG_INFO, LOG_DOMAIN, "Enabling interlaced encoding");
codec->avctx->flags |=
- (CODEC_FLAG_INTERLACED_DCT|CODEC_FLAG_INTERLACED_ME|CODEC_FLAG_ALT_SCAN);
+ (AV_CODEC_FLAG_INTERLACED_DCT|AV_CODEC_FLAG_INTERLACED_ME|AV_CODEC_FLAG_ALT_SCAN);
}
#endif
}
@@ -1387,7 +1387,7 @@ static int lqt_ffmpeg_encode_video(quick
{
if(!(file->file_type & (LQT_FILE_AVI|LQT_FILE_AVI_ODML)))
{
- codec->avctx->flags |= CODEC_FLAG_GLOBAL_HEADER;
+ codec->avctx->flags |= AV_CODEC_FLAG_GLOBAL_HEADER;
codec->write_global_header = 1;
}
}
@@ -1410,7 +1410,7 @@ static int lqt_ffmpeg_encode_video(quick
{
if(vtrack->interlace_mode != LQT_INTERLACE_NONE)
{
- codec->avctx->flags |= CODEC_FLAG_INTERLACED_DCT;
+ codec->avctx->flags |= AV_CODEC_FLAG_INTERLACED_DCT;
}
}
else if(codec->is_imx)
@@ -1422,7 +1422,7 @@ static int lqt_ffmpeg_encode_video(quick
if(codec->pass == 1)
{
codec->stats_file = fopen(codec->stats_filename, "w");
- codec->avctx->flags |= CODEC_FLAG_PASS1;
+ codec->avctx->flags |= AV_CODEC_FLAG_PASS1;
}
else if(codec->pass == codec->total_passes)
{
@@ -1438,7 +1438,7 @@ static int lqt_ffmpeg_encode_video(quick
fclose(codec->stats_file);
codec->stats_file = (FILE*)0;
- codec->avctx->flags |= CODEC_FLAG_PASS2;
+ codec->avctx->flags |= AV_CODEC_FLAG_PASS2;
}
}
/* Open codec */
@@ -1516,7 +1516,7 @@ static int lqt_ffmpeg_encode_video(quick
}
codec->frame->pts = vtrack->timestamp;
- if(codec->avctx->flags & CODEC_FLAG_QSCALE)
+ if(codec->avctx->flags & AV_CODEC_FLAG_QSCALE)
codec->frame->quality = codec->qscale;
#ifdef DO_INTERLACE
if(vtrack->interlace_mode != LQT_INTERLACE_NONE)
@@ -1599,8 +1599,7 @@ static int lqt_ffmpeg_encode_video(quick
else if(codec->encoder->id == AV_CODEC_ID_MPEG4)
{
int advanced = 0;
- if(codec->avctx->max_b_frames ||
- (codec->avctx->flags & (CODEC_FLAG_QPEL|CODEC_FLAG_GMC)))
+ if(codec->avctx->max_b_frames)
advanced = 1;
setup_header_mpeg4(file, track, codec->avctx->extradata,

View File

@ -0,0 +1,12 @@
Index: libquicktime-1.2.4/plugins/ffmpeg/ffmpeg.h
===================================================================
--- libquicktime-1.2.4.orig/plugins/ffmpeg/ffmpeg.h
+++ libquicktime-1.2.4/plugins/ffmpeg/ffmpeg.h
@@ -27,6 +27,7 @@
#include <quicktime/qtprivate.h>
#include AVCODEC_HEADER
+#include <libavutil/mem.h>
void quicktime_init_video_codec_ffmpeg(quicktime_codec_t * codec,
quicktime_video_map_t *vtrack,

View File

@ -1,6 +1,6 @@
Name: libquicktime Name: libquicktime
Version: 1.2.4 Version: 1.2.4
Release: 1mamba Release: 2mamba
Summary: Library for reading and writing quicktime files Summary: Library for reading and writing quicktime files
Group: System/Libraries Group: System/Libraries
Vendor: openmamba Vendor: openmamba
@ -10,41 +10,59 @@ URL: http://libquicktime.sourceforge.net/
Source: http://downloads.sourceforge.net/libquicktime/libquicktime-%{version}.tar.gz Source: http://downloads.sourceforge.net/libquicktime/libquicktime-%{version}.tar.gz
Patch0: %{name}-1.1.3-x264.patch Patch0: %{name}-1.1.3-x264.patch
Patch1: %{name}-1.2.1-gtk-2.22.patch Patch1: %{name}-1.2.1-gtk-2.22.patch
Patch2: libquicktime-1.2.4-CVE-2016-2399.patch
Patch3: libquicktime-1.2.4-CVE-2017-9122.patch
Patch4: libquicktime-1.2.4-faad2.patch
Patch5: libquicktime-1.2.4-ffmpeg-codecs.patch
Patch6: libquicktime-1.2.4-ffmpeg2.patch
Patch7: libquicktime-1.2.4-ffmpeg29.patch
Patch8: libquicktime-1.2.4-ffmpeg4.patch
Patch9: libquicktime-1.2.4-libavutil.patch
License: GPL License: GPL
## AUTOBUILDREQ-BEGIN ## AUTOBUILDREQ-BEGIN
BuildRequires: glibc-devel BuildRequires: glibc-devel
BuildRequires: liba52dec-devel BuildRequires: ldconfig
BuildRequires: libalsa-devel
BuildRequires: libatk-devel
BuildRequires: libcairo-devel
BuildRequires: libdc1394-devel
BuildRequires: libdv-devel
BuildRequires: libfaac-devel
BuildRequires: libfaad2-devel
BuildRequires: libGL-devel BuildRequires: libGL-devel
BuildRequires: libglib-devel
BuildRequires: libgtk-devel
BuildRequires: libICE-devel BuildRequires: libICE-devel
BuildRequires: libjpeg-devel
BuildRequires: liblame-devel
BuildRequires: libogg-devel
BuildRequires: libpango-devel
BuildRequires: libpng-devel
BuildRequires: libraw1394-devel
BuildRequires: libSM-devel BuildRequires: libSM-devel
BuildRequires: libtheora-devel
BuildRequires: libvorbis-devel
BuildRequires: libX11-devel BuildRequires: libX11-devel
BuildRequires: libx264-devel BuildRequires: libXau-devel
BuildRequires: libXaw-devel BuildRequires: libXaw-devel
BuildRequires: libXdmcp-devel
BuildRequires: libXext-devel BuildRequires: libXext-devel
BuildRequires: libXt-devel BuildRequires: libXt-devel
BuildRequires: libXv-devel BuildRequires: libXv-devel
BuildRequires: libxvidcore-devel BuildRequires: libalsa-devel
BuildRequires: libatk-devel
BuildRequires: libavcodec-ffmpeg-devel
BuildRequires: libbsd-devel
BuildRequires: libbzip2-devel
BuildRequires: libcairo-devel
BuildRequires: libexpat-devel
BuildRequires: libfaac-devel
BuildRequires: libfaad2-devel
BuildRequires: libfontconfig-devel
BuildRequires: libfreetype-devel
BuildRequires: libgdk-pixbuf-devel
BuildRequires: libglib-devel
BuildRequires: libgraphite2-devel
BuildRequires: libgtk2-devel
BuildRequires: libharfbuzz-devel
BuildRequires: libjpeg-devel
BuildRequires: liblame-devel
BuildRequires: libogg-devel
BuildRequires: liborc-devel
BuildRequires: libpango-devel
BuildRequires: libpng-devel
BuildRequires: libschroedinger-devel
BuildRequires: libstdc++6-devel
BuildRequires: libswscale-ffmpeg-devel
BuildRequires: libuuid-devel
BuildRequires: libvorbis-devel
BuildRequires: libx264-devel
BuildRequires: libxcb-devel
BuildRequires: libz-devel BuildRequires: libz-devel
## AUTOBUILDREQ-END ## AUTOBUILDREQ-END
BuildRequires: libschroedinger-devel
BuildRequires: libavcodec-devel
BuildRequires: libavc1394-devel >= 0.4.1 BuildRequires: libavc1394-devel >= 0.4.1
BuildRequires: pkgconfig >= 0.15.0 BuildRequires: pkgconfig >= 0.15.0
BuildRequires: libGLU-devel BuildRequires: libGLU-devel
@ -64,12 +82,7 @@ Requires: %{name} = %{?epoch:%epoch:}%{version}-%{release}
%description devel %description devel
Libquicktime is a library for reading and writing QuickTime files on UNIX systems. Libquicktime is a library for reading and writing QuickTime files on UNIX systems.
Video CODECs supported by this library are OpenDivX, MJPA, JPEG Photo, PNG, RGB, YUV 4:2:2, and YUV 4:2:0 compression. This package contains static libraries and header files needed for development.
Supported audio CODECs are Ogg Vorbis, IMA4, ulaw, and any linear PCM format.
Libquicktime is based on the quicktime4linux library.
Libquicktime add features such as a GNU build tools-based build process and dynamically loadable CODECs.
This package contains static libraries and header files need for development.
%package tools %package tools
Summary: Useful tools to operate on QuickTime files Summary: Useful tools to operate on QuickTime files
@ -79,10 +92,20 @@ Requires: %{name} = %{?epoch:%epoch:}%{version}-%{release}
%description tools %description tools
Useful tools to operate on QuickTime files. Useful tools to operate on QuickTime files.
%debug_package
%prep %prep
%setup -q %setup -q
#%patch0 -p0 %patch2 -p1
#%patch1 -p1 %patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
%patch8 -p1
%patch9 -p1
autoreconf -f -i
%build %build
%configure \ %configure \
@ -114,9 +137,8 @@ ln -s lqt %{buildroot}%{_includedir}/quicktime
%{_libdir}/libquicktime.so.* %{_libdir}/libquicktime.so.*
%dir %{_libdir}/%{name} %dir %{_libdir}/%{name}
%{_libdir}/%{name}/lqt_audiocodec.so %{_libdir}/%{name}/lqt_audiocodec.so
#%{_libdir}/%{name}/lqt_dv.so
%{_libdir}/%{name}/lqt_faac.so %{_libdir}/%{name}/lqt_faac.so
%{_libdir}/%{name}/lqt_faad2.so #%{_libdir}/%{name}/lqt_faad2.so
%{_libdir}/%{name}/lqt_ffmpeg.so %{_libdir}/%{name}/lqt_ffmpeg.so
%{_libdir}/%{name}/lqt_lame.so %{_libdir}/%{name}/lqt_lame.so
%{_libdir}/%{name}/lqt_mjpeg.so %{_libdir}/%{name}/lqt_mjpeg.so
@ -126,13 +148,10 @@ ln -s lqt %{buildroot}%{_includedir}/quicktime
%{_libdir}/%{name}/lqt_videocodec.so %{_libdir}/%{name}/lqt_videocodec.so
%{_libdir}/%{name}/lqt_vorbis.so %{_libdir}/%{name}/lqt_vorbis.so
%{_libdir}/%{name}/lqt_x264.so %{_libdir}/%{name}/lqt_x264.so
%doc AUTHORS COPYING
%doc AUTHORS ChangeLog COPYING NEWS README TODO
%files devel %files devel
%defattr(-, root, root) %defattr(-, root, root)
#%{_bindir}/lqt-config
#%{_datadir}/aclocal/*.m4
%{_includedir}/* %{_includedir}/*
%{_libdir}/*.a %{_libdir}/*.a
%{_libdir}/*.la %{_libdir}/*.la
@ -141,6 +160,7 @@ ln -s lqt %{buildroot}%{_includedir}/quicktime
%{_libdir}/%{name}/*.la %{_libdir}/%{name}/*.la
%{_libdir}/pkgconfig/%{name}.pc %{_libdir}/pkgconfig/%{name}.pc
%{_datadir}/doc/libquicktime/apiref/* %{_datadir}/doc/libquicktime/apiref/*
%doc ChangeLog NEWS README TODO
%files tools %files tools
%defattr(-, root, root) %defattr(-, root, root)
@ -152,6 +172,9 @@ ln -s lqt %{buildroot}%{_includedir}/quicktime
%{_mandir}/man1/* %{_mandir}/man1/*
%changelog %changelog
* Sat Dec 12 2020 Silvan Calarco <silvan.calarco@mambasoft.it> 1.2.4-2mamba
- rebuilt with debug package and patches from Arch linux
* Wed Aug 08 2012 Automatic Build System <autodist@mambasoft.it> 1.2.4-1mamba * Wed Aug 08 2012 Automatic Build System <autodist@mambasoft.it> 1.2.4-1mamba
- automatic version update by autodist - automatic version update by autodist