PDA

View Full Version : Atmos, DTS:X



hsbrown2
04-13-2021, 11:00 AM
aka Object based audio...

ffmpeg doesn't seem able to accurately identify Atmos vs. TrueHD (etc...)

I know Mezzmo uses ffmpeg to collect media info, but it doesn't seem to get enough information to figure it out. MediaInfo seems to figure it out, although I have no idea how. I haven't poked at using other tools.

Is there a way a future release of Mezzmo could possibly identify the difference between an Atmos audio stream and channel-based TrueHD (and DTS:X?), and then assign the appropriate icons to a film based on the discovery?

Mezzmo passes it through just fine, and works. I tested it with an Nvidia Shield, and the Dolby test videos.

Peter
04-13-2021, 01:20 PM
Can you please post the ffmpeg information of two files, one with Atmos and one with TrueHD so we can see if there is any difference?

hsbrown2
04-15-2021, 01:27 PM
These are from Dolby test files/bumpers that are freely downloadable on the internet. The Atmos one looks like it has additional metadata, but I have no clue if they are just artifacts from the source, or if they mean anything. The stream descriptions are identical.

ATMOS:
Stream #0:1: Audio: truehd, 48000 Hz, 7.1, s32 (24 bit) (default)
Metadata:
BPS : 5272912
BPS-eng : 5272912
DURATION : 00:00:40.134000000
DURATION-eng : 00:00:40.134000000
NUMBER_OF_FRAMES: 48160
NUMBER_OF_FRAMES-eng: 48160
NUMBER_OF_BYTES : 26452882
NUMBER_OF_BYTES-eng: 26452882

TrueHD:
Stream #0:1(eng): Audio: truehd, 48000 Hz, 7.1, s32 (24 bit) (default)

hsbrown2
04-15-2021, 02:05 PM
Here's what I'm getting out of MediaInfo:

ATMOS:
Audio #1
ID : 3
Format : MLP FBA 16-ch
Format/Info : Meridian Lossless Packing FBA with 16-channel presentation
Commercial name : Dolby TrueHD with Dolby Atmos
Codec ID : A_TRUEHD
Duration : 3 min 7 s
Bit rate mode : Variable
Bit rate : 5 934 kb/s
Maximum bit rate : 9 621 kb/s
Channel(s) : 8 channels
Channel layout : L R C LFE Ls Rs Lb Rb
Sampling rate : 48.0 kHz
Frame rate : 1 200.000 FPS (40 SPF)
Compression mode : Lossless
Stream size : 133 MiB (15%)
Language : English
Default : Yes
Forced : No
Number of dynamic objects : 15
Bed channel count : 1 channel
Bed channel configuration : LFE

TrueHD:
Audio
ID : 2
Format : MLP FBA
Format/Info : Meridian Lossless Packing FBA
Commercial name : Dolby TrueHD
Codec ID : A_TRUEHD
Duration : 30 s 906 ms
Bit rate mode : Variable
Maximum bit rate : 6 342 kb/s
Channel(s) : 8 channels
Channel layout : L R C LFE Ls Rs Lb Rb
Sampling rate : 48.0 kHz
Frame rate : 1 200.000 FPS (40 SPF)
Compression mode : Lossless
Language : English
Default : Yes
Forced : No

Peter
04-15-2021, 02:14 PM
I downloaded a truehd and atmos file and loaded them in Mezzmo with a breakpoint on the code where Mezzmo gets information from the file to see if there was anything to distinguish the files that was not in the codec string but there does not appear to be any difference we could use. Possibly a newer version of ffmpeg might be able to provide more information.

hsbrown2
04-17-2021, 05:52 AM
I spent some time looking at what MediaInfo is doing, and it appears as though it reads a few frames of audio in to determine if the object metadata is in the stream. If it is, it figures out that it has Atmos.

Even if Mezzmo can’t dynamically determine if Atmos is encoded in the TrueHD stream, if there were a way to edit the metadata and display the appropriate icon it would be cool. At the moment it seems like it forces the use of info from ffmpeg and displays the TrueHD (etc...) icon, which while true, doesn’t tell the whole story. If I know a stream contains Atmos, I would like to set it, or force it to get the info for audio from an .nfo instead of ffmpeg. Does that make sense?

jbinkley60
04-17-2021, 06:16 PM
I spent some time looking at what MediaInfo is doing, and it appears as though it reads a few frames of audio in to determine if the object metadata is in the stream. If it is, it figures out that it has Atmos.

Even if Mezzmo can’t dynamically determine if Atmos is encoded in the TrueHD stream, if there were a way to edit the metadata and display the appropriate icon it would be cool. At the moment it seems like it forces the use of info from ffmpeg and displays the TrueHD (etc...) icon, which while true, doesn’t tell the whole story. If I know a stream contains Atmos, I would like to set it, or force it to get the info for audio from an .nfo instead of ffmpeg. Does that make sense?

The icon displaying is generally a client item based upon what it gets from the Mezzmo server. Which clients are you using ?


Jeff

hsbrown2
04-19-2021, 10:48 AM
The icon displaying is generally a client item based upon what it gets from the Mezzmo server. Which clients are you using ?

That's kind of my point, Mezzmo doesn't know the difference, so clients can't determine the icon to display. Mezzmo for Android, Roku (Mezzmo App), Kodi 19 w/ Mezzmo plugin (Nvidia Shield). The client displays based on the metadata of the object, if the metadata is only quasi-accurate (i.e Atmos is technically TrueHD, but with object information in the stream), the receiving client can't render the right icon, unless we go back to the dinosaur ages of movie sheets.

Peter
04-19-2021, 10:59 AM
Mezzmo has the codec information but for most clients this is not sent in the item listing. It is only sent to Mezzmo Android so if a client does display the TrueHD icon it must be sampling the audio.

jbinkley60
04-20-2021, 02:02 AM
I did a query against my Kodi database which stores the audio codec information from Mezzmo. Here's a list of the distinct audio codecs I found for my video library:

ac3
eac3
aac
truehd
dts
pcm_s24le
pcm_bluray


Jeff