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 |p|
dir = case p.direction
when Gst::Pad::SRC then "SRC"
when Gst::Pad::SINK then "SINK"
else "UNKNOWN"
end
puts dir + " template: " + p.name
pres = case p.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 p.has_caps?
puts "Capabilities:" + p.caps.to_s
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