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

Compute metadata overhead #21

Open
tdaede opened this issue May 15, 2023 · 4 comments
Open

Compute metadata overhead #21

tdaede opened this issue May 15, 2023 · 4 comments
Labels

Comments

@tdaede
Copy link
Collaborator

tdaede commented May 15, 2023

We can compare the size of the standalone iamf streams to the component bitstreams (or their bitrates) to compute the overall metadata overhead.

@sunghee-hwang
Copy link
Collaborator

@jwcullen @yeroro @yilun-zhangs,
is it still an open issue or was it already addressed? or will it be postponed?

@jwcullen
Copy link
Collaborator

jwcullen commented Aug 31, 2023

We did not make a formal report of bitrate overhead. I'm not sure how useful it is without actual real-life samples and even then the overhead depends on what features are used. I see 3 main components of overhead as 1) Descriptor OBUs 2) Parameter Blocks 3) Audio Frame header.

  1. For descriptor OBUs the % overhead depends on how often they appeal. Many test vectors encode ~500 ms which means I expect they have a higher descriptor overhead than typical real-life samples would have.

  2. Parameter block overhead depends on how granular control the content creator wants. If they use a lot of subblocks or cannot use param_definition_mode == 0 then the overhead is increased. I'm not sure what would be representative here without real-life samples.

  3. This can be approximated by hand based on the frame size. There is additional overhead if large audio frame IDs are used - even though they usually would not be necessary.

I am deferring to the working group to decide if we need to do more on this.

@sunghee-hwang
Copy link
Collaborator

sunghee-hwang commented Sep 1, 2023

Let me calculate the overhead based on the following assumption.

  • Simple Profile
  • One set of Descriptors
  • Codec: Opus
  • Input 3D audio signal: 7.1.4ch
  • bitrate: 32kbps or 64kbps per channel
  • Frame duration: 20ms
  • No parameter block
  • No scalable channel audio
  1. Overhead for Descriptors: Total 137B
  • IA Sequence Header OBU: 8B
  • Codec Config OBU: 22B
  • Audio Element OBU: 16B
  • Mix Presentation OBU: 91B (based on one language(English) & label length 20B)
  1. The size of audio_frame: 48KB (for 32kbps) or 96KB (for 64kbps) per second.

  2. OBU header overhead of Audio Frame OBU: Total 1050B per second

  • Number of Audio Frame OBU: 350B per second (50 frames per second x number of substreams)
  • OBU Header size: 3B

As a result, the overhead is

  • Bitrate 32kbps per channel: (137 + 1050 x S + 6 (trimming info)) / 48K, about 2.5% for S = 1 and 2.2% for S = 240 sec
  • Bitrate 64kbps per channel: (137 + 1050 x S + 6 (trimming info)) / 96K, about 1.25% for S = 1 and 1.1% for S = 240 sec

@sunghee-hwang
Copy link
Collaborator

I think that we can postpone this to compute the overhead for further cases.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants