Revision: 0dd5381c1e6a
Author:   unknown <yulian@Venera.(none)>
Date:     Fri Jan  4 08:34:35 2013
Log:      Implemented oob detector

http://code.google.com/p/mediaserver/source/detail?r=0dd5381c1e6a

Modified:
 /client/jsr-309/tck/media/decreasingvolume-recorded.wav
 /client/jsr-309/tck/server.log
/io/rtp/src/main/java/org/mobicents/media/server/impl/rtp/rfc2833/DtmfInput.java /media-server-docs/sources-mobicents/src/main/resources/META-INF/MANIFEST.MF /media-server-docs/sources-mobicents/src/main/resources/META-INF/maven/org.mobicents.media.docs/mobicents-mms-docs-sources/pom.properties /resources/telephony/dtmf/src/main/java/org/mobicents/media/server/impl/resource/dtmf/DetectorImpl.java

=======================================
--- /client/jsr-309/tck/media/decreasingvolume-recorded.wav Fri Jan 4 07:17:31 2013 +++ /client/jsr-309/tck/media/decreasingvolume-recorded.wav Fri Jan 4 08:34:35 2013
Binary file, no diff available.
=======================================
--- /client/jsr-309/tck/server.log      Fri Jan  4 07:17:31 2013
+++ /client/jsr-309/tck/server.log      Fri Jan  4 08:34:35 2013
@@ -1,6 +1,6 @@
-2013-01-04 16:49:09,719 DEBUG [TestBase] (main) Loading file:/opt/mobsource/medianew/client/jsr-309/tck/exclude-list.properties -2013-01-04 16:49:09,730 INFO [Runner] (main) Start mandatory.functional.mediagroup.PlayerTest.test_2_1_1_1_Play javadoc::Joinable::1 javadoc::MediaGroup::1 javadoc::MediaGroup::6 javadoc::Player::1 javadoc::PlayerEvent::15 -2013-01-04 16:49:09,730 DEBUG [TestBase] (main) Getting a MsControlFactory instance -2013-01-04 16:49:09,752 INFO [DriverImpl] (main) Initializing MGCP on /127.0.0.1:2729 -2013-01-04 16:49:09,767 WARN [JainMgcpStackImpl] (main) Failed to locate properties file, using default values -2013-01-04 16:49:09,776 INFO [JainMgcpStackImpl] (main) Jain Mgcp stack bound to IP /127.0.0.1 and UDP port 2729 +2013-01-04 18:07:24,539 DEBUG [TestBase] (main) Loading file:/opt/mobsource/medianew/client/jsr-309/tck/exclude-list.properties +2013-01-04 18:07:24,541 INFO [Runner] (main) Start mandatory.functional.mediagroup.PlayerTest.test_2_1_1_1_Play javadoc::Joinable::1 javadoc::MediaGroup::1 javadoc::MediaGroup::6 javadoc::Player::1 javadoc::PlayerEvent::15 +2013-01-04 18:07:24,541 DEBUG [TestBase] (main) Getting a MsControlFactory instance +2013-01-04 18:07:24,563 INFO [DriverImpl] (main) Initializing MGCP on /127.0.0.1:2729 +2013-01-04 18:07:24,577 WARN [JainMgcpStackImpl] (main) Failed to locate properties file, using default values +2013-01-04 18:07:24,587 INFO [JainMgcpStackImpl] (main) Jain Mgcp stack bound to IP /127.0.0.1 and UDP port 2729
=======================================
--- /io/rtp/src/main/java/org/mobicents/media/server/impl/rtp/rfc2833/DtmfInput.java Fri Jan 4 07:17:31 2013 +++ /io/rtp/src/main/java/org/mobicents/media/server/impl/rtp/rfc2833/DtmfInput.java Fri Jan 4 08:34:35 2013
@@ -136,7 +136,6 @@
             currFrame.setLength(packetSize);
             currFrame.setFormat(dtmf);
             currFrame.setDuration(period);
- System.arraycopy(DtmfTonesData.buffer[data[0]], i*packetSize, currFrame.getData(), 0, packetSize); currFrame.setTimestamp(clock.convertToAbsoluteTime(event.getTimestamp() + 20*i));
             frameBuffer.add(currFrame);
         }
@@ -155,7 +154,6 @@
             currFrame.setLength(packetSize);
             currFrame.setFormat(dtmf);
             currFrame.setDuration(period);
- System.arraycopy(DtmfTonesData.buffer[data[0]], i*packetSize, currFrame.getData(), 0, packetSize); currFrame.setTimestamp(clock.convertToAbsoluteTime(event.getTimestamp() + 20*i));
             frameBuffer.add(currFrame);
         }
=======================================
--- /media-server-docs/sources-mobicents/src/main/resources/META-INF/MANIFEST.MF Fri Jan 4 07:17:31 2013 +++ /media-server-docs/sources-mobicents/src/main/resources/META-INF/MANIFEST.MF Fri Jan 4 08:34:35 2013
@@ -13,7 +13,7 @@
 Bundle-Vendor: TeleStax, Inc.
 Implementation-Vendor-Id: TeleStax, Inc.
 Bundle-Version: 3.0.0.FINAL-SNAPSHOT
-Bnd-LastModified: 1357310815220
+Bnd-LastModified: 1357315414823
 Bundle-ManifestVersion: 2
 Bundle-License: http://www.gnu.org/licenses/lgpl-2.1.html
 Bundle-Description: Mobicents :: Parent pom for 2.x releases
=======================================
--- /media-server-docs/sources-mobicents/src/main/resources/META-INF/maven/org.mobicents.media.docs/mobicents-mms-docs-sources/pom.properties Fri Jan 4 07:17:31 2013 +++ /media-server-docs/sources-mobicents/src/main/resources/META-INF/maven/org.mobicents.media.docs/mobicents-mms-docs-sources/pom.properties Fri Jan 4 08:34:35 2013
@@ -1,5 +1,5 @@
 #Generated by Maven
-#Fri Jan 04 16:46:55 IST 2013
+#Fri Jan 04 18:03:34 IST 2013
 version=3.0.0.FINAL-SNAPSHOT
 groupId=org.mobicents.media.docs
 artifactId=mobicents-mms-docs-sources
=======================================
--- /resources/telephony/dtmf/src/main/java/org/mobicents/media/server/impl/resource/dtmf/DetectorImpl.java Fri Jan 4 07:17:31 2013 +++ /resources/telephony/dtmf/src/main/java/org/mobicents/media/server/impl/resource/dtmf/DetectorImpl.java Fri Jan 4 08:34:35 2013
@@ -79,6 +79,7 @@
         {"*", "0", "#", "D"}
     };
private final static String[] evtID = new String[]{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "#", "*"}; + private final static String[] oobEvtID = new String[]{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "*", "#", "A", "B", "C", "D"};

     private final static int[] lowFreq = new int[]{697, 770, 852, 941};
private final static int[] highFreq = new int[]{1209, 1336, 1477, 1633};
@@ -112,6 +113,7 @@

     private AudioOutput output;
     private OOBOutput oobOutput;
+    private OOBDetector oobDetector;

private static final Logger logger = Logger.getLogger(DetectorImpl.class) ;

@@ -136,6 +138,9 @@
         output=new AudioOutput(scheduler,ComponentType.RECORDER.getType());
oobOutput=new OOBOutput(scheduler,ComponentType.RECORDER.getType());
         output.join(this);
+
+        oobDetector=new OOBDetector();
+        oobOutput.join(oobDetector);
     }

     public AudioOutput getAudioOutput()
@@ -403,4 +408,53 @@

     }

+    private class OOBDetector extends AbstractSink
+    {
+        private byte currTone=(byte)0xFF;
+        private long latestSeq=0;
+        byte[] data = new byte[4];
+
+       public OOBDetector()
+       {
+               super("oob detector");
+       }
+
+       public void onMediaTransfer(Frame buffer) throws IOException {
+               byte[] data=buffer.getData();
+               if(data.length!=4)
+               return;
+
+               boolean endOfEvent=false;
+            endOfEvent=(data[1] & 0X80)!=0;
+
+           //lets ignore end of event packets
+            if(endOfEvent)
+               return;
+
+ //lets update sync data , allowing same tone come after 160ms from previous tone , not including end of tone
+            if(currTone==data[0])
+            {
+ if((buffer.getSequenceNumber()<(latestSeq+8)) && buffer.getSequenceNumber()>(latestSeq-8))
+               {
+                       if(buffer.getSequenceNumber()>latestSeq)
+                               latestSeq=buffer.getSequenceNumber();
+
+                    return;
+               }
+            }
+
+            latestSeq=buffer.getSequenceNumber();
+            currTone=data[0];
+            fireEvent(oobEvtID[currTone]);
+       }
+
+       public void activate()
+        {
+        }
+
+       public void deactivate()
+        {
+
+        }
+    }
 }

Reply via email to