Refactored to remove code duplication.
[meviz.git] / src / main / java / eu / svjatoslav / meviz / encoder / FormatsRegistry.java
index a78ff95..0d8bc8e 100755 (executable)
@@ -12,58 +12,45 @@ package eu.svjatoslav.meviz.encoder;
 import java.util.ArrayList;
 import java.util.List;
 
-import eu.svjatoslav.meviz.encoder.converters.Avi2Ogv;
-import eu.svjatoslav.meviz.encoder.converters.Converter;
-import eu.svjatoslav.meviz.encoder.converters.Jpeg2Png;
-import eu.svjatoslav.meviz.encoder.converters.Mkv2Mp4;
-import eu.svjatoslav.meviz.encoder.converters.Mp42Ogv;
-import eu.svjatoslav.meviz.encoder.converters.Mts2Mkv;
-import eu.svjatoslav.meviz.encoder.converters.Mts2Mp4;
-import eu.svjatoslav.meviz.encoder.converters.Ogg2Mp3;
+import eu.svjatoslav.meviz.encoder.converters.Ffmpeg2theora;
+import eu.svjatoslav.meviz.encoder.converters.AbstractConverter;
+import eu.svjatoslav.meviz.encoder.converters.AvconvVideo;
+import eu.svjatoslav.meviz.encoder.converters.Ffmpeg;
+import eu.svjatoslav.meviz.encoder.converters.AvconvAudio;
 import eu.svjatoslav.meviz.encoder.converters.Ogg2Wav;
-import eu.svjatoslav.meviz.encoder.converters.Png2Tiff;
-import eu.svjatoslav.meviz.encoder.converters.Tif2Png;
-import eu.svjatoslav.meviz.encoder.converters.Tiff2Png;
-import eu.svjatoslav.meviz.encoder.converters.Wav2flac;
-import eu.svjatoslav.meviz.encoder.converters.Wav2mp3;
+import eu.svjatoslav.meviz.encoder.converters.Convert;
+import eu.svjatoslav.meviz.encoder.converters.Flac;
 
 public class FormatsRegistry {
 
-       public ArrayList<Converter> encoders = new ArrayList<Converter>();
+       public ArrayList<AbstractConverter> encoders = new ArrayList<AbstractConverter>();
 
        public FormatsRegistry() {
                // video conversion
-               registerEncoder(new Avi2Ogv());
-               registerEncoder(new Mp42Ogv());
-               registerEncoder(new Mts2Mp4());
-               registerEncoder(new Mts2Mkv());
-               registerEncoder(new Mkv2Mp4());
+               registerEncoder(new Ffmpeg2theora());
+               registerEncoder(new Ffmpeg());
+               registerEncoder(new AvconvVideo());
 
                // image conversion
-               registerEncoder(new Jpeg2Png());
-               registerEncoder(new Png2Tiff());
-               registerEncoder(new Tiff2Png());
-               registerEncoder(new Tif2Png());
+               registerEncoder(new Convert());
 
                // audio conversion
                registerEncoder(new Ogg2Wav());
-               registerEncoder(new Wav2mp3());
-               registerEncoder(new Wav2flac());
-               registerEncoder(new Ogg2Mp3());
+               registerEncoder(new Flac());
+               registerEncoder(new AvconvAudio());
        }
 
-       public List<Converter> getEncoders(final String sourceFormat,
+       public List<AbstractConverter> getEncoders(final String sourceFormat,
                        final String targetFormat) {
 
                final String sourceFormatLowerCase = sourceFormat.toLowerCase();
                final String targetFormatLowerCase = targetFormat.toLowerCase();
 
-               final ArrayList<Converter> encoders = new ArrayList<Converter>();
+               final ArrayList<AbstractConverter> encoders = new ArrayList<AbstractConverter>();
 
-               for (final Converter encoder : this.encoders)
-                       if (encoder.getSourceFileExtension().equals(sourceFormatLowerCase))
-                               if (encoder.getTargetFileExtension().equals(
-                                               targetFormatLowerCase)) {
+               for (final AbstractConverter encoder : this.encoders)
+                       if (encoder.supportsSource(sourceFormatLowerCase))
+                               if (encoder.supportsTarget(targetFormatLowerCase)) {
                                        encoders.add(encoder);
                                        return encoders;
                                }
@@ -71,7 +58,7 @@ public class FormatsRegistry {
                return encoders;
        }
 
-       public void registerEncoder(final Converter encoder) {
+       public void registerEncoder(final AbstractConverter encoder) {
                encoders.add(encoder);
        }