Comments (12)
Hi @adminitis,
Support for CompatibleProfileLevelSet
landed on main branch today. Regarding Low complexity profile level 4, work is currently under progress. Support will be added in a few weeks.
Thanks,
Saketh
from libmpegh.
@SakethSathuvalli I've seen you have been working on this recently. What are your plans on merging this to main?
The changes are expected to be available on main
branch - in the same form (enhancements maintained under build time switch) - by early June.
Thanks!
from libmpegh.
Hi Adam,
There is a minor difference in the MPEG-H LC Profile if you are comparing 23008-3:2019 with the latest version 23008-3:2022 (3rd Edition). With the introduction of the Baseline profile, it has been specified that LC Profile Level 3 also includes support for Baseline Profile Level 3, which also supports a "Max. number of decoder processed core channels" of 24 (under additional complexity restrictions):
The baseline profile is a subset of the low-complexity profile. If a decoder implementation supports decoding of low complexity profile level 3 bitstreams and supports the configuration extension CompatibleProfileLevelSet(), then the decoder shall support decoding of bitstreams encoded according to the baseline profile level 3. Bitstreams complying to the baseline profile may be signalled using:
— the mpegh3daProfileLevelIndication field set to indicate baseline profile as specified in Table 67, or alternatively,
— the mpegh3daProfileLevelIndication field set to indicate low complexity profile as specified in Table 67 and the CompatibleProfileLevelSet configuration extension for indicating compatibility to baseline profile, as described in Annex P;
Please also see Table P.1 — Value of mpegh3daProfileLevelIndication and CompatibleSetIndication. This indicates the following:
Level | mpegh3daProfileLevelIndication | CompatibleSetIndication |
---|---|---|
... | ||
Baseline level 3a | 0x0D (LC level 3) | 0x12 (Baseline level 3) |
Baseline level 3b | 0x0E (LC level 4) | 0x12 (Baseline level 3) |
Therefore, it might very well be that Amazon Music is using MPEG-H LC Level 4 for their streams as primary level, but that they are using the "CompatibleProfileLevelSet()" syntax to signal compatibility to Baseline Profile Level 3. Can you check for that? Are you aware of streams using more than 24 "decoder processed core channels"?
The decoder published in this GitHub supports both, MPEG-H LC Level 3 and MPEG-H Baseline Level 3.
Thanks!
//Christof
from libmpegh.
Hi Christof,
thank you for your insightful comment.
Based on my understanding if LC4 is used by stream, this check in decoder/ia_core_coder_init_config.c
will fail:
if (dec_proc_core_chans > MAX_NUM_CHANNELS_LVL3 || ref_layout_chans > MAX_NUM_CHANNELS_LVL3)
{
return IA_MPEGH_DEC_INIT_FATAL_STREAM_CHAN_GT_MAX;
}
because
decoder/ia_core_coder_cnst.h:#define MAX_NUM_CHANNELS_LVL3 16
Hence why we were not able to decode the stream.
If I understand your comment correctly libmpegh may in case of LC4 and CompatibleProfileLevelSet() flag revert to BP3 and in that case in code check vs MAX_NUM_CHANNELS(24) will be used instead and the stream may potentially play.
case MPEGH_PROFILE_LC_LVL_3:
if (dec_proc_core_chans > MAX_NUM_CHANNELS || ref_layout_chans > MAX_NUM_CHANNELS ||
However since this is decoder internals I assume the patch would have to be done to the libmpegh as AFAIK there is no way to produce this behavior just by using the decoder API.
Adam
from libmpegh.
Hi Adam,
You are right. I didn't check what the code does, but from the description it should be supporting that scenario:
State-of-the-art MPEG-H 3D Audio Low Complexity Profile decoders according to ISO/IEC 23008-3:2019/AMD 2:2020 also support the MPEG-H 3D Audio Baseline Profile, which is a subset of the MPEG-H 3D Audio Low Complexity Profile.
Have you been able to check the streams you are using and if they are in fact using the signalling as described?
Independent from that, I think the check should be changed according to what's standardised in AMD 2:2020 or the 23008-3:2022 version accordingly.
Thanks,
//Christof
from libmpegh.
Hi @christof-fersch, @SakethSathuvalli,
we tested decoding mpegh stream file from Amazon with "ultra" quality.
libmpegh currently does not implement CompatibleProfileLevelSet parsing and support in mp4 ext box or in decoder config as described in 2022 version of the standard.
The Amazon ultra streams that I tested do not use MHAProfileAndLevelCompatibilitySetBox or CompatibleProfileLevelSet in the mpegh3daConfigExtension. This leads me to believe even if the compatibility flag could be used, some ultra streams may not be able to be played, unless full LC LVL 4 support is implemented.
We were able to play and listen to at least one "ultra" stream when patching libmpegh to force decoding in LC LVL 3 mode.
Amazon streaming is a major use case, @SakethSathuvalli, are there any plans for implementing full LC LVL 4 decoding and the CompatibleProfileLevelSet as described by the 2022 standard?
Best Regards,
Adam
from libmpegh.
Hi @miartad,
We will be adding this support in decoder config in a week's time. Thanks for your patience!
Best Regards,
Saketh
from libmpegh.
It looks like it is still not decoding profile level 4.
from libmpegh.
https://github.com/Fraunhofer-IIS/mpeghdec
This program supports decoding for profile level 4 and is open source. So you can refer to this.
from libmpegh.
https://github.com/Fraunhofer-IIS/mpeghdec This program supports decoding for profile level 4 and is open source. So you can refer to this.
Only with LC@L4/BL@L3 files unfortunately.
from libmpegh.
@SakethSathuvalli I've seen you have been working on this recently. What are your plans on merging this to main?
from libmpegh.
Initial version available on main branch.
Note: The default build has support only till profile level 3, in order to enable support for profile level 4 the build switch LC_LEVEL_4
has to be enabled.
Thanks!
from libmpegh.
Related Issues (20)
- Unable to decode mhm1 HOT 13
- License question HOT 5
- Failed to decode mhas files HOT 2
- Unable to decode fragmented mhm1 mp4 file HOT 5
- ext_ren flag produces files with incorrect filename HOT 4
- Feature request: Can you add "binaural" to the target speaker layout options? HOT 11
- Compile static executable HOT 1
- Input File: File Open Failed HOT 2
- Stuck when decoding 360RA file HOT 6
- Fraunhofer test files fail with "invalid channel configuration" HOT 2
- [QUESTION] Can I pay someone to explain how to use this like I'm a 5th grader? HOT 3
- Need help HOT 5
- Off-by-one issue in maximum number of description languages check HOT 7
- Bitstream pointer has to be aligned to payload length after parsing HOT 2
- OAM external renderer interface writes `goa_element_id` always as `0` HOT 1
- Versioning out of sync HOT 1
- Fix build warnings observed with latest build
- Update documentation reflecting the latest changes related to LC level4 support
- I need clarification regarding target loudness and DRC effect parameters. HOT 1
- DRC handling is not thread-safe HOT 1
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 libmpegh.