summaryrefslogtreecommitdiff
path: root/webcam/media/NeaveMicrophone.as
diff options
context:
space:
mode:
Diffstat (limited to 'webcam/media/NeaveMicrophone.as')
-rw-r--r--[-rwxr-xr-x]webcam/media/NeaveMicrophone.as206
1 files changed, 103 insertions, 103 deletions
diff --git a/webcam/media/NeaveMicrophone.as b/webcam/media/NeaveMicrophone.as
index 6a46ee7..4f6e6c1 100755..100644
--- a/webcam/media/NeaveMicrophone.as
+++ b/webcam/media/NeaveMicrophone.as
@@ -1,104 +1,104 @@
-/**
- * Neave Microphone
- *
- * Copyright (C) 2008 Paul Neave
- * http://www.neave.com/
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation at http://www.gnu.org/licenses/gpl.html
- */
-
-package com.neave.media
-{
- import flash.events.*;
- import flash.media.*;
- import flash.system.*;
- import flash.utils.*;
-
- public class NeaveMicrophone
- {
- static private var mic:Microphone;
- static private var gainTimer:Timer;
-
- public function NeaveMicrophone() { }
-
- /**
- * Sets up and returns the microphone object
- *
- * @return A microphone object
- */
- static public function getMicrophone():Microphone
- {
- // Return the same microphone if it has been successfully requested before
- if (mic != null)
- {
- if (mic.muted) Security.showSettings(SecurityPanel.PRIVACY);
- else NeaveMicrophone.startAutoGain();
- return mic;
- }
-
- gainTimer = new Timer(100);
-
- // Get the microphone
- mic = Microphone.getMicrophone();
- if (mic != null)
- {
- // Set properties if a microphone was found
- mic.setLoopBack(true);
- mic.rate = 44;
- mic.gain = 25;
- mic.setSilenceLevel(0);
- mic.setUseEchoSuppression(true);
- mic.soundTransform = new SoundTransform(0); // Mute microphone from sounding on speakers
- mic.addEventListener(StatusEvent.STATUS, NeaveMicrophone.statusListener);
-
- return mic;
- }
- else
- {
- // No microphone found
- Security.showSettings(SecurityPanel.MICROPHONE);
- return new Microphone();
- }
- }
-
- /**
- * Microphone status response
- */
- static private function statusListener(e:StatusEvent):void
- {
- if (e.code == "Microphone.Unmuted") NeaveMicrophone.startAutoGain();
- else NeaveMicrophone.stopAutoGain();
- }
-
- /**
- * Set up gain control
- */
- static public function startAutoGain():void
- {
- gainTimer.start();
- if (!gainTimer.hasEventListener(TimerEvent.TIMER)) gainTimer.addEventListener(TimerEvent.TIMER, setGain);
- }
-
- /**
- * Stop gain control
- */
- static public function stopAutoGain():void
- {
- gainTimer.stop();
- gainTimer.reset();
- gainTimer.removeEventListener(TimerEvent.TIMER, setGain);
- }
-
- /**
- * Dynamically adjust the microphone's gain value
- */
- static private function setGain(e:TimerEvent):void
- {
- if (mic.activityLevel < 15) mic.gain = 30;
- else if (mic.activityLevel > 90) mic.gain = 20;
- else mic.gain = 25;
- }
- }
+/**
+ * Neave Microphone
+ *
+ * Copyright (C) 2008 Paul Neave
+ * http://www.neave.com/
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation at http://www.gnu.org/licenses/gpl.html
+ */
+
+package com.neave.media
+{
+ import flash.events.*;
+ import flash.media.*;
+ import flash.system.*;
+ import flash.utils.*;
+
+ public class NeaveMicrophone
+ {
+ static private var mic:Microphone;
+ static private var gainTimer:Timer;
+
+ public function NeaveMicrophone() { }
+
+ /**
+ * Sets up and returns the microphone object
+ *
+ * @return A microphone object
+ */
+ static public function getMicrophone():Microphone
+ {
+ // Return the same microphone if it has been successfully requested before
+ if (mic != null)
+ {
+ if (mic.muted) Security.showSettings(SecurityPanel.PRIVACY);
+ else NeaveMicrophone.startAutoGain();
+ return mic;
+ }
+
+ gainTimer = new Timer(100);
+
+ // Get the microphone
+ mic = Microphone.getMicrophone();
+ if (mic != null)
+ {
+ // Set properties if a microphone was found
+ mic.setLoopBack(true);
+ mic.rate = 44;
+ mic.gain = 25;
+ mic.setSilenceLevel(0);
+ mic.setUseEchoSuppression(true);
+ mic.soundTransform = new SoundTransform(0); // Mute microphone from sounding on speakers
+ mic.addEventListener(StatusEvent.STATUS, NeaveMicrophone.statusListener);
+
+ return mic;
+ }
+ else
+ {
+ // No microphone found
+ Security.showSettings(SecurityPanel.MICROPHONE);
+ return new Microphone();
+ }
+ }
+
+ /**
+ * Microphone status response
+ */
+ static private function statusListener(e:StatusEvent):void
+ {
+ if (e.code == "Microphone.Unmuted") NeaveMicrophone.startAutoGain();
+ else NeaveMicrophone.stopAutoGain();
+ }
+
+ /**
+ * Set up gain control
+ */
+ static public function startAutoGain():void
+ {
+ gainTimer.start();
+ if (!gainTimer.hasEventListener(TimerEvent.TIMER)) gainTimer.addEventListener(TimerEvent.TIMER, setGain);
+ }
+
+ /**
+ * Stop gain control
+ */
+ static public function stopAutoGain():void
+ {
+ gainTimer.stop();
+ gainTimer.reset();
+ gainTimer.removeEventListener(TimerEvent.TIMER, setGain);
+ }
+
+ /**
+ * Dynamically adjust the microphone's gain value
+ */
+ static private function setGain(e:TimerEvent):void
+ {
+ if (mic.activityLevel < 15) mic.gain = 30;
+ else if (mic.activityLevel > 90) mic.gain = 20;
+ else mic.gain = 25;
+ }
+ }
} \ No newline at end of file