Re: Microphone and sip video
what line are you refering to? This code was changed recently (this particular line is in case of fallback: enchanced microphone is not available) On Tue, Mar 5, 2013 at 3:41 PM, Artyom Horuzhenko akhor...@gmail.comwrote: Hello Maxim, When I test video restreaming from sip to red5, it hangs at the first frame, but when I comment next line: _micro = Microphone.getMicrophone(valMic); in WebContent/swf10/video/editRecordStreamSWF10.lzx it works normal. Do you know why the video depends on microphone settings? -- WBR Maxim aka solomax
Re: Microphone and sip video
I have corrected this, thanks Committed revision 1452705. not sure why it hangs with normal microphone :( On Tue, Mar 5, 2013 at 4:04 PM, Artyom Horuzhenko akhor...@gmail.comwrote: line No. 240 2013/3/5 Maxim Solodovnik solomax...@gmail.com: what line are you refering to? This code was changed recently (this particular line is in case of fallback: enchanced microphone is not available) On Tue, Mar 5, 2013 at 3:41 PM, Artyom Horuzhenko akhor...@gmail.com wrote: Hello Maxim, When I test video restreaming from sip to red5, it hangs at the first frame, but when I comment next line: _micro = Microphone.getMicrophone(valMic); in WebContent/swf10/video/editRecordStreamSWF10.lzx it works normal. Do you know why the video depends on microphone settings? -- WBR Maxim aka solomax -- WBR Maxim aka solomax
[red5phone] r101 committed - Video support is added to red5sip
Revision: 101 Author: solomax...@gmail.com Date: Tue Mar 5 01:52:05 2013 Log: Video support is added to red5sip http://code.google.com/p/red5phone/source/detail?r=101 Added: /branches/red5sip/src/java/org/red5/codecs/SIPCodecH264.java /branches/red5sip/src/java/org/red5/sip/app/RTPStreamVideoReceiver.java /branches/red5sip/src/java/org/red5/sip/app/RTPStreamVideoSender.java /branches/red5sip/src/java/org/red5/sip/app/RTPVideoStream.java /branches/red5sip/src/java/org/red5/sip/app/SIPVideoConverter.java /branches/red5sip/src/java/org/red5/sip/app/SIPVideoLauncher.java Modified: /branches/red5sip/src/java/org/red5/codecs/SIPCodec.java /branches/red5sip/src/java/org/red5/codecs/SIPCodecFactory.java /branches/red5sip/src/java/org/red5/sip/app/Application.java /branches/red5sip/src/java/org/red5/sip/app/IMediaReceiver.java /branches/red5sip/src/java/org/red5/sip/app/PlayNetStream.java /branches/red5sip/src/java/org/red5/sip/app/RTMPRoomClient.java /branches/red5sip/src/java/org/red5/sip/app/RTPStreamMultiplexingSender.java /branches/red5sip/src/java/org/red5/sip/app/RTPStreamSender.java /branches/red5sip/src/java/org/red5/sip/app/SIPTransport.java /branches/red5sip/src/java/org/red5/sip/app/SIPUserAgent.java /branches/red5sip/src/java/org/red5/sip/app/SIPUserAgentProfile.java /branches/red5sip/src/java/org/red5/sip/app/SdpUtils.java === --- /dev/null +++ /branches/red5sip/src/java/org/red5/codecs/SIPCodecH264.java Tue Mar 5 01:52:05 2013 @@ -0,0 +1,114 @@ +package org.red5.codecs; + +public class SIPCodecH264 implements SIPCodec { + + private static final String codecName = H264; + private static final int codecId = 35; + private static int defaultEncodedFrameSize = 160; +private static int defaultDecodedFrameSize = 160; + private int outgoingPacketization = 9; +private int incomingPacketization = 9; + + @Override + public void encodeInit(int defaultEncodePacketization) { + if (this.outgoingPacketization == 0) { +this.outgoingPacketization = defaultEncodePacketization; +} + } + + @Override + public void decodeInit(int defaultDecodePacketization) { + if (this.incomingPacketization == 0) { +this.incomingPacketization = defaultDecodePacketization; +} + } + + @Override + public String codecNegotiateAttribute(String attributeName, + String localAttributeValue, String remoteAttributeValue) { + // TODO Auto-generated method stub + return null; + } + + @Override + public int getCodecBlankPacket(byte[] buffer, int offset) { + // TODO Auto-generated method stub + return 0; + } + + @Override + public int pcmToCodec(float[] bufferIn, byte[] bufferOut) { + // TODO Auto-generated method stub + return 0; + } + + @Override + public int codecToPcm(byte[] bufferIn, float[] bufferOut) { + // TODO Auto-generated method stub + return 0; + } + + @Override + public int getIncomingEncodedFrameSize() { + return (defaultEncodedFrameSize / SIPCodec.DEFAULT_PACKETIZATION) * incomingPacketization; + } + + @Override + public int getIncomingDecodedFrameSize() { + return (defaultDecodedFrameSize / SIPCodec.DEFAULT_PACKETIZATION) * incomingPacketization; + } + + @Override + public int getOutgoingEncodedFrameSize() { + return (defaultEncodedFrameSize / SIPCodec.DEFAULT_PACKETIZATION) * outgoingPacketization; + } + + @Override + public int getOutgoingDecodedFrameSize() { + return (defaultDecodedFrameSize / SIPCodec.DEFAULT_PACKETIZATION) * outgoingPacketization; + } + + @Override + public int getSampleRate() { + return 9; + } + + @Override + public String getCodecName() { + return codecName; + } + + @Override + public int getCodecId() { + return codecId; + } + + @Override + public int getIncomingPacketization() { + return (defaultEncodedFrameSize / SIPCodec.DEFAULT_PACKETIZATION) * incomingPacketization; + } + + @Override + public int getOutgoingPacketization() { + return 2048;//( defaultDecodedFrameSize / SIPCodec.DEFAULT_PACKETIZATION ) * outgoingPacketization; + } + + @Override + public void setLocalPtime(int localPtime) { + // TODO Auto-generated method stub + + } + + @Override + public void setRemotePtime(int remotePtime) { + // TODO Auto-generated method stub + + } + + @Override + public String[] getCodecMediaAttributes() { + // TODO Auto-generated method stub + return null; + } + +}
Re: How to change the font style
IMHO styles are part of openlaszlo. You can recompile openmeetings to anothger style by specifying a different style directory to openlaszlo compiler. Please take a note that openlaszlo is to be switched to html5 in openmeetings 3.0 05.03.2013 22:58 пользователь Behzad Rezaie behzadrezai...@gmail.com написал: Hello dear, I am working as a developer on OpenMeetings. Now, I want to change the font style of the project for almost all labels. With this in mind, I was wondering if you'd mind telling me which file(s) I should modify for such an action. Thanks in advance! Yours Sincerely, Behzad Rezaie
Sun SDK
hi guys, could you give me a hint, why the sun sdk is required for running om (not openJDK)? thanks in advance! cheers
Re: Sun SDK
Hallo Smoeker, OpenJDK works, yet it is a bit less stable than Sun due to higher memory concumption. 05.03.2013 23:46 пользователь Smoeker smoe...@gmail.com написал: hi guys, could you give me a hint, why the sun sdk is required for running om (not openJDK)? thanks in advance! cheers
[red5phone] r102 committed - Video: video stream switching is added;...
Revision: 102 Author: solomax...@gmail.com Date: Tue Mar 5 21:44:18 2013 Log: Video: video stream switching is added; logs cleanup http://code.google.com/p/red5phone/source/detail?r=102 Modified: /branches/red5sip/src/java/org/red5/sip/app/PlayNetStream.java /branches/red5sip/src/java/org/red5/sip/app/RTMPRoomClient.java /branches/red5sip/src/java/org/red5/sip/app/SIPVideoConverter.java === --- /branches/red5sip/src/java/org/red5/sip/app/PlayNetStream.java Tue Mar 5 01:52:05 2013 +++ /branches/red5sip/src/java/org/red5/sip/app/PlayNetStream.java Tue Mar 5 21:44:18 2013 @@ -7,6 +7,7 @@ import org.red5.server.net.rtmp.event.IRTMPEvent; import org.red5.server.net.rtmp.event.SerializeUtils; import org.red5.server.net.rtmp.event.VideoData; +import org.red5.server.net.rtmp.event.VideoData.FrameType; import org.red5.server.stream.AbstractClientStream; import org.red5.server.stream.IStreamData; import org.slf4j.Logger; @@ -24,10 +25,17 @@ private IMediaSender videoSender; private IMediaStream videoStream; + + private RTMPRoomClient client; + + private int currentStreamID = -1; + + private boolean keyframeReceived = false; - public PlayNetStream(IMediaSender audioSender, IMediaSender videoSender) { + public PlayNetStream(IMediaSender audioSender, IMediaSender videoSender, RTMPRoomClient client) { this.audioSender = audioSender; this.videoSender = videoSender; + this.client = client; } public void close() { @@ -56,8 +64,6 @@ videoSender.deleteStream(getStreamId()); } } - - private long sipStream = -1; public void dispatchEvent(IEvent event) { @@ -79,9 +85,25 @@ } if (rtmpEvent instanceof VideoData) { - if (sipStream == -1) - sipStream = rtmpEvent.getHeader().getStreamId(); - if (rtmpEvent.getHeader().getStreamId() != sipStream) return; + int newStreamId = client.getActiveVideoStreamID(); + if (rtmpEvent.getHeader().getStreamId() != newStreamId) { + return; + } + + if (currentStreamID != newStreamId) { + logger.debug(switching video to a new stream: + newStreamId); + currentStreamID = newStreamId; + keyframeReceived = false; + } + + if (((VideoData) rtmpEvent).getFrameType() == FrameType.KEYFRAME) { + keyframeReceived = true; + } + + if (!keyframeReceived) { + logger.debug(Keyframe is not received. Packet is ignored.); + return; + } int videoTs = rtmpEvent.getTimestamp(); IoBuffer videoData = ((VideoData) rtmpEvent).getData().asReadOnlyBuffer(); === --- /branches/red5sip/src/java/org/red5/sip/app/RTMPRoomClient.java Tue Mar 5 01:52:05 2013 +++ /branches/red5sip/src/java/org/red5/sip/app/RTMPRoomClient.java Tue Mar 5 21:44:18 2013 @@ -82,6 +82,7 @@ final private int roomId; final private String context; final private String host; + private int activeVideoStreamID = -1; public RTMPRoomClient(String host, String context, int roomId) { super(); @@ -154,6 +155,10 @@ protected void listBroadcastIds() { invoke(listRoomBroadcast, this); } + + public int getActiveVideoStreamID() { + return activeVideoStreamID; + } private void createPlayStream(long broadCastId) { @@ -177,12 +182,15 @@ if (conn != null streamIdInt != null (publishStreamId == null || streamIdInt.intValue() != publishStreamId)) { clientStreamMap.put(broadCastId, streamIdInt); - PlayNetStream stream = new PlayNetStream(audioSender, videoSender); +PlayNetStream stream = new PlayNetStream(audioSender, videoSender, RTMPRoomClient.this); stream.setConnection(conn); stream.setStreamId(streamIdInt.intValue()); conn.addClientStream(stream); play(streamIdInt, + broadCastId, -2000, -1000); stream.start(); + if (activeVideoStreamID == -1) { + activeVideoStreamID = streamIdInt; + } } } } @@ -345,6 +353,13 @@
OM stress testing
Hello all! Please see below weekly stress test report: Tested server configuration is: OS:Ubuntu 10.04.3 LTS * RAM 2 GB * CPU Intel(R) Celeron(R) E3300 @ 2.50GHz Java VM parameters is -Xms1024M -Xmx1024M Revision: 1453110 Tested scenario is: * Start OM conference * Start recording with 1280x1024 resolution * Start screen sharing * Connect to conference while server is not crashed. Today results is. Maximum number of the users in the system -- 19 Maximum number of the users in one room of the type Conference with the screen sharing and recordings turned on -- 18. All the users were logged from five Windows workstations with Adobe Flash Player 11. Result: After 19 connections server is down. Recoding is not stored. No error messages in log files. Graphics and statistic files are attached. sar.tar.gz Description: GNU Zip compressed data
Re: OM stress testing
Vasya, I cannot see your main discovery in your lettter on thread safety of Flash 11, -- With best regards / с наилучшими пожеланиями, Alexei Fedotov / Алексей Федотов, http://dataved.ru/ +7 916 562 8095 On Wed, Mar 6, 2013 at 10:43 AM, Vasya va...@unipro.ru wrote: Hello all! Please see below weekly stress test report: Tested server configuration is: OS:Ubuntu 10.04.3 LTS - RAM 2 GB - CPU Intel(R) Celeron(R) E3300 @ 2.50GHz Java VM parameters is -Xms1024M -Xmx1024M Revision: 1453110 Tested scenario is: - Start OM conference - Start recording with 1280x1024 resolution - Start screen sharing - Connect to conference while server is not crashed. Today results is. Maximum number of the users in the system – 19 Maximum number of the users in one room of the type “Conference” with the screen sharing and recordings turned on – 18. All the users were logged from five Windows workstations with Adobe Flash Player 11. Result: After 19 connections server is down. Recoding is not stored. No error messages in log files. Graphics and statistic files are attached.