#!/usr/bin/perl use strict; use warnings; use Glib qw(filename_to_unicode TRUE FALSE); use GStreamer -init; # $Id$ sub cb_new_pad { my ($element, $pad, $data) = @_; printf "A new pad %s was created\n", $pad -> get_name(); # here, you would setup a new pad link for the newly created pad } # create elements my $pipeline = GStreamer::Pipeline -> new("my_pipeline"); my ($source, $demux) = GStreamer::ElementFactory -> make(filesrc => "source", oggdemux => "demuxer"); $source -> set("location", filename_to_unicode $ARGV[0]); # you would normally check that the elements were created properly # put together a pipeline $pipeline -> add($source, $demux); $source -> link_pads("src", $demux, "sink"); # listen for newly created pads $demux -> signal_connect(pad_added => \&cb_new_pad); # start the pipeline $pipeline -> set_state("playing"); my $loop = Glib::MainLoop -> new(undef, FALSE); $loop -> run();