pf png tracks
This commit is contained in:
@@ -181,7 +181,8 @@ def unmux(ctx,
|
||||
else:
|
||||
ctx.obj['logger'].info(f"\nUnmuxing file {fp.getFilename()}\n")
|
||||
|
||||
for trackDescriptor in sourceMediaDescriptor.getAllTrackDescriptors():
|
||||
# for trackDescriptor in sourceMediaDescriptor.getAllTrackDescriptors():
|
||||
for trackDescriptor in sourceMediaDescriptor.getTrackDescriptors():
|
||||
|
||||
if trackDescriptor.getType() == TrackType.SUBTITLE or not subtitles_only:
|
||||
|
||||
@@ -626,12 +627,14 @@ def convert(ctx,
|
||||
showSeason,
|
||||
showEpisode)
|
||||
|
||||
ctx.obj['logger'].debug(f"tmd subindices: {[t.getIndex() for t in targetMediaDescriptor.getAllTrackDescriptors()]} {[t.getSubIndex() for t in targetMediaDescriptor.getAllTrackDescriptors()]} {[t.getDispositionFlag(TrackDisposition.DEFAULT) for t in targetMediaDescriptor.getAllTrackDescriptors()]}")
|
||||
# ctx.obj['logger'].debug(f"tmd subindices: {[t.getIndex() for t in targetMediaDescriptor.getAllTrackDescriptors()]} {[t.getSubIndex() for t in targetMediaDescriptor.getAllTrackDescriptors()]} {[t.getDispositionFlag(TrackDisposition.DEFAULT) for t in targetMediaDescriptor.getAllTrackDescriptors()]}")
|
||||
ctx.obj['logger'].debug(f"tmd subindices: {[t.getIndex() for t in targetMediaDescriptor.getTrackDescriptors()]} {[t.getSubIndex() for t in targetMediaDescriptor.getTrackDescriptors()]} {[t.getDispositionFlag(TrackDisposition.DEFAULT) for t in targetMediaDescriptor.getTrackDescriptors()]}")
|
||||
|
||||
if cliOverrides:
|
||||
targetMediaDescriptor.applyOverrides(cliOverrides)
|
||||
|
||||
ctx.obj['logger'].debug(f"tmd subindices: {[t.getIndex() for t in targetMediaDescriptor.getAllTrackDescriptors()]} {[t.getSubIndex() for t in targetMediaDescriptor.getAllTrackDescriptors()]} {[t.getDispositionFlag(TrackDisposition.DEFAULT) for t in targetMediaDescriptor.getAllTrackDescriptors()]}")
|
||||
# ctx.obj['logger'].debug(f"tmd subindices: {[t.getIndex() for t in targetMediaDescriptor.getAllTrackDescriptors()]} {[t.getSubIndex() for t in targetMediaDescriptor.getAllTrackDescriptors()]} {[t.getDispositionFlag(TrackDisposition.DEFAULT) for t in targetMediaDescriptor.getAllTrackDescriptors()]}")
|
||||
ctx.obj['logger'].debug(f"tmd subindices: {[t.getIndex() for t in targetMediaDescriptor.getTrackDescriptors()]} {[t.getSubIndex() for t in targetMediaDescriptor.getTrackDescriptors()]} {[t.getDispositionFlag(TrackDisposition.DEFAULT) for t in targetMediaDescriptor.getTrackDescriptors()]}")
|
||||
|
||||
ctx.obj['logger'].debug(f"Input mapping tokens (2nd pass): {targetMediaDescriptor.getInputMappingTokens()}")
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ from ffx.media_descriptor_change_set import MediaDescriptorChangeSet
|
||||
from ffx.media_descriptor import MediaDescriptor
|
||||
from ffx.audio_layout import AudioLayout
|
||||
from ffx.track_type import TrackType
|
||||
from ffx.track_codec import TrackCodec
|
||||
from ffx.video_encoder import VideoEncoder
|
||||
from ffx.process import executeProcess
|
||||
|
||||
@@ -81,6 +82,10 @@ class FfxController():
|
||||
'-auto-alt-ref', '1',
|
||||
'-lag-in-frames', '25']
|
||||
|
||||
def generateVideoCopyTokens(self, subIndex):
|
||||
return [f"-c:v:{int(subIndex)}",
|
||||
'copy']
|
||||
|
||||
|
||||
def generateCropTokens(self):
|
||||
|
||||
@@ -107,7 +112,8 @@ class FfxController():
|
||||
|
||||
audioTokens = []
|
||||
|
||||
targetAudioTrackDescriptors = [td for td in self.__targetMediaDescriptor.getAllTrackDescriptors() if td.getType() == TrackType.AUDIO]
|
||||
# targetAudioTrackDescriptors = [td for td in self.__targetMediaDescriptor.getAllTrackDescriptors() if td.getType() == TrackType.AUDIO]
|
||||
targetAudioTrackDescriptors = self.__targetMediaDescriptor.getTrackDescriptors(trackType=TrackType.AUDIO)
|
||||
|
||||
trackSubIndex = 0
|
||||
for trackDescriptor in targetAudioTrackDescriptors:
|
||||
@@ -180,9 +186,14 @@ class FfxController():
|
||||
commandSequence += self.__mdcs.generateMetadataTokens()
|
||||
commandSequence += denoiseTokens
|
||||
|
||||
commandSequence += (self.generateAudioEncodingTokens()
|
||||
+ self.generateAV1Tokens(int(quality), int(preset))
|
||||
+ self.generateAudioEncodingTokens())
|
||||
for td in self.__targetMediaDescriptor.getTrackDescriptors(trackType=TrackType.VIDEO):
|
||||
if td.getCodec == TrackCodec.PNG:
|
||||
# commandSequence += self.generateVideoCopyTokens(td.getSubIndex())
|
||||
pass
|
||||
else:
|
||||
commandSequence += self.generateAV1Tokens(int(quality), int(preset))
|
||||
|
||||
commandSequence += self.generateAudioEncodingTokens()
|
||||
|
||||
if self.__context['perform_crop']:
|
||||
commandSequence += FfxController.generateCropTokens()
|
||||
@@ -208,6 +219,11 @@ class FfxController():
|
||||
# Confirm or find better filter settings for 2-pass
|
||||
# commandSequence1 += self.__context['denoiser'].generateDenoiseTokens()
|
||||
|
||||
for td in self.__targetMediaDescriptor.getTrackDescriptors(trackType=TrackType.VIDEO):
|
||||
if td.getCodec == TrackCodec.PNG:
|
||||
# commandSequence1 += self.generateVideoCopyTokens(td.getSubIndex())
|
||||
pass
|
||||
else:
|
||||
commandSequence1 += self.generateVP9Pass1Tokens(int(quality))
|
||||
|
||||
if self.__context['perform_crop']:
|
||||
@@ -232,7 +248,14 @@ class FfxController():
|
||||
commandSequence2 += self.__mdcs.generateMetadataTokens()
|
||||
commandSequence2 += denoiseTokens
|
||||
|
||||
commandSequence2 += self.generateVP9Pass2Tokens(int(quality)) + self.generateAudioEncodingTokens()
|
||||
for td in self.__targetMediaDescriptor.getTrackDescriptors(trackType=TrackType.VIDEO):
|
||||
if td.getCodec == TrackCodec.PNG:
|
||||
# commandSequence2 += self.generateVideoCopyTokens(td.getSubIndex())
|
||||
pass
|
||||
else:
|
||||
commandSequence2 += self.generateVP9Pass2Tokens(int(quality))
|
||||
|
||||
commandSequence2 += self.generateAudioEncodingTokens()
|
||||
|
||||
if self.__context['perform_crop']:
|
||||
commandSequence2 += self.generateCropTokens()
|
||||
|
||||
@@ -32,7 +32,8 @@ class MediaController():
|
||||
|
||||
for mediaTagKey, mediaTagValue in mediaDescriptor.getTags():
|
||||
self.__tac.updateMediaTag(pid, mediaTagKey, mediaTagValue)
|
||||
for trackDescriptor in mediaDescriptor.getAllTrackDescriptors():
|
||||
# for trackDescriptor in mediaDescriptor.getAllTrackDescriptors():
|
||||
for trackDescriptor in mediaDescriptor.getTrackDescriptors():
|
||||
self.__tc.addTrack(trackDescriptor, patternId = pid)
|
||||
|
||||
s.commit()
|
||||
|
||||
@@ -105,14 +105,16 @@ class MediaDescriptor:
|
||||
|
||||
|
||||
def setDefaultSubTrack(self, trackType: TrackType, subIndex: int):
|
||||
for t in self.getAllTrackDescriptors():
|
||||
# for t in self.getAllTrackDescriptors():
|
||||
for t in self.getTrackDescriptors():
|
||||
if t.getType() == trackType:
|
||||
t.setDispositionFlag(
|
||||
TrackDisposition.DEFAULT, t.getSubIndex() == int(subIndex)
|
||||
)
|
||||
|
||||
def setForcedSubTrack(self, trackType: TrackType, subIndex: int):
|
||||
for t in self.getAllTrackDescriptors():
|
||||
# for t in self.getAllTrackDescriptors():
|
||||
for t in self.getTrackDescriptors():
|
||||
if t.getType() == trackType:
|
||||
t.setDispositionFlag(
|
||||
TrackDisposition.FORCED, t.getSubIndex() == int(subIndex)
|
||||
@@ -188,7 +190,8 @@ class MediaDescriptor:
|
||||
|
||||
|
||||
def applySourceIndices(self, sourceMediaDescriptor: Self):
|
||||
sourceTrackDescriptors = sourceMediaDescriptor.getAllTrackDescriptors()
|
||||
# sourceTrackDescriptors = sourceMediaDescriptor.getAllTrackDescriptors()
|
||||
sourceTrackDescriptors = sourceMediaDescriptor.getTrackDescriptors()
|
||||
|
||||
numTrackDescriptors = len(self.__trackDescriptors)
|
||||
if len(sourceTrackDescriptors) != numTrackDescriptors:
|
||||
@@ -283,9 +286,9 @@ class MediaDescriptor:
|
||||
tdList[trackIndex].setIndex(trackIndex)
|
||||
|
||||
|
||||
def getAllTrackDescriptors(self):
|
||||
"""Returns all track descriptors sorted by type: video, audio then subtitles"""
|
||||
return self.getVideoTracks() + self.getAudioTracks() + self.getSubtitleTracks()
|
||||
# def getAllTrackDescriptors(self):
|
||||
# """Returns all track descriptors sorted by type: video, audio then subtitles"""
|
||||
# return self.getVideoTracks() + self.getAudioTracks() + self.getSubtitleTracks()
|
||||
|
||||
|
||||
def getTrackDescriptors(self,
|
||||
@@ -345,16 +348,23 @@ class MediaDescriptor:
|
||||
|
||||
inputMappingTokens = []
|
||||
|
||||
sortedTrackDescriptors = sorted(self.__trackDescriptors, key=lambda d: d.getIndex())
|
||||
|
||||
# raise click.ClickException(' '.join([f"\nindex={td.getIndex()} subIndex={td.getSubIndex()} srcIndex={td.getSourceIndex()} type={td.getType().label()}" for td in self.__trackDescriptors]))
|
||||
|
||||
filePointer = 1
|
||||
for trackIndex in range(len(self.__trackDescriptors)):
|
||||
for trackIndex in range(len(sortedTrackDescriptors)):
|
||||
|
||||
td: TrackDescriptor = self.__trackDescriptors[trackIndex]
|
||||
td: TrackDescriptor = sortedTrackDescriptors[trackIndex]
|
||||
|
||||
stdi = self.__trackDescriptors[td.getSourceIndex()].getIndex()
|
||||
stdsi = self.__trackDescriptors[td.getSourceIndex()].getSubIndex()
|
||||
if td.getCodec() != TrackCodec.PNG:
|
||||
|
||||
stdi = sortedTrackDescriptors[td.getSourceIndex()].getIndex()
|
||||
stdsi = sortedTrackDescriptors[td.getSourceIndex()].getSubIndex()
|
||||
|
||||
trackType = td.getType()
|
||||
|
||||
# if ((trackType == TrackType.VIDEO and td.getCodec() != TrackCodec.PNG) or not only_video):
|
||||
if (trackType == TrackType.VIDEO or not only_video):
|
||||
|
||||
importedFilePath = td.getExternalSourceFilePath()
|
||||
@@ -463,7 +473,8 @@ class MediaDescriptor:
|
||||
|
||||
def getConfiguration(self, label: str = ''):
|
||||
yield f"--- {label if label else 'MediaDescriptor '+str(id(self))} {' '.join([str(k)+'='+str(v) for k,v in self.__mediaTags.items()])}"
|
||||
for td in self.getAllTrackDescriptors():
|
||||
# for td in self.getAllTrackDescriptors():
|
||||
for td in self.getTrackDescriptors():
|
||||
yield (f"{td.getIndex()}:{td.getType().indicator()}:{td.getSubIndex()} "
|
||||
+ '|'.join([d.indicator() for d in td.getDispositionSet()])
|
||||
+ ' ' + ' '.join([str(k)+'='+str(v) for k,v in td.getTags().items()]))
|
||||
|
||||
@@ -373,7 +373,8 @@ class MediaDetailsScreen(Screen):
|
||||
|
||||
self.tracksTable.clear()
|
||||
|
||||
trackDescriptorList = self.__sourceMediaDescriptor.getAllTrackDescriptors()
|
||||
# trackDescriptorList = self.__sourceMediaDescriptor.getAllTrackDescriptors()
|
||||
trackDescriptorList = self.__sourceMediaDescriptor.getTrackDescriptors()
|
||||
|
||||
typeCounter = {}
|
||||
|
||||
@@ -611,7 +612,8 @@ class MediaDetailsScreen(Screen):
|
||||
if tagKey not in self.__ignoreGlobalKeys and not tagKey in self.__removeGlobalKeys:
|
||||
self.__tac.updateMediaTag(patternId, tagKey, tagValue)
|
||||
|
||||
for trackDescriptor in self.__sourceMediaDescriptor.getAllTrackDescriptors():
|
||||
# for trackDescriptor in self.__sourceMediaDescriptor.getAllTrackDescriptors():
|
||||
for trackDescriptor in self.__sourceMediaDescriptor.getTrackDescriptors():
|
||||
self.__tc.addTrack(trackDescriptor, patternId = patternId)
|
||||
|
||||
|
||||
|
||||
@@ -164,7 +164,8 @@ def createMediaTestFile(mediaDescriptor: MediaDescriptor,
|
||||
|
||||
subIndexCounter = {}
|
||||
|
||||
for trackDescriptor in mediaDescriptor.getAllTrackDescriptors():
|
||||
# for trackDescriptor in mediaDescriptor.getAllTrackDescriptors():
|
||||
for trackDescriptor in mediaDescriptor.getTrackDescriptors():
|
||||
|
||||
trackType = trackDescriptor.getType()
|
||||
|
||||
|
||||
@@ -122,7 +122,8 @@ class Scenario2(Scenario):
|
||||
resultFileProperties = FileProperties(testContext, resultFile)
|
||||
resultMediaDescriptor = resultFileProperties.getMediaDescriptor()
|
||||
|
||||
resultMediaTracks = resultMediaDescriptor.getAllTrackDescriptors()
|
||||
# resultMediaTracks = resultMediaDescriptor.getAllTrackDescriptors()
|
||||
resultMediaTracks = resultMediaDescriptor.getTrackDescriptors()
|
||||
|
||||
for assertIndex in range(len(assertSelectorList)):
|
||||
|
||||
|
||||
@@ -223,7 +223,8 @@ class Scenario4(Scenario):
|
||||
self._logger.debug(f"{variantLabel}: Result file properties: {rfp.getFilename()} season={rfp.getSeason()} episode={rfp.getEpisode()}")
|
||||
|
||||
rmd = rfp.getMediaDescriptor()
|
||||
rmt = rmd.getAllTrackDescriptors()
|
||||
# rmt = rmd.getAllTrackDescriptors()
|
||||
rmt = rmd.getTrackDescriptors()
|
||||
|
||||
for l in rmd.getConfiguration(label = 'resultMediaDescriptor'):
|
||||
self._logger.debug(l)
|
||||
|
||||
Reference in New Issue
Block a user