//
// DecodeBin.cs: decodebin element binding
//
// Authors:
//   Aaron Bockover (abockover@novell.com)
//
// Copyright (C) 2006 Novell, Inc.
//

using System;
using Gst;

namespace Gst
{
    public delegate void NewDecodedPadHandler(object o, NewDecodedPadArgs args);

    public class NewDecodedPadArgs : GLib.SignalArgs 
    {
        public Gst.Pad Pad {
            get { return (Gst.Pad)Args[0]; }
        }
        
        public bool Last {
            get { return (bool)Args[1]; }
        }
    }

    public class DecodeBin : Bin 
    {
        private Delegate new_decoded_pad_delegate;
    
        public DecodeBin(IntPtr raw) : base(raw) 
        {
        } 
        
        protected virtual void OnNewDecodedPad(object o, GLib.SignalArgs args)
        {
            BindingHelper.InvokeProxySignalDelegate(new_decoded_pad_delegate, 
                typeof(NewDecodedPadArgs), o, args);
        }
     
        public event NewDecodedPadHandler NewDecodedPad {
            add {
                new_decoded_pad_delegate = BindingHelper.AddProxySignalDelegate(this, 
                    "new-decoded-pad", OnNewDecodedPad, new_decoded_pad_delegate, value);
            }
            
            remove {
                new_decoded_pad_delegate = BindingHelper.RemoveProxySignalDelegate(this, 
                    "new-decoded-pad", OnNewDecodedPad, new_decoded_pad_delegate, value);
            }
        }
    }
}