diff options
author | Andoni Morales Alastruey <ylatuya@gmail.com> | 2013-03-25 13:26:10 +0100 |
---|---|---|
committer | Andoni Morales Alastruey <ylatuya@gmail.com> | 2013-03-25 13:27:56 +0100 |
commit | 61b49ec30c99f6f7feb168aa1e6b29ba947599c1 (patch) | |
tree | 174873a70e3e09b78c3da590ac90ef2795e885c1 | |
parent | 5486f57f42969a0ebe55e351c54fe43ea6cb1c88 (diff) |
recipes: factorize gstreamer plugins listing
-rw-r--r-- | recipes/custom.py | 31 | ||||
-rw-r--r-- | recipes/gst-android.recipe | 30 | ||||
-rw-r--r-- | recipes/gstreamer-ios-templates.recipe | 29 |
3 files changed, 35 insertions, 55 deletions
diff --git a/recipes/custom.py b/recipes/custom.py index 76745fa..bbb5486 100644 --- a/recipes/custom.py +++ b/recipes/custom.py @@ -1,8 +1,10 @@ # -*- Mode: Python -*- vi:si:et:sw=4:sts=4:ts=4:syntax=python import os import shutil +from collections import defaultdict from cerbero.build import recipe +from cerbero.build.cookbook import CookBook from cerbero.config import Platform from cerbero.utils import to_unixpath @@ -74,3 +76,32 @@ class GStreamerStatic(recipe.Recipe): shutil.copyfile(os.path.join(self.tmp_destdir, to_unixpath(self.config.prefix)[1:], f_no_static), os.path.join(self.config.prefix, f)) + + +def list_gstreamer_plugins_by_category(config): + cookbook = CookBook(config) + # For plugins named differently + replacements = {'decodebin2': 'uridecodebin', 'playbin': 'playback', + 'encodebin': 'encoding', 'souphttpsrc': 'soup', + 'siren': 'gstsiren', 'sdpelem': 'sdp', + 'rtpmanager': 'gstrtpmanager', 'scaletempoplugin' : 'scaletempo', + 'mpegdemux': 'mpegdemux2', 'rmdemux': 'realmedia'} + plugins = defaultdict(list) + for r in ['gstreamer', 'gst-plugins-base', 'gst-plugins-good', + 'gst-plugins-bad', 'gst-plugins-ugly', 'gst-ffmpeg']: + r = cookbook.get_recipe(r) + for attr_name in dir(r): + if attr_name.startswith('files_plugins_'): + cat_name = attr_name[len('files_plugins_'):] + plugins_list = getattr(r, attr_name) + elif attr_name.startswith('platform_files_plugins_'): + cat_name = attr_name[len('platform_files_plugins_'):] + plugins_dict = getattr(r, attr_name) + plugins_list = plugins_dict.get(config.target_platform, []) + else: + continue + for e in plugins_list: + if not e.startswith('lib/gstreamer-'): + continue + plugins[cat_name].append(e[25:-8]) + return plugins, replacements diff --git a/recipes/gst-android.recipe b/recipes/gst-android.recipe index 4e15100..25cc7f2 100644 --- a/recipes/gst-android.recipe +++ b/recipes/gst-android.recipe @@ -1,7 +1,6 @@ # -*- Mode: Python -*- vi:si:et:sw=4:sts=4:ts=4:syntax=python -from collections import defaultdict from cerbero.utils import shell -from cerbero.build.cookbook import CookBook +from custom import list_gstreamer_plugins_by_category class Recipe(recipe.Recipe): name = 'gst-android' @@ -26,33 +25,8 @@ class Recipe(recipe.Recipe): shell.copy_dir(os.path.join(self.config.data_dir, 'ndk-build'), ndk_build_dir) - # Create a plugins.mk file with lists of plugins grouped by categories - cookbook = CookBook(self.config) - # For plugins named differently - replacements = {'decodebin2': 'uridecodebin', 'playbin': 'playback', - 'encodebin': 'encoding', 'souphttpsrc': 'soup', - 'siren': 'gstsiren', 'sdpelem': 'sdp', - 'rtpmanager': 'gstrtpmanager', 'scaletempoplugin' : 'scaletempo', - 'mpegdemux': 'mpegdemux2', 'rmdemux': 'realmedia'} + plugins, replacements = list_gstreamer_plugins_by_category(self.config) f = open(os.path.join(ndk_build_dir, 'plugins.mk'), 'w') - plugins = defaultdict(list) - for r in ['gstreamer', 'gst-plugins-base', 'gst-plugins-good', - 'gst-plugins-bad', 'gst-plugins-ugly', 'gst-ffmpeg']: - r = cookbook.get_recipe(r) - for attr_name in dir(r): - if attr_name.startswith('files_plugins_'): - cat_name = attr_name[len('files_plugins_'):] - plugins_list = getattr(r, attr_name) - elif attr_name.startswith('platform_files_plugins_'): - cat_name = attr_name[len('platform_files_plugins_'):] - plugins_dict = getattr(r, attr_name) - plugins_list = plugins_dict.get(self.config.target_platform, []) - else: - continue - for e in plugins_list: - if not e.startswith('lib/gstreamer-'): - continue - plugins[cat_name].append(e[25:-8]) for c, p in plugins.iteritems(): p = ' '.join(p) for k,v in replacements.iteritems(): diff --git a/recipes/gstreamer-ios-templates.recipe b/recipes/gstreamer-ios-templates.recipe index c3d7677..97b458d 100644 --- a/recipes/gstreamer-ios-templates.recipe +++ b/recipes/gstreamer-ios-templates.recipe @@ -1,7 +1,7 @@ # -*- Mode: Python -*- vi:si:et:sw=4:sts=4:ts=4:syntax=python from collections import defaultdict -from cerbero.build.cookbook import CookBook from cerbero.utils import shell +from custom import list_gstreamer_plugins_by_category DECLARE_PLUGIN_TPL = 'GST_PLUGIN_STATIC_DECLARE(%s)' REGISTER_PLUGIN_TPL = 'GST_PLUGIN_STATIC_REGISTER(%s)' @@ -40,32 +40,7 @@ class Recipe(recipe.Recipe): shell.copy_dir(os.path.join(self.config.data_dir, 'xcode', 'templates', 'ios'), share_dir) - # Create a plugins.mk file with lists of plugins grouped by categories - cookbook = CookBook(self.config) - # For plugins named differently - replacements = {'decodebin2': 'uridecodebin', 'playbin': 'playback', - 'encodebin': 'encoding', 'souphttpsrc': 'soup', - 'siren': 'gstsiren', 'sdpelem': 'sdp', - 'rtpmanager': 'gstrtpmanager', 'scaletempoplugin' : 'scaletempo', - 'mpegdemux': 'mpegdemux2', 'rmdemux': 'realmedia'} - plugins = defaultdict(list) - for r in ['gstreamer', 'gst-plugins-base', 'gst-plugins-good', - 'gst-plugins-bad', 'gst-plugins-ugly', 'gst-ffmpeg']: - r = cookbook.get_recipe(r) - for attr_name in dir(r): - if attr_name.startswith('files_plugins_'): - cat_name = attr_name[len('files_plugins_'):] - plugins_list = getattr(r, attr_name) - elif attr_name.startswith('platform_files_plugins_'): - cat_name = attr_name[len('platform_files_plugins_'):] - plugins_dict = getattr(r, attr_name) - plugins_list = plugins_dict.get(self.config.target_platform, []) - else: - continue - for e in plugins_list: - if not e.startswith('lib/gstreamer-'): - continue - plugins[cat_name].append(e[25:-8]) + plugins, replacements = list_gstreamer_plugins_by_category(self.config) plugins_h = open(os.path.join(share_dir, 'GStreamer Base.xctemplate', 'gst_ios_plugins.h'), 'w') decls = [] |