상속: IReceiveConferenceFrames
예제 #1
0
        public DeskSet(int position, ConferenceAttendee attendee)
        {
            fPosition = position;
            fAttendee = attendee;

            // Desk Set Felt Pad

            // Bifold Monitor
            AABB boundary = new AABB(new NewTOAPIA.Vector3D(0.33f, 0.33f, 0.025f), new Point3D(0,1.025f,0));
            fMonitor = new DisplayMonitor(attendee.Session.Model.GI, boundary, new Resolution(1024,768));
            fMonitor.Rotate(-60, new float3(0, 1, 0));
            fMonitor.Translate(new Vector3D(-0.50f, 0.05f, 0.5f));

            // Create some viewers to receive images
            fDesktopViewer = new ReceivingTexture(attendee.Session.Model.GI, 620, 440);
            fWebcamViewer = new ReceivingTexture(attendee.Session.Model.GI, 352, 288);

            // Show the display on multiple monitors
            fMonitor.ImageSource = fWebcamViewer;
            attendee.Session.Model.Room.Whiteboard.ImageSource = fDesktopViewer;

            // Video Pedestal display

            // Whiteboard Pen Set

            AddChild(fMonitor);
        }
예제 #2
0
        public AttendeeCamera(ConferenceAttendee attendee, int deviceIndex)
        {
            fAttendee = attendee;

            fCamera = VideoCaptureDevice.CreateCaptureDeviceFromIndex(deviceIndex, 320, 240);
            fCamera.NewFrame += new CameraEventHandler(fCamera_NewFrame);
        }
예제 #3
0
        GraphPortChunkEncoder fCommandDispatcher;      // Used to do PixBlt to the net

        #endregion

        public DesktopCapture(ConferenceAttendee attendee)
        {
            fAttendee = attendee;

            fContext = GDIContext.CreateForDefaultDisplay();
            //fCommandDispatcher = new GraphPortChunkEncoder(attendee);

            int width = 800;
            int height = 600;
            fResolution = new Resolution(width, height);
            fScreenImage = new GDIDIBSection(width, height);
            fGrayImage = new PixelArray<Lumb>(width, height, fScreenImage.Orientation, new Lumb());

            // Start the thread that will take snapshots of the screen
            fGlobalTimer = new PrecisionTimer();
            fFrameRate = 10; // Frames per second
            fSnapperRunning = true;
            fSnapperThread = new Thread(RunSnaps);
            // WAA
            //fSnapperThread.Start();
        }
예제 #4
0
        public DeskSet CreateDeskSet(ConferenceAttendee attendee)
        {
            DeskSet aDeskSet = new DeskSet(nextPosition, attendee);
            nextPosition++;
            AddRenderable(aDeskSet);

            return aDeskSet;
        }
예제 #5
0
        protected virtual void CreatePendingAttendees()
        {
            foreach (RtpParticipant part in fPendingParticipants)
            {
                ConferenceAttendee attendee = new ConferenceAttendee(fSession, part);

                // The participant may have multiple ssrc values based on how
                // many channels they have open.
                // So, add all of them to the list.
                List<uint> ssrcs = part.SSRCs;

                for (int i = 0; i < ssrcs.Count; i++)
                {
                    uint ssrc = (uint)ssrcs[i];
                    fAttendees.Add((int)ssrc, attendee);
                }
            }

            fPendingParticipants.Clear();
        }