net.sf.fmj.media.multiplexer
Class MultipartMixedReplaceMux

java.lang.Object
  extended by net.sf.fmj.media.AbstractControls
      extended by net.sf.fmj.media.AbstractPlugIn
          extended by net.sf.fmj.media.AbstractMultiplexer
              extended by net.sf.fmj.media.multiplexer.AbstractInputStreamMux
                  extended by net.sf.fmj.media.multiplexer.MultipartMixedReplaceMux
All Implemented Interfaces:
Controls, Multiplexer, PlugIn

public class MultipartMixedReplaceMux
extends AbstractInputStreamMux

Multiplexer for multipart/x-mixed-replace streams, which is a common format used for MJPG IP cameras. Also adds a nonstandard property header to each part, X-FMJ-Timestamp, with the JMF/FMJ timestamp as a long integer string. Always uses the same boundary string, "--ssBoundaryFMJ".

Author:
Ken Larson

Field Summary
static java.lang.String BOUNDARY
           
static java.lang.String TIMESTAMP_KEY
           
 
Fields inherited from class net.sf.fmj.media.AbstractMultiplexer
inputFormats, numTracks, outputContentDescriptor
 
Fields inherited from interface javax.media.PlugIn
BUFFER_PROCESSED_FAILED, BUFFER_PROCESSED_OK, INPUT_BUFFER_NOT_CONSUMED, OUTPUT_BUFFER_NOT_FILLED, PLUGIN_TERMINATED
 
Constructor Summary
MultipartMixedReplaceMux()
           
 
Method Summary
protected  void doProcess(Buffer buffer, int trackID, java.io.OutputStream os)
           
 Format[] getSupportedInputFormats()
           
 Format setInputFormat(Format format, int trackID)
           
 int setNumTracks(int numTracks)
           
 
Methods inherited from class net.sf.fmj.media.multiplexer.AbstractInputStreamMux
close, createInputStreamPushDataSource, getDataOutput, getSupportedOutputContentDescriptors, open, process
 
Methods inherited from class net.sf.fmj.media.AbstractMultiplexer
setContentDescriptor
 
Methods inherited from class net.sf.fmj.media.AbstractPlugIn
getName, reset
 
Methods inherited from class net.sf.fmj.media.AbstractControls
addControl, getControl, getControls, removeControl
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface javax.media.PlugIn
getName, reset
 
Methods inherited from interface javax.media.Controls
getControl, getControls
 

Field Detail

BOUNDARY

public static final java.lang.String BOUNDARY
See Also:
Constant Field Values

TIMESTAMP_KEY

public static final java.lang.String TIMESTAMP_KEY
See Also:
Constant Field Values
Constructor Detail

MultipartMixedReplaceMux

public MultipartMixedReplaceMux()
Method Detail

setNumTracks

public int setNumTracks(int numTracks)
Specified by:
setNumTracks in interface Multiplexer
Overrides:
setNumTracks in class AbstractInputStreamMux

getSupportedInputFormats

public Format[] getSupportedInputFormats()
Specified by:
getSupportedInputFormats in interface Multiplexer
Specified by:
getSupportedInputFormats in class AbstractInputStreamMux

setInputFormat

public Format setInputFormat(Format format,
                             int trackID)
Specified by:
setInputFormat in interface Multiplexer
Overrides:
setInputFormat in class AbstractMultiplexer

doProcess

protected void doProcess(Buffer buffer,
                         int trackID,
                         java.io.OutputStream os)
                  throws java.io.IOException
Overrides:
doProcess in class AbstractInputStreamMux
Throws:
java.io.IOException