Re: Porting perl-GStreamer to gst 1.0


try Glib::Object::Introspection::GValueWrapper like here:

On 11/20/2014 05:52 AM, Timm Murray wrote:
Moved the namespace to GStreamer1.  Renamed the github repo as well:

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:

Around line 46.

Is there a way to coerce the type information?


On Tue, Nov 18, 2014 at 4:09 PM, Timm Murray <tmurray wumpus-cave net <mailto:tmurray wumpus-cave net>> 

    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).


    On Tue, Nov 18, 2014 at 2:42 PM, Torsten Schoenfeld <kaffeetisch gmx de <mailto:kaffeetisch gmx de>> 

        On 13.11.2014 00:01, Timm Murray wrote:
        > Thanks, I was able to get a basic pipeline going:

        I don't know if you've changed it yet, but in your examples/ <>,
        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 <mailto:gtk-perl-list gnome org>

gtk-perl-list mailing list
gtk-perl-list gnome org

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