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

feat: Add IAMF support (#1415) #1416

Open
wants to merge 3 commits into
base: main
Choose a base branch
from

Conversation

felicialim
Copy link

No description provided.

@sr1990
Copy link
Contributor

sr1990 commented Aug 3, 2024

Please add an end-to-end test in src/packager/app/test/packager_test.py to create golden files for verifying the correctness of the generated codec strings in DASH and HLS manifest files.

} else if (audio_info->codec() == kCodecIAMF) {
// IAMF sets channelcount to 0
// https://aomediacodec.github.io/iamf/#iasampleentry-section
audio.channelcount = 0;
Copy link
Contributor

Choose a reason for hiding this comment

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

I am not very familiar with IAMF, but after reviewing the spec, I have a few questions:

  1. Based on this section, it seems that the iamf compatible brand is not present in ftyp box. Should this be added after line 265 above?
  2. I noticed that not all points mentioned in this section are included in the PR. Is there a specific reason for this?
  3. The documentation on common encryption mentions details about encrypting the IAMF stream. Are only AudioFrameOBUs encrypted?

Copy link
Author

Choose a reason for hiding this comment

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

Thank you for reviewing!

  1. Good catch, done.
  2. I'm probably just misunderstanding what needs to be implemented here - I thought that these are expected already be in the input mp4 files and would be copied over when encrypting, or is this something that needs to be added separately here?
  3. Parameter Block OBUs would also be encrypted along with AudioFrameOBUs - both of them are part of a Temporal Unit, which is in turn packaged as one temporal unit per IA Sample.

Copy link
Contributor

Choose a reason for hiding this comment

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

2.Please ignore. Sorry about that.
Do you think it would be beneficial to add checks for the constraints mentioned in the section to ensure the provided input is correct?

3.Thanks for the explanation.
I have a few questions:
a. For each sample indicated by trun, does it contain one TU (comprising OBU header type 5, Audio Frame OBU, OBU header type 3, and OBU parameter block)?

b. In the encryption handler, during media sample processing at EncryptionHandler::ProcessMediaSample, media subsamples are generated in SubsampleGenerator::GenerateSubsamples.
Is the entire sample encrypted, meaning no subsamples are expected as per here?
Or are the OBU headers skipped, requiring the exact addresses and sizes of the Audio Frame OBU and Parameter Block OBU to be extracted as subsamples, similar to how AV1 tiles are extracted?

c. Suggestion: It might be helpful to include a diagram similar to AV1 in the IAMF documentation

@felicialim
Copy link
Author

Please add an end-to-end test in src/packager/app/test/packager_test.py to create golden files for verifying the correctness of the generated codec strings in DASH and HLS manifest files.

Thanks for the pointer, done.

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