Re: Porting perl-GStreamer to gst 1.0



Moved the namespace to GStreamer1.  Renamed the github repo as well:

https://github.com/frezik/GStreamer1

I also cleaned up the examples to be more idiomatic.

I'm getting stuck on how to set parameters on the caps.  What I have now is:

    my $caps = GStreamer1::Caps->new_empty_simple( 'video/x-h264' );
    $caps->set_value( width => 800 );
    $caps->set_value( height => 600 );

This gives me the error "Cannot convert arbitrary SV to GValue".

In the original GStreamer Perl module, setting caps was done something like this:

    my $caps = GStreamer::Caps::Simple->new( 'video/x-h264',
        alignment       => 'Glib::String' => 'au',
        'stream-format' => 'Glib::String' => 'byte-stream',
    );

This constructor, in particular setting the Glib type, seems to be a bit of syntactic sugar handled here:

https://metacpan.org/source/XAOC/GStreamer-0.19/xs/GstCaps.xs

Around line 46.

Is there a way to coerce the type information?

Thanks,
Timm

On Tue, Nov 18, 2014 at 4:09 PM, Timm Murray <tmurray wumpus-cave net> wrote:
I should be coming back around to this over the next few days.  I probably will cleanup the examples along those lines.

My main priority is getting a more complex pipeline going with callbacks on a fakesink.  That should provide a solid example, and hit on my original goal for the project (getting still images and video off the Raspberry Pi camera without an external program).

Thanks,
Timm

On Tue, Nov 18, 2014 at 2:42 PM, Torsten Schoenfeld <kaffeetisch gmx de> wrote:
On 13.11.2014 00:01, Timm Murray wrote:
> Thanks, I was able to get a basic pipeline going:
>
> https://github.com/frezik/Gst

I don't know if you've changed it yet, but in your examples/hello.pl,
you can write some things more idiomatically.  Instead of

Gst::Element::set_state( $pipeline, "playing" );
my $bus = Gst::Element::get_bus( $pipeline );
my $msg = $bus->timed_pop_filtered( Gst::CLOCK_TIME_NONE,
                                    [ 'error', 'eos' ]);
Gst::Element::set_state( $pipeline, "null" );

make use of the class hierarchy to write

$pipeline->set_state( "playing" );
my $bus = $pipeline->get_bus;
my $msg = $bus->timed_pop_filtered( Gst::CLOCK_TIME_NONE,
                                    [ 'error', 'eos' ]);
$pipeline->set_state( "null" );
_______________________________________________
gtk-perl-list mailing list
gtk-perl-list gnome org
https://mail.gnome.org/mailman/listinfo/gtk-perl-list




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]