initial commit
[meviz.git] / src / main / java / eu / svjatoslav / meviz / encoder / FormatsRegistry.java
1 /*
2  * Meviz - Various tools collection to work with multimedia.
3  * Copyright (C) 2012, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu
4  * 
5  * This program is free software; you can redistribute it and/or
6  * modify it under the terms of version 2 of the GNU General Public License
7  * as published by the Free Software Foundation.
8  */
9
10 package eu.svjatoslav.meviz.encoder;
11
12 import java.util.ArrayList;
13 import java.util.List;
14
15 import eu.svjatoslav.meviz.encoder.converters.Avi2Ogv;
16 import eu.svjatoslav.meviz.encoder.converters.Converter;
17 import eu.svjatoslav.meviz.encoder.converters.Jpeg2Png;
18 import eu.svjatoslav.meviz.encoder.converters.Mp42Ogv;
19 import eu.svjatoslav.meviz.encoder.converters.Mts2Mkv;
20 import eu.svjatoslav.meviz.encoder.converters.Mts2Mp4;
21 import eu.svjatoslav.meviz.encoder.converters.Ogg2Mp3;
22 import eu.svjatoslav.meviz.encoder.converters.Ogg2Wav;
23 import eu.svjatoslav.meviz.encoder.converters.Png2Tiff;
24 import eu.svjatoslav.meviz.encoder.converters.Tiff2Png;
25 import eu.svjatoslav.meviz.encoder.converters.Wav2mp3;
26
27 public class FormatsRegistry {
28
29     public ArrayList<Converter> encoders = new ArrayList<Converter>();
30
31     public FormatsRegistry() {
32         // video conversion
33         registerEncoder(new Avi2Ogv());
34         registerEncoder(new Mp42Ogv());
35         registerEncoder(new Mts2Mp4());
36         registerEncoder(new Mts2Mkv());
37
38         // image conversion
39         registerEncoder(new Jpeg2Png());
40         registerEncoder(new Png2Tiff());
41         registerEncoder(new Tiff2Png());
42
43         // audio conversion
44         registerEncoder(new Ogg2Wav());
45         registerEncoder(new Wav2mp3());
46         registerEncoder(new Ogg2Mp3());
47     }
48
49     public List<Converter> getEncoders(final String sourceFormat, final String targetFormat) {
50
51         final String sourceFormatLowerCase = sourceFormat.toLowerCase();
52         final String targetFormatLowerCase = targetFormat.toLowerCase();
53
54         final ArrayList<Converter> encoders = new ArrayList<Converter>();
55
56         for (final Converter encoder : this.encoders) {
57             if (encoder.getSourceFileExtension().equals(sourceFormatLowerCase)) {
58                 if (encoder.getTargetFileExtension().equals(targetFormatLowerCase)) {
59                     encoders.add(encoder);
60                     return encoders;
61                 }
62             }
63         }
64
65         return encoders;
66     }
67
68     public void registerEncoder(final Converter encoder) {
69         encoders.add(encoder);
70     }
71
72 }