public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] repo/gentoo:master commit in: media-libs/libquicktime/, media-libs/libquicktime/files/
@ 2017-03-11  9:59 Alexis Ballier
  0 siblings, 0 replies; 4+ messages in thread
From: Alexis Ballier @ 2017-03-11  9:59 UTC (permalink / raw
  To: gentoo-commits

commit:     f4fb4a86e43e1182ff5fc0f422b31eb853860e13
Author:     Alexis Ballier <aballier <AT> gentoo <DOT> org>
AuthorDate: Sat Mar 11 09:47:47 2017 +0000
Commit:     Alexis Ballier <aballier <AT> gentoo <DOT> org>
CommitDate: Sat Mar 11 09:48:02 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=f4fb4a86

media-libs/libquicktime: Add fix for CVE-2016-2399

Package-Manager: Portage-2.3.4, Repoman-2.3.2

 media-libs/libquicktime/files/CVE-2016-2399.patch  |  25 +++++
 .../libquicktime/libquicktime-1.2.4-r2.ebuild      | 123 +++++++++++++++++++++
 2 files changed, 148 insertions(+)

diff --git a/media-libs/libquicktime/files/CVE-2016-2399.patch b/media-libs/libquicktime/files/CVE-2016-2399.patch
new file mode 100644
index 00000000000..a1737c0dc0a
--- /dev/null
+++ b/media-libs/libquicktime/files/CVE-2016-2399.patch
@@ -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)

diff --git a/media-libs/libquicktime/libquicktime-1.2.4-r2.ebuild b/media-libs/libquicktime/libquicktime-1.2.4-r2.ebuild
new file mode 100644
index 00000000000..eb38c001faf
--- /dev/null
+++ b/media-libs/libquicktime/libquicktime-1.2.4-r2.ebuild
@@ -0,0 +1,123 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+inherit libtool eutils multilib-minimal
+
+DESCRIPTION="An enhanced version of the quicktime4linux library"
+HOMEPAGE="http://libquicktime.sourceforge.net/"
+SRC_URI="mirror://sourceforge/${PN}/${P}.tar.gz"
+
+LICENSE="LGPL-2.1"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~ppc ~ppc64 ~sparc ~x86 ~amd64-fbsd ~x86-fbsd"
+IUSE="aac alsa doc dv encode ffmpeg gtk jpeg lame libav cpu_flags_x86_mmx opengl png schroedinger static-libs vorbis X x264"
+
+RDEPEND=">=virtual/libintl-0-r1[${MULTILIB_USEDEP}]
+	sys-libs/zlib:=
+	aac? (
+		>=media-libs/faad2-2.7-r3[${MULTILIB_USEDEP}]
+		encode? ( >=media-libs/faac-1.28-r3[${MULTILIB_USEDEP}] )
+		)
+	alsa? ( >=media-libs/alsa-lib-1.0.20 )
+	dv? ( >=media-libs/libdv-1.0.0-r3[${MULTILIB_USEDEP}] )
+	ffmpeg? (
+		libav? ( media-video/libav:0=[${MULTILIB_USEDEP}] )
+		!libav? ( media-video/ffmpeg:0=[${MULTILIB_USEDEP}] )
+	)
+	gtk? ( x11-libs/gtk+:2 )
+	jpeg? ( >=virtual/jpeg-0-r2:0[${MULTILIB_USEDEP}] )
+	lame? ( >=media-sound/lame-3.99.5-r1[${MULTILIB_USEDEP}] )
+	opengl? ( virtual/opengl )
+	png? ( >=media-libs/libpng-1.6.10:0[${MULTILIB_USEDEP}] )
+	schroedinger? ( >=media-libs/schroedinger-1.0.11-r1[${MULTILIB_USEDEP}] )
+	vorbis? (
+		>=media-libs/libogg-1.3.0[${MULTILIB_USEDEP}]
+		>=media-libs/libvorbis-1.3.3-r1[${MULTILIB_USEDEP}]
+		)
+	X? (
+		x11-libs/libX11
+		x11-libs/libXaw
+		x11-libs/libXext
+		x11-libs/libXt
+		x11-libs/libXv
+		)
+	x264? ( >=media-libs/x264-0.0.20130506[${MULTILIB_USEDEP}] )"
+DEPEND="${RDEPEND}
+	>=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}]
+	sys-devel/gettext
+	doc? ( app-doc/doxygen )
+	X? ( >=x11-proto/videoproto-2.3.1-r1[${MULTILIB_USEDEP}] )"
+
+REQUIRED_USE="opengl? ( X )"
+
+DOCS="ChangeLog README TODO"
+
+src_prepare() {
+	epatch "${FILESDIR}"/${P}+libav-9.patch \
+		"${FILESDIR}"/${P}-ffmpeg2.patch \
+		"${FILESDIR}/CVE-2016-2399.patch"
+	if has_version '>=media-video/ffmpeg-2.9' ||
+		has_version '>=media-video/libav-12'; then
+		epatch "${FILESDIR}"/${P}-ffmpeg29.patch
+	fi
+
+	for FILE in lqt_ffmpeg.c video.c audio.c ; do
+		sed -i -e "s:CODEC_ID_:AV_&:g" "${S}/plugins/ffmpeg/${FILE}" || die
+	done
+
+	elibtoolize # Required for .so versioning on g/fbsd
+}
+
+multilib_src_configure() {
+	# utils use: alsa, opengl, gtk+, X
+
+	ECONF_SOURCE=${S} \
+	econf \
+		--enable-gpl \
+		$(use_enable static-libs static) \
+		$(use_enable cpu_flags_x86_mmx asm) \
+		$(multilib_native_use_with doc doxygen) \
+		$(use vorbis || echo --without-vorbis) \
+		$(use_with lame) \
+		$(multilib_native_use_with X x) \
+		$(multilib_native_use_with opengl) \
+		$(multilib_native_use_with alsa) \
+		$(multilib_native_use_with gtk) \
+		$(use_with dv libdv) \
+		$(use_with jpeg libjpeg) \
+		$(use_with ffmpeg) \
+		$(use_with png libpng) \
+		$(use_with schroedinger) \
+		$(use_with aac faac) \
+		$(use encode || echo --without-faac) \
+		$(use_with aac faad2) \
+		$(use_with x264) \
+		--without-cpuflags
+
+	if ! multilib_is_native_abi; then
+		# disable building utilities
+		sed -i -e '/SUBDIRS =/s:utils::' Makefile || die
+	fi
+}
+
+multilib_src_install_all() {
+	einstalldocs
+	prune_libtool_files --all
+
+	# Compatibility with software that uses quicktime prefix, but
+	# don't do that when building for Darwin/MacOS
+	[[ ${CHOST} != *-darwin* ]] && dosym /usr/include/lqt /usr/include/quicktime
+}
+
+pkg_preinst() {
+	if [[ -d /usr/include/quicktime && ! -L /usr/include/quicktime ]]; then
+		elog "For compatibility with other quicktime libraries, ${PN} was"
+		elog "going to create a /usr/include/quicktime symlink, but for some"
+		elog "reason that is a directory on your system."
+
+		elog "Please check that is empty, and remove it, or submit a bug"
+		elog "telling us which package owns the directory."
+		die "/usr/include/quicktime is a directory."
+	fi
+}


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: media-libs/libquicktime/, media-libs/libquicktime/files/
@ 2018-04-20  7:48 Alexis Ballier
  0 siblings, 0 replies; 4+ messages in thread
From: Alexis Ballier @ 2018-04-20  7:48 UTC (permalink / raw
  To: gentoo-commits

commit:     3060f60f2983c557129aaef8d877a890bfad3cf1
Author:     Alexis Ballier <aballier <AT> gentoo <DOT> org>
AuthorDate: Fri Apr 20 07:24:51 2018 +0000
Commit:     Alexis Ballier <aballier <AT> gentoo <DOT> org>
CommitDate: Fri Apr 20 07:47:44 2018 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=3060f60f

media-libs/libquicktime: fix build with ffmpeg4

Package-Manager: Portage-2.3.31, Repoman-2.3.9

 .../files/libquicktime-1.2.4-ffmpeg4.patch         | 342 +++++++++++++++++++++
 .../libquicktime/libquicktime-1.2.4-r2.ebuild      |   5 +-
 2 files changed, 346 insertions(+), 1 deletion(-)

diff --git a/media-libs/libquicktime/files/libquicktime-1.2.4-ffmpeg4.patch b/media-libs/libquicktime/files/libquicktime-1.2.4-ffmpeg4.patch
new file mode 100644
index 00000000000..eb196ea16ae
--- /dev/null
+++ b/media-libs/libquicktime/files/libquicktime-1.2.4-ffmpeg4.patch
@@ -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,

diff --git a/media-libs/libquicktime/libquicktime-1.2.4-r2.ebuild b/media-libs/libquicktime/libquicktime-1.2.4-r2.ebuild
index baecbef1172..f52066263bb 100644
--- a/media-libs/libquicktime/libquicktime-1.2.4-r2.ebuild
+++ b/media-libs/libquicktime/libquicktime-1.2.4-r2.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2017 Gentoo Foundation
+# Copyright 1999-2018 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=5
@@ -61,6 +61,9 @@ src_prepare() {
 		has_version '>=media-video/libav-12'; then
 		epatch "${FILESDIR}"/${P}-ffmpeg29.patch
 	fi
+	if has_version '>media-video/ffmpeg-3.5' ; then
+		epatch "${FILESDIR}/${P}-ffmpeg4.patch"
+	fi
 
 	for FILE in lqt_ffmpeg.c video.c audio.c ; do
 		sed -i -e "s:CODEC_ID_:AV_&:g" "${S}/plugins/ffmpeg/${FILE}" || die


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: media-libs/libquicktime/, media-libs/libquicktime/files/
@ 2018-09-18 15:11 Andreas Sturmlechner
  0 siblings, 0 replies; 4+ messages in thread
From: Andreas Sturmlechner @ 2018-09-18 15:11 UTC (permalink / raw
  To: gentoo-commits

commit:     d8a4ee0263c4c38242fa751a779b8c5ec3bf3d5c
Author:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Tue Sep 18 14:49:30 2018 +0000
Commit:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Tue Sep 18 15:07:44 2018 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=d8a4ee02

media-libs/libquicktime: EAPI-7 bump

Package-Manager: Portage-2.3.49, Repoman-2.3.10

 ...atch => libquicktime-1.2.4-CVE-2016-2399.patch} |  0
 .../libquicktime/libquicktime-1.2.4-r2.ebuild      |  2 +-
 ....2.4-r2.ebuild => libquicktime-1.2.4-r3.ebuild} | 30 +++++++++++-----------
 3 files changed, 16 insertions(+), 16 deletions(-)

diff --git a/media-libs/libquicktime/files/CVE-2016-2399.patch b/media-libs/libquicktime/files/libquicktime-1.2.4-CVE-2016-2399.patch
similarity index 100%
rename from media-libs/libquicktime/files/CVE-2016-2399.patch
rename to media-libs/libquicktime/files/libquicktime-1.2.4-CVE-2016-2399.patch

diff --git a/media-libs/libquicktime/libquicktime-1.2.4-r2.ebuild b/media-libs/libquicktime/libquicktime-1.2.4-r2.ebuild
index 7153bd3006a..32f2d0f169e 100644
--- a/media-libs/libquicktime/libquicktime-1.2.4-r2.ebuild
+++ b/media-libs/libquicktime/libquicktime-1.2.4-r2.ebuild
@@ -57,7 +57,7 @@ DOCS=( ChangeLog README TODO )
 PATCHES=(
 	"${FILESDIR}"/${P}+libav-9.patch
 	"${FILESDIR}"/${P}-ffmpeg2.patch
-	"${FILESDIR}"/CVE-2016-2399.patch
+	"${FILESDIR}"/${P}-CVE-2016-2399.patch
 )
 
 src_prepare() {

diff --git a/media-libs/libquicktime/libquicktime-1.2.4-r2.ebuild b/media-libs/libquicktime/libquicktime-1.2.4-r3.ebuild
similarity index 87%
copy from media-libs/libquicktime/libquicktime-1.2.4-r2.ebuild
copy to media-libs/libquicktime/libquicktime-1.2.4-r3.ebuild
index 7153bd3006a..69f1b64818e 100644
--- a/media-libs/libquicktime/libquicktime-1.2.4-r2.ebuild
+++ b/media-libs/libquicktime/libquicktime-1.2.4-r3.ebuild
@@ -1,7 +1,7 @@
 # Copyright 1999-2018 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=6
+EAPI=7
 
 inherit libtool multilib-minimal
 
@@ -11,20 +11,21 @@ SRC_URI="mirror://sourceforge/${PN}/${P}.tar.gz"
 
 LICENSE="LGPL-2.1"
 SLOT="0"
-KEYWORDS="alpha amd64 ~arm ~arm64 ~hppa ia64 ppc ppc64 sparc x86 ~amd64-fbsd ~x86-fbsd"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~ppc ~ppc64 ~sparc ~x86 ~amd64-fbsd ~x86-fbsd"
 IUSE="aac alsa doc dv encode ffmpeg gtk jpeg lame libav cpu_flags_x86_mmx opengl png schroedinger static-libs vorbis X x264"
 
-RDEPEND=">=virtual/libintl-0-r1[${MULTILIB_USEDEP}]
-	sys-libs/zlib:=
+RDEPEND="
+	sys-libs/zlib
+	>=virtual/libintl-0-r1[${MULTILIB_USEDEP}]
 	aac? (
 		>=media-libs/faad2-2.7-r3[${MULTILIB_USEDEP}]
 		encode? ( >=media-libs/faac-1.28-r3[${MULTILIB_USEDEP}] )
-		)
+	)
 	alsa? ( >=media-libs/alsa-lib-1.0.20 )
 	dv? ( >=media-libs/libdv-1.0.0-r3[${MULTILIB_USEDEP}] )
 	ffmpeg? (
-		libav? ( media-video/libav:0=[${MULTILIB_USEDEP}] )
-		!libav? ( media-video/ffmpeg:0=[${MULTILIB_USEDEP}] )
+		libav? ( >=media-video/libav-12:0=[${MULTILIB_USEDEP}] )
+		!libav? ( >=media-video/ffmpeg-3.2.6:0=[${MULTILIB_USEDEP}] )
 	)
 	gtk? ( x11-libs/gtk+:2 )
 	jpeg? ( >=virtual/jpeg-0-r2:0[${MULTILIB_USEDEP}] )
@@ -35,16 +36,17 @@ RDEPEND=">=virtual/libintl-0-r1[${MULTILIB_USEDEP}]
 	vorbis? (
 		>=media-libs/libogg-1.3.0[${MULTILIB_USEDEP}]
 		>=media-libs/libvorbis-1.3.3-r1[${MULTILIB_USEDEP}]
-		)
+	)
 	X? (
 		x11-libs/libX11
 		x11-libs/libXaw
 		x11-libs/libXext
 		x11-libs/libXt
 		x11-libs/libXv
-		)
+	)
 	x264? ( >=media-libs/x264-0.0.20130506:=[${MULTILIB_USEDEP}] )"
-DEPEND="${RDEPEND}
+DEPEND="${RDEPEND}"
+BDEPEND="
 	>=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}]
 	sys-devel/gettext
 	doc? ( app-doc/doxygen )
@@ -57,15 +59,13 @@ DOCS=( ChangeLog README TODO )
 PATCHES=(
 	"${FILESDIR}"/${P}+libav-9.patch
 	"${FILESDIR}"/${P}-ffmpeg2.patch
-	"${FILESDIR}"/CVE-2016-2399.patch
+	"${FILESDIR}"/${P}-ffmpeg29.patch
+	"${FILESDIR}"/${P}-CVE-2016-2399.patch
 )
 
 src_prepare() {
 	default
-	if has_version '>=media-video/ffmpeg-2.9' ||
-		has_version '>=media-video/libav-12'; then
-			eapply "${FILESDIR}"/${P}-ffmpeg29.patch
-	fi
+
 	if has_version '>media-video/ffmpeg-3.5' ; then
 		eapply "${FILESDIR}/${P}-ffmpeg4.patch"
 	fi


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: media-libs/libquicktime/, media-libs/libquicktime/files/
@ 2024-05-18 10:28 Pacho Ramos
  0 siblings, 0 replies; 4+ messages in thread
From: Pacho Ramos @ 2024-05-18 10:28 UTC (permalink / raw
  To: gentoo-commits

commit:     18fa34358d5e58bd9c6a59b66602bd4ee329a70f
Author:     Pacho Ramos <pacho <AT> gentoo <DOT> org>
AuthorDate: Sat May 18 10:26:05 2024 +0000
Commit:     Pacho Ramos <pacho <AT> gentoo <DOT> org>
CommitDate: Sat May 18 10:28:10 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=18fa3435

media-libs/libquicktime: Apply fixes from Arch

Adds compatibility with newer ffmpeg versions, faad2 fixes and fix codecs
via patch instead of sedding.

Closes: https://bugs.gentoo.org/834384
Signed-off-by: Pacho Ramos <pacho <AT> gentoo.org>

 .../files/libquicktime-1.2.4-faad2.patch           |  86 +++
 .../files/libquicktime-1.2.4-ffmpeg-codecs.patch   | 651 +++++++++++++++++++++
 .../files/libquicktime-1.2.4-ffmpeg5.patch         | 342 +++++++++++
 .../libquicktime/libquicktime-1.2.4-r5.ebuild      | 124 ++++
 4 files changed, 1203 insertions(+)

diff --git a/media-libs/libquicktime/files/libquicktime-1.2.4-faad2.patch b/media-libs/libquicktime/files/libquicktime-1.2.4-faad2.patch
new file mode 100644
index 000000000000..563f46426f26
--- /dev/null
+++ b/media-libs/libquicktime/files/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/media-libs/libquicktime/files/libquicktime-1.2.4-ffmpeg-codecs.patch b/media-libs/libquicktime/files/libquicktime-1.2.4-ffmpeg-codecs.patch
new file mode 100644
index 000000000000..8de9a288c176
--- /dev/null
+++ b/media-libs/libquicktime/files/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/media-libs/libquicktime/files/libquicktime-1.2.4-ffmpeg5.patch b/media-libs/libquicktime/files/libquicktime-1.2.4-ffmpeg5.patch
new file mode 100644
index 000000000000..d340f084af41
--- /dev/null
+++ b/media-libs/libquicktime/files/libquicktime-1.2.4-ffmpeg5.patch
@@ -0,0 +1,342 @@
+--- a/plugins/ffmpeg/audio.c
++++ b/plugins/ffmpeg/audio.c
+@@ -423,8 +423,8 @@ static int a52_header_read(a52_header *
+ typedef struct
+   {
+   AVCodecContext * avctx;
+-  AVCodec * encoder;
+-  AVCodec * decoder;
++  AVCodec const * encoder;
++  AVCodec const * decoder;
+ 
+   int initialized;
+   
+@@ -512,7 +512,6 @@ static int decode_chunk_vbr(quicktime_t
+ 
+ #if DECODE_AUDIO4
+   AVFrame f;
+-  int got_frame;
+ #endif
+   
+   chunk_packets = lqt_audio_num_vbr_packets(file, track, track_map->cur_chunk, &num_samples);
+@@ -548,13 +547,14 @@ static int decode_chunk_vbr(quicktime_t
+     codec->pkt.size = packet_size + AV_INPUT_BUFFER_PADDING_SIZE;
+ 
+ #if DECODE_AUDIO4
+-    frame_bytes = avcodec_decode_audio4(codec->avctx, &f,
+-                                        &got_frame, &codec->pkt);
+-    if(frame_bytes < 0)
++    if(avcodec_send_packet(codec->avctx, &codec->pkt) < 0 &&
++       avcodec_receive_frame(codec->avctx, &f) < 0)
+       {
+       lqt_log(file, LQT_LOG_ERROR, LOG_DOMAIN, "avcodec_decode_audio4 error");
+       break;
+       }
++    frame_bytes = codec->pkt.size;
++
+     bytes_decoded = f.nb_samples * 2 * track_map->channels;
+     memcpy(&codec->sample_buffer[track_map->channels *
+                                  (codec->sample_buffer_end -
+@@ -615,7 +615,6 @@ static int decode_chunk(quicktime_t * fi
+ 
+ #if DECODE_AUDIO4
+   AVFrame f;
+-  int got_frame;
+ #endif
+   
+   /* Read chunk */
+@@ -764,14 +763,14 @@ static int decode_chunk(quicktime_t * fi
+     codec->pkt.size = codec->bytes_in_chunk_buffer + AV_INPUT_BUFFER_PADDING_SIZE;
+ 
+ #if DECODE_AUDIO4
+-    
+-    frame_bytes = avcodec_decode_audio4(codec->avctx, &f,
+-                                        &got_frame, &codec->pkt);
+-    if(frame_bytes < 0)
++    if(avcodec_send_packet(codec->avctx, &codec->pkt) < 0 ||
++       avcodec_receive_frame(codec->avctx, &f) < 0)
+       {
+       lqt_log(file, LQT_LOG_ERROR, LOG_DOMAIN, "avcodec_decode_audio4 error");
+       break;
+       }
++    frame_bytes = codec->pkt.size;
++
+     bytes_decoded = f.nb_samples * 2 * track_map->channels;
+     memcpy(&codec->sample_buffer[track_map->channels *
+                                  (codec->sample_buffer_end -
+@@ -1198,7 +1197,6 @@ static int lqt_ffmpeg_encode_audio(quick
+ #if ENCODE_AUDIO2
+   AVFrame f;
+   AVPacket pkt;
+-  int got_packet;
+ #endif
+   
+   if(!codec->initialized)
+@@ -1274,15 +1272,11 @@ static int lqt_ffmpeg_encode_audio(quick
+                              codec->avctx->frame_size * channels * 2, 
+                              1);
+ 
+-    if(avcodec_encode_audio2(codec->avctx, &pkt,
+-                             &f, &got_packet) < 0)
++    if(avcodec_send_frame(codec->avctx, &f) < 0 ||
++       avcodec_receive_packet(codec->avctx, &pkt) < 0)
+       return 0;
+ 
+-    if(got_packet && pkt.size)
+-      frame_bytes = pkt.size;
+-    else
+-      frame_bytes = 0;
+-
++    frame_bytes = pkt.size;
+ #else
+     frame_bytes = avcodec_encode_audio(codec->avctx, codec->chunk_buffer,
+                                        codec->chunk_buffer_alloc,
+@@ -1474,8 +1468,9 @@ static int read_packet_ac3(quicktime_t *
+   }
+ 
+ void quicktime_init_audio_codec_ffmpeg(quicktime_codec_t * codec_base,
+-                                       quicktime_audio_map_t *atrack, AVCodec *encoder,
+-                                       AVCodec *decoder)
++                                       quicktime_audio_map_t *atrack,
++                                       const AVCodec *encoder,
++                                       const AVCodec *decoder)
+   {
+   quicktime_ffmpeg_audio_codec_t *codec;
+   
+--- a/plugins/ffmpeg/ffmpeg.h
++++ b/plugins/ffmpeg/ffmpeg.h
+@@ -30,10 +30,12 @@
+ 
+ void quicktime_init_video_codec_ffmpeg(quicktime_codec_t * codec,
+                                        quicktime_video_map_t *vtrack,
+-                                       AVCodec *encoder, AVCodec *decoder);
++                                       const AVCodec *encoder,
++                                       const AVCodec *decoder);
+ void quicktime_init_audio_codec_ffmpeg(quicktime_codec_t * codec,
+                                        quicktime_audio_map_t *vtrack,
+-                                       AVCodec *encoder, AVCodec *decoder);
++                                       const AVCodec *encoder,
++                                       const AVCodec *decoder);
+ 
+ void lqt_ffmpeg_set_parameter(AVCodecContext * ctx,
+ #if LIBAVCODEC_VERSION_MAJOR >= 54
+--- a/plugins/ffmpeg/lqt_ffmpeg.c
++++ b/plugins/ffmpeg/lqt_ffmpeg.c
+@@ -315,8 +315,8 @@ struct CODECIDMAP
+   {
+   int id;
+   int index;
+-  AVCodec *encoder;
+-  AVCodec *decoder;
++  AVCodec const *encoder;
++  AVCodec const *decoder;
+   lqt_parameter_info_static_t * encode_parameters;
+   lqt_parameter_info_static_t * decode_parameters;
+   lqt_image_size_static_t     * image_sizes;
+@@ -947,7 +947,9 @@ static void ffmpeg_map_init(void)
+     return;
+     }
+     
++#if LIBAVCODEC_VERSION_MAJOR < 59
+   avcodec_register_all();
++#endif
+   //  avcodec_init();
+   ffmpeg_num_video_codecs = 0;
+   ffmpeg_num_audio_codecs = 0;
+--- a/plugins/ffmpeg/params.c
++++ b/plugins/ffmpeg/params.c
+@@ -124,12 +124,14 @@ typedef struct
+   }
+ 
+ 
++#if LIBAVCODEC_VERSION_MAJOR < 59
+ enum_t prediction_method[] =
+   {
+     { "Left",   FF_PRED_LEFT },
+     { "Plane",  FF_PRED_PLANE },
+     { "Median", FF_PRED_MEDIAN }
+   };
++#endif
+ 
+ enum_t compare_func[] =
+   {
+@@ -193,7 +195,9 @@ void lqt_ffmpeg_set_parameter(AVCodecCon
+   PARAM_INT("ff_max_qdiff",max_qdiff);
+   PARAM_INT("ff_max_b_frames",max_b_frames);
+   PARAM_FLOAT("ff_b_quant_factor",b_quant_factor);
++#if LIBAVCODEC_VERSION_MAJOR < 59
+   PARAM_INT("ff_b_frame_strategy",b_frame_strategy);
++#endif
+ 
+ #if LIBAVCODEC_VERSION_MAJOR >= 55
+   PARAM_DICT_INT("ff_luma_elim_threshold","luma_elim_threshold");
+@@ -216,7 +220,9 @@ void lqt_ffmpeg_set_parameter(AVCodecCon
+   PARAM_FLOAT("ff_spatial_cplx_masking",spatial_cplx_masking);
+   PARAM_FLOAT("ff_p_masking",p_masking);
+   PARAM_FLOAT("ff_dark_masking",dark_masking);
++#if LIBAVCODEC_VERSION_MAJOR < 59
+   PARAM_ENUM("ff_prediction_method",prediction_method,prediction_method);
++#endif
+   PARAM_ENUM("ff_me_cmp",me_cmp,compare_func);
+   PARAM_CMP_CHROMA("ff_me_cmp_chroma",me_cmp);
+   PARAM_ENUM("ff_me_sub_cmp",me_sub_cmp,compare_func);
+@@ -227,17 +233,23 @@ void lqt_ffmpeg_set_parameter(AVCodecCon
+   PARAM_CMP_CHROMA("ff_ildct_cmp_chroma",ildct_cmp);
+   PARAM_INT("ff_dia_size",dia_size);
+   PARAM_INT("ff_last_predictor_count",last_predictor_count);
++#if LIBAVCODEC_VERSION_MAJOR < 59
+   PARAM_INT("ff_pre_me",pre_me);
++#endif
+   PARAM_ENUM("ff_me_pre_cmp",me_pre_cmp,compare_func);
+   PARAM_CMP_CHROMA("ff_pre_me_cmp_chroma",me_pre_cmp);
+   PARAM_INT("ff_pre_dia_size",pre_dia_size);
+   PARAM_INT("ff_me_subpel_quality",me_subpel_quality);
+   PARAM_INT("ff_me_range",me_range);
+   PARAM_ENUM("ff_mb_decision",mb_decision,mb_decision);
++#if LIBAVCODEC_VERSION_MAJOR < 59
+   PARAM_INT("ff_scenechange_threshold",scenechange_threshold);
++#endif
+   PARAM_DICT_INT("ff_lmin", "lmin");
+   PARAM_DICT_INT("ff_lmax", "lmax");
++#if LIBAVCODEC_VERSION_MAJOR < 59
+   PARAM_INT("ff_noise_reduction",noise_reduction);
++#endif
+   PARAM_INT_SCALE("ff_rc_initial_buffer_occupancy",rc_initial_buffer_occupancy,1000);
+ 
+ #if LIBAVCODEC_VERSION_MAJOR >= 55
+@@ -253,9 +265,13 @@ void lqt_ffmpeg_set_parameter(AVCodecCon
+   PARAM_DICT_INT("ff_border_masking","border_mask");
+   PARAM_QP2LAMBDA("ff_mb_lmin", mb_lmin);
+   PARAM_QP2LAMBDA("ff_mb_lmax", mb_lmax);
++#if LIBAVCODEC_VERSION_MAJOR < 59
+   PARAM_INT("ff_me_penalty_compensation",me_penalty_compensation);
++#endif
+   PARAM_INT("ff_bidir_refine",bidir_refine);
++#if LIBAVCODEC_VERSION_MAJOR < 59
+   PARAM_INT("ff_brd_scale",brd_scale);
++#endif
+   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);
+--- a/plugins/ffmpeg/video.c
++++ b/plugins/ffmpeg/video.c
+@@ -61,8 +61,8 @@ enum AvidYuvRange
+ typedef struct
+   {
+   AVCodecContext * avctx;
+-  AVCodec * encoder;
+-  AVCodec * decoder;
++  AVCodec const * encoder;
++  AVCodec const * decoder;
+   int initialized;
+ 
+   int decoding_delay;
+@@ -878,10 +878,12 @@ static int lqt_ffmpeg_decode_video(quick
+         }
+ #endif
+       
+-      if(avcodec_decode_video2(codec->avctx,
+-                               codec->frame,
+-                               &got_pic,
+-                               &codec->pkt) < 0)
++      if(avcodec_send_packet(codec->avctx, &codec->pkt) == 0 &&
++         avcodec_receive_frame(codec->avctx, codec->frame) == 0)
++        {
++        got_pic = 1;
++        }
++      else
+         {
+         lqt_log(file, LQT_LOG_ERROR, LOG_DOMAIN, "Skipping corrupted frame");
+         continue;
+@@ -1062,10 +1064,8 @@ static void resync_ffmpeg(quicktime_t *f
+ #if LIBAVCODEC_BUILD >= ((52<<16)+(26<<8)+0)
+         codec->pkt.data = codec->buffer;
+         codec->pkt.size = buffer_size;
+-        avcodec_decode_video2(codec->avctx,
+-                              codec->frame,
+-                              &got_pic,
+-                              &codec->pkt);
++        got_pic = (avcodec_send_packet(codec->avctx, &codec->pkt) == 0 &&
++                   avcodec_receive_frame(codec->avctx, codec->frame) == 0);
+ #else
+         avcodec_decode_video(codec->avctx,
+                              codec->frame,
+@@ -1139,7 +1139,9 @@ static int init_imx_encoder(quicktime_t
+   codec->avctx->intra_dc_precision = 2;
+   codec->avctx->qmin = 1;
+   codec->avctx->qmax = 3;
++#if (LIBAVCODEC_VERSION_MAJOR < 59)
+   codec->avctx->rtp_payload_size = 1; // ??
++#endif
+   av_dict_set(&codec->options, "rc_buf_aggressivity", "0.25", 0);
+   codec->avctx->flags |= AV_CODEC_FLAG_INTERLACED_DCT|AV_CODEC_FLAG_LOW_DELAY;
+ 
+@@ -1290,7 +1292,6 @@ static int lqt_ffmpeg_encode_video(quick
+   int stats_len;
+ #if ENCODE_VIDEO2
+   AVPacket pkt;
+-  int got_packet;
+ #endif
+   int64_t pts;
+   int kf;
+@@ -1530,16 +1531,12 @@ static int lqt_ffmpeg_encode_video(quick
+ #if ENCODE_VIDEO2 // New
+   av_init_packet(&pkt);
+   pkt.data = codec->buffer;
+-  pkt.size = codec->buffer_alloc;
++  pkt.size = bytes_encoded = codec->buffer_alloc;
+ 
+-  if(avcodec_encode_video2(codec->avctx, &pkt, codec->frame, &got_packet) < 0)
++  if(avcodec_send_frame(codec->avctx, codec->frame) < 0 ||
++     avcodec_receive_packet(codec->avctx, &pkt) < 0)
+     return -1;
+ 
+-  if(got_packet)
+-    bytes_encoded = pkt.size;
+-  else
+-    bytes_encoded = 0;
+-  
+   pts = pkt.pts;
+   kf = !!(pkt.flags & AV_PKT_FLAG_KEY);
+     
+@@ -1621,7 +1618,6 @@ static int flush(quicktime_t *file, int
+   
+ #if ENCODE_VIDEO2
+   AVPacket pkt;
+-  int got_packet;
+ #endif
+   
+   /* Do nothing if we didn't encode anything yet */
+@@ -1631,18 +1627,13 @@ static int flush(quicktime_t *file, int
+ #if ENCODE_VIDEO2
+   av_init_packet(&pkt);
+   pkt.data = codec->buffer;
+-  pkt.size = codec->buffer_alloc;
++  pkt.size = bytes_encoded = codec->buffer_alloc;
+   
+-  if(avcodec_encode_video2(codec->avctx, &pkt, (AVFrame*)0, &got_packet) < 0)
++  if(avcodec_send_frame(codec->avctx, NULL) < 0 ||
++     avcodec_receive_packet(codec->avctx, &pkt) < 0)
+     return -1;
+ 
+-  if(got_packet)
+-    bytes_encoded = pkt.size;
+-  else
+-    return 0;
+-  
+   pts = pkt.pts;
+-
+   kf = !!(pkt.flags & AV_PKT_FLAG_KEY);
+   
+ #else
+@@ -1872,8 +1863,8 @@ static int init_compressed_dv(quicktime_
+ 
+ void quicktime_init_video_codec_ffmpeg(quicktime_codec_t * codec_base,
+                                        quicktime_video_map_t *vtrack,
+-                                       AVCodec *encoder,
+-                                       AVCodec *decoder)
++                                       const AVCodec *encoder,
++                                       const AVCodec *decoder)
+   {
+   quicktime_ffmpeg_video_codec_t *codec;
+   char *compressor;

diff --git a/media-libs/libquicktime/libquicktime-1.2.4-r5.ebuild b/media-libs/libquicktime/libquicktime-1.2.4-r5.ebuild
new file mode 100644
index 000000000000..cb5a5489826c
--- /dev/null
+++ b/media-libs/libquicktime/libquicktime-1.2.4-r5.ebuild
@@ -0,0 +1,124 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit libtool multilib-minimal
+
+DESCRIPTION="An enhanced version of the quicktime4linux library"
+HOMEPAGE="http://libquicktime.sourceforge.net/"
+SRC_URI="https://downloads.sourceforge.net/${PN}/${P}.tar.gz"
+
+LICENSE="LGPL-2.1"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86"
+IUSE="aac alsa doc dv encode ffmpeg gtk jpeg lame cpu_flags_x86_mmx opengl png static-libs vorbis X x264"
+
+RDEPEND="
+	sys-libs/zlib
+	>=virtual/libintl-0-r1[${MULTILIB_USEDEP}]
+	aac? (
+		>=media-libs/faad2-2.7-r3[${MULTILIB_USEDEP}]
+		encode? ( >=media-libs/faac-1.28-r3[${MULTILIB_USEDEP}] )
+	)
+	alsa? ( >=media-libs/alsa-lib-1.0.20 )
+	dv? ( >=media-libs/libdv-1.0.0-r3[${MULTILIB_USEDEP}] )
+	ffmpeg? ( >=media-video/ffmpeg-4:=[${MULTILIB_USEDEP}] )
+	gtk? ( x11-libs/gtk+:2 )
+	jpeg? ( media-libs/libjpeg-turbo:=[${MULTILIB_USEDEP}] )
+	lame? ( >=media-sound/lame-3.99.5-r1[${MULTILIB_USEDEP}] )
+	opengl? ( virtual/opengl )
+	png? ( >=media-libs/libpng-1.6.10:0[${MULTILIB_USEDEP}] )
+	vorbis? (
+		>=media-libs/libogg-1.3.0[${MULTILIB_USEDEP}]
+		>=media-libs/libvorbis-1.3.3-r1[${MULTILIB_USEDEP}]
+	)
+	X? (
+		x11-libs/libX11
+		x11-libs/libXaw
+		x11-libs/libXext
+		x11-libs/libXt
+		x11-libs/libXv
+	)
+	x264? ( >=media-libs/x264-0.0.20130506:=[${MULTILIB_USEDEP}] )"
+DEPEND="${RDEPEND}"
+BDEPEND="
+	virtual/pkgconfig
+	sys-devel/gettext
+	doc? ( app-text/doxygen )
+	X? ( x11-base/xorg-proto )"
+
+REQUIRED_USE="opengl? ( X )"
+
+DOCS=( ChangeLog README TODO )
+
+PATCHES=(
+	"${FILESDIR}"/${P}+libav-9.patch
+	"${FILESDIR}"/${P}-ffmpeg2.patch
+	"${FILESDIR}"/${P}-ffmpeg29.patch
+	"${FILESDIR}"/${P}-CVE-2016-2399.patch
+	"${FILESDIR}"/${P}-CVE-2017-9122_et_al.patch
+	"${FILESDIR}"/${P}-implicit-func-decl.patch
+	"${FILESDIR}"/${P}-faad2.patch
+	"${FILESDIR}"/${P}-ffmpeg-codecs.patch
+	"${FILESDIR}"/${P}-ffmpeg4.patch
+	"${FILESDIR}"/${P}-ffmpeg5.patch
+)
+
+src_prepare() {
+	default
+	elibtoolize # Required for .so versioning on g/fbsd
+}
+
+multilib_src_configure() {
+	# utils use: alsa, opengl, gtk+, X
+
+	ECONF_SOURCE=${S} \
+	econf \
+		--enable-gpl \
+		$(use_enable static-libs static) \
+		$(use_enable cpu_flags_x86_mmx asm) \
+		$(multilib_native_use_with doc doxygen) \
+		$(use vorbis || echo --without-vorbis) \
+		$(use_with lame) \
+		$(multilib_native_use_with X x) \
+		$(multilib_native_use_with opengl) \
+		$(multilib_native_use_with alsa) \
+		$(multilib_native_use_with gtk) \
+		$(use_with dv libdv) \
+		$(use_with jpeg libjpeg) \
+		$(use_with ffmpeg) \
+		$(use_with png libpng) \
+		--without-schroedinger \
+		$(use_with aac faac) \
+		$(use encode || echo --without-faac) \
+		$(use_with aac faad2) \
+		$(use_with x264) \
+		--without-cpuflags
+
+	if ! multilib_is_native_abi; then
+		# disable building utilities
+		sed -i -e '/SUBDIRS =/s:utils::' Makefile || die
+	fi
+}
+
+multilib_src_install_all() {
+	einstalldocs
+	find "${D}" -name '*.la' -delete || die
+
+	# Compatibility with software that uses quicktime prefix, but
+	# don't do that when building for Darwin/MacOS
+	[[ ${CHOST} != *-darwin* ]] && dosym /usr/include/lqt /usr/include/quicktime
+}
+
+pkg_preinst() {
+	if [[ -d /usr/include/quicktime && ! -L /usr/include/quicktime ]]; then
+		elog "For compatibility with other quicktime libraries, ${PN} was"
+		elog "going to create a /usr/include/quicktime symlink, but for some"
+		elog "reason that is a directory on your system."
+
+		elog "Please check that is empty, and remove it, or submit a bug"
+		elog "telling us which package owns the directory."
+		die "/usr/include/quicktime is a directory."
+	fi
+}


^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2024-05-18 10:28 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-03-11  9:59 [gentoo-commits] repo/gentoo:master commit in: media-libs/libquicktime/, media-libs/libquicktime/files/ Alexis Ballier
  -- strict thread matches above, loose matches on Subject: below --
2018-04-20  7:48 Alexis Ballier
2018-09-18 15:11 Andreas Sturmlechner
2024-05-18 10:28 Pacho Ramos

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox