05e98ac3f11f225efc1e758f2d6cc0f6b37601b8
[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 -- 2017, 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 eu.svjatoslav.meviz.encoder.converters.*;
13
14 import java.util.ArrayList;
15 import java.util.List;
16
17 public class FormatsRegistry {
18
19     private final ArrayList<AbstractConverter> encoders = new ArrayList<>();
20
21     public FormatsRegistry() {
22         // video conversion
23         registerEncoder(new Ffmpeg2theora());
24         registerEncoder(new AvconvVideo());
25
26         // image conversion
27         registerEncoder(new Convert());
28
29         // image to text (OCR)
30         registerEncoder(new Ocr());
31
32         // audio conversion
33         registerEncoder(new Ogg2Wav());
34         registerEncoder(new Flac());
35         registerEncoder(new AvconvAudio());
36         registerEncoder(new Midi2Wav());
37     }
38
39     public List<AbstractConverter> getEncoders(final String sourceFormat,
40                                                final String targetFormat) {
41
42         final String sourceFormatLowerCase = sourceFormat.toLowerCase();
43         final String targetFormatLowerCase = targetFormat.toLowerCase();
44
45         final ArrayList<AbstractConverter> encoders = new ArrayList<>();
46
47         for (final AbstractConverter encoder : this.encoders)
48             if (encoder.supportsSource(sourceFormatLowerCase))
49                 if (encoder.supportsTarget(targetFormatLowerCase)) {
50                     encoders.add(encoder);
51                     return encoders;
52                 }
53
54         return encoders;
55     }
56
57     private void registerEncoder(final AbstractConverter encoder) {
58         encoders.add(encoder);
59     }
60
61 }