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);
