summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndoni Morales Alastruey <ylatuya@gmail.com>2013-03-25 13:26:10 +0100
committerAndoni Morales Alastruey <ylatuya@gmail.com>2013-03-25 13:27:56 +0100
commit61b49ec30c99f6f7feb168aa1e6b29ba947599c1 (patch)
tree174873a70e3e09b78c3da590ac90ef2795e885c1
parent5486f57f42969a0ebe55e351c54fe43ea6cb1c88 (diff)
recipes: factorize gstreamer plugins listing
-rw-r--r--recipes/custom.py31
-rw-r--r--recipes/gst-android.recipe30
-rw-r--r--recipes/gstreamer-ios-templates.recipe29
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 = []