From: <kt...@us...> - 2008-01-06 08:23:46
|
Revision: 2799 http://ruby-gnome2.svn.sourceforge.net/ruby-gnome2/?rev=2799&view=rev Author: ktou Date: 2008-01-06 00:23:45 -0800 (Sun, 06 Jan 2008) Log Message: ----------- * sample/gst-inspect.rb: supported element name inspection. Modified Paths: -------------- ruby-gnome2/trunk/gstreamer/ChangeLog ruby-gnome2/trunk/gstreamer/sample/gst-inspect.rb Modified: ruby-gnome2/trunk/gstreamer/ChangeLog =================================================================== --- ruby-gnome2/trunk/gstreamer/ChangeLog 2008-01-06 08:06:52 UTC (rev 2798) +++ ruby-gnome2/trunk/gstreamer/ChangeLog 2008-01-06 08:23:45 UTC (rev 2799) @@ -1,5 +1,7 @@ 2008-01-06 Kouhei Sutou <ko...@co...> + * sample/gst-inspect.rb: supported element name inspection. + * src/rbgst-value.c: supported GST_TYPE_ARRAY. * sample/gst-inspect.rb: added readable check. Modified: ruby-gnome2/trunk/gstreamer/sample/gst-inspect.rb =================================================================== --- ruby-gnome2/trunk/gstreamer/sample/gst-inspect.rb 2008-01-06 08:06:52 UTC (rev 2798) +++ ruby-gnome2/trunk/gstreamer/sample/gst-inspect.rb 2008-01-06 08:23:45 UTC (rev 2799) @@ -33,19 +33,37 @@ end opts.parse!(argv) - options + [options, argv.first] end class Inspector - def initialize(print_all) - @print_all = print_all + def initialize @prefix = "" end - def print - print_list + def print_list(print_all) + plugins = {} + n_features = 0 + each_feature do |plugin, feature| + plugins[plugin.name] = nil + n_features += 1 + if print_all + if feature.is_a?(Gst::ElementFactory) + print_element_factory(feature, true) + end + else + print_feature(plugin, feature) + end + end + puts + puts("Total count: #{plugins.size} plugins, #{n_features} features") end + def print_element(name) + factory = Gst::ElementFactory.find(name) + print_element_factory(factory, false) + end + private def puts(*args) if args.empty? @@ -153,7 +171,7 @@ def print_pad_template_info(template) prefix("#{@prefix} ") do - puts("#{template.direction.nick.upcase}: '#{template.name}'") + puts("#{template.direction.nick.upcase} template: '#{template.name}'") prefix("#{@prefix} ") do if template.presence == Gst::Pad::REQUEST puts("Availability: On request") @@ -162,7 +180,6 @@ end end end - puts static_caps = template.caps return if static_caps.description.nil? @@ -389,270 +406,12 @@ end end end - - def print_list - plugins = {} - n_features = 0 - each_feature do |plugin, feature| - plugins[plugin.name] = nil - n_features += 1 - if @print_all - if feature.is_a?(Gst::ElementFactory) - print_element_factory(feature, true) - end - else - print_feature(plugin, feature) - end - end - puts - puts("Total count: #{plugins.size} plugins, #{n_features} features") - end - - def show_all - end end -options = parse(argv) -Inspector.new(options.print_all).print - -__END__ -$prefix = 0 -def prefix; $prefix += 1; yield; $prefix -= 1; end - -def puts(o) - print " " * ($prefix * 4) - super o +options, element_name = parse(argv) +inspector = Inspector.new +if element_name + inspector.print_element(element_name) +else + inspector.print_list(options.print_all) end - -def print_prop(name, obj) - s = (name) ? name.concat(":").ljust(15) : "" - if obj.is_a?(Array) - puts s + "List:" - prefix { obj.each { |obj| print_prop(nil, obj) } } - else - puts s + obj.class.to_s + ": " + obj.to_s - end -end - -def print_format(f) - puts "(#{f.type_id}) :".ljust(10) + f.nick + " (#{f.description})" -end - -def get_consts(klass) - res = {} - klass.constants.each do |x| - res[eval(klass.name + "::" + x)] = x - end - res -end - -def print_event_mask(m) - event_name = get_consts(Gst::Event)[m.type_id].downcase - flags = case m.type_id - when Gst::Event::SEEK - get_consts(Gst::EventSeek) - when Gst::Event::SEEK_SEGMENT - get_consts(Gst::EventSegmentSeek) - when Gst::Event::SIZE - get_consts(Gst::EventSize) - else - {} - end - flags.delete_if do |flag, name| - Gst::Event.constants.include?(flag) - end - s = event_name - m.type_flags.each do |flag| - flag_name = flags.has_key?(flag) ? flags[flag].downcase : flag.to_s - s += " | " + flag_name - end - puts s -end - -def print_query(q) - puts "(#{q.type_id}) :".ljust(10) + q.nick + " (#{q.description})" -end - -def print_pad(p) - dir = case p.direction - when Gst::Pad::SRC then "SRC" - when Gst::Pad::SINK then "SINK" - else "UNKNOWN" - end - puts dir + ": " + p.name - puts "Pad Template: " + p.pad_template.name if p.pad_template - prefix do - puts "Implementation:" -# if p.provides_formats? -# prefix do -# puts "Provides seeking/conversion/query formats:" -# prefix { p.each_format { |f| print_format(f) } } -# end -# end -# if p.provides_event_masks? -# prefix do -# puts "Provides event masks:" -# prefix { p.each_event_mask { |m| print_event_mask(m) } } -# end -# end - if p.provides_query_types? - prefix do - puts "Provides query types:" - prefix { p.each_query_type { |q| print_query(q) } } - end - end - end -end - -def print_element_info(f) - raise "Could not create element" unless e = f.create - puts "Factory Details:" - prefix do - f.details.each do |key, val| - puts key.capitalize.concat(":").ljust(15) + val - end - end - puts "" - print_hierarchy(e) - puts "" - puts "Pad Templates:" - prefix do - f.each_pad_template do |name, direction, presence, caps| - dir = case direction - when Gst::Pad::SRC then "SRC" - when Gst::Pad::SINK then "SINK" - else "UNKNOWN" - end - puts dir + " template: " + name - pres = case presence - when Gst::Pad::ALWAYS then "always" - when Gst::Pad::SOMETIMES then "sometimes" - when Gst::Pad::REQUEST then "on request" - else "unknown" - end - puts "Avaibility: " + pres - if caps - puts "Capabilities: #{caps}" - end - end - end -# puts "" -# puts "Element Flags:" -# prefix do -# flags = { -# e.complex? => "GST_ELEMENT_COMPLEX", -# e.decoupled? => "GST_ELEMENT_DECOUPLED", -# e.thread_suggested? => "GST_ELEMENT_THREADSUGGESTED", -# e.event_aware? => "GST_ELEMENT_EVENT_AWARE" -# } -# flags.each { |b, v| puts v if b } -# puts "no flags set" unless flags.has_key?(true) -# end - puts "" - puts "Clock Interaction:" - prefix do - puts "element requires a clock" if e.requires_clock? - if e.provides_clock? - if c = e.clock - puts "element provides a clock: " + c.name - else - puts "element is supposed to provide a clock but returned nil" - end - end - puts "none" unless (e.requires_clock? or e.provides_clock?) - end - puts "" - puts "Indexing capabilities:" - prefix { puts((e.indexable?) ? "element can do indexing" : "none") } - puts "" - puts "Pads:" - prefix do - if e.pads.empty? - puts "none" - else - e.pads.each { |pad| print_pad(pad) } - end - end -# puts "" -# puts "Element Arguments:" -# prefix do -# e.each_property do |key, descr, val| -# puts key.concat(":").ljust(15) + descr -# puts " ".ljust(15) + "#{val.class.to_s} (default: '#{val}')" -# end -# end - puts "" - puts "Signals:" - prefix do - if e.class.signals.empty? - puts "none" - else - e.class.signals.each { |x| puts x } - end - end -end - -def print_plugin_info(p) - puts "Plugin details:" - prefix do - x = 15 - puts "Name:".ljust(x) + p.name - puts "Description:".ljust(x) + p.description - puts "Filename:".ljust(x) + p.filename - puts "Version:".ljust(x) + p.version - puts "License:".ljust(x) + p.license - puts "Origin URL:".ljust(x) + p.origin - end - puts "" - stats = Hash.new - prefix do - p.each_feature do |f| - puts f - stats[f.class] ||= 0 - stats[f.class] += 1 - end - end - puts "" - prefix do - puts stats.size.to_s + " feature(s):" - stats.each do |f, c| - prefix { puts c.to_s + " " + f.name } - end - end -end - -def print_element_list - Gst::Registry.default.each_plugin do |p| - puts p.name + ":" - prefix { p.each_feature { |f| puts f } } - end -end - -def print_help - puts <<EOS -Usage: - #{__FILE__} List all registred elements - #{__FILE__} element_name Show element details - #{__FILE__} plugin-name[.so] Show information about plugin -EOS - exit 1 -end - -case ARGV.length - when 0 then print_element_list - when 1 - n = ARGV.first.dup - if n.sub!(/\.so$/, "").nil? and f = Gst::ElementFactory.find(n) - print_element_info(f) - else - if p = Gst::Registry.default.find_plugin(n) - print_plugin_info(p) - else - $stderr.puts("No such element or plugin `#{n}'") - exit 1 - end - end - else - print_help -end - This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |