Subscribe to bus messages, no events fired

testermax joachim.leite at hotmail.com
Mon Aug 21 16:48:42 UTC 2017


Hi,

I`m currently working on a C# WPF application. I need to subscribe to error
messages etc. that the bus submitts.
I can currently only recieve messages from the "SyncMessage" event, but not
the "Message" event...

Whatever I do to try to fire an error state, the message handler wont
trigger.
How can I get the message event to fire?

public GstreamPlayer()
        {
            InitializeComponent();

            // Handle usercontrol errors in designmode 
            if (DesignerProperties.GetIsInDesignMode(this)) return;

            Loaded += GstreamPlayer_Loaded;
            // Initialize Gstreamer
            Gst.Application.Init();

            // Enable detailed debug info from Gstreamer
            Debug.SetActive(true);

            // Setup Playbin element
            _playbin = ElementFactory.Make("playbin", "playbin");
            _playbin.Bus.EnableSyncMessageEmission();
            _playbin.Bus.AddSignalWatch();
            
            // Playbin syncmessage handler
            _playbin.Bus.SyncMessage += delegate (object bus,
SyncMessageArgs sargs)
            {
                var msg = sargs.Message;

                if
(!Gst.Video.Global.IsVideoOverlayPrepareWindowHandleMessage(msg))
                    return;

                var src = msg.Src as Element;
                if (src == null)
                    return;

                try
                {
                    src["force-aspect-ratio"] = true;
                }
                catch (PropertyNotFoundException) { }
                Element overlay = null;
                if (src is Bin)
                    overlay =
((Bin)src).GetByInterface(VideoOverlayAdapter.GType);

                // Bind GStreamer Windowhandle to winform control handle
                var adapter = new VideoOverlayAdapter(overlay.Handle)
{WindowHandle = _videoDisplayHandle};
                adapter.HandleEvents(true);
            };
            

            // Playbin Bus message handler
            *_playbin.Bus.Message +=* delegate (object bus, MessageArgs
margs) {
                Message message = margs.Message;

                switch (message.Type)
                {
                   case MessageType.Error:
                        GLib.GException err;
                        string msg;

                        message.ParseError(out err, out msg);
                        Console.WriteLine($"Error message: {msg}");
                        break;

                    case Gst.MessageType.Eos:
                        Console.WriteLine("End of Stream");
                        break;
                }
            };

        }



--
View this message in context: http://gstreamer-devel.966125.n4.nabble.com/Subscribe-to-bus-messages-no-events-fired-tp4684279.html
Sent from the GStreamer-devel mailing list archive at Nabble.com.


More information about the gstreamer-devel mailing list