public void CloseFiles() { _backBufferThreadEndList.Add(_backBufferThread.ManagedThreadId); _backBufferThread.Join(); StatisticsProcessor = null; if (VideoMediaFile != null) { VideoMediaFile.Dispose(); VideoMediaFile = null; } var oldFields = _fields; _fields = new List <MediaFile.FrameField>(); foreach (var field in oldFields) { if (field != null) { field.Dispose(); } } oldFields.Clear(); StartBackBufferThread(); }
private void PrepareData() { if ((StatisticsProcessor == null) || (VideoMediaFile == null)) { return; } _fieldInterval = (int)((_secondsVisible / (double)VIDEO_FRAME_COUNT) / VideoMediaFile.FieldDuration); _firstFieldIndex = _fieldNumber - (_fieldInterval * VIDEO_FRAME_COUNT / 2); _lastFieldIndex = _fieldNumber + (_fieldInterval * VIDEO_FRAME_COUNT / 2); _fieldCount = _lastFieldIndex - _firstFieldIndex; _field_dx = this.ClientSize.Width / (float)_fieldCount; var oldFields = _fields; foreach (var field in oldFields) { if (field != null) { field.Dispose(); } } var fieldIndexes = new List <int>(); for (int n = _firstFieldIndex; n < _lastFieldIndex; n += _fieldInterval) { fieldIndexes.Add(n + (int)Math.Ceiling(_fieldInterval / 2.0)); } _fields = VideoMediaFile.GetVideoFrameFields(fieldIndexes); if (_fields.Count > 3) { var field = _fields[3]; if (field == null) { Console.WriteLine("!!!! Middle field is null"); } } }