/**
  * Saves the video to the current scratchFile.
  *
  * @throws IOException
  */
 protected void saveScratch() throws IOException {
   if (movie != null && editing)
     try {
       // end edits and save the scratch
       videoMedia.endEdits();
       int trackStart = 0;
       int mediaTime = 0;
       int mediaRate = 1;
       videoTrack.insertMedia(trackStart, mediaTime, videoMedia.getDuration(), mediaRate);
       editing = false;
       OpenMovieFile outStream = OpenMovieFile.asWrite(new QTFile(scratchFile));
       movie.addResource(outStream, movieInDataForkResID, scratchFile.getName());
       outStream.close();
       movie = null;
       OSPLog.finest(
           "saved " + frameCount + " frames in " + scratchFile); // $NON-NLS-1$ //$NON-NLS-2$
     } catch (QTException ex) {
       throw new IOException("caught in saveScratch: " + ex.toString()); // $NON-NLS-1$
     }
 }
 /** Close out and finish the movie file. */
 public void finish() {
   try {
     if (readyForFrames) {
       // System.out.println("Finishing movie file.");
       readyForFrames = false;
       videoMedia.endEdits();
       videoTrack.insertMedia(0, 0, videoMedia.getDuration(), 1);
       OpenMovieFile omf = OpenMovieFile.asWrite(movFile);
       movie.addResource(omf, StdQTConstants.movieInDataForkResID, movFile.getName());
     }
   } catch (StdQTException se) {
     se.printStackTrace();
   } catch (QTException qe) {
     qe.printStackTrace();
   }
 }