package org.jaudiotagger.audio.asf.io; import org.jaudiotagger.audio.asf.data.GUID; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; /** * Reads an ASF chunk and writes a modified copy.<br> * * @author Christian Laireiter */ public interface ChunkModifier { /** * Determines, whether the modifier handles chunks identified by given * <code>guid</code>. * * @param guid * GUID to test. * @return <code>true</code>, if this modifier can be used to modify the * chunk. */ boolean isApplicable(GUID guid); /** * Writes a modified copy of the chunk into the <code>destination.</code>.<br> * * @param guid * GUID of the chunk to modify. * @param source * a stream providing the chunk, starting at the chunks length * field. * @param destination * destination for the modified chunk. * @return the differences between source and destination. * @throws IOException * on I/O errors. */ ModificationResult modify(GUID guid, InputStream source, OutputStream destination) throws IOException; }