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

Changes to improve RDD 44 compliance #25

Merged
merged 11 commits into from
Aug 22, 2023
Merged

Conversation

philipnbbc
Copy link
Collaborator

@philipnbbc philipnbbc commented Aug 16, 2023

This PR contains changes that improves RDD 44 (RDD 36 / ProRes in MXF) compliance:

  • A Container Constraints Sub Descriptor set is written to signal the file complies with ST 379-2 (Constrained Generic Container) if the OP1a file contains RDD 36 / ProRes (RDD 44, section 5.5.4)
  • Added a --st379-2 option to signal compliance with ST 379-2 for files that may not contain RDD 36. All files created by bmx should be ST 379-2 compliant.
  • Fixed the index table delta array Pos Table Index property to not indicate temporal reordering
  • Added --video-line-map option to set or override the Video Line Map descriptor property
    • This option can be used to fill in the Video Line Map descriptor property that is not provided by the RDD 36 bitstream. The value is by default guessed to equal 1,0 for (FULL_FRAME) progressive video and 1,<height/2 + 1> for interlaced
    • Options already exist for the other MXF descriptor properties that could otherwise be guessed incorrectly: --transfer-ch, --coding-eq, --color-prim, --signal-std, -a (aspect ratio) and --color-siting
  • The Stored Width and Stored Heights are no longer rounded up to a include a whole number of macro blocks. RDD 44:2022 revised the stored dimensions to not be a multiple of the macro block size as is suggested by ST 377-1 section G.1.1
  • Fixed the --body-part (OP1A_BODY_PARTITIONS_FLAVOUR define) to include index table segments in the next essence body partition (or footer partition) rather than in a separate partition
  • Extended the set of defaults for the descriptor properties to include some ITU 2020 values

Requires BBC-archive/libMXF#5 and BBC-archive/libMXFpp#6

Fixes #24

SMPTE RDD 44 (RDD 36 / ProRes in MXF) requires SMPTE ST 379-2
(MXF contrained generic container) which requires the
ContainerConstraintsSubDescriptor to be included in the file.
It was wrongly set to -1 which indicates that the Temporal Offset
property in the index array is used to indicate temporal differences.
This commit fixes it to be 0 which indicates there is no temporal
reordering.
Was factored out of UncCDCIMXFDescriptorHelper and
UncRGBAMXFDescriptorHelper. This allows VideoLineMap to be initialised
from input file descriptors in other descriptor helpers.
RDD 44:2022 revised the stored dimensions to not be a multiple of
the macro block size as is suggested by ST 377-1 section G.1.1
Separate index and essence body partitions were used despite the
OP1A_BODY_PARTITIONS_FLAVOUR flag being set. This change fixes that.
@philipnbbc philipnbbc force-pushed the philipn-rdd44-compliance branch from 27d84a3 to 56afacb Compare August 21, 2023 13:42
@philipnbbc philipnbbc merged commit d448677 into main Aug 22, 2023
@philipnbbc philipnbbc deleted the philipn-rdd44-compliance branch August 22, 2023 10:42
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

Successfully merging this pull request may close these issues.

Add ContainerConstraintsSubDescriptor
1 participant