diff options
-rw-r--r-- | libre/libquicktime/PKGBUILD | 90 | ||||
-rw-r--r-- | libre/libquicktime/libquicktime-1.2.4-CVE-2016-2399.patch (renamed from libre/libquicktime/CVE-2016-2399.patch) | 0 | ||||
-rw-r--r-- | libre/libquicktime/libquicktime-1.2.4-CVE-2017-9122_et_al.patch | 151 | ||||
-rw-r--r-- | libre/libquicktime/libquicktime-1.2.4-faad2.patch | 86 | ||||
-rw-r--r-- | libre/libquicktime/libquicktime-1.2.4-ffmpeg-codecs.patch | 651 | ||||
-rw-r--r-- | libre/libquicktime/libquicktime-1.2.4-libavutil.patch | 12 |
6 files changed, 962 insertions, 28 deletions
diff --git a/libre/libquicktime/PKGBUILD b/libre/libquicktime/PKGBUILD index fbb49a6a6..b5501886c 100644 --- a/libre/libquicktime/PKGBUILD +++ b/libre/libquicktime/PKGBUILD @@ -1,47 +1,77 @@ -# Maintainer (Arch): Federico Cinelli <cinelli@aur.archlinux.org> -# Maintainer (Arch): Mateusz Herych <heniekk@gmail.com> +# Maintainer (Arch): David Runge <dvzrv@archlinux.org> +# Contributor (Arch): Federico Cinelli <cinelli@aur.archlinux.org> +# Contributor (Arch): Mateusz Herych <heniekk@gmail.com> # Maintainer: Omar Vega Ramos <ovruni@gnu.org.pe> # Contributor: Jorge Lopez <jorginho@lavabit.com> pkgname=libquicktime pkgver=1.2.4 -pkgrel=21 +pkgrel=22 pkgrel+=.parabola1 pkgdesc="A library for reading and writing quicktime files" pkgdesc+=", without nonfree faac support" arch=('x86_64') arch+=('i686' 'armv7h') -license=('GPL') +license=('LGPL2.1') url="http://libquicktime.sourceforge.net/" -depends=('alsa-lib' 'faad2' 'gtk2' 'lame' 'libjpeg-turbo' 'libxaw' - 'libxv' 'schroedinger' - 'libavcodec.so' 'libswscale.so' 'libvorbisenc.so' 'libvorbisfile.so' - 'libvorbis.so' 'libx264.so') -makedepends=('mesa-libgl') +depends=('glib2' 'glibc' 'zlib') +makedepends=('alsa-lib' 'faad2' 'ffmpeg' 'gtk2' 'lame' 'libdv' +'libglvnd' 'libjpeg-turbo' 'libvorbis' 'libx11' 'libxaw' 'libxext' 'libxt' +'libxv' 'schroedinger' 'sndio' 'x264') +optdepends=('alsa-lib: for lqtplay' + 'ffmpeg: for lqt_ffmpeg plugin' + 'gtk2: for libquicktime_config' + 'lame: for lqt_lame plugin' + 'libdv: for lqt_dv plugin' + 'libglvnd: for lqtplay' + 'libjpeg-turbo: for lqt_mjpeg plugin' + 'libpng: for lqt_png plugin' + 'libvorbis: for lqt_lame and lqt_vorbis plugin' + 'libx11: for lqtplay' + 'libxaw: for lqtplay' + 'libxext: for lqtplay' + 'libxt: for lqtplay' + 'libxv: for lqtplay' + 'schroedinger: for lqt_schroedinger plugin' + 'sndio: for lqtplay' + 'x264: for lqt_x264 plugin') +provides=('libquicktime.so') source=("https://downloads.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.gz" - CVE-2016-2399.patch - libquicktime-1.2.4-ffmpeg2.patch - libquicktime-1.2.4-ffmpeg29.patch - libquicktime-1.2.4-ffmpeg4.patch) -sha256sums=('1c53359c33b31347b4d7b00d3611463fe5e942cae3ec0fefe0d2fd413fd47368' - '006c6be761075ca25217fe510e1ec7cfbb6262c3d758c1bd629719072ddb0935' - '2c7bb532ea8ac3b0e7a9a76ca6ad41127810529e7f7c2faac6f1e2f7c5c4bb93' - 'c3a8dfb6bfb69c2b54aeafe3306a8af1fff5a3a06fd05b28725d3ea7688ce2cd' - 'd4582dc2ed389acd01080690a95643277e43955adcb4058132506c5b437d044f') + "${pkgname}-1.2.4-CVE-2016-2399.patch" + "${pkgname}-1.2.4-CVE-2017-9122_et_al.patch" + "${pkgname}-1.2.4-faad2.patch" + "${pkgname}-1.2.4-ffmpeg2.patch" + "${pkgname}-1.2.4-ffmpeg29.patch" + "${pkgname}-1.2.4-ffmpeg4.patch" + "${pkgname}-1.2.4-ffmpeg-codecs.patch" + "${pkgname}-1.2.4-libavutil.patch") +sha512sums=('6ab6cd62ae2361bb3ad73725e9e8baa2b03361bc23e9e34b24f90c0e2bec4337de950ed7f30a6a1d2e67ab33e8f0c43538369fd07e417f54b84583a3c331f8dd' + '759fee13bc96db036063efcd8288c0e467ce811b597cf6c0ceed1c8927593963174f4f3324512db0e773e936a4b9fe5c8d8fc9e0f00b2ce59110661175986f9c' + '93639d3fe12eefddd1b457be702ec0a4a64a73c44fce6b3134e50bb9a4e7e5f25d256d3ace6ec5e774f2db4c0d68725f3e35e901f7d932a4be9cba566eab528e' + '3e751330ebbc4026363efd45b21c60c313ea169a57a5cdfa46125e126aab34c2dea3629ce92e7b0b5f14693db4f11723177fd28611e2e979cc8fcd506077509e' + '32ddf394aad4ed80e89ec72a534e0466268ab0061b991815e905b78eae55a7d935117b0915faf6f7f51bd7e2d9fbaa4b0e07bfcef1ef1e2f4a7e2061c489122d' + '2a7e06c03b0f64f02b923c1a0e7121f4e1ea735f19a6df8ce8daf18177ead132d1ae921c64f3770042db3bbf29f15a7fcceece835d475e052c4c3bb7139c9e2e' + '1b11a82d694654976a5f79cd8feb27eec3810e09a66dc58ca576eaf1f96e4948abd4dae7955a7da6cf99ae6ffef9e183b39090d96cc6b5fe216b4c4f4faff7a8' + '20c535444de1f3e9a68c35ee4eb409f150e6340fd43dda4544791454f42c031b24c08f651e0351f5a22dcb59459ac372aa70d82a1d20482b2d997589e19087fd' + '691110dc18f6646e2e17f40c6a42911a6b8eaa8cea20b5595f20d218d51da11d11923a3001b7ad7c3ad6bd0d90e712b95ccee5526fa1bec176cd27813e4a775e') + replaces=("${pkgname}-libre" "${pkgname}-parabola") conflicts=("${pkgname}-libre" "${pkgname}-parabola") prepare() { - cd $pkgname-$pkgver - - # apply patches from gentoo https://gitweb.gentoo.org/repo/gentoo.git/tree/media-libs/libquicktime/files - patch -p1 -i "$srcdir/CVE-2016-2399.patch" - patch -p1 -i "$srcdir/libquicktime-1.2.4-ffmpeg2.patch" - patch -p1 -i "$srcdir/libquicktime-1.2.4-ffmpeg29.patch" - patch -p1 -i "$srcdir/libquicktime-1.2.4-ffmpeg4.patch" - for FILE in lqt_ffmpeg.c video.c audio.c ; do - sed -i -e "s:CODEC_ID_:AV_&:g" "plugins/ffmpeg/${FILE}" - done + cd "$pkgname-$pkgver" + # boatload of CVEs: http://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=libquicktime + patch -Np1 -i "../${pkgname}-1.2.4-CVE-2016-2399.patch" + patch -Np1 -i "../${pkgname}-1.2.4-CVE-2017-9122_et_al.patch" + # checks for faad2 are broken in configure.ac + patch -Np1 -i "../${pkgname}-1.2.4-faad2.patch" + # ffmpeg compatibility is very ancient + patch -Np1 -i "../${pkgname}-1.2.4-ffmpeg2.patch" + patch -Np1 -i "../${pkgname}-1.2.4-ffmpeg29.patch" + patch -Np1 -i "../${pkgname}-1.2.4-ffmpeg4.patch" + patch -Np1 -i "../${pkgname}-1.2.4-libavutil.patch" + patch -Np1 -i "../${pkgname}-1.2.4-ffmpeg-codecs.patch" + autoreconf -vfi } build() { @@ -50,6 +80,7 @@ build() { --prefix=/usr \ --enable-gpl \ --with-ffmpeg \ + --with-libdv \ --with-x264 \ --without-doxygen \ --without-faac @@ -57,6 +88,9 @@ build() { } package() { + depends+=('libfaad.so') cd $pkgname-$pkgver make DESTDIR="$pkgdir" install + install -vDm 644 {AUTHORS,ChangeLog,README,TODO} \ + -t "${pkgdir}/usr/share/doc/${pkgname}" } diff --git a/libre/libquicktime/CVE-2016-2399.patch b/libre/libquicktime/libquicktime-1.2.4-CVE-2016-2399.patch index a1737c0dc..a1737c0dc 100644 --- a/libre/libquicktime/CVE-2016-2399.patch +++ b/libre/libquicktime/libquicktime-1.2.4-CVE-2016-2399.patch diff --git a/libre/libquicktime/libquicktime-1.2.4-CVE-2017-9122_et_al.patch b/libre/libquicktime/libquicktime-1.2.4-CVE-2017-9122_et_al.patch new file mode 100644 index 000000000..06fb7b337 --- /dev/null +++ b/libre/libquicktime/libquicktime-1.2.4-CVE-2017-9122_et_al.patch @@ -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) diff --git a/libre/libquicktime/libquicktime-1.2.4-faad2.patch b/libre/libquicktime/libquicktime-1.2.4-faad2.patch new file mode 100644 index 000000000..563f46426 --- /dev/null +++ b/libre/libquicktime/libquicktime-1.2.4-faad2.patch @@ -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 + diff --git a/libre/libquicktime/libquicktime-1.2.4-ffmpeg-codecs.patch b/libre/libquicktime/libquicktime-1.2.4-ffmpeg-codecs.patch new file mode 100644 index 000000000..8de9a288c --- /dev/null +++ b/libre/libquicktime/libquicktime-1.2.4-ffmpeg-codecs.patch @@ -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; + } diff --git a/libre/libquicktime/libquicktime-1.2.4-libavutil.patch b/libre/libquicktime/libquicktime-1.2.4-libavutil.patch new file mode 100644 index 000000000..99a4d39e5 --- /dev/null +++ b/libre/libquicktime/libquicktime-1.2.4-libavutil.patch @@ -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, |