Merge pull request #752 from ritzalam/update-to-red5-2015-08-10-snapshot
Update to red5 2015 08 10 snapshot
This commit is contained in:
commit
9451876c72
@ -3,25 +3,30 @@
|
||||
<classpathentry kind="src" path="src/main/java"/>
|
||||
<classpathentry kind="src" path="src/test/java"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
|
||||
<classpathentry kind="lib" path="lib/com.springsource.slf4j.api-1.6.1.jar"/>
|
||||
<classpathentry kind="lib" path="lib/com.springsource.slf4j.bridge-1.6.1.jar"/>
|
||||
<classpathentry kind="lib" path="lib/aopalliance-1.0.jar"/>
|
||||
<classpathentry kind="lib" path="lib/commons-pool-1.5.6.jar"/>
|
||||
<classpathentry kind="lib" path="lib/easymock-2.4.jar"/>
|
||||
<classpathentry kind="lib" path="lib/jcl-over-slf4j-1.6.1.jar"/>
|
||||
<classpathentry kind="lib" path="lib/gson-1.7.1.jar"/>
|
||||
<classpathentry kind="lib" path="lib/jcip-annotations-1.0.jar"/>
|
||||
<classpathentry kind="lib" path="lib/jcl-over-slf4j-1.7.9.jar"/>
|
||||
<classpathentry kind="lib" path="lib/jedis-2.0.0.jar"/>
|
||||
<classpathentry kind="lib" path="lib/jul-to-slf4j-1.6.1.jar"/>
|
||||
<classpathentry kind="lib" path="lib/log4j-over-slf4j-1.6.1.jar"/>
|
||||
<classpathentry kind="lib" path="lib/logback-classic-0.9.28.jar"/>
|
||||
<classpathentry kind="lib" path="lib/logback-core-0.9.28.jar"/>
|
||||
<classpathentry kind="lib" path="lib/mina-core-2.0.4.jar"/>
|
||||
<classpathentry kind="lib" path="lib/mina-integration-beans-2.0.4.jar"/>
|
||||
<classpathentry kind="lib" path="lib/mina-integration-jmx-2.0.4.jar"/>
|
||||
<classpathentry kind="lib" path="lib/jul-to-slf4j-1.7.9.jar"/>
|
||||
<classpathentry kind="lib" path="lib/log4j-over-slf4j-1.7.9.jar"/>
|
||||
<classpathentry kind="lib" path="lib/logback-classic-1.1.2.jar"/>
|
||||
<classpathentry kind="lib" path="lib/logback-core-1.1.2.jar"/>
|
||||
<classpathentry kind="lib" path="lib/mina-core-2.0.8.jar"/>
|
||||
<classpathentry kind="lib" path="lib/mina-integration-beans-2.0.8.jar"/>
|
||||
<classpathentry kind="lib" path="lib/mina-integration-jmx-2.0.8.jar"/>
|
||||
<classpathentry kind="lib" path="lib/red5-io-1.0.5-RELEASE.jar"/>
|
||||
<classpathentry kind="lib" path="lib/red5-server-1.0.5-RELEASE.jar"/>
|
||||
<classpathentry kind="lib" path="lib/red5-server-common-1.0.5-RELEASE.jar"/>
|
||||
<classpathentry kind="lib" path="lib/servlet-api-2.5.jar"/>
|
||||
<classpathentry kind="lib" path="lib/spring-beans-3.0.6.RELEASE.jar"/>
|
||||
<classpathentry kind="lib" path="lib/spring-context-3.0.6.RELEASE.jar"/>
|
||||
<classpathentry kind="lib" path="lib/spring-core-3.0.6.RELEASE.jar"/>
|
||||
<classpathentry kind="lib" path="lib/spring-web-3.0.6.RELEASE.jar"/>
|
||||
<classpathentry kind="lib" path="lib/testng-5.8.jar"/>
|
||||
<classpathentry kind="lib" path="lib/red5-1.0r4406.jar"/>
|
||||
<classpathentry kind="lib" path="lib/slf4j-api-1.7.9.jar"/>
|
||||
<classpathentry kind="lib" path="lib/spring-aop-4.0.8.RELEASE.jar"/>
|
||||
<classpathentry kind="lib" path="lib/spring-beans-4.0.7.RELEASE.jar"/>
|
||||
<classpathentry kind="lib" path="lib/spring-context-4.0.7.RELEASE.jar"/>
|
||||
<classpathentry kind="lib" path="lib/spring-core-4.0.7.RELEASE.jar"/>
|
||||
<classpathentry kind="lib" path="lib/spring-web-4.0.8.RELEASE.jar"/>
|
||||
<classpathentry kind="lib" path="lib/bbb-common-message-0.0.5.jar"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
||||
|
@ -63,9 +63,9 @@ dependencies {
|
||||
providedCompile 'org.springframework:spring-core:4.0.7.RELEASE@jar'
|
||||
|
||||
// Red5
|
||||
providedCompile 'org/red5:red5-server:1.0.5-RELEASE@jar'
|
||||
providedCompile 'org.red5:red5-server-common:1.0.5-RELEASE@jar'
|
||||
providedCompile 'org.red5:red5-io:1.0.5-RELEASE@jar'
|
||||
providedCompile 'org.red5:red5-server:1.0.6-SNAPSHOT@jar'
|
||||
providedCompile 'org.red5:red5-server-common:1.0.6-SNAPSHOT@jar'
|
||||
providedCompile 'org.red5:red5-io:1.0.6-SNAPSHOT@jar'
|
||||
|
||||
// Logging
|
||||
providedCompile 'ch.qos.logback:logback-core:1.1.2@jar'
|
||||
|
@ -62,9 +62,9 @@ dependencies {
|
||||
providedCompile 'org.springframework:spring-context:4.0.8.RELEASE@jar'
|
||||
providedCompile 'org.springframework:spring-core:4.0.8.RELEASE@jar'
|
||||
|
||||
providedCompile 'org/red5:red5-server:1.0.5-RELEASE@jar'
|
||||
providedCompile 'org.red5:red5-server-common:1.0.5-RELEASE@jar'
|
||||
providedCompile 'org.red5:red5-io:1.0.5-RELEASE@jar'
|
||||
providedCompile 'org.red5:red5-server:1.0.6-SNAPSHOT@jar'
|
||||
providedCompile 'org.red5:red5-server-common:1.0.6-SNAPSHOT@jar'
|
||||
providedCompile 'org.red5:red5-io:1.0.6-SNAPSHOT@jar'
|
||||
|
||||
// Logging
|
||||
providedCompile 'ch.qos.logback:logback-core:1.1.2@jar'
|
||||
|
@ -77,8 +77,8 @@ dependencies {
|
||||
providedCompile 'org.springframework:spring-core:4.0.8.RELEASE@jar'
|
||||
|
||||
// Red5
|
||||
providedCompile 'org/red5:red5-server:1.0.5-RELEASE@jar'
|
||||
providedCompile 'org.red5:red5-server-common:1.0.5-RELEASE@jar'
|
||||
providedCompile 'org.red5:red5-server:1.0.6-SNAPSHOT@jar'
|
||||
providedCompile 'org.red5:red5-server-common:1.0.6-SNAPSHOT@jar'
|
||||
|
||||
// Logging
|
||||
providedCompile 'ch.qos.logback:logback-core:1.1.2@jar'
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<actionScriptProperties analytics="false" mainApplicationPath="BigBlueButton.mxml" projectUUID="f330b47a-ef44-431d-8c83-1768892be326" version="10">
|
||||
<compiler additionalCompilerArguments="-locale en_US" autoRSLOrdering="true" copyDependentFiles="true" fteInMXComponents="false" generateAccessible="true" htmlExpressInstall="true" htmlGenerate="true" htmlHistoryManagement="true" htmlPlayerVersionCheck="true" includeNetmonSwc="false" outputFolderPath="bin-debug" removeUnusedRSL="true" sourceFolderPath="src" strict="true" targetPlayerVersion="0.0.0" useApolloConfig="false" useDebugRSLSwfs="true" verifyDigests="true" warn="true">
|
||||
<actionScriptProperties analytics="false" mainApplicationPath="BigBlueButton.mxml" projectUUID="f330b47a-ef44-431d-8c83-1768892be326" version="11">
|
||||
<compiler additionalCompilerArguments="-locale en_US" autoRSLOrdering="true" copyDependentFiles="true" fteInMXComponents="false" generateAccessible="true" htmlExpressInstall="true" htmlGenerate="true" htmlHistoryManagement="true" htmlPlayerVersionCheck="true" includeNetmonSwc="false" outputFolderPath="bin-debug" removeUnusedRSL="true" sourceFolderPath="src" strict="true" targetPlayerVersion="0.0.0" useApolloConfig="false" useDebugRSLSwfs="true" useFlashSDK="false" verifyDigests="true" warn="true">
|
||||
<compilerSourcePath/>
|
||||
<libraryPath defaultLinkType="0">
|
||||
<libraryPathEntry kind="4" path="">
|
||||
@ -17,6 +17,7 @@
|
||||
<application path="BigBlueButton.mxml"/>
|
||||
</applications>
|
||||
<modules/>
|
||||
<workers/>
|
||||
<buildCSSFiles/>
|
||||
<flashCatalyst validateFlashCatalystCompatibility="false"/>
|
||||
</actionScriptProperties>
|
||||
|
@ -208,7 +208,7 @@ package org.bigbluebutton.modules.videoconf.business
|
||||
ns.videoStreamSettings = h264;
|
||||
}
|
||||
|
||||
ns.publish(e.stream);
|
||||
ns.publish(e.stream, "live");
|
||||
camerasPublishing[e.stream] = ns;
|
||||
}
|
||||
|
||||
|
@ -84,9 +84,9 @@ dependencies {
|
||||
providedCompile 'org.springframework:spring-core:4.0.8.RELEASE@jar'
|
||||
|
||||
// Red5
|
||||
providedCompile 'org/red5:red5-server:1.0.5-RELEASE@jar'
|
||||
providedCompile 'org.red5:red5-server-common:1.0.5-RELEASE@jar'
|
||||
providedCompile 'org.red5:red5-io:1.0.5-RELEASE@jar'
|
||||
providedCompile 'org.red5:red5-server:1.0.6-SNAPSHOT@jar'
|
||||
providedCompile 'org.red5:red5-server-common:1.0.6-SNAPSHOT@jar'
|
||||
providedCompile 'org.red5:red5-io:1.0.6-SNAPSHOT@jar'
|
||||
|
||||
// Logging
|
||||
providedCompile 'ch.qos.logback:logback-core:1.1.2@jar'
|
||||
|
@ -81,5 +81,17 @@ public class ScreenVideo implements IVideoStreamCodec {
|
||||
log.debug("getting DecoderConfiguration");
|
||||
return data;
|
||||
}
|
||||
|
||||
@Override
|
||||
public FrameData getInterframe(int arg0) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getNumInterframes() {
|
||||
// TODO Auto-generated method stub
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -22,6 +22,7 @@ import java.io.IOException;
|
||||
import java.util.Collection;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.CopyOnWriteArraySet;
|
||||
|
||||
import org.red5.logging.Red5LoggerFactory;
|
||||
import org.red5.server.api.event.IEvent;
|
||||
import org.red5.server.api.scope.IScope;
|
||||
@ -38,12 +39,12 @@ import org.red5.server.messaging.PipeConnectionEvent;
|
||||
import org.red5.server.net.rtmp.event.IRTMPEvent;
|
||||
import org.red5.server.net.rtmp.event.Notify;
|
||||
import org.red5.server.net.rtmp.event.VideoData;
|
||||
import org.red5.server.net.rtmp.message.Constants;
|
||||
import org.red5.server.stream.message.RTMPMessage;
|
||||
import org.red5.codec.IVideoStreamCodec;
|
||||
import org.red5.codec.IStreamCodecInfo;
|
||||
import org.red5.codec.StreamCodecInfo;
|
||||
import org.slf4j.Logger;
|
||||
|
||||
import org.red5.server.api.stream.IStreamPacket;;
|
||||
|
||||
public class ScreenVideoBroadcastStream implements IBroadcastStream, IProvider, IPipeConnectionListener {
|
||||
@ -189,7 +190,7 @@ public class ScreenVideoBroadcastStream implements IBroadcastStream, IProvider,
|
||||
if (event instanceof IRTMPEvent) {
|
||||
IRTMPEvent rtmpEvent = (IRTMPEvent) event;
|
||||
if (livePipe != null) {
|
||||
RTMPMessage msg = RTMPMessage.build(rtmpEvent);
|
||||
RTMPMessage msg = RTMPMessage.build(rtmpEvent, Constants.SOURCE_TYPE_LIVE);
|
||||
|
||||
if (creationTime == null)
|
||||
creationTime = (long)rtmpEvent.getTimestamp();
|
||||
@ -199,7 +200,7 @@ public class ScreenVideoBroadcastStream implements IBroadcastStream, IProvider,
|
||||
streamCodecInfo.setHasVideo(true);
|
||||
streamCodecInfo.setVideoCodec(videoStreamCodec);
|
||||
videoStreamCodec.reset();
|
||||
videoStreamCodec.addData(((VideoData) rtmpEvent).getData());
|
||||
videoStreamCodec.addData(((VideoData) rtmpEvent).getData());
|
||||
livePipe.pushMessage(msg);
|
||||
|
||||
// Notify listeners about received packet
|
||||
|
@ -44,10 +44,12 @@ class SessionSVC(sessionManager:SessionManagerSVC, room: String, screenDim: Dime
|
||||
private var stop = true
|
||||
private var mouseLoc:Point = new Point(100,100)
|
||||
private var pendingGenKeyFrameRequest = false
|
||||
private var timestamp = 0L;
|
||||
private var lastUserKeyFrameRequest = 0L
|
||||
private var sentInitialKeyFrame = false;
|
||||
|
||||
private var lastKeyFrameSentOn = 0L
|
||||
private var streamStartedOn = 0L
|
||||
private var streamStarted = false
|
||||
|
||||
/*
|
||||
* Schedule to generate a key frame after 30seconds of a request.
|
||||
* This prevents us from generating unnecessary key frames when
|
||||
@ -64,13 +66,23 @@ class SessionSVC(sessionManager:SessionManagerSVC, room: String, screenDim: Dime
|
||||
}
|
||||
}
|
||||
|
||||
def scheduleGenerateFrame() {
|
||||
val mainActor = self
|
||||
actor {
|
||||
Thread.sleep(interframeInterval)
|
||||
mainActor ! "GenerateFrame"
|
||||
}
|
||||
}
|
||||
def scheduleGenerateFrame() {
|
||||
val mainActor = self
|
||||
actor {
|
||||
Thread.sleep(interframeInterval)
|
||||
val now = System.currentTimeMillis()
|
||||
if ((now - lastKeyFrameSentOn) > 60000) {
|
||||
// Generate a key frame every 1 minute. The reason is that if
|
||||
// packets are dropped for a user with slow connection, packets
|
||||
// will continue to be dropped for that user until a key frame
|
||||
// is sent. (ralam july 15, 2015)
|
||||
mainActor ! "GenerateAKeyFrame"
|
||||
} else {
|
||||
mainActor ! "GenerateFrame"
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
def act() = {
|
||||
loop {
|
||||
@ -87,20 +99,20 @@ class SessionSVC(sessionManager:SessionManagerSVC, room: String, screenDim: Dime
|
||||
}
|
||||
}
|
||||
case GenerateKeyFrame => {
|
||||
val now = System.currentTimeMillis()
|
||||
// Wait 30sec between keyframe request from the users. This prevents
|
||||
// creating many keyframes when users join the session close to one
|
||||
// another.
|
||||
if (now - lastUserKeyFrameRequest > 30000) {
|
||||
lastUserKeyFrameRequest = now
|
||||
scheduleGenerateKeyFrame(keyFrameInterval)
|
||||
}
|
||||
|
||||
// do not generate a key frame every time a user joins as we
|
||||
// generate key frames regularly now.
|
||||
//scheduleGenerateKeyFrame(keyFrameInterval)
|
||||
}
|
||||
case "GenerateAKeyFrame" => {
|
||||
pendingGenKeyFrameRequest = false
|
||||
log.debug("Session: Generating Key Frame for room %s", room)
|
||||
generateFrame(true)
|
||||
pendingGenKeyFrameRequest = false
|
||||
log.debug("Session: Generating Key Frame for room %s", room)
|
||||
generateFrame(true)
|
||||
lastKeyFrameSentOn = System.currentTimeMillis()
|
||||
if (!stop) {
|
||||
scheduleGenerateFrame()
|
||||
} else {
|
||||
exit()
|
||||
}
|
||||
}
|
||||
case b: UpdateSessionBlock => updateBlock(b.position, b.blockData, b.keyframe, b.seqNum)
|
||||
case m: Any => log.warning("Session: Unknown message [%s]", m)
|
||||
@ -153,8 +165,15 @@ class SessionSVC(sessionManager:SessionManagerSVC, room: String, screenDim: Dime
|
||||
sessionManager ! new RemoveSession(room)
|
||||
} else {
|
||||
if (blockManager != null) {
|
||||
timestamp += 50;
|
||||
stream ! new UpdateStream(room, blockManager.generateFrame(keyframe), timestamp)
|
||||
|
||||
val now = System.currentTimeMillis()
|
||||
if (!streamStarted) {
|
||||
streamStarted = true
|
||||
streamStartedOn = now
|
||||
}
|
||||
|
||||
val ts = now - streamStartedOn
|
||||
stream ! new UpdateStream(room, blockManager.generateFrame(keyframe), ts)
|
||||
stream ! new UpdateStreamMouseLocation(room, mouseLoc)
|
||||
}
|
||||
}
|
||||
|
@ -82,9 +82,9 @@ dependencies {
|
||||
compile 'org.springframework:spring-core:4.0.8.RELEASE@jar'
|
||||
|
||||
// Red5
|
||||
compile 'org/red5:red5-server:1.0.5-RELEASE@jar'
|
||||
compile 'org.red5:red5-server-common:1.0.5-RELEASE@jar'
|
||||
compile 'org.red5:red5-io:1.0.5-RELEASE@jar'
|
||||
compile 'org.red5:red5-server:1.0.6-SNAPSHOT@jar'
|
||||
compile 'org.red5:red5-server-common:1.0.6-SNAPSHOT@jar'
|
||||
compile 'org.red5:red5-io:1.0.6-SNAPSHOT@jar'
|
||||
|
||||
// Logging
|
||||
compile 'ch.qos.logback:logback-core:1.1.2@jar'
|
||||
|
Loading…
Reference in New Issue
Block a user