CIS Basic classes are being implemented
[living-lab-site.git] / cis / api / base.py
1 #!/usr/bin/env python
2
3 """
4 Base classes for the external programs API.
5 """
6
7 import cis_exceptions
8
9 class BaseTranscoder:
10     """
11     Abstractization of the API class for the transcoder program. 
12     """
13
14     prog_bin = None
15     input_file = None
16
17     # Recommended formats.
18     containers = {
19         "avi": None,
20         "flv": None,
21         "mp4": None,
22         "ogg": None,
23         "webm": None,
24         "mpegts": None
25     }
26     a_codecs = {
27         "mp3": None,
28         "vorbis": None
29     }
30     v_codecs = {
31         "h264": None,
32         "theora": None,
33         "vp8": None
34     }
35
36     def __init__(self, input_file, prog_bin=None):
37         self.input_file = input_file
38         self.prog_bin = prog_bin
39
40     def transcode(self, container, a_codec, v_codec,
41             a_bitrate=None, a_samplingrate=None, a_channels=None,
42             v_bitrate=None, v_fraterate=None, v_resolution=None, v_dar=None):
43         """
44         Transcodes the input file to an audio-video file.
45
46         container: possible values are listed in containers member as keys
47         a_codec: possible values are listed in a_codecs member as keys
48         v_codec: possible values are listed in v_codecs member as keys
49         """
50
51         pass
52
53     def transcode_audio(self, container, a_codec,
54             a_bitrate=None, a_samplingrate=None, a_channels=None):
55         pass
56
57     def transcode_video(self, container, v_codec,
58             v_bitrate=None, v_fraterate=None, v_resolution=None, v_dar=None):
59         pass
60
61     def tr_container(self, name):
62         """ Translates container API name into external program identifier."""
63
64         if not self.containers.has_key(name) or self.containers[name] == None:
65             raise cis_exceptions.NotImplementedException("Container " + name)
66
67         return self.containers[name]