Fix handling encrypted AAC frames when there's no encrypted data in a frame #4514
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The
decryptAacSample()
was failing when the content size of the frame wasless than 16 bytes (which is the size of unencrypted portion). Specifically,
curUnit.set(decryptedData, 16);
code was failing becausecurUnit
was smaller than 16, so there was attempt to write outside of the buffer.
According to the documentation [1], each AAC frame consists of
In the failing case, the frame contained ADTS header (7 bytes), but the
unencrypted leader was only 13 bytes long.
[1] Section
2.3.1.1 AAC
https://developer.apple.com/library/archive/documentation/AudioVideo/Conceptual/HLS_Sample_Encryption/Encryption/Encryption.htmlThis PR will fix...
handling AAC files with frames where unencrypted ladder is less than 16 bytes long
Why is this Pull Request needed?
To correctly handle edge cases
Are there any points in the code the reviewer needs to double check?
Resolves issues:
Checklist