Copyright 2012-04-26 Werner Randelshofer

org.monte.media.imgseq
Class ImageSequenceWriter

java.lang.Object
  extended by org.monte.media.imgseq.ImageSequenceWriter
All Implemented Interfaces:
MovieWriter, Multiplexer

public class ImageSequenceWriter
extends java.lang.Object
implements MovieWriter

ImageSequenceWriter.

Version:
1.0 2011-04-20 Created.
Author:
Werner Randelshofer

Constructor Summary
ImageSequenceWriter()
           
 
Method Summary
 int addTrack(Format format)
          Adds a track to the writer for a suggested input format.
 int addVideoTrack(java.io.File dir, java.lang.String filenameFormatter, int width, int height)
          Adds a video track.
 void close()
          Closes the writer.
 Rational getDuration(int track)
          Returns the sampleDuration of the track in seconds.
 Format getFileFormat()
          Returns the file format.
 Format getFormat(int track)
          Returns the media format of the specified track.
 int getTrackCount()
          Returns the number of tracks.
 boolean isDataLimitReached()
          Returns true if the limit for media data has been reached.
 boolean isVFRSupported()
           
 void write(int track, Buffer buf)
          Writes a sample into the specified track.
 void write(int track, java.awt.image.BufferedImage image, long duration)
           
 void writeSample(int track, byte[] data, int off, int len, long duration, boolean isSync)
           
 void writeSamples(int track, int sampleCount, byte[] data, int off, int len, long sampleDuration, boolean isSync)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ImageSequenceWriter

public ImageSequenceWriter()
Method Detail

addTrack

public int addTrack(Format format)
             throws java.io.IOException
Description copied from interface: MovieWriter
Adds a track to the writer for a suggested input format.

The format should at least specify the desired FormatKeys.MediaType. The actual input format is a refined version of the suggested format. For example, if a MovieWriter only supports fixed frame rate video, then the MovieWriter will extend the format with that information.

If the suggested input format is not compatible, then an IOException is thrown. For example, if a MovieWriter only supports fixed frame rate video, but a format with variable frame rate was requested.

Specified by:
addTrack in interface MovieWriter
Parameters:
format - The desired input format of the track. The actual input format may be a refined version of the specified format.
Returns:
The track number.
Throws:
java.io.IOException

getFileFormat

public Format getFileFormat()
                     throws java.io.IOException
Description copied from interface: MovieWriter
Returns the file format.

Specified by:
getFileFormat in interface MovieWriter
Throws:
java.io.IOException

getTrackCount

public int getTrackCount()
Description copied from interface: MovieWriter
Returns the number of tracks.

Specified by:
getTrackCount in interface MovieWriter

getFormat

public Format getFormat(int track)
Description copied from interface: MovieWriter
Returns the media format of the specified track. This is a refined version of the format that was requested when the track was added. See MovieWriter.addTrack(org.monte.media.Format).

Specified by:
getFormat in interface MovieWriter
Parameters:
track - Track number.
Returns:
The media format of the track.

addVideoTrack

public int addVideoTrack(java.io.File dir,
                         java.lang.String filenameFormatter,
                         int width,
                         int height)
Adds a video track.

Parameters:
dir - The output directory.
filenameFormatter - a format string for a filename with a number, for example "frame_%d0000$.png";
width - the image width
height - the image height
Returns:
Returns the track index.
Throws:
java.lang.IllegalArgumentException - if the width or the height is smaller than 1.

write

public void write(int track,
                  java.awt.image.BufferedImage image,
                  long duration)
           throws java.io.IOException
Throws:
java.io.IOException

write

public void write(int track,
                  Buffer buf)
           throws java.io.IOException
Description copied from interface: MovieWriter
Writes a sample into the specified track. Does nothing if the discard-flag in the buffer is set to true.

Specified by:
write in interface MovieWriter
Specified by:
write in interface Multiplexer
Parameters:
track - The track number.
buf - The buffer containing the sample data.
Throws:
java.io.IOException

writeSample

public void writeSample(int track,
                        byte[] data,
                        int off,
                        int len,
                        long duration,
                        boolean isSync)
                 throws java.io.IOException
Throws:
java.io.IOException

writeSamples

public void writeSamples(int track,
                         int sampleCount,
                         byte[] data,
                         int off,
                         int len,
                         long sampleDuration,
                         boolean isSync)
                  throws java.io.IOException
Throws:
java.io.IOException

close

public void close()
           throws java.io.IOException
Description copied from interface: MovieWriter
Closes the writer.

Specified by:
close in interface MovieWriter
Specified by:
close in interface Multiplexer
Throws:
java.io.IOException

isVFRSupported

public boolean isVFRSupported()

isDataLimitReached

public boolean isDataLimitReached()
Description copied from interface: MovieWriter
Returns true if the limit for media data has been reached. If this limit is reached, no more samples should be added to the movie.

This limit is imposed by data structures of the movie file which will overflow if more samples are added to the movie.

FIXME - Maybe replace by getCapacity():long.

Specified by:
isDataLimitReached in interface MovieWriter

getDuration

public Rational getDuration(int track)
Returns the sampleDuration of the track in seconds.

Specified by:
getDuration in interface MovieWriter

Copyright 2012-04-26 Werner Randelshofer