Message ID | 20240418185955.91111-1-post@frankplowman.com |
---|---|
State | New |
Headers | show |
Series | [FFmpeg-devel] lavc/vvc: Skip enhancement layer NAL units | expand |
Context | Check | Description |
---|---|---|
yinshiyou/make_loongarch64 | success | Make finished |
yinshiyou/make_fate_loongarch64 | success | Make fate finished |
andriy/make_x86 | success | Make finished |
andriy/make_fate_x86 | success | Make fate finished |
On 4/18/2024 3:59 PM, Frank Plowman wrote: > The native VVC decoder does not yet support quality/spatial/multiview > scalability. Bitstreams requiring this feature could cause crashes. > Patch fixes this by skipping NAL units which are not in the base layer, > warning the user while doing so. > > Signed-off-by: Frank Plowman <post@frankplowman.com> > --- > libavcodec/vvc/dec.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/libavcodec/vvc/dec.c b/libavcodec/vvc/dec.c > index a4fc40b40a..5249ddf989 100644 > --- a/libavcodec/vvc/dec.c > +++ b/libavcodec/vvc/dec.c > @@ -785,6 +785,11 @@ static int decode_nal_unit(VVCContext *s, VVCFrameContext *fc, const H2645NAL *n > > s->temporal_id = nal->temporal_id; > > + if (nal->nuh_layer_id > 0) { > + avpriv_report_missing_feature(fc->log_ctx, "Multilayer"); A more verbose message would be better. > + return AVERROR_PATCHWELCOME; > + } > + > switch (unit->type) { > case VVC_VPS_NUT: > case VVC_SPS_NUT:
On 18/04/2024 20:43, James Almer wrote: > On 4/18/2024 3:59 PM, Frank Plowman wrote: >> The native VVC decoder does not yet support quality/spatial/multiview >> scalability. Bitstreams requiring this feature could cause crashes. >> Patch fixes this by skipping NAL units which are not in the base layer, >> warning the user while doing so. >> >> Signed-off-by: Frank Plowman <post@frankplowman.com> >> --- >> libavcodec/vvc/dec.c | 5 +++++ >> 1 file changed, 5 insertions(+) >> >> diff --git a/libavcodec/vvc/dec.c b/libavcodec/vvc/dec.c >> index a4fc40b40a..5249ddf989 100644 >> --- a/libavcodec/vvc/dec.c >> +++ b/libavcodec/vvc/dec.c >> @@ -785,6 +785,11 @@ static int decode_nal_unit(VVCContext *s, >> VVCFrameContext *fc, const H2645NAL *n >> s->temporal_id = nal->temporal_id; >> + if (nal->nuh_layer_id > 0) { >> + avpriv_report_missing_feature(fc->log_ctx, "Multilayer"); > > A more verbose message would be better. > Thanks for your review James. Would "Quality/spatial/multiview scalability" be better or do you have some other suggestion? The message is put in a template by avpriv_report_missing_feature, e.g. [vvc @ 0x618000003c80] Multilayer is not implemented. Update your FFmpeg version to the newest one from Git. If the problem still occurs, it means that your file has a feature which has not been implemented. so the string passed to avpriv_report_missing_feature must be a noun.
On 4/18/2024 5:19 PM, Frank Plowman wrote: > On 18/04/2024 20:43, James Almer wrote: >> On 4/18/2024 3:59 PM, Frank Plowman wrote: >>> The native VVC decoder does not yet support quality/spatial/multiview >>> scalability. Bitstreams requiring this feature could cause crashes. >>> Patch fixes this by skipping NAL units which are not in the base layer, >>> warning the user while doing so. >>> >>> Signed-off-by: Frank Plowman <post@frankplowman.com> >>> --- >>> libavcodec/vvc/dec.c | 5 +++++ >>> 1 file changed, 5 insertions(+) >>> >>> diff --git a/libavcodec/vvc/dec.c b/libavcodec/vvc/dec.c >>> index a4fc40b40a..5249ddf989 100644 >>> --- a/libavcodec/vvc/dec.c >>> +++ b/libavcodec/vvc/dec.c >>> @@ -785,6 +785,11 @@ static int decode_nal_unit(VVCContext *s, >>> VVCFrameContext *fc, const H2645NAL *n >>> s->temporal_id = nal->temporal_id; >>> + if (nal->nuh_layer_id > 0) { >>> + avpriv_report_missing_feature(fc->log_ctx, "Multilayer"); >> >> A more verbose message would be better. >> > > Thanks for your review James. > > Would "Quality/spatial/multiview scalability" be better or do you have > some other suggestion? The message is put in a template by > avpriv_report_missing_feature, e.g. > > [vvc @ 0x618000003c80] Multilayer is not implemented. Update your FFmpeg > version to the newest one from Git. If the problem still occurs, it > means that your file has a feature which has not been implemented. > > so the string passed to avpriv_report_missing_feature must be a noun. Maybe "Decoding of multilayer bitstreams".
On 18/04/2024 21:23, James Almer wrote: > On 4/18/2024 5:19 PM, Frank Plowman wrote: >> On 18/04/2024 20:43, James Almer wrote: >>> On 4/18/2024 3:59 PM, Frank Plowman wrote: >>>> The native VVC decoder does not yet support quality/spatial/multiview >>>> scalability. Bitstreams requiring this feature could cause crashes. >>>> Patch fixes this by skipping NAL units which are not in the base layer, >>>> warning the user while doing so. >>>> >>>> Signed-off-by: Frank Plowman <post@frankplowman.com> >>>> --- >>>> libavcodec/vvc/dec.c | 5 +++++ >>>> 1 file changed, 5 insertions(+) >>>> >>>> diff --git a/libavcodec/vvc/dec.c b/libavcodec/vvc/dec.c >>>> index a4fc40b40a..5249ddf989 100644 >>>> --- a/libavcodec/vvc/dec.c >>>> +++ b/libavcodec/vvc/dec.c >>>> @@ -785,6 +785,11 @@ static int decode_nal_unit(VVCContext *s, >>>> VVCFrameContext *fc, const H2645NAL *n >>>> s->temporal_id = nal->temporal_id; >>>> + if (nal->nuh_layer_id > 0) { >>>> + avpriv_report_missing_feature(fc->log_ctx, "Multilayer"); >>> >>> A more verbose message would be better. >>> >> >> Thanks for your review James. >> >> Would "Quality/spatial/multiview scalability" be better or do you have >> some other suggestion? The message is put in a template by >> avpriv_report_missing_feature, e.g. >> >> [vvc @ 0x618000003c80] Multilayer is not implemented. Update your FFmpeg >> version to the newest one from Git. If the problem still occurs, it >> means that your file has a feature which has not been implemented. >> >> so the string passed to avpriv_report_missing_feature must be a noun. > > Maybe "Decoding of multilayer bitstreams". Agreed, that's a bit clearer. v2 sent. Thanks,
diff --git a/libavcodec/vvc/dec.c b/libavcodec/vvc/dec.c index a4fc40b40a..5249ddf989 100644 --- a/libavcodec/vvc/dec.c +++ b/libavcodec/vvc/dec.c @@ -785,6 +785,11 @@ static int decode_nal_unit(VVCContext *s, VVCFrameContext *fc, const H2645NAL *n s->temporal_id = nal->temporal_id; + if (nal->nuh_layer_id > 0) { + avpriv_report_missing_feature(fc->log_ctx, "Multilayer"); + return AVERROR_PATCHWELCOME; + } + switch (unit->type) { case VVC_VPS_NUT: case VVC_SPS_NUT:
The native VVC decoder does not yet support quality/spatial/multiview scalability. Bitstreams requiring this feature could cause crashes. Patch fixes this by skipping NAL units which are not in the base layer, warning the user while doing so. Signed-off-by: Frank Plowman <post@frankplowman.com> --- libavcodec/vvc/dec.c | 5 +++++ 1 file changed, 5 insertions(+)