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()
+ {
+
+ }
+ }
}