On 5/18/2020 11:43 AM, Anton Khirnov wrote: > Quoting James Almer (2020-05-11 16:27:55) >> If extradata is available, use it to initialize the AVCodecContext before >> packet data is seen. Also, don't constantly overwrite it after it's set. >> >> Signed-off-by: James Almer <[email protected]> >> --- >> The main benefit from this is using ff_decode_frame_props() to fill frame >> props, which includes copying any relevant side data that may be present in >> packets, like for example container mastering metadata propagated by a >> demuxer. >> >> libavcodec/libdav1d.c | 102 +++++++++++++++++++++++++++++------------- >> 1 file changed, 71 insertions(+), 31 deletions(-) >> >> diff --git a/libavcodec/libdav1d.c b/libavcodec/libdav1d.c >> index 5248e3f9f5..72f06c550e 100644 >> --- a/libavcodec/libdav1d.c >> +++ b/libavcodec/libdav1d.c >> @@ -42,6 +42,8 @@ typedef struct Libdav1dContext { >> int apply_grain; >> int operating_point; >> int all_layers; >> + >> + int inited; >> } Libdav1dContext; >> >> static const enum AVPixelFormat pix_fmt[][3] = { >> @@ -117,9 +119,59 @@ static void libdav1d_picture_release(Dav1dPicture *p, >> void *cookie) >> av_buffer_unref(&buf); >> } >> >> +static int libdav1d_init_params(AVCodecContext *c, Dav1dSequenceHeader *seq) >> +{ >> + Libdav1dContext *dav1d = c->priv_data; >> + int res; >> + >> + if (dav1d->inited) >> + return 0; > > Changing parameters mid-stream is not supported?
Sequence Headers are not meant to change within a video sequence. Afaik, the only params that can change between frames are its dimensions, and that's already handled by looking at the values on a given Dav1dPicture. But libdav1d does seem to gracefully handle changes in seq headers by assuming it's a new sequence and resetting its internal state, so i guess I'll remove it. _______________________________________________ ffmpeg-devel mailing list [email protected] https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email [email protected] with subject "unsubscribe".
