diff mbox series

[FFmpeg-devel] lavc/vvc: Skip enhancement layer NAL units

Message ID 20240418185955.91111-1-post@frankplowman.com
State New
Headers show
Series [FFmpeg-devel] lavc/vvc: Skip enhancement layer NAL units | expand

Checks

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

Commit Message

Frank Plowman April 18, 2024, 6:59 p.m. UTC
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(+)

Comments

James Almer April 18, 2024, 7:43 p.m. UTC | #1
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:
Frank Plowman April 18, 2024, 8:19 p.m. UTC | #2
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.
James Almer April 18, 2024, 8:23 p.m. UTC | #3
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".
Frank Plowman April 18, 2024, 8:27 p.m. UTC | #4
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 mbox series

Patch

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: