Пример #1
0
        private void UpdateStatistic()
        {
            labelStatistic.BackColor = Color.OrangeRed;

            string srtOrPath, opttionsList;
            string fIn, bIn, fDrops, buff;

            m_objWriter.WriterGet(out srtOrPath, out opttionsList);

            int propsCount;

            m_objWriter.PropsGetCount("stat", out propsCount);
            StringBuilder propsBuilder = new StringBuilder();

            for (int propsIndex = 0; propsIndex < propsCount; propsIndex++)
            {
                string propsName;
                string propsValue;
                int    propsIsNode;
                m_objWriter.PropsGetByIndex("stat", propsIndex, out propsName, out propsValue, out propsIsNode);
                propsBuilder.AppendLine(propsName + " : " + propsValue);
            }

            string propsStatList = propsBuilder.ToString();

            m_objWriter.PropsGet("stat::frames_in", out fIn);
            m_objWriter.PropsGet("stat::breaks_in", out bIn);

            m_objWriter.PropsGet("stat::buffers_overflow", out fDrops);
            m_objWriter.PropsGet("stat::buffered", out buff);


            labelStatistic.Text = "Capturing file: " + srtOrPath + "\n\n" +
                                  "Frames In: " + fIn + "; " +
                                  "Break In: " + bIn + "; " +
                                  "Frame drops: " + fDrops + ";\n" +
                                  "Buffer: " + buff;

            checkWriter();
        }
Пример #2
0
        private void thread_DoWork(CancellationToken token)
        {
            while (!token.IsCancellationRequested)
            {
                MFFrame frame1 = null;
                MFFrame frame2 = null;
                MFFrame frame3 = null;
                MFFrame frame4 = null;
                MFFrame frame5 = null;


                if (Encoder1)
                {
                    m_objLive1.SourceFrameConvertedGet(ref avProps, -1, out frame1, "");

                    m_objWriter1.ReceiverFramePut(frame1, -1, "");
                    m_objPrev1.ReceiverFramePut(frame1, -1, "");

                    m_objWriter1.PropsGet("stat::frames_in", out fIn);
                    m_objWriter1.PropsGet("stat::buffers_overflow", out fDrops);
                    m_objWriter1.PropsGet("stat::breaks_in", out bIn);

                    BeginInvoke(new InvokeDelegate(UpdateLabel1));
                }
                if (Encoder2)
                {
                    m_objLive2.SourceFrameConvertedGet(ref avProps, -1, out frame2, "");

                    m_objWriter2.ReceiverFramePut(frame2, -1, "");
                    m_objPrev2.ReceiverFramePut(frame2, -1, "");

                    m_objWriter2.PropsGet("stat::frames_in", out fIn);
                    m_objWriter2.PropsGet("stat::buffers_overflow", out fDrops);
                    m_objWriter2.PropsGet("stat::breaks_in", out bIn);

                    BeginInvoke(new InvokeDelegate(UpdateLabel2));
                }
                if (Encoder3)
                {
                    m_objLive3.SourceFrameConvertedGet(ref avProps, -1, out frame3, "");

                    m_objWriter3.ReceiverFramePut(frame3, -1, "");
                    m_objPrev3.ReceiverFramePut(frame3, -1, "");

                    m_objWriter3.PropsGet("stat::frames_in", out fIn);
                    m_objWriter3.PropsGet("stat::buffers_overflow", out fDrops);
                    m_objWriter3.PropsGet("stat::breaks_in", out bIn);

                    BeginInvoke(new InvokeDelegate(UpdateLabel3));
                }
                if (Encoder4)
                {
                    m_objLive4.SourceFrameConvertedGet(ref avProps, -1, out frame4, "");

                    m_objWriter4.ReceiverFramePut(frame4, -1, "");
                    m_objPrev4.ReceiverFramePut(frame4, -1, "");

                    m_objWriter4.PropsGet("stat::frames_in", out fIn);
                    m_objWriter4.PropsGet("stat::buffers_overflow", out fDrops);
                    m_objWriter4.PropsGet("stat::breaks_in", out bIn);

                    BeginInvoke(new InvokeDelegate(UpdateLabel4));
                }
                if (Encoder5)
                {
                    m_objLive5.SourceFrameConvertedGet(ref avProps, -1, out frame5, "");

                    m_objWriter5.ReceiverFramePut(frame5, -1, "");
                    m_objPrev5.ReceiverFramePut(frame5, -1, "");

                    m_objWriter5.PropsGet("stat::frames_in", out fIn);
                    m_objWriter5.PropsGet("stat::buffers_overflow", out fDrops);
                    m_objWriter5.PropsGet("stat::breaks_in", out bIn);

                    BeginInvoke(new InvokeDelegate(UpdateLabel5));
                }

                if (frame1 != null)
                {
                    Marshal.ReleaseComObject(frame1);
                }
                if (frame2 != null)
                {
                    Marshal.ReleaseComObject(frame2);
                }
                if (frame3 != null)
                {
                    Marshal.ReleaseComObject(frame3);
                }
                if (frame4 != null)
                {
                    Marshal.ReleaseComObject(frame4);
                }
                if (frame5 != null)
                {
                    Marshal.ReleaseComObject(frame5);
                }
            }
        }