Skip to content

Support variable length sgpd boxes in fMPEG#3243

Open
dimitry-unified-streaming wants to merge 1 commit into
androidx:mainfrom
dimitry-unified-streaming:fix-variable-length-sgpd-main-1
Open

Support variable length sgpd boxes in fMPEG#3243
dimitry-unified-streaming wants to merge 1 commit into
androidx:mainfrom
dimitry-unified-streaming:fix-variable-length-sgpd-main-1

Conversation

@dimitry-unified-streaming
Copy link
Copy Markdown

For sgpd boxes with version >= 1, the default_length field is zero if the length of the following sample group entries is variable.

Since the FragmentedMp4Extractor only supports one entry, skip the description_length field if applicable (e.g. when version >= 1 and default_length == 0), instead of throwing an error.

For parsing the following CencSampleEncryptionInformationGroupEntry, this should make no difference.

Issue: #3177

For `sgpd` boxes with version >= 1, `the default_length` field is zero if the
length of the following sample group entries is variable.

Since the `FragmentedMp4Extractor` only supports one entry, skip the
`description_length` field if applicable (e.g. when version >= 1 and
`default_length` == 0), instead of throwing an error.

For parsing the following CencSampleEncryptionInformationGroupEntry, this should
make no difference.

Issue: androidx#3177
"Variable length description in sgpd found (unsupported)");
}
} else if (sgpdVersion >= 2) {
long default_length = sgpdVersion >= 1 ? sgpd.readUnsignedInt() : 0;
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i don't think the >= 1 check here is correct - I think it should be == 1.

Looking at section 8.9.3.2 of ISO 14496-12:2015 it seems default_length is present at v1 only, and the same 4 bytes are default_sample_description_index on v2+:

if (version==1) { unsigned int(32) default_length; }
if (version>=2) {
  unsigned int(32) default_sample_description_index;
}

This also matches the previous code.

Same below on the condition gating the description_length skip.

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.

2 participants