fix: handle QuickTime wave/esds in mp4a codec derivation and fragmented init#550
fix: handle QuickTime wave/esds in mp4a codec derivation and fragmented init#550lideen wants to merge 2 commits into
Conversation
e3642e6 to
514dbf1
Compare
514dbf1 to
ca83fc2
Compare
🦋 Changeset detectedLatest commit: ca83fc2 The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
DenizUgur
left a comment
There was a problem hiding this comment.
Thank you for the contribution. Overall the PR looks good, I just have some small comments I've added below.
|
|
||
| /* If the application needs to be informed that the 'moov' has been found, | ||
| we create the information object and callback the application */ | ||
| we create the information object and callback the application */ |
There was a problem hiding this comment.
Could you revert the whitespace changes in this PR?
There was a problem hiding this comment.
I don't know about checking in the file to the repo. Can you add a test without using the fixtures or check if anything from file format conformance has a similar file?
I'll likely have a way to contribute test files in the future.
| } | ||
|
|
||
| /** @bundle isofile-write.js */ | ||
| private static normalizeAudioSampleEntriesForFragmentedInit(traks: Array<trakBox>) { |
There was a problem hiding this comment.
Why do we need to filter wave out?
Description
I noticed some QT files were producing incomplete/incorrect audio codec strings and compatibility issues in my fragmented playback flows.
This PR improves handling of QuickTime-style audio sample entries in QT files where codec/config metadata is nested under
wave.esdsrather than exposed directly on the sample entry.The underlying issue was about how
mp4asample entries can be structured in QuickTime files:mp4a.wave.esdsinstead ofmp4a.esds.This has two main issues:
mp4arelies on directesdswave.esdslayouts fails to give the correct codec string.wave.esds. The MSE apis expects init segments to have directesds.What changed
mp4acodec derivation now supports nested QuickTime layoutmp4aentries, codec derivation now resolves descriptor info from:esdswave.esdsmp4a.wave.esdslayoutswriteInitializationSegment(...),mp4aentries with nestedwave.esdsare normalized to directesdsrepresentation.