mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-01-31 11:32:38 +00:00
validate:launcher: Move MediaFormatCombination to baseclasses.py
+ Add some simple helpers
This commit is contained in:
parent
f1163d61ba
commit
265688fcd6
4 changed files with 41 additions and 61 deletions
|
@ -24,7 +24,7 @@ import subprocess
|
|||
import utils
|
||||
from urllib import unquote
|
||||
import xml.etree.ElementTree as ET
|
||||
from baseclasses import GstValidateTest, TestsManager, ScenarioManager
|
||||
from baseclasses import GstValidateTest, TestsManager, ScenarioManager, MediaFormatCombination
|
||||
|
||||
GES_DURATION_TOLERANCE = utils.GST_SECOND / 2
|
||||
|
||||
|
@ -34,10 +34,10 @@ if "win32" in sys.platform:
|
|||
|
||||
|
||||
GES_ENCODING_TARGET_COMBINATIONS = [
|
||||
utils.MediaFormatCombination("ogg", "vorbis", "theora"),
|
||||
utils.MediaFormatCombination("webm", "vorbis", "vp8"),
|
||||
utils.MediaFormatCombination("mp4", "mp3", "h264"),
|
||||
utils.MediaFormatCombination("mkv", "vorbis", "h264")]
|
||||
MediaFormatCombination("ogg", "vorbis", "theora"),
|
||||
MediaFormatCombination("webm", "vorbis", "vp8"),
|
||||
MediaFormatCombination("mp4", "mp3", "h264"),
|
||||
MediaFormatCombination("mkv", "vorbis", "h264")]
|
||||
|
||||
|
||||
def quote_uri(uri):
|
||||
|
|
|
@ -27,7 +27,7 @@ from baseclasses import GstValidateTest, TestsManager, Test, \
|
|||
ScenarioManager, NamedDic, GstValidateTestsGenerator, \
|
||||
GstValidateMediaDescriptor
|
||||
|
||||
from utils import MediaFormatCombination, path2url, DEFAULT_TIMEOUT, which, \
|
||||
from utils import path2url, DEFAULT_TIMEOUT, which, \
|
||||
GST_SECOND, Result, Protocols
|
||||
|
||||
######################################
|
||||
|
|
|
@ -478,8 +478,8 @@ class GstValidateEncodingTestInterface(object):
|
|||
return ret.replace("::", ":")
|
||||
|
||||
def get_profile(self, video_restriction=None, audio_restriction=None):
|
||||
vcaps = utils.FORMATS[self.combination.vcodec]
|
||||
acaps = utils.FORMATS[self.combination.acodec]
|
||||
vcaps = self.combination.get_video_caps()
|
||||
acaps = self.combination.get_audio_caps()
|
||||
if self.media_descriptor is not None:
|
||||
if self.media_descriptor.get_num_tracks("video") == 0:
|
||||
vcaps = None
|
||||
|
@ -487,7 +487,7 @@ class GstValidateEncodingTestInterface(object):
|
|||
if self.media_descriptor.get_num_tracks("audio") == 0:
|
||||
acaps = None
|
||||
|
||||
return self._get_profile_full(utils.FORMATS[self.combination.container],
|
||||
return self._get_profile_full(self.combination.get_muxer_caps(),
|
||||
vcaps, acaps,
|
||||
video_restriction=video_restriction,
|
||||
audio_restriction=audio_restriction)
|
||||
|
@ -1037,3 +1037,35 @@ class GstValidateMediaDescriptor(MediaDescriptor):
|
|||
n += 1
|
||||
|
||||
return n
|
||||
|
||||
|
||||
class MediaFormatCombination(object):
|
||||
_FORMATS = {"aac": "audio/mpeg,mpegversion=4",
|
||||
"ac3": "audio/x-ac3",
|
||||
"vorbis": "audio/x-vorbis",
|
||||
"mp3": "audio/mpeg,mpegversion=1,layer=3",
|
||||
"h264": "video/x-h264",
|
||||
"vp8": "video/x-vp8",
|
||||
"theora": "video/x-theora",
|
||||
"ogg": "application/ogg",
|
||||
"mkv": "video/x-matroska",
|
||||
"mp4": "video/quicktime,variant=iso;",
|
||||
"webm": "video/webm"}
|
||||
|
||||
|
||||
def __str__(self):
|
||||
return "%s and %s in %s" % (self.acodec, self.vcodec, self.container)
|
||||
|
||||
def __init__(self, container, acodec, vcodec):
|
||||
self.container = container
|
||||
self.acodec = acodec
|
||||
self.vcodec = vcodec
|
||||
|
||||
def get_audio_caps(self):
|
||||
return self._FORMATS[self.acodec]
|
||||
|
||||
def get_video_caps(self):
|
||||
return self._FORMATS[self.vcodec]
|
||||
|
||||
def get_muxer_caps(self):
|
||||
return self._FORMATS[self.container]
|
||||
|
|
|
@ -170,58 +170,6 @@ def TIME_ARGS(time):
|
|||
(time / GST_SECOND) % 60,
|
||||
time % GST_SECOND)
|
||||
|
||||
##############################
|
||||
# Encoding related utils #
|
||||
##############################
|
||||
class MediaFormatCombination(object):
|
||||
|
||||
def __str__(self):
|
||||
return "%s and %s in %s" % (self.acodec, self.vcodec, self.container)
|
||||
|
||||
def __init__(self, container, acodec, vcodec):
|
||||
self.container = container
|
||||
self.acodec = acodec
|
||||
self.vcodec = vcodec
|
||||
|
||||
|
||||
FORMATS = {"aac": "audio/mpeg,mpegversion=4",
|
||||
"ac3": "audio/x-ac3",
|
||||
"vorbis": "audio/x-vorbis",
|
||||
"mp3": "audio/mpeg,mpegversion=1,layer=3",
|
||||
"h264": "video/x-h264",
|
||||
"vp8": "video/x-vp8",
|
||||
"theora": "video/x-theora",
|
||||
"ogg": "application/ogg",
|
||||
"mkv": "video/x-matroska",
|
||||
"mp4": "video/quicktime,variant=iso;",
|
||||
"webm": "video/webm"}
|
||||
|
||||
|
||||
def get_profile_full(muxer, venc, aenc, video_restriction=None,
|
||||
audio_restriction=None,
|
||||
audio_presence=0, video_presence=0):
|
||||
ret = "\""
|
||||
if muxer:
|
||||
ret += muxer
|
||||
ret += ":"
|
||||
if venc:
|
||||
if video_restriction is not None:
|
||||
ret = ret + video_restriction + '->'
|
||||
ret += venc
|
||||
if video_presence:
|
||||
ret = ret + '|' + str(video_presence)
|
||||
if aenc:
|
||||
ret += ":"
|
||||
if audio_restriction is not None:
|
||||
ret = ret + audio_restriction + '->'
|
||||
ret += aenc
|
||||
if audio_presence:
|
||||
ret = ret + '|' + str(audio_presence)
|
||||
|
||||
ret += "\""
|
||||
return ret.replace("::", ":")
|
||||
|
||||
|
||||
##################################################
|
||||
# Some utilities to parse gst-validate output #
|
||||
##################################################
|
||||
|
|
Loading…
Reference in a new issue