[FFmpeg-devel] [PATCH] lavc/libxavs2.c: mark key-frame packets

Steven Liu lingjiujianke at gmail.com
Mon Jul 27 11:57:29 EEST 2020


hwren <hwrenx at 126.com> 于2020年7月27日周一 下午3:59写道:
>
>

>
> 在 2020-07-27 15:26:24,"Steven Liu" <lingjiujianke at gmail.com> 写道:
> ><hwrenx at 126.com> 于2020年7月27日周一 下午2:22写道:
> >>
> >> From: hwren <hwrenx at 126.com>
> >>
> >> Signed-off-by: hwren <hwrenx at 126.com>
> >> ---
> >>  libavcodec/libxavs2.c | 6 ++++++
> >>  1 file changed, 6 insertions(+)
> >>
> >> diff --git a/libavcodec/libxavs2.c b/libavcodec/libxavs2.c
> >> index 76b57e731e..8519f6925a 100644
> >> --- a/libavcodec/libxavs2.c
> >> +++ b/libavcodec/libxavs2.c
> >> @@ -223,6 +223,12 @@ static int xavs2_encode_frame(AVCodecContext *avctx, AVPacket *pkt,
> >>          pkt->pts = cae->packet.pts;
> >>          pkt->dts = cae->packet.dts;
> >>
> >> +        if (cae->packet.type == XAVS2_TYPE_IDR ||
> >> +            cae->packet.type == XAVS2_TYPE_I ||
> >Don't support OpenGOP?
>
> There is no obvious difference between IDR/I frame in AVS2. Actually we will use TYPE_I in most cases.
> So I think, when a jump occurs, ffmpeg just needs to find the closest I frame. Then the decoder will
> determine the validity and discard the illegal frames. This method may trigger some error reports,
> but they should be harmless.

Looks ok then.
>
> >> +            cae->packet.type == XAVS2_TYPE_KEYFRAME) {
> >> +            pkt->flags |= AV_PKT_FLAG_KEY;
> >> +        }
> >> +
> >>          memcpy(pkt->data, cae->packet.stream, cae->packet.len);
> >>          pkt->size = cae->packet.len;
> >>
> >> --
> >> 2.23.0.windows.1
> >>

Thanks for your clarify respond

Thanks
Steven


More information about the ffmpeg-devel mailing list