Comments (5)
Here are the three options that were discussed, with some additional details that I could think of:
(1) Use media_time in ISOBMFF edit list, plus all the subsequent timestamp and duration changes scattered across the mp4 boxes. In particular, duration of last packet in TRUN and corresponding SubSegmentDuration would need to be shorter as well, so that playback could seek sample-accurately and know how to trim off the end as well.
(2) Start and end trimming described within ia_static_meta(), colocated with the description of scalable multi-channel and ambisonic. In my proposal that would be within AudioElement.
(3) for Opus only, there is preSkip in the typical opus config structure - I assume preSkip is the number of audio samples to be trimmed from the first audio frame? If I understand correctly, Opus audio frames are capable of expressing their shorter duration, so then end trimming does not need to be explicit.
From these three options, perhaps we should use all three, except that we don't keep preSkip?
The reason I think all three are meaningful: (1) ISOBMFF approach allows sample-accurate seeking, and helps to represent sample-accurate presentation durations that may be useful for some users. (2) will allow us to express correct trimming if any parser reads OBU syntax without the MP4 container. It seems OK that the redundancy exists when the OBU is contained in MP4. (3) -- preSkip would be redundant and unnecessary, but for shortened duration of last audio frame, I would expect it will be easier to keep the semantics of the Opus encoder and not force the frame to be full size unnecessarily.
Would be interested to hear what others think, thanks for considering!
from iamf.
For (3), Opus audio packets themselves cannot express their shorter duration, however as a whole the stream can because of the inclusion of preSkip. This is technically redundant with the edit list in normal Opus-in-ISOBMFF packaging, and is mainly there to keep the same config box format when Opus is put into other containers without an equivalent feature to edit list start trimming.
from iamf.
In my view, it should be possible to store the information in OBU streams, when not stored into MP4. We should not reproduce the errors of AAC where the round tripping from MP4 to AAC looses the information.
Also, ideally, when storing in MP4, it should be possible to remove the information from the bitstream, to avoid redundancy and possibility of divergence. If that is not possible, then the spec should be clear that the 2 places (bitstream and container) shall match.
from iamf.
In my view, it should be possible to store the information in OBU streams, when not stored into MP4. We should not reproduce the errors of AAC where the round tripping from MP4 to AAC looses the information.
Also, ideally, when storing in MP4, it should be possible to remove the information from the bitstream, to avoid redundancy and possibility of divergence. If that is not possible, then the spec should be clear that the 2 places (bitstream and container) shall match.
It has been resolved as implementing obu_trimming_status information in Audio Frame OBU.
from iamf.
OK. One thing that seems to be still missing is how this interacts with edit lists.
from iamf.
Related Issues (20)
- Need to distinguish if modules in Figure 2 is normative or informative
- Consider that One IA sample = One Temporal Unit HOT 2
- Consider that Parameter Block is fully aligned with Audio Frame HOT 1
- Consider static Descriptor OBUs for both simple and base profiles (one sample entry) HOT 2
- Consider the update of recon_gain operation in terms of #415 HOT 1
- Need to clarify when default_mix_gain is used and how device can recognize the situation. HOT 3
- Need to clarify how many subblocks are stored in parameter block for recon_gain or demixing info in terms of #415.
- Consider Sync OBU as indication to use default value of a parameter
- Consider DemixingParamDefinition() having default values for demixing parameters
- Consider to change the name of Magic Code OBU into IAMF Header OBU or IA Sequence Header OBU
- Need to replace version 8bits and profile version 8 bits by profile name 8bits and compatible profile 8 bits.
- No mixer from (S7)T4 to (S5)T4 HOT 3
- Searching for magic code is not a guarantee HOT 3
- IA Sequence.png needs a legend for the yellow OBU HOT 1
- Replace "timeline" with a description of what needs to be checked HOT 1
- Move some demix and recon gain specific requirements to the demix and recon gain parameter definitions
- Backwards compatibility strategy HOT 3
- Consider increasing size of magic code HOT 2
- Should we require UTF-8 to not allow NUL character to avoid confusion with nul-termination? HOT 5
- Need to delete Sync OBU to address PR #432 HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from iamf.