Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Initial value of OperatingPointIdc and OBU ordering #332

Open
ajul opened this issue Aug 23, 2022 · 0 comments
Open

Initial value of OperatingPointIdc and OBU ordering #332

ajul opened this issue Aug 23, 2022 · 0 comments

Comments

@ajul
Copy link

ajul commented Aug 23, 2022

From Version 1.0.0 with Errata 1:

7.5. Ordering of OBUs says:

A temporal unit consists of a series of OBUs starting from a temporal delimiter, optional sequence headers, optional metadata OBUs, a sequence of one or more frame headers, each followed by zero or more tile group OBUs as well as optional padding OBUs.

The first temporal unit of a coded video sequence must contain one or more sequence header OBUs before the first frame
header OBU.

If a temporal unit contains one or more sequence header OBUs, the first appearance of the sequence header OBU must
be before the first frame header OBU.

One or more metadata and padding OBUs may appear in any order within an OBU sequence (unless constrained by
semantics provided elsewhere in this specification).

This seems to imply that metadata and/or padding OBUs may appear before the first sequence header. Therefore, OperatingPointIdc might not have been set at the time these OBUs are read.

In particular, 5.3.1. General OBU syntax has this conditional:

if ( obu_type != OBU_SEQUENCE_HEADER &&
     obu_type != OBU_TEMPORAL_DELIMITER &&
     OperatingPointIdc != 0 &&
     obu_extension_flag == 1 )

which may depend on an undefined value of OperatingPointIdc for metadata and padding OBUs. Some possible solutions:

  • Consider OperatingPointIdc to be initialized to 0 before any sequence header is read.
  • Require that a sequence header appear before any metadata or padding OBUs.
  • Specify that the && operator short-circuits, move the OperatingPointIdc != 0 clause to the end, and require that metadata and padding OBUs have obu_extension_flag == 0.
    • Perhaps only require obu_extension_flag == 0 if they appear before the first sequence header, if we desire that it be possible to assign layers to a metadata OBU.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant