-
Notifications
You must be signed in to change notification settings - Fork 507
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
base: main
Are you sure you want to change the base?
Conversation
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; |
There was a problem hiding this comment.
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:
- 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?
- I noticed that not all points mentioned in this section are included in the PR. Is there a specific reason for this?
- The documentation on common encryption mentions details about encrypting the IAMF stream. Are only AudioFrameOBUs encrypted?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for reviewing!
- Good catch, done.
- 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?
- 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.
There was a problem hiding this comment.
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
Thanks for the pointer, done. |
No description provided.