Index: WebContent/src/base/hibernate/hibRtmpConnection.lzx
===================================================================
--- WebContent/src/base/hibernate/hibRtmpConnection.lzx	(revision 4616)
+++ WebContent/src/base/hibernate/hibRtmpConnection.lzx	(working copy)
@@ -1292,7 +1292,6 @@
             <netparam><method name="getValue">return parent.publicSID;</method></netparam>
         </netRemoteCallHib>
 
-<!--
         <netRemoteCallHib name="receiveExclusiveAudioFlag" funcname="receiveExclusiveAudioFlag">
             <netparam><method name="getValue">return null;</method></netparam>
             <handler name="ondata" args="value">
@@ -1300,15 +1299,20 @@
                     //The onResult-Handler will be called be the rtmpconnection
                     var obj = canvas._videocontainer.getVideoObjectByPublicSID(value.publicSID);
 
+                    var iHaveAudio = (canvas.publicSID == value.publicSID);
                     for (var i=0; i<obj.parent.subviews.length; i++) {
-                        if (canvas.publicSID == obj.parent.subviews[i].publicSID) {
-                            if (canvas.publicSID == value.publicSID) {
-                                obj.parent.subviews[i].muteMicrophone(false);
+                        var itIsMyVideo = (canvas.publicSID == obj.parent.subviews[i].publicSID);
+                        var heHasAudio = (value.publicSID == obj.parent.subviews[i].publicSID);
+                        if (iHaveAudio) {
+                            if (itIsMyVideo) {
+                                obj.parent.subviews[i].simpleMuteMicrophone(false);
                             } else {
-                                obj.parent.subviews[i].muteMicrophone(true);
+                                obj.parent.subviews[i].setMicMuted(true);
                             }
                         } else {
-                            if (obj.parent.subviews[i].publicSID == value.publicSID) {
+                            if (itIsMyVideo) {
+                                obj.parent.subviews[i].simpleMuteMicrophone(true);
+                            } else if (heHasAudio){
                                 obj.parent.subviews[i].setMicMuted(false);
                             } else {
                                 obj.parent.subviews[i].setMicMuted(true);
@@ -1318,7 +1322,6 @@
                 ]]>
             </handler>
         </netRemoteCallHib>
-         -->
 
         <netRemoteCallHib name="switchMicMuted" funcname="switchMicMuted">
             <attribute name="publicSID" value="" type="string" />
Index: WebContent/src/modules/conference/eventuserlist/resources/mic.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: WebContent/src/modules/conference/flexibleConferenceRoom/baseConferenceRoom.lzx
===================================================================
--- WebContent/src/modules/conference/flexibleConferenceRoom/baseConferenceRoom.lzx	(revision 4616)
+++ WebContent/src/modules/conference/flexibleConferenceRoom/baseConferenceRoom.lzx	(working copy)
@@ -133,8 +133,19 @@
     <method name="ringring">
     	if ($debug) Debug.write("ringring - ringring - ringring");
     </method>
+
+    <handler name="onkeydown" reference="lz.Keys" args="keyCode">
+        var GIVE_EXCLUSIVE_AUDIO_KEY = 123; // F12
+
+        if (GIVE_EXCLUSIVE_AUDIO_KEY == keyCode) {
+            var obj = canvas._videocontainer.getVideoObjectByPublicSID(canvas.publicSID);
+            if (null != obj) {
+                obj._giveExclusiveAudioView._micButton.onclick.sendEvent();
+            }
+            return;
+        }
+    </handler>
     
-    
 </class>
 
 </library>
\ No newline at end of file
Index: WebContent/src/modules/conference/video/baseVideoObject.lzx
===================================================================
--- WebContent/src/modules/conference/video/baseVideoObject.lzx	(revision 4616)
+++ WebContent/src/modules/conference/video/baseVideoObject.lzx	(working copy)
@@ -88,6 +88,7 @@
             if (this.publicSID == canvas.publicSID) {
             	this._toolbar._resync._tip.setAttribute("labelid",610);
             }
+            this._giveExclusiveAudioView.bringToFront();
             
         ]]>
     
@@ -447,7 +448,49 @@
         </miniIconsPresenter> 
          --> 
         
-    </view>         
+    </view>
+
+    <view name="_giveExclusiveAudioView" x="${(parent.width)*0.5 - 20}" y="${(parent.height)*0.5 - 20}"
+            visible="false">
+        <miniIcons name="_micButton" width="40" height="40" resource="mic_rsc" showhandcursor="true">
+            <handler name="onclick">
+                <![CDATA[
+                    canvas.thishib.giveExclusiveAudio.publicSID = parent.parent.publicSID;
+                    canvas.thishib.giveExclusiveAudio.doCall();
+                ]]>
+            </handler>
+            <labelTooltip labelid="1386" />
+        </miniIcons>
+    </view>
+
+    <handler name="onmouseover">
+        <![CDATA[
+        if (this.isInterview) {
+            return;
+        }
+        if (this.minimized) {
+            return;
+        }
+        var itIsMyVideo = (canvas.publicSID == this.publicSID);
+        if (canvas.ismoderator || itIsMyVideo) {
+            this._giveExclusiveAudioView.setAttribute("visible", true);
+        }
+        ]]>
+    </handler>
+
+    <handler name="onmouseout">
+        <![CDATA[
+        if (this.isInterview) {
+            return;
+        }
+        if (this.minimized) {
+            return;
+        }
+        if (canvas.ismoderator) {
+            this._giveExclusiveAudioView.setAttribute("visible", false);
+        }
+        ]]>
+    </handler>
     
     <dragstate name="dragger" />
     <resizestate name="rs"/>
@@ -503,6 +546,17 @@
         ]]>
     </method>
 
+    <method name="simpleMuteMicrophone" args="micMuted">
+        if (micMuted) {
+            if ($debug) Debug.write("############ SET GAIN 0");
+            this._chatvideoinner._videostream.micro.setGain(0);
+        } else {
+            if ($debug) Debug.write("############ SET GAIN 50");
+            this._chatvideoinner._videostream.micro.setGain(50);
+        }
+        this.setMicMuted(micMuted);
+    </method>
+
     <!--
         This will mute it only locally, that means on other screens 
         the user might be still online and loud
