// 0: succes, 1: error, 2: no movement in file public int WriteVideo(ProgressStorage progressStorage) { int movementSomewhere = 1; // create txt file that will be used to join all videos temporaryFiles = new List <String>(); String txtPath = outputfolder + "\\output_temptxtfile.txt"; temporaryFiles.Add(txtPath); // add to files that will be removed after execution StreamWriter outputtxt = new StreamWriter(txtPath, false); // convert to mp4 in original quality, create subparts and add then to the outputtxt for (int i = 0; i < filelist.Length; i++) { String toDeleteFile = convertPart(filelist[i]); // no result needed, because if this failed, next one will fail as well int result = cutParts(toDeleteFile, trackerlist[i], outputtxt); if (result == 1) // it failed { // remove all temporary objects here (close txt first) outputtxt.Close(); clearFiles(temporaryFiles); progressStorage.resetGeneration(); // update progressStorage return(1); // something failed } else if (result == 0) { // if we get in to this part at least once, it means there is movement in some of the files movementSomewhere = 0; } clearFile(toDeleteFile); // delete temp file progressStorage.generationFileFinished(); // update progressStorage } int result2; outputtxt.Close(); if (movementSomewhere == 0) { // execute the command to join the subfiles result2 = joinParts(txtPath); } else { result2 = 2; } // remove all temporary files clearFiles(temporaryFiles); if (result2 != 1) { progressStorage.generationFileFinished(); // update progressStorage } else { progressStorage.resetGeneration(); // update progressStorage } return(result2); }
// 0: succes, 1: error, 2: no movement in file public int WriteVideo(ProgressStorage progressStorage) { int movementSomewhere = 1; // create txt file that will be used to join all videos temporaryFiles = new List<String>(); String txtPath = outputfolder + "\\output_temptxtfile.txt"; temporaryFiles.Add(txtPath); // add to files that will be removed after execution StreamWriter outputtxt = new StreamWriter(txtPath, false); // convert to mp4 in original quality, create subparts and add then to the outputtxt for (int i = 0; i < filelist.Length; i++) { String toDeleteFile = convertPart(filelist[i]); // no result needed, because if this failed, next one will fail as well int result = cutParts(toDeleteFile, trackerlist[i], outputtxt); if(result == 1) // it failed { // remove all temporary objects here (close txt first) outputtxt.Close(); clearFiles(temporaryFiles); progressStorage.resetGeneration(); // update progressStorage return 1; // something failed } else if (result == 0) { // if we get in to this part at least once, it means there is movement in some of the files movementSomewhere = 0; } clearFile(toDeleteFile); // delete temp file progressStorage.generationFileFinished(); // update progressStorage } int result2; outputtxt.Close(); if(movementSomewhere == 0) { // execute the command to join the subfiles result2 = joinParts(txtPath); } else { result2 = 2; } // remove all temporary files clearFiles(temporaryFiles); if(result2 != 1) { progressStorage.generationFileFinished(); // update progressStorage } else { progressStorage.resetGeneration(); // update progressStorage } return result2; }
// Function to process the file public int doProcess(ProgressStorage progressStorage) { currentFrame = 0; reader = new VideoFileReader(); try { reader.Open(file); } catch { return(1); } int frameCount = (int)reader.FrameCount; tracker = new Tracker(movementWindow); int nrofiterations = frameCount / 200; int i = 0; int nrofframes = 0; while (i < nrofiterations) { nrofframes = 200; loadinPart(nrofframes, area); if (i == 0) // store first frame as background frame { backgroundFrame = imageStack[0].Clone(new Rectangle(0, 0, imageStack[0].Width, imageStack[0].Height), imageStack[0].PixelFormat); } processFilePart(); progressStorage.incrementProgress(currentFrame); i++; } nrofframes = frameCount - currentFrame; loadinPart(nrofframes, area); if (nrofiterations == 0) // store first frame as background frame if nrofiterations is 0 { backgroundFrame = imageStack[0].Clone(new Rectangle(0, 0, imageStack[0].Width, imageStack[0].Height), imageStack[0].PixelFormat); } processFilePart(); progressStorage.incrementProgress(currentFrame); tracker.closeList(currentFrame); reader.Close(); // close the file return(0); }
private String resultFolder; // folder where the result will be outputted // Constructor public Brain() { Status = 0; progressStorage = new ProgressStorage(); }
// Function to process the file public int doProcess(ProgressStorage progressStorage) { currentFrame = 0; reader = new VideoFileReader(); try { reader.Open(file); } catch { return 1; } int frameCount = (int)reader.FrameCount; tracker = new Tracker(movementWindow); int nrofiterations = frameCount / 200; int i = 0; int nrofframes = 0; while (i < nrofiterations) { nrofframes = 200; loadinPart(nrofframes, area); if(i == 0) // store first frame as background frame { backgroundFrame = imageStack[0].Clone(new Rectangle(0, 0, imageStack[0].Width, imageStack[0].Height), imageStack[0].PixelFormat); } processFilePart(); progressStorage.incrementProgress(currentFrame); i++; } nrofframes = frameCount - currentFrame; loadinPart(nrofframes, area); if (nrofiterations == 0) // store first frame as background frame if nrofiterations is 0 { backgroundFrame = imageStack[0].Clone(new Rectangle(0, 0, imageStack[0].Width, imageStack[0].Height), imageStack[0].PixelFormat); } processFilePart(); progressStorage.incrementProgress(currentFrame); tracker.closeList(currentFrame); reader.Close(); // close the file return 0; }