// This file was generated by the Gtk# code generator.
// Any changes made will be lost if regenerated.

namespace GtkSharp.GstreamerSharp {

	public class ObjectManager {

		static bool initialized = false;
		// Call this method from the appropriate module init function.
		public static void Initialize ()
		{
			if (initialized)
				return;

			initialized = true;
			GLib.GType.Register (Gst.App.AppSink.GType, typeof (Gst.App.AppSink));
			GLib.GType.Register (Gst.App.AppSrc.GType, typeof (Gst.App.AppSrc));
			GLib.GType.Register (Gst.Audio.AudioBaseSink.GType, typeof (Gst.Audio.AudioBaseSink));
			GLib.GType.Register (Gst.Audio.AudioBaseSrc.GType, typeof (Gst.Audio.AudioBaseSrc));
			GLib.GType.Register (Gst.Audio.AudioCdSrc.GType, typeof (Gst.Audio.AudioCdSrc));
			GLib.GType.Register (Gst.Audio.AudioClock.GType, typeof (Gst.Audio.AudioClock));
			GLib.GType.Register (Gst.Audio.AudioDecoder.GType, typeof (Gst.Audio.AudioDecoder));
			GLib.GType.Register (Gst.Audio.AudioEncoder.GType, typeof (Gst.Audio.AudioEncoder));
			GLib.GType.Register (Gst.Audio.AudioFilter.GType, typeof (Gst.Audio.AudioFilter));
			GLib.GType.Register (Gst.Audio.AudioRingBuffer.GType, typeof (Gst.Audio.AudioRingBuffer));
			GLib.GType.Register (Gst.Audio.AudioSink.GType, typeof (Gst.Audio.AudioSink));
			GLib.GType.Register (Gst.Audio.AudioSrc.GType, typeof (Gst.Audio.AudioSrc));
			GLib.GType.Register (Gst.Base.Adapter.GType, typeof (Gst.Base.Adapter));
			GLib.GType.Register (Gst.Base.Aggregator.GType, typeof (Gst.Base.Aggregator));
			GLib.GType.Register (Gst.Base.AggregatorPad.GType, typeof (Gst.Base.AggregatorPad));
			GLib.GType.Register (Gst.Base.BaseParse.GType, typeof (Gst.Base.BaseParse));
			GLib.GType.Register (Gst.Base.BaseSink.GType, typeof (Gst.Base.BaseSink));
			GLib.GType.Register (Gst.Base.BaseSrc.GType, typeof (Gst.Base.BaseSrc));
			GLib.GType.Register (Gst.Base.BaseTransform.GType, typeof (Gst.Base.BaseTransform));
			GLib.GType.Register (Gst.Base.CollectPads.GType, typeof (Gst.Base.CollectPads));
			GLib.GType.Register (Gst.Base.DataQueue.GType, typeof (Gst.Base.DataQueue));
			GLib.GType.Register (Gst.Base.PushSrc.GType, typeof (Gst.Base.PushSrc));
			GLib.GType.Register (Gst.Controller.ARGBControlBinding.GType, typeof (Gst.Controller.ARGBControlBinding));
			GLib.GType.Register (Gst.Controller.DirectControlBinding.GType, typeof (Gst.Controller.DirectControlBinding));
			GLib.GType.Register (Gst.Controller.InterpolationControlSource.GType, typeof (Gst.Controller.InterpolationControlSource));
			GLib.GType.Register (Gst.Controller.LFOControlSource.GType, typeof (Gst.Controller.LFOControlSource));
			GLib.GType.Register (Gst.Controller.ProxyControlBinding.GType, typeof (Gst.Controller.ProxyControlBinding));
			GLib.GType.Register (Gst.Controller.TimedValueControlSource.GType, typeof (Gst.Controller.TimedValueControlSource));
			GLib.GType.Register (Gst.Controller.TriggerControlSource.GType, typeof (Gst.Controller.TriggerControlSource));
			GLib.GType.Register (Gst.Net.NetClientClock.GType, typeof (Gst.Net.NetClientClock));
			GLib.GType.Register (Gst.Net.NetTimeProvider.GType, typeof (Gst.Net.NetTimeProvider));
			GLib.GType.Register (Gst.Net.PtpClock.GType, typeof (Gst.Net.PtpClock));
			GLib.GType.Register (Gst.PbUtils.AudioVisualizer.GType, typeof (Gst.PbUtils.AudioVisualizer));
			GLib.GType.Register (Gst.PbUtils.Discoverer.GType, typeof (Gst.PbUtils.Discoverer));
			GLib.GType.Register (Gst.PbUtils.DiscovererAudioInfo.GType, typeof (Gst.PbUtils.DiscovererAudioInfo));
			GLib.GType.Register (Gst.PbUtils.DiscovererContainerInfo.GType, typeof (Gst.PbUtils.DiscovererContainerInfo));
			GLib.GType.Register (Gst.PbUtils.DiscovererInfo.GType, typeof (Gst.PbUtils.DiscovererInfo));
			GLib.GType.Register (Gst.PbUtils.DiscovererStreamInfo.GType, typeof (Gst.PbUtils.DiscovererStreamInfo));
			GLib.GType.Register (Gst.PbUtils.DiscovererSubtitleInfo.GType, typeof (Gst.PbUtils.DiscovererSubtitleInfo));
			GLib.GType.Register (Gst.PbUtils.DiscovererVideoInfo.GType, typeof (Gst.PbUtils.DiscovererVideoInfo));
			GLib.GType.Register (Gst.PbUtils.EncodingAudioProfile.GType, typeof (Gst.PbUtils.EncodingAudioProfile));
			GLib.GType.Register (Gst.PbUtils.EncodingContainerProfile.GType, typeof (Gst.PbUtils.EncodingContainerProfile));
			GLib.GType.Register (Gst.PbUtils.EncodingProfile.GType, typeof (Gst.PbUtils.EncodingProfile));
			GLib.GType.Register (Gst.PbUtils.EncodingTarget.GType, typeof (Gst.PbUtils.EncodingTarget));
			GLib.GType.Register (Gst.PbUtils.EncodingVideoProfile.GType, typeof (Gst.PbUtils.EncodingVideoProfile));
			GLib.GType.Register (Gst.Rtp.RTPBaseAudioPayload.GType, typeof (Gst.Rtp.RTPBaseAudioPayload));
			GLib.GType.Register (Gst.Rtp.RTPBaseDepayload.GType, typeof (Gst.Rtp.RTPBaseDepayload));
			GLib.GType.Register (Gst.Rtp.RTPBasePayload.GType, typeof (Gst.Rtp.RTPBasePayload));
			GLib.GType.Register (Gst.Rtp.RTPHeaderExtension.GType, typeof (Gst.Rtp.RTPHeaderExtension));
			GLib.GType.Register (Gst.Tags.TagDemux.GType, typeof (Gst.Tags.TagDemux));
			GLib.GType.Register (Gst.Tags.TagMux.GType, typeof (Gst.Tags.TagMux));
			GLib.GType.Register (Gst.Video.ColorBalanceChannel.GType, typeof (Gst.Video.ColorBalanceChannel));
			GLib.GType.Register (Gst.Video.VideoAggregator.GType, typeof (Gst.Video.VideoAggregator));
			GLib.GType.Register (Gst.Video.VideoAggregatorConvertPad.GType, typeof (Gst.Video.VideoAggregatorConvertPad));
			GLib.GType.Register (Gst.Video.VideoAggregatorPad.GType, typeof (Gst.Video.VideoAggregatorPad));
			GLib.GType.Register (Gst.Video.VideoAggregatorParallelConvertPad.GType, typeof (Gst.Video.VideoAggregatorParallelConvertPad));
			GLib.GType.Register (Gst.Video.VideoBufferPool.GType, typeof (Gst.Video.VideoBufferPool));
			GLib.GType.Register (Gst.Video.VideoDecoder.GType, typeof (Gst.Video.VideoDecoder));
			GLib.GType.Register (Gst.Video.VideoEncoder.GType, typeof (Gst.Video.VideoEncoder));
			GLib.GType.Register (Gst.Video.VideoFilter.GType, typeof (Gst.Video.VideoFilter));
			GLib.GType.Register (Gst.Video.VideoSink.GType, typeof (Gst.Video.VideoSink));
			GLib.GType.Register (Gst.WebRTC.WebRTCDTLSTransport.GType, typeof (Gst.WebRTC.WebRTCDTLSTransport));
			GLib.GType.Register (Gst.WebRTC.WebRTCDataChannel.GType, typeof (Gst.WebRTC.WebRTCDataChannel));
			GLib.GType.Register (Gst.WebRTC.WebRTCICE.GType, typeof (Gst.WebRTC.WebRTCICE));
			GLib.GType.Register (Gst.WebRTC.WebRTCICEStream.GType, typeof (Gst.WebRTC.WebRTCICEStream));
			GLib.GType.Register (Gst.WebRTC.WebRTCICETransport.GType, typeof (Gst.WebRTC.WebRTCICETransport));
			GLib.GType.Register (Gst.WebRTC.WebRTCRTPReceiver.GType, typeof (Gst.WebRTC.WebRTCRTPReceiver));
			GLib.GType.Register (Gst.WebRTC.WebRTCRTPSender.GType, typeof (Gst.WebRTC.WebRTCRTPSender));
			GLib.GType.Register (Gst.WebRTC.WebRTCRTPTransceiver.GType, typeof (Gst.WebRTC.WebRTCRTPTransceiver));
			GLib.GType.Register (Gst.WebRTC.WebRTCSCTPTransport.GType, typeof (Gst.WebRTC.WebRTCSCTPTransport));
			GLib.GType.Register (Gst.RtspServer.RTSPAddressPool.GType, typeof (Gst.RtspServer.RTSPAddressPool));
			GLib.GType.Register (Gst.RtspServer.RTSPAuth.GType, typeof (Gst.RtspServer.RTSPAuth));
			GLib.GType.Register (Gst.RtspServer.RTSPClient.GType, typeof (Gst.RtspServer.RTSPClient));
			GLib.GType.Register (Gst.RtspServer.RTSPMedia.GType, typeof (Gst.RtspServer.RTSPMedia));
			GLib.GType.Register (Gst.RtspServer.RTSPMediaFactory.GType, typeof (Gst.RtspServer.RTSPMediaFactory));
			GLib.GType.Register (Gst.RtspServer.RTSPMediaFactoryURI.GType, typeof (Gst.RtspServer.RTSPMediaFactoryURI));
			GLib.GType.Register (Gst.RtspServer.RTSPMountPoints.GType, typeof (Gst.RtspServer.RTSPMountPoints));
			GLib.GType.Register (Gst.RtspServer.RTSPOnvifClient.GType, typeof (Gst.RtspServer.RTSPOnvifClient));
			GLib.GType.Register (Gst.RtspServer.RTSPOnvifMedia.GType, typeof (Gst.RtspServer.RTSPOnvifMedia));
			GLib.GType.Register (Gst.RtspServer.RTSPOnvifMediaFactory.GType, typeof (Gst.RtspServer.RTSPOnvifMediaFactory));
			GLib.GType.Register (Gst.RtspServer.RTSPOnvifServer.GType, typeof (Gst.RtspServer.RTSPOnvifServer));
			GLib.GType.Register (Gst.RtspServer.RTSPServer.GType, typeof (Gst.RtspServer.RTSPServer));
			GLib.GType.Register (Gst.RtspServer.RTSPSession.GType, typeof (Gst.RtspServer.RTSPSession));
			GLib.GType.Register (Gst.RtspServer.RTSPSessionMedia.GType, typeof (Gst.RtspServer.RTSPSessionMedia));
			GLib.GType.Register (Gst.RtspServer.RTSPSessionPool.GType, typeof (Gst.RtspServer.RTSPSessionPool));
			GLib.GType.Register (Gst.RtspServer.RTSPStream.GType, typeof (Gst.RtspServer.RTSPStream));
			GLib.GType.Register (Gst.RtspServer.RTSPStreamTransport.GType, typeof (Gst.RtspServer.RTSPStreamTransport));
			GLib.GType.Register (Gst.RtspServer.RTSPThreadPool.GType, typeof (Gst.RtspServer.RTSPThreadPool));
		}
	}
}
