From c897d080bbdda795faa152b812f397da660d5dfb Mon Sep 17 00:00:00 2001 From: Jamie Hardt Date: Sat, 26 Nov 2022 11:42:37 -0800 Subject: [PATCH] Dolby Removed supplemental metadata for now --- tests/test_dolby.py | 2 -- wavinfo/__main__.py | 2 +- wavinfo/wave_dbmd_reader.py | 67 +++++++++++++++++++++++++++---------- 3 files changed, 50 insertions(+), 21 deletions(-) diff --git a/tests/test_dolby.py b/tests/test_dolby.py index f879cb2..12a3d87 100644 --- a/tests/test_dolby.py +++ b/tests/test_dolby.py @@ -19,11 +19,9 @@ class TestDolby(TestCase): ddp = [x for x in d.segment_list if x[0] == SegmentType.DolbyDigitalPlus] atmos = [x for x in d.segment_list if x[0] == SegmentType.DolbyAtmos] - atmos_sup = [x for x in d.segment_list if x[0] == SegmentType.DolbyAtmosSupplemental] self.assertEqual(len(ddp), 1) self.assertEqual(len(atmos), 1) - self.assertEqual(len(atmos_sup), 1) def test_checksums(self): t1 = wavinfo.WavInfoReader(self.test_file) diff --git a/wavinfo/__main__.py b/wavinfo/__main__.py index 7fa08bf..e34d19c 100644 --- a/wavinfo/__main__.py +++ b/wavinfo/__main__.py @@ -8,7 +8,7 @@ from enum import Enum class MyJSONEncoder(json.JSONEncoder): def default(self, o): if isinstance(o, Enum): - return dict(name=o._name_, value=o._value_) + return o._name_ else: return super().default(o) diff --git a/wavinfo/wave_dbmd_reader.py b/wavinfo/wave_dbmd_reader.py index be83d6e..63dd6e8 100644 --- a/wavinfo/wave_dbmd_reader.py +++ b/wavinfo/wave_dbmd_reader.py @@ -473,6 +473,7 @@ class DolbyDigitalPlusMetadata: @dataclass class DolbyAtmosMetadata: """ + Dolby Atmos Metadata Segment https://github.com/DolbyLaboratories/dbmd-atmos-parser/ """ @@ -493,7 +494,8 @@ class DolbyAtmosMetadata: @classmethod def load(cls, data: bytes): - assert len(data) == cls.SEGMENT_LENGTH, "DolbyAtmosMetadata segment present in file is incorrect length" + assert len(data) == cls.SEGMENT_LENGTH, "DolbyAtmosMetadata segment "\ + "is incorrect length, expected %i actual was %i" % (cls.SEGMENT_LENGTH, len(data)) h = BytesIO(data) @@ -514,12 +516,13 @@ class DolbyAtmosMetadata: tool_version=(major, minor, fix), warp_mode=DolbyAtmosMetadata.WarpMode(warp_mode)) - - - @dataclass class DolbyAtmosSupplementalMetadata: - + """ + Dolby Atmos supplemental metadata segment. + + https://github.com/DolbyLaboratories/dbmd-atmos-parser/blob/master/dbmd_atmos_parse/src/dbmd_atmos_parse.c + """ class BinauralRenderMode(Enum): BYPASS = 0x00 @@ -530,13 +533,42 @@ class DolbyAtmosSupplementalMetadata: object_count: int - render_modes: List['DolbyAtmosMetadata.BinauralRenderMode'] + render_modes: List['DolbyAtmosSupplementalMetadata.BinauralRenderMode'] trim_modes: List[int] + + MAGIC = 0xf8726fbd + TRIM_CONFIG_COUNT = 9 + @classmethod def load(cls, data: bytes): - pass + trim_modes = [] + render_modes = [] + + h = BytesIO(data) + magic = unpack(" List[DolbyAtmosSupplementalMetadata]: - """ - Every valid Dolby Atmos Supplemental metadata segment in the file. - """ - return [x[2] for x in self.segment_list \ - if x[0] == SegmentType.DolbyAtmosSupplemental and x[1]] + # def dolby_atmos_supplemental(self) -> List[DolbyAtmosSupplementalMetadata]: + # """ + # Every valid Dolby Atmos Supplemental metadata segment in the file. + # """ + # return [x[2] for x in self.segment_list \ + # if x[0] == SegmentType.DolbyAtmosSupplemental and x[1]] def to_dict(self) -> dict: ddp = map(lambda x: asdict(x), self.dolby_digital_plus()) atmos = map(lambda x: asdict(x), self.dolby_atmos()) - atmos_sup = [] #map(lambda x: asdict(x), self.dolby_atmos_supplemental()) + #atmos_sup = map(lambda x: asdict(x), self.dolby_atmos_supplemental()) return dict(dolby_digital_plus=list(ddp), - dolby_atmos=list(atmos), - dolby_atmos_supplemental=list(atmos_sup)) + dolby_atmos=list(atmos))