private void InsertDataButton_Click(object sender, EventArgs e) { if (MainWorkerThread != null && MainWorkerThread.IsAlive) { MessageBox.Show("Please wait for the previous operation to finish", "Please Wait"); return; } int dataFileSize = (int)new FileInfo(DataFileName).Length; dataFileStream = new StreamReader(DataFileName).BaseStream; SetupAudioStreams(dataFileSize); Encoder = new NLSBSteganographerEncoder( AudioFileInStream, dataFileStream, KeyHelper.GenerateKeyFromUserInput(), dataFileSize ); //Encoder.ProcessFile(WriteCallback); MainWorkerThread.Start(null); }
private void SetupDecoder(out Stream dataFileStream) { AudioFileInStream = new FileInDecodingStream(); AudioFileInStream.InfoOutFile = InfoFileWriter; AudioFileInStream.SetMetadataRespond(MetadataType.VorbisComment); SaveFileDialog dlg = new SaveFileDialog(); dlg.Filter = "All Files (*.*)|*.*"; dlg.ShowDialog(); if (dlg.FileName == "") { dataFileStream = null; return; } dataFileStream = new StreamWriter(dlg.FileName).BaseStream; Decoder = new NLSBSteganographerDecoder( AudioFileInStream, dataFileStream, KeyHelper.GenerateKeyFromUserInput() ); AudioFileInStream.Initialize(AudioFileName); AudioFileInStream.ProgressCallback = ProgressCallback; MainWorkerThread = new Thread(new ParameterizedThreadStart(x => { Decoder.ProcessFile(); CleanupDecoder(); })); }