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]);

Reply via email to