impl audio layout

click-textual
Javanaut 12 months ago
parent fe1ed57758
commit 747ff41ad3

@ -1,3 +1,4 @@
import click
from enum import Enum
from .track_type import TrackType
@ -19,7 +20,7 @@ class AudioLayout(Enum):
def index(self):
"""Returns the layout as string"""
return self.value['layout']
return self.value['index']
@staticmethod
def fromIndex(index : int):
@ -28,7 +29,8 @@ class AudioLayout(Enum):
except:
return AudioLayout.LAYOUT_UNDEFINED
def identify(self, streamObj):
@staticmethod
def identify(streamObj):
FFPROBE_LAYOUT_KEY = 'channel_layout'
FFPROBE_CHANNELS_KEY = 'channels'
@ -40,7 +42,7 @@ class AudioLayout(Enum):
raise Exception('Not an ffprobe audio stream object')
if FFPROBE_LAYOUT_KEY in streamObj.keys():
matchingLayouts = [l for l in AudioLayout if l.value['layout'] == streamObj[FFPROBE_LAYOUT_KEY]]
matchingLayouts = [l for l in AudioLayout if l.label() == streamObj[FFPROBE_LAYOUT_KEY]]
if matchingLayouts:
return matchingLayouts[0]

@ -191,7 +191,7 @@ class FileProperties():
def getMediaDescriptor(self):
return MediaDescriptor.fromFfprobe(self.getFormatData(), self.getStreamData(), context = self.context)
return MediaDescriptor.fromFfprobe(self.getFormatData(), self.getStreamData())
def getShowId(self) -> int:

@ -109,7 +109,7 @@ class MediaDescriptor():
@classmethod
def fromFfprobe(cls, formatData, streamData, context : dict = None):
def fromFfprobe(cls, formatData, streamData):
kwargs = {}

@ -296,7 +296,7 @@ class MediaDetailsScreen(Screen):
row = (td.getIndex(),
trackType.label(),
typeCounter[trackType],
" ",
td.getAudioLayout().label() if trackType == TrackType.AUDIO else ' ',
td.getLanguage().label(),
td.getTitle(),
'Yes' if TrackDisposition.DEFAULT in dispoSet else 'No',

@ -138,7 +138,7 @@ class PatternDetailsScreen(Screen):
row = (td.getIndex(),
trackType.label(),
typeCounter[trackType],
td.getAudioLayout().label(),
td.getAudioLayout().label() if trackType == TrackType.AUDIO else ' ',
td.getLanguage().label(),
td.getTitle(),
'Yes' if TrackDisposition.DEFAULT in dispoSet else 'No',

@ -32,7 +32,8 @@ class TrackController():
track_type = int(trackDescriptor.getType().index()),
index = int(trackDescriptor.getIndex()),
source_index = int(trackDescriptor.getSourceIndex()),
disposition_flags = int(TrackDisposition.toFlags(trackDescriptor.getDispositionSet())))
disposition_flags = int(TrackDisposition.toFlags(trackDescriptor.getDispositionSet())),
audio_layout = trackDescriptor.getAudioLayout().index())
s.add(track)
s.commit()

@ -1,3 +1,5 @@
import click
from .iso_language import IsoLanguage
from .track_type import TrackType
from .audio_layout import AudioLayout
@ -150,7 +152,7 @@ class TrackDescriptor():
kwargs[TrackDescriptor.DISPOSITION_SET_KEY] = {t for d in (k for (k,v) in streamObj[TrackDescriptor.FFPROBE_DISPOSITION_KEY].items() if v)
if (t := TrackDisposition.find(d)) if t is not None} if TrackDescriptor.FFPROBE_DISPOSITION_KEY in streamObj.keys() else set()
kwargs[TrackDescriptor.TAGS_KEY] = streamObj[TrackDescriptor.FFPROBE_TAGS_KEY] if TrackDescriptor.FFPROBE_TAGS_KEY in streamObj.keys() else {}
kwargs[TrackDescriptor.AUDIO_LAYOUT_KEY] = AudioLayout.identify(streamObj) if trackType == TrackType.AUDIO.label() else AudioLayout.LAYOUT_UNDEFINED
kwargs[TrackDescriptor.AUDIO_LAYOUT_KEY] = AudioLayout.identify(streamObj) if trackType == TrackType.AUDIO else AudioLayout.LAYOUT_UNDEFINED
return cls(**kwargs)
else:

Loading…
Cancel
Save