<?xml version="1.0" encoding="UTF-8" ?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership.  The ASF licenses this file
  to you under the Apache License, Version 2.0 (the
  "License"); you may not use this file except in compliance
  with the License.  You may obtain a copy of the License at
  
      http://www.apache.org/licenses/LICENSE-2.0
    	  
  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an
  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  KIND, either express or implied.  See the License for the
  specific language governing permissions and limitations
  under the License.
  
-->
<library>


<!---
	contains microphone and camera for broadcasting,
	this class is used only in Meetings-Modus
 -->

 
<class name="videoObjectTestBroadcast" extends="view" >

    <event name="sendCameraStatus" />
    
    <event name="sendMicroStatus" />
    
	<view name="_chatvideoinner" x="0" y="0" height="${parent.height}" width="${parent.width}">
		
		<baseVideoStreamDevice name="_videostream" mode="broadcast" sendNotificationViaLocalConnection="false"
						 width="${parent.width}" height="${parent.height}" bgcolor="0x000000">
			<handler name="sendCameraStatus" args="camStatus">
                if ($debug) Debug.write("sendCameraStatus",camStatus);
                parent.parent.sendCameraStatus.sendEvent(camStatus);
            </handler>
            
            <handler name="sendMicroStatus" args="micStatus">
                if ($debug) Debug.write("sendMicroStatus",micStatus);
                parent.parent.sendMicroStatus.sendEvent(micStatus);
            </handler>
		</baseVideoStreamDevice>
		
	</view>	
</class>


</library>
