mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-09-24 04:59:14 -07:00
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@gentoo.org>
This commit is contained in:
86
media-libs/libquicktime/files/libquicktime-1.2.4-faad2.patch
Normal file
86
media-libs/libquicktime/files/libquicktime-1.2.4-faad2.patch
Normal file
@@ -0,0 +1,86 @@
|
||||
diff -ruN a/configure.ac b/configure.ac
|
||||
--- a/configure.ac 2012-03-29 21:44:28.000000000 +0200
|
||||
+++ b/configure.ac 2020-02-09 18:27:31.599127781 +0100
|
||||
@@ -728,82 +728,9 @@
|
||||
|
||||
if test "x$with_faad2" != "xno"; then
|
||||
|
||||
-OLD_CFLAGS=$CFLAGS
|
||||
-OLD_LIBS=$LIBS
|
||||
-
|
||||
CFLAGS="$CFLAGS"
|
||||
LIBS="$LIBS -lfaad -lm"
|
||||
|
||||
-AC_MSG_CHECKING(for neaacdec.h usability for faad2)
|
||||
-
|
||||
-
|
||||
-AC_TRY_RUN([
|
||||
- #include <neaacdec.h>
|
||||
- #include <stdio.h>
|
||||
- main()
|
||||
- {
|
||||
- int faad_major;
|
||||
- int faad_minor;
|
||||
- faacDecHandle dec;
|
||||
-
|
||||
- if(sscanf(FAAD2_VERSION, "%d.%d", &faad_major, &faad_minor) < 2)
|
||||
- return -1;
|
||||
- dec = faacDecOpen();
|
||||
- if(!dec)
|
||||
- return -1;
|
||||
- return 0;
|
||||
- }
|
||||
- ],
|
||||
- [
|
||||
- # program could be run
|
||||
- have_faad2="true"
|
||||
- AC_MSG_RESULT(yes)
|
||||
- FAAD2_CFLAGS=$CFLAGS
|
||||
- FAAD2_LIBS=$LIBS
|
||||
- AC_DEFINE(HAVE_NEAACDEC_H)
|
||||
- ],
|
||||
- # program could not be run
|
||||
- AC_MSG_RESULT(no)
|
||||
-)
|
||||
-
|
||||
-if test "x$have_faad2" != "xtrue"; then
|
||||
-
|
||||
-AC_MSG_CHECKING(for faad.h usability for faad2)
|
||||
-
|
||||
-AC_TRY_RUN([
|
||||
- #include <faad.h>
|
||||
- #include <stdio.h>
|
||||
- main()
|
||||
- {
|
||||
- int faad_major;
|
||||
- int faad_minor;
|
||||
- faacDecHandle dec;
|
||||
-
|
||||
- if(sscanf(FAAD2_VERSION, "%d.%d", &faad_major, &faad_minor) < 2)
|
||||
- return -1;
|
||||
- dec = faacDecOpen();
|
||||
- if(!dec)
|
||||
- return -1;
|
||||
- return 0;
|
||||
- }
|
||||
- ],
|
||||
- [
|
||||
- # program could be run
|
||||
- have_faad2="true"
|
||||
- AC_MSG_RESULT(yes)
|
||||
- FAAD2_CFLAGS=$CFLAGS
|
||||
- FAAD2_LIBS=$LIBS
|
||||
-
|
||||
-
|
||||
- ],
|
||||
- # program could not be run
|
||||
- AC_MSG_RESULT(no)
|
||||
-)
|
||||
-
|
||||
-fi
|
||||
-
|
||||
-CFLAGS=$OLD_CFLAGS
|
||||
-LIBS=$OLD_LIBS
|
||||
|
||||
fi
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
342
media-libs/libquicktime/files/libquicktime-1.2.4-ffmpeg5.patch
Normal file
342
media-libs/libquicktime/files/libquicktime-1.2.4-ffmpeg5.patch
Normal file
@@ -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;
|
||||
124
media-libs/libquicktime/libquicktime-1.2.4-r5.ebuild
Normal file
124
media-libs/libquicktime/libquicktime-1.2.4-r5.ebuild
Normal file
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user