public override bool Build(DirectShowLib.IPin source, IBuild build)
        {
            this.build          = build;
            this.build.OnClose += this.Dispose;
            bool result;

            if (result = base.Build(source, build))
            {
                DirectShowLib.AMMediaType media = new DirectShowLib.AMMediaType();
                Exception.GraphError.Check((this.grabber as  DirectShowLib.ISampleGrabber).GetConnectedMediaType(media));
                DirectShowLib.VideoInfoHeader header = (DirectShowLib.VideoInfoHeader)System.Runtime.InteropServices.Marshal.PtrToStructure(media.formatPtr, typeof(DirectShowLib.VideoInfoHeader));
                this.size     = new Geometry2D.Integer.Size(header.BmiHeader.Width, header.BmiHeader.Height);
                this.lifetime = header.AvgTimePerFrame;
                // NOTE!!!! Here we set a default frame rate if the video does not have such information available.
                if (this.lifetime < 1000 || this.lifetime > 10000000)
                {
                    this.lifetime = 400000;
                }
                if (this.Rate.NotNull())
                {
                    double factor = (double)this.Rate / (1000 / new TimeSpan(this.lifetime).TotalMilliseconds);
                    int    code   = (this.build.Graph as DirectShowLib.IMediaSeeking).SetRate(factor);
                }
            }
            return(result);
        }
		public override DirectShowLib.IBaseFilter Create()
		{
			DirectShowLib.AMMediaType sourceMedia = new DirectShowLib.AMMediaType() { majorType = DirectShowLib.MediaType.Video, subType = DirectShowLib.MediaSubType.H264, formatType = DirectShowLib.FormatType.Mpeg2Video };// { majorType = DirectShowLib.MediaType.Stream, subType = new Guid("D607A0E7-BE64-4869-B70D-46F2E05D66D0") };
			DirectShowLib.IBaseFilter result = base.Create();
			if (result.NotNull())				
				DirectShow.Binding.Exception.GraphError.Check((result as DirectShowLib.IFileSourceFilter).Load(this.url, sourceMedia));
			return result;
		}
 void SetOutputMedia(DirectShowLib.IBaseFilter filter, DirectShowLib.AMMediaType media)
 {
     DirectShowLib.IPin outPin = DirectShowLib.DsFindPin.ByDirection(filter, DirectShowLib.PinDirection.Output, 0);
     if (outPin is DirectShowLib.IAMStreamConfig)
     {
         Exception.GraphError.Check((outPin as DirectShowLib.IAMStreamConfig).SetFormat(media));
     }
 }
Example #4
0
		public override DirectShowLib.IBaseFilter Create()
		{
			DirectShowLib.AMMediaType sourceMedia = new DirectShowLib.AMMediaType() { majorType = DirectShowLib.MediaType.Stream, subType = DirectShowLib.MediaSubType.Mpeg2Transport };
			DirectShowLib.IBaseFilter result = base.Create();
			if(result.NotNull())
				DirectShow.Binding.Exception.GraphError.Check((result as DirectShowLib.IFileSourceFilter).Load(this.file, sourceMedia));
			return result;
		}
Example #5
0
		public override DirectShowLib.IBaseFilter Create()
		{
			DirectShowLib.AMMediaType sourceMedia = new DirectShowLib.AMMediaType() { majorType = DirectShowLib.MediaType.Stream, subType = new Guid("555DC977-D6F1-4C2E-8D64-F58221A91234") };
			DirectShowLib.IBaseFilter result = base.Create();
			if(result.NotNull())
				DirectShow.Binding.Exception.GraphError.Check((result as DirectShowLib.IFileSourceFilter).Load(this.file, sourceMedia));
			return result;
		}
 public override DirectShowLib.IBaseFilter Create()
 {
     DirectShowLib.AMMediaType sourceMedia = new DirectShowLib.AMMediaType()
     {
         majorType = DirectShowLib.MediaType.Stream, subType = new Guid("555DC977-D6F1-4C2E-8D64-F58221A91234")
     };
     DirectShowLib.IBaseFilter result = base.Create();
     if (result.NotNull())
     {
         DirectShow.Binding.Exception.GraphError.Check((result as DirectShowLib.IFileSourceFilter).Load(this.file, sourceMedia));
     }
     return(result);
 }
 public override DirectShowLib.IBaseFilter Create()
 {
     DirectShowLib.AMMediaType sourceMedia = new DirectShowLib.AMMediaType()
     {
         majorType = DirectShowLib.MediaType.Stream, subType = DirectShowLib.MediaSubType.Mpeg2Transport
     };
     DirectShowLib.IBaseFilter result = base.Create();
     if (result.NotNull())
     {
         DirectShow.Binding.Exception.GraphError.Check((result as DirectShowLib.IFileSourceFilter).Load(this.file, sourceMedia));
     }
     return(result);
 }
 public override DirectShowLib.IBaseFilter Create()
 {
     DirectShowLib.AMMediaType sourceMedia = new DirectShowLib.AMMediaType()
     {
         majorType = DirectShowLib.MediaType.Video, subType = DirectShowLib.MediaSubType.H264, formatType = DirectShowLib.FormatType.Mpeg2Video
     };                                                                                                                                                                                                                             // { majorType = DirectShowLib.MediaType.Stream, subType = new Guid("D607A0E7-BE64-4869-B70D-46F2E05D66D0") };
     DirectShowLib.IBaseFilter result = base.Create();
     if (result.NotNull())
     {
         DirectShow.Binding.Exception.GraphError.Check((result as DirectShowLib.IFileSourceFilter).Load(this.url, sourceMedia));
     }
     return(result);
 }
Example #9
0
		public override DirectShowLib.IBaseFilter Create()
		{
			DirectShowLib.AMMediaType media = new DirectShowLib.AMMediaType() { majorType = DirectShowLib.MediaType.Stream, subType = DirectShowLib.MediaSubType.Mpeg2Program };
			DirectShowLib.IBaseFilter result = base.Create();
			if (result.NotNull())
			{
				DirectShowLib.FilterInfo info;
				result.QueryFilterInfo(out info);
				string info2;
				result.QueryVendorInfo(out info2);
				DirectShow.Binding.Exception.GraphError.Check((result as DirectShowLib.IFileSinkFilter).SetFileName(this.filename, media));
			}
			return result;
		}
Example #10
0
		DirectShowLib.AMMediaType[] GetOutputMediaTypes(DirectShowLib.IBaseFilter filter)
		{
			DirectShowLib.AMMediaType[] result = null;
			DirectShowLib.IPin outPin = DirectShowLib.DsFindPin.ByDirection(filter, DirectShowLib.PinDirection.Output, 0);
			if (outPin is DirectShowLib.IAMStreamConfig)
			{
				int count = 0;
				int size = 0;
				Exception.GraphError.Check((outPin as DirectShowLib.IAMStreamConfig).GetNumberOfCapabilities(out count, out size));
				Buffer.Vector<byte> buffer = new Buffer.Vector<byte>(size);
				result = new DirectShowLib.AMMediaType[count];
				for (int i = 0; i < count; i++)
					Exception.GraphError.Check((outPin as DirectShowLib.IAMStreamConfig).GetStreamCaps(i, out result[i], buffer));
			}
			return result;
		}
Example #11
0
 public override DirectShowLib.IBaseFilter Create()
 {
     DirectShowLib.AMMediaType media = new DirectShowLib.AMMediaType()
     {
         majorType = DirectShowLib.MediaType.Stream, subType = DirectShowLib.MediaSubType.Mpeg2Program
     };
     DirectShowLib.IBaseFilter result = base.Create();
     if (result.NotNull())
     {
         DirectShowLib.FilterInfo info;
         result.QueryFilterInfo(out info);
         string info2;
         result.QueryVendorInfo(out info2);
         DirectShow.Binding.Exception.GraphError.Check((result as DirectShowLib.IFileSinkFilter).SetFileName(this.filename, media));
     }
     return(result);
 }
 DirectShowLib.AMMediaType[] GetOutputMediaTypes(DirectShowLib.IBaseFilter filter)
 {
     DirectShowLib.AMMediaType[] result = null;
     DirectShowLib.IPin          outPin = DirectShowLib.DsFindPin.ByDirection(filter, DirectShowLib.PinDirection.Output, 0);
     if (outPin is DirectShowLib.IAMStreamConfig)
     {
         int count = 0;
         int size  = 0;
         Exception.GraphError.Check((outPin as DirectShowLib.IAMStreamConfig).GetNumberOfCapabilities(out count, out size));
         Buffer.Vector <byte> buffer = new Buffer.Vector <byte>(size);
         result = new DirectShowLib.AMMediaType[count];
         for (int i = 0; i < count; i++)
         {
             Exception.GraphError.Check((outPin as DirectShowLib.IAMStreamConfig).GetStreamCaps(i, out result[i], buffer));
         }
     }
     return(result);
 }
Example #13
0
		public override bool Build(DirectShowLib.IPin source, IBuild build)
		{
			this.build = build;
			this.build.OnClose += this.Dispose;
			bool result;
			if (result = base.Build(source, build))
			{
				DirectShowLib.AMMediaType media = new DirectShowLib.AMMediaType();
				Exception.GraphError.Check((this.grabber as  DirectShowLib.ISampleGrabber).GetConnectedMediaType(media));
				DirectShowLib.VideoInfoHeader header = (DirectShowLib.VideoInfoHeader)System.Runtime.InteropServices.Marshal.PtrToStructure(media.formatPtr, typeof(DirectShowLib.VideoInfoHeader));
				this.size = new Geometry2D.Integer.Size(header.BmiHeader.Width, header.BmiHeader.Height);
				this.lifetime = header.AvgTimePerFrame;
				// NOTE!!!! Here we set a default frame rate if the video does not have such information available.
				if (this.lifetime < 1000 || this.lifetime > 10000000)
					this.lifetime = 400000;
				if (this.Rate.NotNull())
				{
					double factor = (double)this.Rate / (1000 / new TimeSpan(this.lifetime).TotalMilliseconds) ;
					int code = (this.build.Graph as DirectShowLib.IMediaSeeking).SetRate(factor);
				}
			}
			return result;
		}
 public static extern int MoInitMediaType(
     [Out] DirectShowLib.AMMediaType pmt,
     int i
     );
 protected static void SetHeader(DirectShowLib.AMMediaType media, DirectShowLib.VideoInfoHeader header)
 {
     System.Runtime.InteropServices.Marshal.StructureToPtr(header, media.formatPtr, true);
 }
 protected static DirectShowLib.VideoInfoHeader GetHeader(DirectShowLib.AMMediaType media)
 {
     return(System.Runtime.InteropServices.Marshal.PtrToStructure(media.formatPtr, typeof(DirectShowLib.VideoInfoHeader)) as DirectShowLib.VideoInfoHeader);
 }