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)); } }
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.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); }
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; }
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); }
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); }