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
+}


Reply via email to