Well, it's fetched through the macro GST_BUFFER_FLAGS. There seems to be different implementations for GStreamer 1.0 and 0.10. The 1.0 version passes it along to GST_MINI_OBJECT_FLAGS. 0.10 has its own flags field.
Either way, probably want to call the macro rather than drilling down the internals. On Mon, Jan 5, 2015 at 10:40 AM, Torsten Schoenfeld <kaffeeti...@gmx.de> wrote: > On 24.12.2014 02:31, Timm Murray wrote: > > After a little more investigation into the C code, > > GST_BUFFER_FLAG_IS_SET calls into GstMiniObject to check the flags. > > There is a mini_object() method on GstBuffer, so I gave this a try: > > > > if(! ($data_buf->mini_object->flags & 'flag_delta_unit') ) { > > $is_key_frame = 1; } > > > > That leaves me with the error "Could not get field 'dispose' at ... " > > with the line number pointing to the 'if' statement above. > > I don't even get to the "dispose" field; I get a segfault > early on when trying to access the "copy" field in the "mini_object" > field. Since GstMiniObject doesn't seem to have a GType anymore, > Glib::Object::Introspection's generic struct converter kicks in, and > chokes on the non-introspectable function pointer field "copy" which it > mistakes for holding a Perl variable. > > (The struct conversion code assumes that void pointer fields are used to > hold user data, so they read and write raw Perl values into them. This > hack is to support implementing GtkTreeModel. Unfortunately, in the > introspection data, the non-introspectable field "copy" seems to be > indistinguishable from a void pointer field.) > > I don't currently see a quick way to fix this. > > I agree with Emmanuele that a dedicated flags API would be best. > > On 30.12.2014 16:16, Timm Murray wrote: > > What I'd like to do is support this interface: > > > > if( $data_buf->flag_is_set( 'flag-delta-unit' ) ) { ... } > > > > For that to work, there needs to be a way to convert that string back > > into the GstBufferFlag enum value from whence it came. Is there an > > easy way to do that? > > That's not currently possible from pure Perl, but could be supported. > (Along the lines of Glib::Object::Introspection->convert_sv_to_enum and > convert_enum_to_sv.) > > But how do you actually retrieve the flags of a buffer? > _______________________________________________ > gtk-perl-list mailing list > gtk-perl-list@gnome.org > https://mail.gnome.org/mailman/listinfo/gtk-perl-list >
_______________________________________________ gtk-perl-list mailing list gtk-perl-list@gnome.org https://mail.gnome.org/mailman/listinfo/gtk-perl-list