* [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