Revision: 10706
Author: [email protected]
Date: Wed Mar 10 23:14:54 2010
Log: Taking care of MultimediaSource/Sink
http://code.google.com/p/mobicents/source/detail?r=10706
Modified:
/trunk/servers/media/core/server-impl/src/main/java/org/mobicents/media/server/EndpointImpl.java
=======================================
---
/trunk/servers/media/core/server-impl/src/main/java/org/mobicents/media/server/EndpointImpl.java
Wed Mar 10 04:40:54 2010
+++
/trunk/servers/media/core/server-impl/src/main/java/org/mobicents/media/server/EndpointImpl.java
Wed Mar 10 23:14:54 2010
@@ -51,6 +51,8 @@
import org.mobicents.media.server.spi.ConnectionState;
import org.mobicents.media.server.spi.Endpoint;
import org.mobicents.media.server.spi.MediaType;
+import org.mobicents.media.server.spi.MultimediaSink;
+import org.mobicents.media.server.spi.MultimediaSource;
import org.mobicents.media.server.spi.NotificationListener;
import org.mobicents.media.server.spi.ResourceGroup;
import org.mobicents.media.server.spi.ResourceUnavailableException;
@@ -157,6 +159,8 @@
return new MediaType[] { MediaType.AUDIO };
} else if (media.equals("video")) {
return new MediaType[] { MediaType.VIDEO };
+ } else if (media.equals("*")){
+ return new MediaType[] { MediaType.AUDIO,
MediaType.VIDEO };
} else
throw new IllegalArgumentException("Unknown media type
" + media);
}
@@ -172,14 +176,21 @@
ComponentFactory factory = sourceFactory.get(media);
// creating media source
- MediaSource source = (MediaSource)
factory.newInstance(this);
+ Component source = factory.newInstance(this);
source.setEndpoint(this);
// determine media types related to this source
MediaType[] list = getMediaTypes(media);
// apply source
for (int i = 0; i < list.length; i++) {
- sources.put(list[i], source);
+
+ if(source instanceof MediaSource){
+ sources.put(list[i],
(MediaSource)source);
+ } else if(source instanceof MultimediaSource ){
+
sources.put(list[i],((MultimediaSource)source).getMediaSource(list[i]));
+ } else{
+ logger.warn("Component "+ source.toString()+ " is neither instance of
MediaSource or MultimediaSource");
+ }
// update list of available media types
if (!mediaTypes.contains(list[i])) {
mediaTypes.add(list[i]);
@@ -215,14 +226,20 @@
ComponentFactory factory = sinkFactory.get(media);
// creating media source
- MediaSink sink = (MediaSink) factory.newInstance(this);
+ Component sink = factory.newInstance(this);
sink.setEndpoint(this);
// determine media types related to this source
MediaType[] list = getMediaTypes(media);
// apply source
for (int i = 0; i < list.length; i++) {
- sinks.put(list[i], sink);
+ if(sink instanceof MediaSink){
+ sinks.put(list[i], (MediaSink)sink);
+ } else if(sink instanceof MultimediaSink){
+ sinks.put(list[i],
((MultimediaSink)sink).getMediaSink(list[i]));
+ } else{
+ logger.warn("Component "+ sink.toString()+ " is neither instance of
MediaSink or MultimediaSink");
+ }
// update list of available media types
if (!mediaTypes.contains(list[i])) {
mediaTypes.add(list[i]);