byte[] outputYUV420;//= public void SetResolution(int width, int height) { if (counter == 2) { return; } counter++; int iRet; this.width = width; this.height = height; outputYUV420 = new byte[width * height * 3 / 2]; object o; CaptureGraphBuilder.FindInterface(PinCategory.Capture, MediaType.Video, VideoInput, typeof(IAMStreamConfig).GUID, out o); var videoStreamConfig = o as IAMStreamConfig; AMMediaType media; int iC = 0, iS = 0; iRet = videoStreamConfig.GetNumberOfCapabilities(out iC, out iS); if (iRet != 0) { Console.WriteLine("TheKing--> Error Found GetNumberOfCapabilities"); } IntPtr ptr = Marshal.AllocCoTaskMem(iS); int streamId = 0; var videoInfo = new VideoInfoHeader(); availableVideoModes.Clear(); for (int i = 0; i < iC; i++) { iRet = videoStreamConfig.GetStreamCaps(i, out media, ptr); if (iRet != 0) { Console.WriteLine("TheKing--> Error Found GetStreamCaps"); } Marshal.PtrToStructure(media.formatPtr, videoInfo); if (videoInfo.BmiHeader.Width != 0 && videoInfo.BmiHeader.Height != 0) { availableVideoModes.Add(new VideoMode(videoInfo.BmiHeader.Width, videoInfo.BmiHeader.Height)); } if (videoInfo.BmiHeader.Width != width || videoInfo.BmiHeader.Height != height) { continue; } streamId = i; selectedVideoMode = availableVideoModes.Last(); break; } iRet = videoStreamConfig.GetStreamCaps(streamId, out media, ptr); if (iRet != 0) { Console.WriteLine("TheKing--> Error Found GetStreamCaps 2"); } Marshal.PtrToStructure(media.formatPtr, videoInfo); iRet = videoStreamConfig.SetFormat(media); if (iRet != 0) { Console.WriteLine("TheKing SetFormat --> " + iRet); } Marshal.FreeCoTaskMem(ptr); media = new AMMediaType(); media.majorType = MediaType.Video; if (counter == 1) { media.subType = MediaSubType.RGB24; //Input Video Format } else if (counter == 2) { media.subType = MediaSubType.RGB24; } media.formatType = FormatType.VideoInfo; media.fixedSizeSamples = true; iRet = SampleGrabber.SetMediaType(media); if (iRet != 0) { Console.WriteLine("TheKing SetMediaType --> " + iRet); } DsUtils.FreeAMMediaType(media); if (counter == 1) { //InitRingIDSDKLib(); Thread oThread = new Thread(new ThreadStart(RenderThread)); oThread.Start(); } }
public void SetResolution(int width, int height) { if (counter == 2) return; counter++; int iRet; this.width = width; this.height = height; outputYUV420 = new byte[width * height * 3 / 2]; object o; CaptureGraphBuilder.FindInterface(PinCategory.Capture, MediaType.Video, VideoInput, typeof(IAMStreamConfig).GUID, out o); var videoStreamConfig = o as IAMStreamConfig; AMMediaType media; int iC = 0, iS = 0; iRet = videoStreamConfig.GetNumberOfCapabilities(out iC, out iS); if (iRet != 0) Console.WriteLine("TheKing--> Error Found GetNumberOfCapabilities"); IntPtr ptr = Marshal.AllocCoTaskMem(iS); int streamId = 0; var videoInfo = new VideoInfoHeader(); availableVideoModes.Clear(); for (int i = 0; i < iC; i++) { iRet = videoStreamConfig.GetStreamCaps(i, out media, ptr); if (iRet != 0) Console.WriteLine("TheKing--> Error Found GetStreamCaps"); Marshal.PtrToStructure(media.formatPtr, videoInfo); if (videoInfo.BmiHeader.Width != 0 && videoInfo.BmiHeader.Height != 0) { availableVideoModes.Add(new VideoMode(videoInfo.BmiHeader.Width, videoInfo.BmiHeader.Height)); } if (videoInfo.BmiHeader.Width != width || videoInfo.BmiHeader.Height != height) { continue; } streamId = i; selectedVideoMode = availableVideoModes.Last(); break; } iRet = videoStreamConfig.GetStreamCaps(streamId, out media, ptr); if (iRet != 0) Console.WriteLine("TheKing--> Error Found GetStreamCaps 2"); Marshal.PtrToStructure(media.formatPtr, videoInfo); iRet = videoStreamConfig.SetFormat(media); if(iRet!=0) Console.WriteLine("TheKing SetFormat --> " + iRet); Marshal.FreeCoTaskMem(ptr); media = new AMMediaType(); media.majorType = MediaType.Video; if (counter == 1) { media.subType = MediaSubType.RGB24; //Input Video Format } else if (counter == 2) { media.subType = MediaSubType.RGB24; } media.formatType = FormatType.VideoInfo; media.fixedSizeSamples = true; iRet = SampleGrabber.SetMediaType(media); if(iRet!=0) Console.WriteLine("TheKing SetMediaType --> " + iRet); DsUtils.FreeAMMediaType(media); if (counter == 1) { //InitRingIDSDKLib(); Thread oThread = new Thread(new ThreadStart(RenderThread)); oThread.Start(); } }