1:
37:
38: package ;
39:
40: import ;
41:
42: import ;
43:
44: import ;
45: import ;
46: import ;
47: import ;
48: import ;
49: import ;
50: import ;
51: import ;
52: import ;
53: import ;
54: import ;
55: import ;
56:
57:
60: public class GStreamerMixer
61: implements Mixer
62: {
63: public static class GstInfo extends Info
64: {
65:
66:
67:
68: private static final String name = "Classpath GStreamer Sound Audio Engine";
69:
70:
71: private static final String vendor = "GNU Classpath";
72:
73:
74: private static final String desc = "GStreamer-based software mixer";
75:
76:
77: private static final String vers = "0.0.1";
78:
79: protected GstInfo()
80: {
81: super(name, vendor, desc, vers);
82: }
83: }
84:
85: public static final String GST_BACKEND = GstInfo.name;
86: public static final String GST_DECODER = "decoder";
87:
88: private static AudioFormat[] BASIC_FORMATS =
89: {
90: new AudioFormat(AudioFormat.Encoding.PCM_UNSIGNED,
91: AudioSystem.NOT_SPECIFIED,
92: AudioSystem.NOT_SPECIFIED,
93: AudioSystem.NOT_SPECIFIED,
94: AudioSystem.NOT_SPECIFIED,
95: AudioSystem.NOT_SPECIFIED,
96: true),
97:
98: new AudioFormat(AudioFormat.Encoding.PCM_UNSIGNED,
99: AudioSystem.NOT_SPECIFIED,
100: AudioSystem.NOT_SPECIFIED,
101: AudioSystem.NOT_SPECIFIED,
102: AudioSystem.NOT_SPECIFIED,
103: AudioSystem.NOT_SPECIFIED,
104: false),
105: };
106:
107:
108: private static final Mixer.Info INFO = new GStreamerMixer.GstInfo();
109:
110: public Line getLine(Line.Info info)
111: throws LineUnavailableException
112: {
113:
114:
115:
116:
117: Class clazz = info.getLineClass();
118: DataLine.Info _info = (DataLine.Info) info;
119:
120: if (clazz == SourceDataLine.class)
121: {
122: for (AudioFormat format : _info.getFormats())
123: {
124:
125: if (format.properties().containsKey(GST_BACKEND));
126: {
127:
128: return new GstSourceDataLine(format);
129: }
130: }
131: }
132:
133:
134:
135: throw new LineUnavailableException("Cannot open a line");
136: }
137:
138: public int getMaxLines(Line.Info info)
139: {
140:
141: return 1;
142: }
143:
144: public Info getMixerInfo()
145: {
146: return INFO;
147: }
148:
149: public javax.sound.sampled.Line.Info[] getSourceLineInfo()
150: {
151:
152: return null;
153: }
154:
155: public Line.Info[] getSourceLineInfo(Line.Info info)
156: {
157:
158: return null;
159: }
160:
161: public Line[] getSourceLines()
162: {
163:
164: return null;
165: }
166:
167: public javax.sound.sampled.Line.Info[] getTargetLineInfo()
168: {
169:
170: return null;
171: }
172:
173: public Line.Info[] getTargetLineInfo(Line.Info info)
174: {
175:
176: return null;
177: }
178:
179: public Line[] getTargetLines()
180: {
181:
182: return null;
183: }
184:
185: public boolean isLineSupported(Line.Info info)
186: {
187:
188:
189:
190:
191: if (info instanceof DataLine.Info)
192: {
193: DataLine.Info _dinfo = (DataLine.Info) info;
194: _dinfo.getFormats();
195: }
196:
197: return true;
198: }
199:
200: public boolean isSynchronizationSupported(Line[] lines, boolean sync)
201: {
202:
203: return false;
204: }
205:
206: public void synchronize(Line[] lines, boolean sync)
207: {
208:
209:
210: }
211:
212: public void unsynchronize(Line[] lines)
213: {
214:
215:
216: }
217:
218: public void addLineListener(LineListener listener)
219: {
220:
221:
222: }
223:
224: public void close()
225: {
226:
227:
228: }
229:
230: public Control getControl(Type what)
231: {
232:
233: return null;
234: }
235:
236: public Control[] getControls()
237: {
238:
239: return null;
240: }
241:
242: public javax.sound.sampled.Line.Info getLineInfo()
243: {
244:
245: return null;
246: }
247:
248: public boolean isControlSupported(Type what)
249: {
250:
251: return false;
252: }
253:
254: public boolean isOpen()
255: {
256:
257: return false;
258: }
259:
260: public void open() throws LineUnavailableException
261: {
262:
263:
264: }
265:
266: public void removeLineListener(LineListener listener)
267: {
268:
269: }
270: }