X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=include%2Flibsigrokflow%2Flibsigrokflow.hpp;h=e9a725ec431bc9ce8eaaacd945d86ba5d23de6b0;hb=e2cfc0efeadec350376bffbe9250a27c6aa9788d;hp=72fdc9d3ee9e9b6b0ad1368112ad6b4d4ab0fd31;hpb=36bc60b717a56ca1c60dbfb718621219cb45bd54;p=libsigrokflow.git diff --git a/include/libsigrokflow/libsigrokflow.hpp b/include/libsigrokflow/libsigrokflow.hpp index 72fdc9d..e9a725e 100644 --- a/include/libsigrokflow/libsigrokflow.hpp +++ b/include/libsigrokflow/libsigrokflow.hpp @@ -22,6 +22,7 @@ #include #include +#include #include namespace Srf @@ -36,16 +37,15 @@ class Block /* Config API etc goes here */ }; -class GstBlock : - public Gst::Element +class Sink : + public Gst::BaseSink { - /* Operations specific to sigrok GStreamer blocks go here. */ protected: - explicit GstBlock(GstElement *gobj); + explicit Sink(GstBaseSink *gobj); }; class Device : - public GstBlock + public Gst::Element { /* Operations specific to hardware devices go here */ protected: @@ -94,6 +94,36 @@ private: void _run(); }; +class LegacyOutput : + public Sink +{ +public: + /* Create from libsigrok output object */ + static Glib::RefPtr create( + shared_ptr libsigrok_output); + + /* Retrieve libsigrok output object */ + shared_ptr libsigrok_output(); + + /* Override render */ + Gst::FlowReturn render_vfunc(const Glib::RefPtr &buffer); + + /* Override stop */ + bool stop_vfunc(); + + /* Gst class init */ + static void class_init(Gst::ElementClass *klass); + + /* Register class with plugin */ + static bool register_element(Glib::RefPtr plugin); + + /* Constructor used by element factory */ + explicit LegacyOutput(GstBaseSink *gobj); +private: + shared_ptr _libsigrok_output; + Glib::RefPtr _sink_pad; +}; + } #endif