public void TestBufferOwnershipNIp()
    {
        MyTransformNIp.Register();

        Pipeline pipeline = new Pipeline();
        Element  src      = ElementFactory.Make("fakesrc");

        src["sizetype"] = 2;
        Element capsfilter = ElementFactory.Make("capsfilter");

        capsfilter["caps"] = Caps.FromString("foo/bar");
        src["num-buffers"] = 10;
        MyTransformNIp transform = new MyTransformNIp();
        Element        sink      = ElementFactory.Make("fakesink");

        pipeline.Add(src, capsfilter, transform, sink);
        Element.Link(src, capsfilter, transform, sink);

        GLib.MainLoop loop = new GLib.MainLoop();

        pipeline.Bus.AddWatch(delegate(Bus bus, Message message) {
            switch (message.Type)
            {
            case MessageType.Error:
                Enum err;
                string msg;

                message.ParseError(out err, out msg);
                Assert.Fail(String.Format("Error message: {0}", msg));
                loop.Quit();
                break;

            case MessageType.Eos:
                loop.Quit();
                break;
            }
            return(true);
        });

        pipeline.SetState(State.Playing);
        loop.Run();
        Assert.IsTrue(transform.transformed);
        pipeline.SetState(State.Null);
    }
    public void TestBufferOwnershipNIp()
    {
        MyTransformNIp.Register ();

        Pipeline pipeline = new Pipeline ();
        Element src = ElementFactory.Make ("fakesrc");
        src["sizetype"] = 2;
        Element capsfilter = ElementFactory.Make ("capsfilter");
        capsfilter["caps"] = Caps.FromString ("foo/bar");
        src["num-buffers"] = 10;
        MyTransformNIp transform = new MyTransformNIp ();
        Element sink = ElementFactory.Make ("fakesink");

        pipeline.Add (src, capsfilter, transform, sink);
        Element.Link (src, capsfilter, transform, sink);

        GLib.MainLoop loop = new GLib.MainLoop ();

        pipeline.Bus.AddWatch (delegate (Bus bus, Message message) {
                             switch (message.Type) {
                             case MessageType.Error:
                                 Enum err;
                                 string msg;

                                 message.ParseError (out err, out msg);
                                 Assert.Fail (String.Format ("Error message: {0}", msg));
                                 loop.Quit ();
                                 break;
                               case MessageType.Eos:
                                   loop.Quit ();
                                   break;
                                 }
                                 return true;
                               });

        pipeline.SetState (State.Playing);
        loop.Run ();
        Assert.IsTrue (transform.transformed);
        pipeline.SetState (State.Null);
    }