MediaConverter.java |
/* * JBoss, the OpenSource J2EE webOS * * Distributable under LGPL license. See terms of license at gnu.org. */ package javax.emb; import java.io.InputStream; import java.io.OutputStream; /** * A media converter performs actual conversions of media content. * Implementations of this interface can work in one of two ways: Synchronous * converters perform conversions completely before returning the input stream * on the converted content. Asynchronous converters return a piped input * stream immediately after checking the input and spawning a new thread to * perform the conversion. The latter has the advantage of being very memory * efficient in case the result is consumed immediately, while the first tends * to be more robust because it doesn't require the maintenance of additional * threads of execution. * * <p>The design assumes a converter is instantiated for a specific kind of * conversion. Therefore, classes implementing this interface should take a * media converter spec as a constructor argument. Said media converter spec * should contain the necessary conversion parameters, for example the desired * bandwidth for a WAV to MP3 converter. * * @version <tt>$Revision: 1.3 $</tt> * @author <a href="mailto:ricardoarguello@users.sourceforge.net">Ricardo * Argüello</a> */ public interface MediaConverter { /** * Converts the media content offered on the given input stream and returns * the converted media content as an input stream. Implementations of this * method may, but are not required to, spawn a new thread to perform the * actual conversion, and return a PipedInputStream immediately. * * @param inputStream the input stream to process. * @return the processed input stream. * @throws java.lang.NullPointerException if the value passed is <code>null</code>. * @throws javax.emb.FormatSyntaxException if the content provided with the * input stream does not meet the expected format syntax. * @throws javax.emb.FormatFeatureException if the content provided in the * input stream utilizes a format feature not supported by the * receiver. * @throws javax.emb.LinkTranslationException if the content provided * contains relative links to child media objects. * @throws javax.emb.ContentAccessException if an I/O problem occurs or if * said child links cannot be resolved to child media content. * @throws javax.emb.ConversionException if the conversion fails because a * conversion specific problem occurred. */ InputStream process(InputStream inputStream) throws MediaException; /** * Converts the media content offered on the given input stream and writes * the converted media content on the given output stream. In any case, this * method will block until the conversion is completed. * * @param inputStream the stream to process. * @param outputStream the processed stream. * @throws java.lang.NullPointerException if one the values passed is <code>null</code>. * @throws javax.emb.FormatSyntaxException if the content provided with the * input stream does not meet the expected format syntax. * @throws javax.emb.FormatFeatureException if the content provided in the * input stream utilizes a format feature not supported by the * receiver. * @throws javax.emb.LinkTranslationException if the content provided * contains relative links to child media objects. * @throws javax.emb.ContentAccessException if an I/O problem occurs or if * said child links cannot be resolved to child media content. * @throws javax.emb.ConversionException is thrown if the conversion fails * because a conversion specific problem occurred. */ public void process(InputStream inputStream, OutputStream outputStream) throws MediaException; }
MediaConverter.java |