mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-09-24 04:59:14 -07:00
media-video/gpac: backport fixes for ffmpeg-8
Debated doing a -r2 to ~arch but most of the changes are guarded behind version checks and the rest seems safe. Not really tested at runtime though. Closes: https://bugs.gentoo.org/965045 Signed-off-by: Ionen Wolkens <ionen@gentoo.org>
This commit is contained in:
146
media-video/gpac/files/gpac-2.4.0-ffmpeg8.patch
Normal file
146
media-video/gpac/files/gpac-2.4.0-ffmpeg8.patch
Normal file
@@ -0,0 +1,146 @@
|
||||
https://bugs.gentoo.org/965045
|
||||
https://github.com/gpac/gpac/pull/3317
|
||||
--- a/src/filters/ff_avf.c
|
||||
+++ b/src/filters/ff_avf.c
|
||||
@@ -723,7 +723,11 @@
|
||||
}
|
||||
}
|
||||
+#if (LIBAVFORMAT_VERSION_MAJOR < 62)
|
||||
if (frame->interlaced_frame)
|
||||
gf_filter_pck_set_interlaced(pck, frame->top_field_first ? 1 : 2);
|
||||
-
|
||||
+#else
|
||||
+ if (frame->flags & AV_FRAME_FLAG_INTERLACED)
|
||||
+ gf_filter_pck_set_interlaced(pck, frame->flags & AV_FRAME_FLAG_TOP_FIELD_FIRST ? 1 : 2);
|
||||
+#endif
|
||||
gf_filter_pck_set_sap(pck, GF_FILTER_SAP_1);
|
||||
gf_filter_pck_set_cts(pck, frame->pts * opid->tb_num);
|
||||
--- a/src/filters/ff_dec.c
|
||||
+++ b/src/filters/ff_dec.c
|
||||
@@ -536,6 +536,11 @@
|
||||
gf_filter_pck_set_seek_flag(dst_pck, GF_FALSE);
|
||||
|
||||
+#if (LIBAVFORMAT_VERSION_MAJOR < 62)
|
||||
if (frame->interlaced_frame)
|
||||
gf_filter_pck_set_interlaced(dst_pck, frame->top_field_first ? 2 : 1);
|
||||
+#else
|
||||
+ if (frame->flags & AV_FRAME_FLAG_INTERLACED)
|
||||
+ gf_filter_pck_set_interlaced(dst_pck, frame->flags & AV_FRAME_FLAG_TOP_FIELD_FIRST ? 2 : 1);
|
||||
+#endif
|
||||
|
||||
gf_filter_pck_send(dst_pck);
|
||||
--- a/src/filters/ff_dmx.c
|
||||
+++ b/src/filters/ff_dmx.c
|
||||
@@ -1256,7 +1256,13 @@
|
||||
gf_filter_pid_set_property(pid, GF_PROP_PID_MUX_INDEX, &PROP_UINT(i+1));
|
||||
|
||||
+#if (LIBAVFORMAT_VERSION_MAJOR < 62)
|
||||
for (j=0; j<(u32) stream->nb_side_data; j++) {
|
||||
ffdmx_parse_side_data(&stream->side_data[j], pid);
|
||||
}
|
||||
+#else
|
||||
+ for (j=0; j<(u32) stream->codecpar->nb_coded_side_data; j++) {
|
||||
+ ffdmx_parse_side_data(&stream->codecpar->coded_side_data[j], pid);
|
||||
+ }
|
||||
+#endif
|
||||
|
||||
if (ctx->demuxer->nb_chapters) {
|
||||
--- a/src/filters/ff_enc.c
|
||||
+++ b/src/filters/ff_enc.c
|
||||
@@ -589,4 +589,5 @@
|
||||
if (pck) {
|
||||
ilaced = gf_filter_pck_get_interlaced(pck);
|
||||
+#if (LIBAVFORMAT_VERSION_MAJOR < 62)
|
||||
if (!ilaced) {
|
||||
ctx->frame->interlaced_frame = 0;
|
||||
@@ -595,4 +596,16 @@
|
||||
ctx->frame->top_field_first = (ilaced==2) ? 1 : 0;
|
||||
}
|
||||
+#else
|
||||
+ if (!ilaced) {
|
||||
+ ctx->frame->flags &= ~AV_FRAME_FLAG_INTERLACED;
|
||||
+ } else {
|
||||
+ ctx->frame->flags |= AV_FRAME_FLAG_INTERLACED;
|
||||
+ if (ilaced==2) {
|
||||
+ ctx->frame->flags |= AV_FRAME_FLAG_TOP_FIELD_FIRST;
|
||||
+ } else {
|
||||
+ ctx->frame->flags &= ~AV_FRAME_FLAG_TOP_FIELD_FIRST;
|
||||
+ }
|
||||
+ }
|
||||
+#endif
|
||||
ctx->frame->pts = ffenc_get_cts(ctx, pck);
|
||||
ctx->frame->_avf_dur = gf_filter_pck_get_duration(pck);
|
||||
@@ -707,5 +720,5 @@
|
||||
ctx->force_reconfig = GF_FALSE;
|
||||
GF_LOG(GF_LOG_DEBUG, GF_LOG_CODEC, ("[FFEnc] codec flush done, triggering reconfiguration\n"));
|
||||
- avcodec_close(ctx->encoder);
|
||||
+ avcodec_free_context(&ctx->encoder);
|
||||
ctx->encoder = NULL;
|
||||
ctx->setup_failed = 0;
|
||||
--- a/src/filters/ff_mx.c
|
||||
+++ b/src/filters/ff_mx.c
|
||||
@@ -1331,5 +1331,12 @@
|
||||
if (data) {
|
||||
memcpy(data, p->value.uint_list.vals, sizeof(u32)*9);
|
||||
+#if (LIBAVFORMAT_VERSION_MAJOR < 62)
|
||||
av_stream_add_side_data(st->stream, AV_PKT_DATA_DISPLAYMATRIX, data, 32*9);
|
||||
+#else
|
||||
+ av_packet_side_data_add(&st->stream->codecpar->coded_side_data,
|
||||
+ &st->stream->codecpar->nb_coded_side_data,
|
||||
+ AV_PKT_DATA_DISPLAYMATRIX,
|
||||
+ data, 32 * 9, 0);
|
||||
+#endif
|
||||
}
|
||||
}
|
||||
@@ -1341,5 +1348,12 @@
|
||||
if (data) {
|
||||
memcpy(data, p->value.data.ptr, p->value.data.size);
|
||||
+#if (LIBAVFORMAT_VERSION_MAJOR < 62)
|
||||
av_stream_add_side_data(st->stream, AV_PKT_DATA_ICC_PROFILE, data, p->value.data.size);
|
||||
+#else
|
||||
+ av_packet_side_data_add(&st->stream->codecpar->coded_side_data,
|
||||
+ &st->stream->codecpar->nb_coded_side_data,
|
||||
+ AV_PKT_DATA_ICC_PROFILE,
|
||||
+ data, p->value.data.size, 0);
|
||||
+#endif
|
||||
}
|
||||
}
|
||||
@@ -1352,5 +1366,12 @@
|
||||
data->MaxCLL = gf_bs_read_u16(bs);
|
||||
data->MaxFALL = gf_bs_read_u16(bs);
|
||||
+#if (LIBAVFORMAT_VERSION_MAJOR < 62)
|
||||
av_stream_add_side_data(st->stream, AV_PKT_DATA_CONTENT_LIGHT_LEVEL, (u8*) data, sizeof(AVContentLightMetadata));
|
||||
+#else
|
||||
+ av_packet_side_data_add(&st->stream->codecpar->coded_side_data,
|
||||
+ &st->stream->codecpar->nb_coded_side_data,
|
||||
+ AV_PKT_DATA_CONTENT_LIGHT_LEVEL,
|
||||
+ (u8*) data, sizeof(AVContentLightMetadata), 0);
|
||||
+#endif
|
||||
}
|
||||
gf_bs_del(bs);
|
||||
@@ -1386,5 +1407,12 @@
|
||||
data->min_luminance.num = gf_bs_read_u32(bs);
|
||||
data->min_luminance.den = luma_den;
|
||||
+#if (LIBAVFORMAT_VERSION_MAJOR < 62)
|
||||
av_stream_add_side_data(st->stream, AV_PKT_DATA_MASTERING_DISPLAY_METADATA, (u8*) data, sizeof(AVMasteringDisplayMetadata));
|
||||
+#else
|
||||
+ av_packet_side_data_add(&st->stream->codecpar->coded_side_data,
|
||||
+ &st->stream->codecpar->nb_coded_side_data,
|
||||
+ AV_PKT_DATA_MASTERING_DISPLAY_METADATA,
|
||||
+ (u8*) data, sizeof(AVMasteringDisplayMetadata), 0);
|
||||
+#endif
|
||||
}
|
||||
gf_bs_del(bs);
|
||||
@@ -1404,5 +1432,12 @@
|
||||
data->bl_present_flag = gf_bs_read_int(bs, 1);
|
||||
data->dv_bl_signal_compatibility_id = gf_bs_read_int(bs, 4);
|
||||
+#if (LIBAVFORMAT_VERSION_MAJOR < 62)
|
||||
av_stream_add_side_data(st->stream, AV_PKT_DATA_DOVI_CONF, (u8*) data, sizeof(Ref_FFAVDoviRecord));
|
||||
+#else
|
||||
+ av_packet_side_data_add(&st->stream->codecpar->coded_side_data,
|
||||
+ &st->stream->codecpar->nb_coded_side_data,
|
||||
+ AV_PKT_DATA_DOVI_CONF,
|
||||
+ (u8*) data, sizeof(Ref_FFAVDoviRecord), 0);
|
||||
+#endif
|
||||
}
|
||||
gf_bs_del(bs);
|
||||
@@ -65,6 +65,7 @@ PATCHES=(
|
||||
"${FILESDIR}"/${P}-configure-stddef.patch
|
||||
"${FILESDIR}"/${P}-ffmpeg6.patch
|
||||
"${FILESDIR}"/${P}-ffmpeg7.patch
|
||||
"${FILESDIR}"/${P}-ffmpeg8.patch
|
||||
)
|
||||
|
||||
src_prepare() {
|
||||
|
||||
Reference in New Issue
Block a user