diff --git a/validate/launcher/apps/gstvalidate.py b/validate/launcher/apps/gstvalidate.py index 39c400b591..9e108621c7 100644 --- a/validate/launcher/apps/gstvalidate.py +++ b/validate/launcher/apps/gstvalidate.py @@ -682,9 +682,15 @@ not been tested and explicitely activated if you set use --wanted-tests ALL""") self.info("%s not present. Use --generate-media-info", media_info) return True + include_frames = 0 + if self.options.update_media_info: + include_frames = 2 + elif self.options.generate_info_full: + include_frames = 1 + media_descriptor = GstValidateMediaDescriptor.new_from_uri( uri, True, - self.options.generate_info_full) + include_frames) if media_descriptor: self._add_media(media_descriptor, uri) else: diff --git a/validate/launcher/baseclasses.py b/validate/launcher/baseclasses.py index 3d890b2ed4..cd2436297e 100644 --- a/validate/launcher/baseclasses.py +++ b/validate/launcher/baseclasses.py @@ -1896,15 +1896,32 @@ class GstValidateMediaDescriptor(MediaDescriptor): self.set_protocol(urllib.parse.urlparse(urllib.parse.urlparse(self.get_uri()).scheme).scheme) @staticmethod - def new_from_uri(uri, verbose=False, full=False): + def new_from_uri(uri, verbose=False, include_frames=False): + """ + include_frames = 0 # Never + include_frames = 1 # always + include_frames = 2 # if previous file included them + + """ media_path = utils.url2path(uri) + descriptor_path = "%s.%s" % ( media_path, GstValidateMediaDescriptor.MEDIA_INFO_EXT) + if include_frames == 2: + try: + media_xml = ET.parse(descriptor_path).getroot() + frames = media_xml.findall('streams/stream/frame') + include_frames = bool(frames) + except FileNotFoundError: + pass + else: + include_frames = bool(include_frames) + args = GstValidateMediaDescriptor.DISCOVERER_COMMAND.split(" ") args.append(uri) args.extend(["--output-file", descriptor_path]) - if full: + if include_frames: args.extend(["--full"]) if verbose: diff --git a/validate/launcher/main.py b/validate/launcher/main.py index 08e115cb2e..e702ad1b52 100644 --- a/validate/launcher/main.py +++ b/validate/launcher/main.py @@ -431,7 +431,7 @@ Note that all testsuite should be inside python modules, so the directory should help="Set it in order to generate the missing .media_infos files") parser.add_argument("--update-media-info", dest="update_media_info", action="store_true", - help="Set it in order to update exising .media_infos files") + help="Set it in order to update existing .media_infos files") parser.add_argument( "-G", "--generate-media-info-with-frame-detection", dest="generate_info_full", action="store_true",