public EditDefaultCodecHeader CreateEditDefaultCodecHeaderWindow()
        {
            if (_editDefaultCodecHeader != null)
            {
                return(_editDefaultCodecHeader);
            }

            _editDefaultCodecHeader         = _editDefaultCodecHeaderCreator();
            _editDefaultCodecHeader.Closed += new EventHandler(editDefaultCodecHeaderWindow_Closed);
            return(_editDefaultCodecHeader);
        }
        public void AskChangeDefaultCodecHeader(FFmpegResult ffmpegResult, IWin32Window windowOwner)
        {
            if (ffmpegResult.Bitmap == null && !IsWindowOpen() && !_backgroundFileScanner.IsBusy)
            {
                // Check if it is a key frame. When true we should be able to decode it.
                IResultNode resultNode = ffmpegResult.SourcePacket;

                if (resultNode != null && resultNode.IsKeyframe())
                {
                    if (DialogResult.Yes ==
                        MessageBox.Show(
                            "Defraser couldn't detect the video headers of this frame. Do you want to use a reference header to decode this frame?",
                            "Header Not Found.", MessageBoxButtons.YesNo, MessageBoxIcon.Question,
                            MessageBoxDefaultButton.Button2))
                    {
                        EditDefaultCodecHeader editDefaultCodecHeader = CreateEditDefaultCodecHeaderWindow();
                        editDefaultCodecHeader.SelectCodec(ffmpegResult.SourcePacket.DataFormat);
                        editDefaultCodecHeader.ShowDialog(windowOwner);
                    }
                }
            }
        }
 private void editDefaultCodecHeaderWindow_Closed(object sender, EventArgs e)
 {
     _editDefaultCodecHeader.Closed -= new EventHandler(editDefaultCodecHeaderWindow_Closed);
     _editDefaultCodecHeader         = null;
 }