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