示例#1
0
        static void enumDevice(PXCMCapture capture)
        {
            for (int i = 0; ; ++i)
            {
                // デバイス情報を取得する
                PXCMCapture.DeviceInfo dinfo;
                var sts = capture.QueryDeviceInfo(i, out dinfo);
                if (sts < pxcmStatus.PXCM_STATUS_NO_ERROR)
                {
                    break;
                }

                // デバイス名を表示する
                Console.WriteLine("\t" + dinfo.name);

                // デバイスを取得する
                var device = capture.CreateDevice(i);

                for (int s = 0; s < PXCMCapture.STREAM_LIMIT; ++s)
                {
                    // ストリーム種別を取得する
                    PXCMCapture.StreamType type = PXCMCapture.StreamTypeFromIndex(s);
                    if ((dinfo.streams & type) == 0)
                    {
                        continue;
                    }

                    // ストリーム名を取得する
                    var name = PXCMCapture.StreamTypeToString(type);
                    Console.WriteLine("\t\t" + name);

                    // ストリームのフォーマットを取得する
                    int nprofiles = device.QueryStreamProfileSetNum(type);
                    for (int p = 0; p < nprofiles; ++p)
                    {
                        PXCMCapture.Device.StreamProfileSet profiles;
                        sts = device.QueryStreamProfileSet(type, p, out profiles);
                        if (sts < pxcmStatus.PXCM_STATUS_NO_ERROR)
                        {
                            break;
                        }

                        // ストリームのフォーマットを表示する
                        Console.WriteLine("\t\t\t" + ProfileToString(profiles[type]));
                    }
                }
            }

            Console.WriteLine("");
        }
        static void enumDevice( PXCMCapture capture )
        {
            for ( int i = 0; ; ++i ) {
                // デバイス情報を取得する
                PXCMCapture.DeviceInfo dinfo;
                var sts = capture.QueryDeviceInfo( i, out dinfo );
                if ( sts < pxcmStatus.PXCM_STATUS_NO_ERROR ) {
                    break;
                }

                // デバイス名を表示する
                Console.WriteLine( "\t" + dinfo.name );

                // デバイスを取得する
                var device = capture.CreateDevice( i );

                for ( int s = 0; s < PXCMCapture.STREAM_LIMIT; ++s ) {
                    // ストリーム種別を取得する
                    PXCMCapture.StreamType type = PXCMCapture.StreamTypeFromIndex( s );
                    if ( (dinfo.streams & type) == 0 ) {
                        continue;
                    }

                    // ストリーム名を取得する
                    var name = PXCMCapture.StreamTypeToString( type );
                    Console.WriteLine( "\t\t" + name );

                    // ストリームのフォーマットを取得する
                    int nprofiles = device.QueryStreamProfileSetNum( type );
                    for ( int p = 0; p<nprofiles; ++p ) {
                        PXCMCapture.Device.StreamProfileSet profiles;
                        sts = device.QueryStreamProfileSet( type, p, out profiles );
                        if ( sts < pxcmStatus.PXCM_STATUS_NO_ERROR ) {
                            break;
                        }

                        // ストリームのフォーマットを表示する
                        Console.WriteLine( "\t\t\t" + ProfileToString( profiles[type] ) );
                    }
                }
            }

            Console.WriteLine( "" );
        }
示例#3
0
文件: Context.cs 项目: zeos/Somaphone
        private bool InitStreamProfiles(PXCMCapture.Device device)
        {
            uint ProfileCount = 0;
            if (device !=null)
            {
                PXCMCapture.Device.StreamProfileSet profile = new PXCMCapture.Device.StreamProfileSet();

                for (int s = 0; s < PXCMCapture.STREAM_LIMIT; s++)
                {
                    PXCMCapture.StreamType st = PXCMCapture.StreamTypeFromIndex(s);

                    PXCMCapture.DeviceInfo dinfo;
                    device.QueryDeviceInfo(out dinfo);

                    if (((int)dinfo.streams & (int)st) != 0)
                    {

                        int num = device.QueryStreamProfileSetNum(st);

                        for (int p = 0; p < num; p++)
                        {
                            if (device.QueryStreamProfileSet(st, p, out profile) < pxcmStatus.PXCM_STATUS_NO_ERROR) break;

                            PXCMCapture.Device.StreamProfile sprofile = profile[st];

                            //filter out all Color non RGB32 stream modes out
                            if((st == PXCMCapture.StreamType.STREAM_TYPE_COLOR) && (sprofile.imageInfo.format != PXCMImage.PixelFormat.PIXEL_FORMAT_RGB32 ))
                            continue;

                            if(!SenseSession.StreamProfiles.ContainsKey(st))
                            {
                                SenseSession.StreamProfiles.Add(st, new Dictionary<string, PXCMCapture.Device.StreamProfile>());
                            }

                            var StreamTypeProfileSet = SenseSession.StreamProfiles[st];
                            var ProfileDescr = ProfileToString(st, sprofile);

                            if(!StreamTypeProfileSet.ContainsKey(ProfileDescr))
                            {
                                StreamTypeProfileSet.Add(ProfileDescr, sprofile);
                                ProfileCount++;
                            }

                        }

                        //add to enums
                        string[] defaultMode = {"Disabled"};
                        string[] streamModes = defaultMode.Concat(SenseSession.StreamProfiles[st].Keys.ToArray()).ToArray();
                        EnumManager.UpdateEnum("RealSenseStreamMode_" + st.ToString().Substring(12), "Disabled", streamModes);

                    }
                    else if (((int)dinfo.streams & (int)st) == 0)
                    {

                    }
                }

            }
            else FLogger.Log(LogType.Debug,"Device is null");

            return ProfileCount > 0;
        }