diff --git a/src/net/java/sip/communicator/impl/neomedia/MediaServiceImpl.java b/src/net/java/sip/communicator/impl/neomedia/MediaServiceImpl.java index aea92bdbb..75950806f 100644 --- a/src/net/java/sip/communicator/impl/neomedia/MediaServiceImpl.java +++ b/src/net/java/sip/communicator/impl/neomedia/MediaServiceImpl.java @@ -715,13 +715,15 @@ public Object getVideoPreviewComponent(MediaDevice device // A Player is documented to be created on a connected DataSource. dataSource.connect(); + final MediaLocator locator = dataSource.getLocator(); + Processor player = Manager.createProcessor(dataSource); player.addControllerListener(new ControllerListener() { public void controllerUpdate(ControllerEvent event) { - controllerUpdateForPreview(event, videoContainer); + controllerUpdateForPreview(event, videoContainer, locator); } }); player.configure(); @@ -740,9 +742,10 @@ public void controllerUpdate(ControllerEvent event) * Listens and shows the video in the video container when needed. * @param event the event when player has ready visual component. * @param videoContainer the container. + * @param locator input DataSource locator */ private static void controllerUpdateForPreview(ControllerEvent event, - JComponent videoContainer) + JComponent videoContainer, MediaLocator locator) { if (event instanceof ConfigureCompleteEvent) { @@ -759,11 +762,25 @@ private static void controllerUpdateForPreview(ControllerEvent event, { for (TrackControl trackControl : trackControls) { - VideoFlipEffect flipEffect = new VideoFlipEffect(); + Codec codecs[] = null; SwScaler scaler = new SwScaler(); - trackControl.setCodecChain( - new Codec[] {flipEffect, scaler}); + if(locator.getProtocol().equals( + ImageStreamingAuto.LOCATOR_PROTOCOL)) + { + // do not flip desktop + codecs = new Codec[1]; + codecs[0] = scaler; + } + else + { + VideoFlipEffect flipEffect = new VideoFlipEffect(); + codecs = new Codec[2]; + codecs[0] = flipEffect; + codecs[1] = scaler; + } + + trackControl.setCodecChain(codecs); break; } }