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