added OCR capability
[meviz.git] / src / main / java / eu / svjatoslav / meviz / encoder / FormatsRegistry.java
index ab794c3..6b8d129 100755 (executable)
@@ -1,7 +1,7 @@
 /*
  * Meviz - Various tools collection to work with multimedia.
  * Copyright (C) 2012, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu
- * 
+ *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of version 2 of the GNU General Public License
  * as published by the Free Software Foundation.
@@ -12,61 +12,58 @@ 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.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.AbstractConverter;
+import eu.svjatoslav.meviz.encoder.converters.AvconvAudio;
+import eu.svjatoslav.meviz.encoder.converters.AvconvVideo;
+import eu.svjatoslav.meviz.encoder.converters.Convert;
+import eu.svjatoslav.meviz.encoder.converters.Ffmpeg2theora;
+import eu.svjatoslav.meviz.encoder.converters.Flac;
+import eu.svjatoslav.meviz.encoder.converters.Midi2Wav;
+import eu.svjatoslav.meviz.encoder.converters.Ocr;
 import eu.svjatoslav.meviz.encoder.converters.Ogg2Wav;
-import eu.svjatoslav.meviz.encoder.converters.Png2Tiff;
-import eu.svjatoslav.meviz.encoder.converters.Tiff2Png;
-import eu.svjatoslav.meviz.encoder.converters.Wav2mp3;
 
 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());
+       public FormatsRegistry() {
+               // video conversion
+               registerEncoder(new Ffmpeg2theora());
+               registerEncoder(new AvconvVideo());
 
-        // image conversion
-        registerEncoder(new Jpeg2Png());
-        registerEncoder(new Png2Tiff());
-        registerEncoder(new Tiff2Png());
+               // image conversion
+               registerEncoder(new Convert());
 
-        // audio conversion
-        registerEncoder(new Ogg2Wav());
-        registerEncoder(new Wav2mp3());
-        registerEncoder(new Ogg2Mp3());
-    }
+               // image to text (OCR)
+               registerEncoder(new Ocr());
 
-    public List<Converter> getEncoders(final String sourceFormat, final String targetFormat) {
+               // audio conversion
+               registerEncoder(new Ogg2Wav());
+               registerEncoder(new Flac());
+               registerEncoder(new AvconvAudio());
+               registerEncoder(new Midi2Wav());
+       }
 
-        final String sourceFormatLowerCase = sourceFormat.toLowerCase();
-        final String targetFormatLowerCase = targetFormat.toLowerCase();
+       public List<AbstractConverter> getEncoders(final String sourceFormat,
+                       final String targetFormat) {
 
-        final ArrayList<Converter> encoders = new ArrayList<Converter>();
+               final String sourceFormatLowerCase = sourceFormat.toLowerCase();
+               final String targetFormatLowerCase = targetFormat.toLowerCase();
 
-        for (final Converter encoder : this.encoders) {
-            if (encoder.getSourceFileExtension().equals(sourceFormatLowerCase)) {
-                if (encoder.getTargetFileExtension().equals(targetFormatLowerCase)) {
-                    encoders.add(encoder);
-                    return encoders;
-                }
-            }
-        }
+               final ArrayList<AbstractConverter> encoders = new ArrayList<AbstractConverter>();
 
-        return encoders;
-    }
+               for (final AbstractConverter encoder : this.encoders)
+                       if (encoder.supportsSource(sourceFormatLowerCase))
+                               if (encoder.supportsTarget(targetFormatLowerCase)) {
+                                       encoders.add(encoder);
+                                       return encoders;
+                               }
 
-    public void registerEncoder(final Converter encoder) {
-        encoders.add(encoder);
-    }
+               return encoders;
+       }
+
+       public void registerEncoder(final AbstractConverter encoder) {
+               encoders.add(encoder);
+       }
 
 }