commit: 7cd6043dc0be451bd447b3b523812ff5b5b58878 Author: Ionen Wolkens <ionen <AT> gentoo <DOT> org> AuthorDate: Fri Oct 24 02:30:34 2025 +0000 Commit: Ionen Wolkens <ionen <AT> gentoo <DOT> org> CommitDate: Fri Oct 24 02:41:47 2025 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=7cd6043d
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 <AT> gentoo.org> media-video/gpac/files/gpac-2.4.0-ffmpeg8.patch | 146 ++++++++++++++++++++++++ media-video/gpac/gpac-2.4.0-r1.ebuild | 1 + 2 files changed, 147 insertions(+) diff --git a/media-video/gpac/files/gpac-2.4.0-ffmpeg8.patch b/media-video/gpac/files/gpac-2.4.0-ffmpeg8.patch new file mode 100644 index 000000000000..a01049fd382e --- /dev/null +++ b/media-video/gpac/files/gpac-2.4.0-ffmpeg8.patch @@ -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); diff --git a/media-video/gpac/gpac-2.4.0-r1.ebuild b/media-video/gpac/gpac-2.4.0-r1.ebuild index a965a7588604..aa90461ee82d 100644 --- a/media-video/gpac/gpac-2.4.0-r1.ebuild +++ b/media-video/gpac/gpac-2.4.0-r1.ebuild @@ -65,6 +65,7 @@ PATCHES=( "${FILESDIR}"/${P}-configure-stddef.patch "${FILESDIR}"/${P}-ffmpeg6.patch "${FILESDIR}"/${P}-ffmpeg7.patch + "${FILESDIR}"/${P}-ffmpeg8.patch ) src_prepare() {
