001
002package net.filebot.subtitle;
003
004import net.filebot.MediaTypes;
005import net.filebot.util.ExtensionFileFilter;
006
007public enum SubtitleFormat {
008
009        SubRip {
010
011                @Override
012                public SubtitleDecoder getDecoder() {
013                        return SubRipReader::decode;
014                }
015
016                @Override
017                public ExtensionFileFilter getFilter() {
018                        return MediaTypes.SRT;
019                }
020        },
021
022        MicroDVD {
023
024                @Override
025                public SubtitleDecoder getDecoder() {
026                        return MicroDVDReader::decode;
027                }
028
029                @Override
030                public ExtensionFileFilter getFilter() {
031                        return MediaTypes.SUB;
032                }
033        },
034
035        SubViewer {
036
037                @Override
038                public SubtitleDecoder getDecoder() {
039                        return SubViewerReader::decode;
040                }
041
042                @Override
043                public ExtensionFileFilter getFilter() {
044                        return MediaTypes.SUB;
045                }
046        },
047
048        SubStationAlpha {
049
050                @Override
051                public SubtitleDecoder getDecoder() {
052                        return SubStationAlphaReader::decode;
053                }
054
055                @Override
056                public ExtensionFileFilter getFilter() {
057                        return MediaTypes.SSA;
058                }
059        },
060
061        SAMI {
062
063                @Override
064                public SubtitleDecoder getDecoder() {
065                        return SamiDecoder::decode;
066                }
067
068                @Override
069                public ExtensionFileFilter getFilter() {
070                        return MediaTypes.SAMI;
071                }
072        },
073
074        MPL2 {
075                @Override
076                public SubtitleDecoder getDecoder() {
077                        return MPlayerReader::decode;
078                }
079
080                @Override
081                public ExtensionFileFilter getFilter() {
082                        return new ExtensionFileFilter("mpl", "txt");
083                }
084        },
085
086        TMPlayer {
087                @Override
088                public SubtitleDecoder getDecoder() {
089                        return TMPlayerReader::decode;
090                }
091
092                @Override
093                public ExtensionFileFilter getFilter() {
094                        return new ExtensionFileFilter("tmp", "txt");
095                }
096        };
097
098        public abstract SubtitleDecoder getDecoder();
099
100        public abstract ExtensionFileFilter getFilter();
101
102}