* [FFmpeg-devel] [PATCH] avcodec/vvc/ps: reset sps_id_used on PS uninit @ 2024-04-07 3:04 James Almer 2024-04-07 13:38 ` Nuo Mi 0 siblings, 1 reply; 10+ messages in thread From: James Almer @ 2024-04-07 3:04 UTC (permalink / raw) To: ffmpeg-devel Signed-off-by: James Almer <jamrial@gmail.com> --- libavcodec/vvc/ps.c | 1 + 1 file changed, 1 insertion(+) diff --git a/libavcodec/vvc/ps.c b/libavcodec/vvc/ps.c index 3c71c34bae..83ee75fb62 100644 --- a/libavcodec/vvc/ps.c +++ b/libavcodec/vvc/ps.c @@ -912,6 +912,7 @@ void ff_vvc_ps_uninit(VVCParamSets *ps) ff_refstruct_unref(&ps->sps_list[i]); for (int i = 0; i < FF_ARRAY_ELEMS(ps->pps_list); i++) ff_refstruct_unref(&ps->pps_list[i]); + ps->sps_id_used = 0; } static void alf_coeff(int16_t *coeff, -- 2.44.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [FFmpeg-devel] [PATCH] avcodec/vvc/ps: reset sps_id_used on PS uninit 2024-04-07 3:04 [FFmpeg-devel] [PATCH] avcodec/vvc/ps: reset sps_id_used on PS uninit James Almer @ 2024-04-07 13:38 ` Nuo Mi 2024-04-07 14:48 ` James Almer 0 siblings, 1 reply; 10+ messages in thread From: Nuo Mi @ 2024-04-07 13:38 UTC (permalink / raw) To: FFmpeg development discussions and patches On Sun, Apr 7, 2024 at 11:05 AM James Almer <jamrial@gmail.com> wrote: > Signed-off-by: James Almer <jamrial@gmail.com> > --- > libavcodec/vvc/ps.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/libavcodec/vvc/ps.c b/libavcodec/vvc/ps.c > index 3c71c34bae..83ee75fb62 100644 > --- a/libavcodec/vvc/ps.c > +++ b/libavcodec/vvc/ps.c > @@ -912,6 +912,7 @@ void ff_vvc_ps_uninit(VVCParamSets *ps) > ff_refstruct_unref(&ps->sps_list[i]); > for (int i = 0; i < FF_ARRAY_ELEMS(ps->pps_list); i++) > ff_refstruct_unref(&ps->pps_list[i]); > + ps->sps_id_used = 0; > Hi James, thank you for the patch. Is this really necessary? vvc_ps_uninit will be called by vvc_decode_free, We are not supposed to use any member of VVCParamSets after vvc_decode_free. } > > static void alf_coeff(int16_t *coeff, > -- > 2.44.0 > > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". > _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [FFmpeg-devel] [PATCH] avcodec/vvc/ps: reset sps_id_used on PS uninit 2024-04-07 13:38 ` Nuo Mi @ 2024-04-07 14:48 ` James Almer 2024-04-08 8:37 ` Frank Plowman 0 siblings, 1 reply; 10+ messages in thread From: James Almer @ 2024-04-07 14:48 UTC (permalink / raw) To: ffmpeg-devel On 4/7/2024 10:38 AM, Nuo Mi wrote: > On Sun, Apr 7, 2024 at 11:05 AM James Almer <jamrial@gmail.com> wrote: > >> Signed-off-by: James Almer <jamrial@gmail.com> >> --- >> libavcodec/vvc/ps.c | 1 + >> 1 file changed, 1 insertion(+) >> >> diff --git a/libavcodec/vvc/ps.c b/libavcodec/vvc/ps.c >> index 3c71c34bae..83ee75fb62 100644 >> --- a/libavcodec/vvc/ps.c >> +++ b/libavcodec/vvc/ps.c >> @@ -912,6 +912,7 @@ void ff_vvc_ps_uninit(VVCParamSets *ps) >> ff_refstruct_unref(&ps->sps_list[i]); >> for (int i = 0; i < FF_ARRAY_ELEMS(ps->pps_list); i++) >> ff_refstruct_unref(&ps->pps_list[i]); >> + ps->sps_id_used = 0; >> > Hi James, > thank you for the patch. > > Is this really necessary? > vvc_ps_uninit will be called by vvc_decode_free, > We are not supposed to use any member of VVCParamSets after vvc_decode_free. My bad, i thought it was also called on every flush() call. Something like the following: > diff --git a/libavcodec/vvc/dec.c b/libavcodec/vvc/dec.c > index eb447604fe..463536512e 100644 > --- a/libavcodec/vvc/dec.c > +++ b/libavcodec/vvc/dec.c > @@ -963,6 +963,8 @@ static av_cold void vvc_decode_flush(AVCodecContext *avctx) > ff_vvc_flush_dpb(last); > } > > + s->ps->sps_id_used = 0; > + > s->eos = 1; > } Should be done on FFCodec.flush() (like when seeking) as the previous state is no longer valid, right? _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [FFmpeg-devel] [PATCH] avcodec/vvc/ps: reset sps_id_used on PS uninit 2024-04-07 14:48 ` James Almer @ 2024-04-08 8:37 ` Frank Plowman 2024-04-08 14:12 ` Nuo Mi 0 siblings, 1 reply; 10+ messages in thread From: Frank Plowman @ 2024-04-08 8:37 UTC (permalink / raw) To: ffmpeg-devel; +Cc: James Almer On 07/04/2024 15:48, James Almer wrote: > On 4/7/2024 10:38 AM, Nuo Mi wrote: >> On Sun, Apr 7, 2024 at 11:05 AM James Almer <jamrial@gmail.com> wrote: >> >>> Signed-off-by: James Almer <jamrial@gmail.com> >>> --- >>> libavcodec/vvc/ps.c | 1 + >>> 1 file changed, 1 insertion(+) >>> >>> diff --git a/libavcodec/vvc/ps.c b/libavcodec/vvc/ps.c >>> index 3c71c34bae..83ee75fb62 100644 >>> --- a/libavcodec/vvc/ps.c >>> +++ b/libavcodec/vvc/ps.c >>> @@ -912,6 +912,7 @@ void ff_vvc_ps_uninit(VVCParamSets *ps) >>> ff_refstruct_unref(&ps->sps_list[i]); >>> for (int i = 0; i < FF_ARRAY_ELEMS(ps->pps_list); i++) >>> ff_refstruct_unref(&ps->pps_list[i]); >>> + ps->sps_id_used = 0; >>> >> Hi James, >> thank you for the patch. >> >> Is this really necessary? >> vvc_ps_uninit will be called by vvc_decode_free, >> We are not supposed to use any member of VVCParamSets after >> vvc_decode_free. > > My bad, i thought it was also called on every flush() call. > > Something like the following: > >> diff --git a/libavcodec/vvc/dec.c b/libavcodec/vvc/dec.c >> index eb447604fe..463536512e 100644 >> --- a/libavcodec/vvc/dec.c >> +++ b/libavcodec/vvc/dec.c >> @@ -963,6 +963,8 @@ static av_cold void >> vvc_decode_flush(AVCodecContext *avctx) >> ff_vvc_flush_dpb(last); >> } >> >> + s->ps->sps_id_used = 0; >> + >> s->eos = 1; >> } > > Should be done on FFCodec.flush() (like when seeking) as the previous > state is no longer valid, right? Yes I agree, I think this is needed. Cases where the random access point has no leading pictures should be covered by the existing logic as these always fall at the start of a CVS, but I think this is needed to cover the case in which there are leading pictures. Thanks, -- Frank _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [FFmpeg-devel] [PATCH] avcodec/vvc/ps: reset sps_id_used on PS uninit 2024-04-08 8:37 ` Frank Plowman @ 2024-04-08 14:12 ` Nuo Mi 2024-04-08 15:14 ` Frank Plowman 0 siblings, 1 reply; 10+ messages in thread From: Nuo Mi @ 2024-04-08 14:12 UTC (permalink / raw) To: FFmpeg development discussions and patches; +Cc: James Almer On Mon, Apr 8, 2024 at 4:37 PM Frank Plowman <post@frankplowman.com> wrote: > On 07/04/2024 15:48, James Almer wrote: > > On 4/7/2024 10:38 AM, Nuo Mi wrote: > >> On Sun, Apr 7, 2024 at 11:05 AM James Almer <jamrial@gmail.com> wrote: > >> > >>> Signed-off-by: James Almer <jamrial@gmail.com> > >>> --- > >>> libavcodec/vvc/ps.c | 1 + > >>> 1 file changed, 1 insertion(+) > >>> > >>> diff --git a/libavcodec/vvc/ps.c b/libavcodec/vvc/ps.c > >>> index 3c71c34bae..83ee75fb62 100644 > >>> --- a/libavcodec/vvc/ps.c > >>> +++ b/libavcodec/vvc/ps.c > >>> @@ -912,6 +912,7 @@ void ff_vvc_ps_uninit(VVCParamSets *ps) > >>> ff_refstruct_unref(&ps->sps_list[i]); > >>> for (int i = 0; i < FF_ARRAY_ELEMS(ps->pps_list); i++) > >>> ff_refstruct_unref(&ps->pps_list[i]); > >>> + ps->sps_id_used = 0; > >>> > >> Hi James, > >> thank you for the patch. > >> > >> Is this really necessary? > >> vvc_ps_uninit will be called by vvc_decode_free, > >> We are not supposed to use any member of VVCParamSets after > >> vvc_decode_free. > > > > My bad, i thought it was also called on every flush() call. > > > > Something like the following: > > > >> diff --git a/libavcodec/vvc/dec.c b/libavcodec/vvc/dec.c > >> index eb447604fe..463536512e 100644 > >> --- a/libavcodec/vvc/dec.c > >> +++ b/libavcodec/vvc/dec.c > >> @@ -963,6 +963,8 @@ static av_cold void > >> vvc_decode_flush(AVCodecContext *avctx) > >> ff_vvc_flush_dpb(last); > >> } > >> > >> + s->ps->sps_id_used = 0; > >> + > >> s->eos = 1; > >> } > > > > Should be done on FFCodec.flush() (like when seeking) as the previous > > state is no longer valid, right? > > Yes I agree, I think this is needed. Cases where the random access > point has no leading pictures should be covered by the existing logic as > these always fall at the start of a CVS, but I think this is needed to > cover the case in which there are leading pictures. > This patch isn't necessary. Leading pictures won't carry SPS. IDR, CRA, and GDR will carry SPS, but they will also start a new CVS, which will covered by the current logic. > Thanks, > -- > Frank > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". > _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [FFmpeg-devel] [PATCH] avcodec/vvc/ps: reset sps_id_used on PS uninit 2024-04-08 14:12 ` Nuo Mi @ 2024-04-08 15:14 ` Frank Plowman 2024-04-09 13:36 ` Nuo Mi 0 siblings, 1 reply; 10+ messages in thread From: Frank Plowman @ 2024-04-08 15:14 UTC (permalink / raw) To: ffmpeg-devel On 08/04/2024 15:12, Nuo Mi wrote: > On Mon, Apr 8, 2024 at 4:37 PM Frank Plowman <post@frankplowman.com> wrote: > >> On 07/04/2024 15:48, James Almer wrote: >>> On 4/7/2024 10:38 AM, Nuo Mi wrote: >>>> On Sun, Apr 7, 2024 at 11:05 AM James Almer <jamrial@gmail.com> wrote: >>>> >>>>> Signed-off-by: James Almer <jamrial@gmail.com> >>>>> --- >>>>> libavcodec/vvc/ps.c | 1 + >>>>> 1 file changed, 1 insertion(+) >>>>> >>>>> diff --git a/libavcodec/vvc/ps.c b/libavcodec/vvc/ps.c >>>>> index 3c71c34bae..83ee75fb62 100644 >>>>> --- a/libavcodec/vvc/ps.c >>>>> +++ b/libavcodec/vvc/ps.c >>>>> @@ -912,6 +912,7 @@ void ff_vvc_ps_uninit(VVCParamSets *ps) >>>>> ff_refstruct_unref(&ps->sps_list[i]); >>>>> for (int i = 0; i < FF_ARRAY_ELEMS(ps->pps_list); i++) >>>>> ff_refstruct_unref(&ps->pps_list[i]); >>>>> + ps->sps_id_used = 0; >>>>> >>>> Hi James, >>>> thank you for the patch. >>>> >>>> Is this really necessary? >>>> vvc_ps_uninit will be called by vvc_decode_free, >>>> We are not supposed to use any member of VVCParamSets after >>>> vvc_decode_free. >>> >>> My bad, i thought it was also called on every flush() call. >>> >>> Something like the following: >>> >>>> diff --git a/libavcodec/vvc/dec.c b/libavcodec/vvc/dec.c >>>> index eb447604fe..463536512e 100644 >>>> --- a/libavcodec/vvc/dec.c >>>> +++ b/libavcodec/vvc/dec.c >>>> @@ -963,6 +963,8 @@ static av_cold void >>>> vvc_decode_flush(AVCodecContext *avctx) >>>> ff_vvc_flush_dpb(last); >>>> } >>>> >>>> + s->ps->sps_id_used = 0; >>>> + >>>> s->eos = 1; >>>> } >>> >>> Should be done on FFCodec.flush() (like when seeking) as the previous >>> state is no longer valid, right? >> >> Yes I agree, I think this is needed. Cases where the random access >> point has no leading pictures should be covered by the existing logic as >> these always fall at the start of a CVS, but I think this is needed to >> cover the case in which there are leading pictures. >> > This patch isn't necessary. > Leading pictures won't carry SPS. > IDR, CRA, and GDR will carry SPS, but they will also start a new CVS, which > will covered by the current logic. > I may be misunderstanding the spec, NoOutputBeforeRecoveryFlag is set for pictures which have no leading pictures, no? In any case take, for instance, a CRA picture. In most cases, CRA pictures have NoOutputBeforeRecoveryFlag=0, therefore are not CLVSS pictures and sps_id_used is not reset by the existing logic. Do we not need to reset sps_id_used when seeking to a CRA then? _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [FFmpeg-devel] [PATCH] avcodec/vvc/ps: reset sps_id_used on PS uninit 2024-04-08 15:14 ` Frank Plowman @ 2024-04-09 13:36 ` Nuo Mi 2024-04-13 10:18 ` Frank Plowman 0 siblings, 1 reply; 10+ messages in thread From: Nuo Mi @ 2024-04-09 13:36 UTC (permalink / raw) To: FFmpeg development discussions and patches On Mon, Apr 8, 2024 at 11:15 PM Frank Plowman <post@frankplowman.com> wrote: > On 08/04/2024 15:12, Nuo Mi wrote: > > On Mon, Apr 8, 2024 at 4:37 PM Frank Plowman <post@frankplowman.com> > wrote: > > > >> On 07/04/2024 15:48, James Almer wrote: > >>> On 4/7/2024 10:38 AM, Nuo Mi wrote: > >>>> On Sun, Apr 7, 2024 at 11:05 AM James Almer <jamrial@gmail.com> > wrote: > >>>> > >>>>> Signed-off-by: James Almer <jamrial@gmail.com> > >>>>> --- > >>>>> libavcodec/vvc/ps.c | 1 + > >>>>> 1 file changed, 1 insertion(+) > >>>>> > >>>>> diff --git a/libavcodec/vvc/ps.c b/libavcodec/vvc/ps.c > >>>>> index 3c71c34bae..83ee75fb62 100644 > >>>>> --- a/libavcodec/vvc/ps.c > >>>>> +++ b/libavcodec/vvc/ps.c > >>>>> @@ -912,6 +912,7 @@ void ff_vvc_ps_uninit(VVCParamSets *ps) > >>>>> ff_refstruct_unref(&ps->sps_list[i]); > >>>>> for (int i = 0; i < FF_ARRAY_ELEMS(ps->pps_list); i++) > >>>>> ff_refstruct_unref(&ps->pps_list[i]); > >>>>> + ps->sps_id_used = 0; > >>>>> > >>>> Hi James, > >>>> thank you for the patch. > >>>> > >>>> Is this really necessary? > >>>> vvc_ps_uninit will be called by vvc_decode_free, > >>>> We are not supposed to use any member of VVCParamSets after > >>>> vvc_decode_free. > >>> > >>> My bad, i thought it was also called on every flush() call. > >>> > >>> Something like the following: > >>> > >>>> diff --git a/libavcodec/vvc/dec.c b/libavcodec/vvc/dec.c > >>>> index eb447604fe..463536512e 100644 > >>>> --- a/libavcodec/vvc/dec.c > >>>> +++ b/libavcodec/vvc/dec.c > >>>> @@ -963,6 +963,8 @@ static av_cold void > >>>> vvc_decode_flush(AVCodecContext *avctx) > >>>> ff_vvc_flush_dpb(last); > >>>> } > >>>> > >>>> + s->ps->sps_id_used = 0; > >>>> + > >>>> s->eos = 1; > >>>> } > >>> > >>> Should be done on FFCodec.flush() (like when seeking) as the previous > >>> state is no longer valid, right? > >> > >> Yes I agree, I think this is needed. Cases where the random access > >> point has no leading pictures should be covered by the existing logic as > >> these always fall at the start of a CVS, but I think this is needed to > >> cover the case in which there are leading pictures. > >> > > This patch isn't necessary. > > Leading pictures won't carry SPS. > > IDR, CRA, and GDR will carry SPS, but they will also start a new CVS, > which > > will covered by the current logic. > > > > I may be misunderstanding the spec, NoOutputBeforeRecoveryFlag is set > for pictures which have no leading pictures, no? In any case take, for > instance, a CRA picture. In most cases, CRA pictures have > NoOutputBeforeRecoveryFlag=0, therefore are not CLVSS pictures and > sps_id_used is not reset by the existing logic. Do we not need to reset > sps_id_used when seeking to a CRA then? > After seeking, we'll set s->last_eos to 1. For a CRA, decode_recovery_flag will set s->no_output_before_recovery_flag to s->last_eos. So no_output_before_recovery_flag will be 1, not 0. _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". > _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [FFmpeg-devel] [PATCH] avcodec/vvc/ps: reset sps_id_used on PS uninit 2024-04-09 13:36 ` Nuo Mi @ 2024-04-13 10:18 ` Frank Plowman 2024-04-14 22:23 ` James Almer 0 siblings, 1 reply; 10+ messages in thread From: Frank Plowman @ 2024-04-13 10:18 UTC (permalink / raw) To: ffmpeg-devel On 09/04/2024 14:36, Nuo Mi wrote: > On Mon, Apr 8, 2024 at 11:15 PM Frank Plowman <post@frankplowman.com> wrote: > >> On 08/04/2024 15:12, Nuo Mi wrote: >>> On Mon, Apr 8, 2024 at 4:37 PM Frank Plowman <post@frankplowman.com> >> wrote: >>> >>>> On 07/04/2024 15:48, James Almer wrote: >>>>> On 4/7/2024 10:38 AM, Nuo Mi wrote: >>>>>> On Sun, Apr 7, 2024 at 11:05 AM James Almer <jamrial@gmail.com> >> wrote: >>>>>> >>>>>>> Signed-off-by: James Almer <jamrial@gmail.com> >>>>>>> --- >>>>>>> libavcodec/vvc/ps.c | 1 + >>>>>>> 1 file changed, 1 insertion(+) >>>>>>> >>>>>>> diff --git a/libavcodec/vvc/ps.c b/libavcodec/vvc/ps.c >>>>>>> index 3c71c34bae..83ee75fb62 100644 >>>>>>> --- a/libavcodec/vvc/ps.c >>>>>>> +++ b/libavcodec/vvc/ps.c >>>>>>> @@ -912,6 +912,7 @@ void ff_vvc_ps_uninit(VVCParamSets *ps) >>>>>>> ff_refstruct_unref(&ps->sps_list[i]); >>>>>>> for (int i = 0; i < FF_ARRAY_ELEMS(ps->pps_list); i++) >>>>>>> ff_refstruct_unref(&ps->pps_list[i]); >>>>>>> + ps->sps_id_used = 0; >>>>>>> >>>>>> Hi James, >>>>>> thank you for the patch. >>>>>> >>>>>> Is this really necessary? >>>>>> vvc_ps_uninit will be called by vvc_decode_free, >>>>>> We are not supposed to use any member of VVCParamSets after >>>>>> vvc_decode_free. >>>>> >>>>> My bad, i thought it was also called on every flush() call. >>>>> >>>>> Something like the following: >>>>> >>>>>> diff --git a/libavcodec/vvc/dec.c b/libavcodec/vvc/dec.c >>>>>> index eb447604fe..463536512e 100644 >>>>>> --- a/libavcodec/vvc/dec.c >>>>>> +++ b/libavcodec/vvc/dec.c >>>>>> @@ -963,6 +963,8 @@ static av_cold void >>>>>> vvc_decode_flush(AVCodecContext *avctx) >>>>>> ff_vvc_flush_dpb(last); >>>>>> } >>>>>> >>>>>> + s->ps->sps_id_used = 0; >>>>>> + >>>>>> s->eos = 1; >>>>>> } >>>>> >>>>> Should be done on FFCodec.flush() (like when seeking) as the previous >>>>> state is no longer valid, right? >>>> >>>> Yes I agree, I think this is needed. Cases where the random access >>>> point has no leading pictures should be covered by the existing logic as >>>> these always fall at the start of a CVS, but I think this is needed to >>>> cover the case in which there are leading pictures. >>>> >>> This patch isn't necessary. >>> Leading pictures won't carry SPS. >>> IDR, CRA, and GDR will carry SPS, but they will also start a new CVS, >> which >>> will covered by the current logic. >>> >> >> I may be misunderstanding the spec, NoOutputBeforeRecoveryFlag is set >> for pictures which have no leading pictures, no? In any case take, for >> instance, a CRA picture. In most cases, CRA pictures have >> NoOutputBeforeRecoveryFlag=0, therefore are not CLVSS pictures and >> sps_id_used is not reset by the existing logic. Do we not need to reset >> sps_id_used when seeking to a CRA then? >> > After seeking, we'll set s->last_eos to 1. > For a CRA, decode_recovery_flag will set s->no_output_before_recovery_flag > to s->last_eos. > So no_output_before_recovery_flag will be 1, not 0. I see, my mistake. Yes in this case I do not think sps_id_used must be explicitly reset. -- Frank _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [FFmpeg-devel] [PATCH] avcodec/vvc/ps: reset sps_id_used on PS uninit 2024-04-13 10:18 ` Frank Plowman @ 2024-04-14 22:23 ` James Almer 2024-04-15 12:54 ` Nuo Mi 0 siblings, 1 reply; 10+ messages in thread From: James Almer @ 2024-04-14 22:23 UTC (permalink / raw) To: ffmpeg-devel On 4/13/2024 7:18 AM, Frank Plowman wrote: > > > On 09/04/2024 14:36, Nuo Mi wrote: >> On Mon, Apr 8, 2024 at 11:15 PM Frank Plowman <post@frankplowman.com> wrote: >> >>> On 08/04/2024 15:12, Nuo Mi wrote: >>>> On Mon, Apr 8, 2024 at 4:37 PM Frank Plowman <post@frankplowman.com> >>> wrote: >>>> >>>>> On 07/04/2024 15:48, James Almer wrote: >>>>>> On 4/7/2024 10:38 AM, Nuo Mi wrote: >>>>>>> On Sun, Apr 7, 2024 at 11:05 AM James Almer <jamrial@gmail.com> >>> wrote: >>>>>>> >>>>>>>> Signed-off-by: James Almer <jamrial@gmail.com> >>>>>>>> --- >>>>>>>> libavcodec/vvc/ps.c | 1 + >>>>>>>> 1 file changed, 1 insertion(+) >>>>>>>> >>>>>>>> diff --git a/libavcodec/vvc/ps.c b/libavcodec/vvc/ps.c >>>>>>>> index 3c71c34bae..83ee75fb62 100644 >>>>>>>> --- a/libavcodec/vvc/ps.c >>>>>>>> +++ b/libavcodec/vvc/ps.c >>>>>>>> @@ -912,6 +912,7 @@ void ff_vvc_ps_uninit(VVCParamSets *ps) >>>>>>>> ff_refstruct_unref(&ps->sps_list[i]); >>>>>>>> for (int i = 0; i < FF_ARRAY_ELEMS(ps->pps_list); i++) >>>>>>>> ff_refstruct_unref(&ps->pps_list[i]); >>>>>>>> + ps->sps_id_used = 0; >>>>>>>> >>>>>>> Hi James, >>>>>>> thank you for the patch. >>>>>>> >>>>>>> Is this really necessary? >>>>>>> vvc_ps_uninit will be called by vvc_decode_free, >>>>>>> We are not supposed to use any member of VVCParamSets after >>>>>>> vvc_decode_free. >>>>>> >>>>>> My bad, i thought it was also called on every flush() call. >>>>>> >>>>>> Something like the following: >>>>>> >>>>>>> diff --git a/libavcodec/vvc/dec.c b/libavcodec/vvc/dec.c >>>>>>> index eb447604fe..463536512e 100644 >>>>>>> --- a/libavcodec/vvc/dec.c >>>>>>> +++ b/libavcodec/vvc/dec.c >>>>>>> @@ -963,6 +963,8 @@ static av_cold void >>>>>>> vvc_decode_flush(AVCodecContext *avctx) >>>>>>> ff_vvc_flush_dpb(last); >>>>>>> } >>>>>>> >>>>>>> + s->ps->sps_id_used = 0; >>>>>>> + >>>>>>> s->eos = 1; >>>>>>> } >>>>>> >>>>>> Should be done on FFCodec.flush() (like when seeking) as the previous >>>>>> state is no longer valid, right? >>>>> >>>>> Yes I agree, I think this is needed. Cases where the random access >>>>> point has no leading pictures should be covered by the existing logic as >>>>> these always fall at the start of a CVS, but I think this is needed to >>>>> cover the case in which there are leading pictures. >>>>> >>>> This patch isn't necessary. >>>> Leading pictures won't carry SPS. >>>> IDR, CRA, and GDR will carry SPS, but they will also start a new CVS, >>> which >>>> will covered by the current logic. >>>> >>> >>> I may be misunderstanding the spec, NoOutputBeforeRecoveryFlag is set >>> for pictures which have no leading pictures, no? In any case take, for >>> instance, a CRA picture. In most cases, CRA pictures have >>> NoOutputBeforeRecoveryFlag=0, therefore are not CLVSS pictures and >>> sps_id_used is not reset by the existing logic. Do we not need to reset >>> sps_id_used when seeking to a CRA then? >>> >> After seeking, we'll set s->last_eos to 1. >> For a CRA, decode_recovery_flag will set s->no_output_before_recovery_flag >> to s->last_eos. >> So no_output_before_recovery_flag will be 1, not 0. > > I see, my mistake. Yes in this case I do not think sps_id_used must be > explicitly reset. Should i revert the commit then, or is it harmless? This you discussed above could also be documented somewhere in the code. _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [FFmpeg-devel] [PATCH] avcodec/vvc/ps: reset sps_id_used on PS uninit 2024-04-14 22:23 ` James Almer @ 2024-04-15 12:54 ` Nuo Mi 0 siblings, 0 replies; 10+ messages in thread From: Nuo Mi @ 2024-04-15 12:54 UTC (permalink / raw) To: FFmpeg development discussions and patches Mostly Harmless :) On Mon, Apr 15, 2024 at 6:24 AM James Almer <jamrial@gmail.com> wrote: > On 4/13/2024 7:18 AM, Frank Plowman wrote: > > > > > > On 09/04/2024 14:36, Nuo Mi wrote: > >> On Mon, Apr 8, 2024 at 11:15 PM Frank Plowman <post@frankplowman.com> > wrote: > >> > >>> On 08/04/2024 15:12, Nuo Mi wrote: > >>>> On Mon, Apr 8, 2024 at 4:37 PM Frank Plowman <post@frankplowman.com> > >>> wrote: > >>>> > >>>>> On 07/04/2024 15:48, James Almer wrote: > >>>>>> On 4/7/2024 10:38 AM, Nuo Mi wrote: > >>>>>>> On Sun, Apr 7, 2024 at 11:05 AM James Almer <jamrial@gmail.com> > >>> wrote: > >>>>>>> > >>>>>>>> Signed-off-by: James Almer <jamrial@gmail.com> > >>>>>>>> --- > >>>>>>>> libavcodec/vvc/ps.c | 1 + > >>>>>>>> 1 file changed, 1 insertion(+) > >>>>>>>> > >>>>>>>> diff --git a/libavcodec/vvc/ps.c b/libavcodec/vvc/ps.c > >>>>>>>> index 3c71c34bae..83ee75fb62 100644 > >>>>>>>> --- a/libavcodec/vvc/ps.c > >>>>>>>> +++ b/libavcodec/vvc/ps.c > >>>>>>>> @@ -912,6 +912,7 @@ void ff_vvc_ps_uninit(VVCParamSets *ps) > >>>>>>>> ff_refstruct_unref(&ps->sps_list[i]); > >>>>>>>> for (int i = 0; i < FF_ARRAY_ELEMS(ps->pps_list); i++) > >>>>>>>> ff_refstruct_unref(&ps->pps_list[i]); > >>>>>>>> + ps->sps_id_used = 0; > >>>>>>>> > >>>>>>> Hi James, > >>>>>>> thank you for the patch. > >>>>>>> > >>>>>>> Is this really necessary? > >>>>>>> vvc_ps_uninit will be called by vvc_decode_free, > >>>>>>> We are not supposed to use any member of VVCParamSets after > >>>>>>> vvc_decode_free. > >>>>>> > >>>>>> My bad, i thought it was also called on every flush() call. > >>>>>> > >>>>>> Something like the following: > >>>>>> > >>>>>>> diff --git a/libavcodec/vvc/dec.c b/libavcodec/vvc/dec.c > >>>>>>> index eb447604fe..463536512e 100644 > >>>>>>> --- a/libavcodec/vvc/dec.c > >>>>>>> +++ b/libavcodec/vvc/dec.c > >>>>>>> @@ -963,6 +963,8 @@ static av_cold void > >>>>>>> vvc_decode_flush(AVCodecContext *avctx) > >>>>>>> ff_vvc_flush_dpb(last); > >>>>>>> } > >>>>>>> > >>>>>>> + s->ps->sps_id_used = 0; > >>>>>>> + > >>>>>>> s->eos = 1; > >>>>>>> } > >>>>>> > >>>>>> Should be done on FFCodec.flush() (like when seeking) as the > previous > >>>>>> state is no longer valid, right? > >>>>> > >>>>> Yes I agree, I think this is needed. Cases where the random access > >>>>> point has no leading pictures should be covered by the existing > logic as > >>>>> these always fall at the start of a CVS, but I think this is needed > to > >>>>> cover the case in which there are leading pictures. > >>>>> > >>>> This patch isn't necessary. > >>>> Leading pictures won't carry SPS. > >>>> IDR, CRA, and GDR will carry SPS, but they will also start a new CVS, > >>> which > >>>> will covered by the current logic. > >>>> > >>> > >>> I may be misunderstanding the spec, NoOutputBeforeRecoveryFlag is set > >>> for pictures which have no leading pictures, no? In any case take, for > >>> instance, a CRA picture. In most cases, CRA pictures have > >>> NoOutputBeforeRecoveryFlag=0, therefore are not CLVSS pictures and > >>> sps_id_used is not reset by the existing logic. Do we not need to > reset > >>> sps_id_used when seeking to a CRA then? > >>> > >> After seeking, we'll set s->last_eos to 1. > >> For a CRA, decode_recovery_flag will set > s->no_output_before_recovery_flag > >> to s->last_eos. > >> So no_output_before_recovery_flag will be 1, not 0. > > > > I see, my mistake. Yes in this case I do not think sps_id_used must be > > explicitly reset. > > Should i revert the commit then, or is it harmless? > This you discussed above could also be documented somewhere in the code. > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". > _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2024-04-15 12:55 UTC | newest] Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2024-04-07 3:04 [FFmpeg-devel] [PATCH] avcodec/vvc/ps: reset sps_id_used on PS uninit James Almer 2024-04-07 13:38 ` Nuo Mi 2024-04-07 14:48 ` James Almer 2024-04-08 8:37 ` Frank Plowman 2024-04-08 14:12 ` Nuo Mi 2024-04-08 15:14 ` Frank Plowman 2024-04-09 13:36 ` Nuo Mi 2024-04-13 10:18 ` Frank Plowman 2024-04-14 22:23 ` James Almer 2024-04-15 12:54 ` Nuo Mi
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel This inbox may be cloned and mirrored by anyone: git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \ ffmpegdev@gitmailbox.com public-inbox-index ffmpegdev Example config snippet for mirrors. AGPL code for this site: git clone https://public-inbox.org/public-inbox.git