Author: solomax
Date: Mon Aug 25 10:33:30 2014
New Revision: 1620291

URL: http://svn.apache.org/r1620291
Log:
Recordings in interview room are more stable

Modified:
    
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecordingLog.java
    
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/room/Room.java
    
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/room/RoomOrganisation.java
    
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/BaseConverter.java
    
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/FlvInterviewConverter.java
    
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/FlvRecorderConverter.java
    
openmeetings/branches/3.0.x/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml
    openmeetings/branches/3.0.x/src/main/webapp/WEB-INF/red5-web.xml
    
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
    
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java
    
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvInterviewConverter.java
    
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvRecorderConverter.java
    
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/FlvRecordingLog.java
    
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java
    
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomOrganisation.java
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/WEB-INF/red5-web.xml

Modified: 
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecordingLog.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecordingLog.java?rev=1620291&r1=1620290&r2=1620291&view=diff
==============================================================================
--- 
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecordingLog.java
 (original)
+++ 
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecordingLog.java
 Mon Aug 25 10:33:30 2014
@@ -40,7 +40,8 @@ import javax.persistence.Table;
 })
 @Table(name = "flvrecording_log")
 public class FlvRecordingLog implements Serializable {
-       private static final long serialVersionUID = -2577533628675416706L;
+       private static final long serialVersionUID = 1L;
+       public static final int MAX_LOG_SIZE = 1 * 1024 * 1024;
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Column(name="id")
@@ -57,7 +58,7 @@ public class FlvRecordingLog implements 
        private String msgType;
        
        @Lob
-       @Column(name="ful_message", length = 1 * 1024 * 1024)
+       @Column(name="ful_message", length = MAX_LOG_SIZE)
        private String fullMessage;
        
        @Column(name="exit_value")
@@ -95,7 +96,8 @@ public class FlvRecordingLog implements 
                return fullMessage;
        }
        public void setFullMessage(String fullMessage) {
-               this.fullMessage = fullMessage;
+               this.fullMessage = 
+                               fullMessage == null || fullMessage.length() < 
MAX_LOG_SIZE ? fullMessage : fullMessage.substring(0,  MAX_LOG_SIZE);
        }
        
        public String getExitValue() {

Modified: 
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/room/Room.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/room/Room.java?rev=1620291&r1=1620290&r2=1620291&view=diff
==============================================================================
--- 
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/room/Room.java
 (original)
+++ 
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/room/Room.java
 Mon Aug 25 10:33:30 2014
@@ -51,7 +51,7 @@ import org.simpleframework.xml.Root;
 
 @Entity
 @FetchGroups({
-       @FetchGroup(name = "roomModerators", attributes = { 
@FetchAttribute(name = "moderators")})
+       @FetchGroup(name = "roomModerators", attributes = { 
@FetchAttribute(name = "moderators"), @FetchAttribute(name = 
"roomOrganisations") })
 })
 @NamedQueries({
        @NamedQuery(name = "getNondeletedRooms", query = "SELECT r FROM Room r 
WHERE r.deleted = false"),
@@ -248,7 +248,7 @@ public class Room implements Serializabl
        @Element(data = true, required = false)
        private String pin;
        
-       @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
+       @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
        @JoinColumn(name = "rooms_id", insertable = true, updatable = true)
        @ElementDependent
        @org.simpleframework.xml.Transient

Modified: 
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/room/RoomOrganisation.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/room/RoomOrganisation.java?rev=1620291&r1=1620290&r2=1620291&view=diff
==============================================================================
--- 
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/room/RoomOrganisation.java
 (original)
+++ 
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/room/RoomOrganisation.java
 Mon Aug 25 10:33:30 2014
@@ -72,7 +72,7 @@ public class RoomOrganisation implements
        @Element(data=true)
        private Long rooms_organisation_id;
        
-       @ManyToOne(fetch = FetchType.LAZY)
+       @ManyToOne(fetch = FetchType.EAGER)
        @JoinColumn(name="rooms_id", nullable=true)
        @ForeignKey(enabled = true)
        @Element(name="rooms_id", data=true, required=false)
@@ -94,8 +94,9 @@ public class RoomOrganisation implements
        @Element(data=true)
        private boolean deleted;
 
-       public RoomOrganisation(Organisation org) {
+       public RoomOrganisation(Organisation org, Room room) {
                this.organisation = org;
+               this.room = room;
        }
 
        public RoomOrganisation() {

Modified: 
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/BaseConverter.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/BaseConverter.java?rev=1620291&r1=1620290&r2=1620291&view=diff
==============================================================================
--- 
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/BaseConverter.java
 (original)
+++ 
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/BaseConverter.java
 Mon Aug 25 10:33:30 2014
@@ -85,9 +85,12 @@ public abstract class BaseConverter {
        protected File getStreamFolder(FlvRecording flvRecording) {
                return getStreamsSubDir(flvRecording.getRoom_id());
        }
-       
-       protected String getDifference(Date from, Date to) {
-               long millis = from.getTime() - to.getTime();
+
+       protected long diff(Date from, Date to) {
+               return from.getTime() - to.getTime();
+       }
+
+       protected String formatMillis(long millis) {
                long hours = TimeUnit.MILLISECONDS.toHours(millis);
                millis -= TimeUnit.HOURS.toMillis(hours);
                long minutes = TimeUnit.MILLISECONDS.toMinutes(millis);
@@ -98,7 +101,7 @@ public abstract class BaseConverter {
        }
 
        protected void updateDuration(FlvRecording r) {
-               r.setDuration(getDifference(r.getRecordEnd(), 
r.getRecordStart()));
+               r.setDuration(formatMillis(diff(r.getRecordEnd(), 
r.getRecordStart())));
        }
        
        protected void deleteFileIfExists(String name) {

Modified: 
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/FlvInterviewConverter.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/FlvInterviewConverter.java?rev=1620291&r1=1620290&r2=1620291&view=diff
==============================================================================
--- 
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/FlvInterviewConverter.java
 (original)
+++ 
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/FlvInterviewConverter.java
 Mon Aug 25 10:33:30 2014
@@ -192,32 +192,36 @@ public class FlvInterviewConverter exten
                                        returnLog.add(r);
                                        if ("0".equals(r.getExitValue())) {
                                                //TODO need to remove smallest 
gap
-                                               
-                                               // stub to add
-                                               // ffmpeg -y -loop 1 -i 
/home/solomax/work/openmeetings/branches/3.0.x/dist/red5/webapps/openmeetings/streams/hibernate/default_interview_image.jpg
 -filter_complex '[0:0]scale=320:260' -c:v libx264 -t 00:00:29.059 -pix_fmt 
yuv420p out.flv
-                                               File podFB = new 
File(streamFolder, meta.getStreamName() + "_pod_" + pod + "_blank.flv");
-                                               String podPB = 
podFB.getCanonicalPath();
-                                               String[] argsPodB = new 
String[] { getPathToFFMPEG(), "-y" //
-                                                               , "-loop", "1", 
"-i", defaultInterviewImageFile.getCanonicalPath() //
-                                                               , 
"-filter_complex", String.format("[0:0]scale=%1$d:%2$d", flvWidth, flvHeight) //
-                                                               , "-c:v", 
"libx264" //
-                                                               , "-t", 
getDifference(meta.getRecordStart(), meta.getFlvRecording().getRecordStart()) //
-                                                               , "-pix_fmt", 
"yuv420p" //
-                                                               , podPB };
-                                               
returnLog.add(ProcessHelper.executeScript("blankFlvPod_" + pod , argsPodB));
-                                               
-                                               //ffmpeg -y -i out.flv -i 
rec_15_stream_4_2014_07_15_20_41_03.flv -filter_complex 
'[0:0]setsar=1/1[sarfix];[1:0]scale=320:260,setsar=1/1[scale];[sarfix] [scale] 
concat=n=2:v=1:a=0 [v]' -map '[v]'  output1.flv
-                                               File podF = new 
File(streamFolder, meta.getStreamName() + "_pod_" + pod + ".flv");
-                                               String podP = 
podF.getCanonicalPath();
-                                               String[] argsPod = new String[] 
{ getPathToFFMPEG(), "-y"//
-                                                               , "-i", podPB //
-                                                               , "-i", path //
-                                                               , 
"-filter_complex", 
String.format("[0:0]setsar=1/1[sarfix];[1:0]scale=%1$d:%2$d,setsar=1/1[scale];[sarfix]
 [scale] concat=n=2:v=1:a=0 [v]", flvWidth, flvHeight) //
-                                                               , "-map", "[v]" 
//
-                                                               , podP };
-                                               
returnLog.add(ProcessHelper.executeScript("shiftedFlvPod_" + pod , argsPod));
-
-                                               pods[pod - 1] = podP;
+                                               long diff = 
diff(meta.getRecordStart(), meta.getFlvRecording().getRecordStart());
+                                               if (diff != 0L) {
+                                                       // stub to add
+                                                       // ffmpeg -y -loop 1 -i 
/home/solomax/work/openmeetings/branches/3.0.x/dist/red5/webapps/openmeetings/streams/hibernate/default_interview_image.jpg
 -filter_complex '[0:0]scale=320:260' -c:v libx264 -t 00:00:29.059 -pix_fmt 
yuv420p out.flv
+                                                       File podFB = new 
File(streamFolder, meta.getStreamName() + "_pod_" + pod + "_blank.flv");
+                                                       String podPB = 
podFB.getCanonicalPath();
+                                                       String[] argsPodB = new 
String[] { getPathToFFMPEG(), "-y" //
+                                                                       , 
"-loop", "1", "-i", defaultInterviewImageFile.getCanonicalPath() //
+                                                                       , 
"-filter_complex", String.format("[0:0]scale=%1$d:%2$d", flvWidth, flvHeight) //
+                                                                       , 
"-c:v", "libx264" //
+                                                                       , "-t", 
formatMillis(diff) //
+                                                                       , 
"-pix_fmt", "yuv420p" //
+                                                                       , podPB 
};
+                                                       
returnLog.add(ProcessHelper.executeScript("blankFlvPod_" + pod , argsPodB));
+                                                       
+                                                       //ffmpeg -y -i out.flv 
-i rec_15_stream_4_2014_07_15_20_41_03.flv -filter_complex 
'[0:0]setsar=1/1[sarfix];[1:0]scale=320:260,setsar=1/1[scale];[sarfix] [scale] 
concat=n=2:v=1:a=0 [v]' -map '[v]'  output1.flv
+                                                       File podF = new 
File(streamFolder, meta.getStreamName() + "_pod_" + pod + ".flv");
+                                                       String podP = 
podF.getCanonicalPath();
+                                                       String[] argsPod = new 
String[] { getPathToFFMPEG(), "-y"//
+                                                                       , "-i", 
podPB //
+                                                                       , "-i", 
path //
+                                                                       , 
"-filter_complex", 
String.format("[0:0]setsar=1/1[sarfix];[1:0]scale=%1$d:%2$d,setsar=1/1[scale];[sarfix]
 [scale] concat=n=2:v=1:a=0 [v]", flvWidth, flvHeight) //
+                                                                       , 
"-map", "[v]" //
+                                                                       , podP 
};
+                                                       
returnLog.add(ProcessHelper.executeScript("shiftedFlvPod_" + pod , argsPod));
+       
+                                                       pods[pod - 1] = podP;
+                                               } else {
+                                                       pods[pod - 1] = path;
+                                               }
                                        }
                                        found = true;
                                }

Modified: 
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/FlvRecorderConverter.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/FlvRecorderConverter.java?rev=1620291&r1=1620290&r2=1620291&view=diff
==============================================================================
--- 
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/FlvRecorderConverter.java
 (original)
+++ 
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/FlvRecorderConverter.java
 Mon Aug 25 10:33:30 2014
@@ -136,7 +136,7 @@ public class FlvRecorderConverter extend
                        flvRecording.setFlvHeight(flvHeight);
 
                        String[] argv_fullFLV = new String[] { 
getPathToFFMPEG(), "-y",//
-                                       "-itsoffset", 
getDifference(screenMetaData.getRecordStart(), 
screenMetaData.getFlvRecording().getRecordStart()),
+                                       "-itsoffset", 
formatMillis(diff(screenMetaData.getRecordStart(), 
screenMetaData.getFlvRecording().getRecordStart())),
                                        "-i", inputScreenFullFlv, "-i", 
outputFullWav, "-ar", "22050", //
                                        "-acodec", "libmp3lame", //
                                        "-ab", "32k", //

Modified: 
openmeetings/branches/3.0.x/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml?rev=1620291&r1=1620290&r2=1620291&view=diff
==============================================================================
--- 
openmeetings/branches/3.0.x/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml
 (original)
+++ 
openmeetings/branches/3.0.x/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml
 Mon Aug 25 10:33:30 2014
@@ -23,15 +23,11 @@
        xmlns:tx="http://www.springframework.org/schema/tx";
        xmlns:mvc="http://www.springframework.org/schema/mvc";
        xmlns:context="http://www.springframework.org/schema/context";
-       xmlns:jaxrs="http://cxf.apache.org/jaxrs";
-       xmlns:jaxws="http://cxf.apache.org/jaxws";
        xsi:schemaLocation="
                http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans.xsd 
                http://www.springframework.org/schema/context 
http://www.springframework.org/schema/context/spring-context.xsd
                http://www.springframework.org/schema/tx 
http://www.springframework.org/schema/tx/spring-tx.xsd
-               http://www.springframework.org/schema/mvc 
http://www.springframework.org/schema/mvc/spring-mvc.xsd
-               http://cxf.apache.org/jaxws 
http://cxf.apache.org/schemas/jaxws.xsd
-               http://cxf.apache.org/jaxrs 
http://cxf.apache.org/schemas/jaxrs.xsd";
+               http://www.springframework.org/schema/mvc 
http://www.springframework.org/schema/mvc/spring-mvc.xsd";
                >
        <bean id="entityManagerFactory" 
class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
                <property name="persistenceUnitName" value="openmeetings" />

Modified: openmeetings/branches/3.0.x/src/main/webapp/WEB-INF/red5-web.xml
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/webapp/WEB-INF/red5-web.xml?rev=1620291&r1=1620290&r2=1620291&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/webapp/WEB-INF/red5-web.xml (original)
+++ openmeetings/branches/3.0.x/src/main/webapp/WEB-INF/red5-web.xml Mon Aug 25 
10:33:30 2014
@@ -20,9 +20,7 @@
 -->
 <beans xmlns="http://www.springframework.org/schema/beans";
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-    xmlns:lang="http://www.springframework.org/schema/lang";
-    xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd                
            
-    http://www.springframework.org/schema/lang 
http://www.springframework.org/schema/lang/spring-lang-3.1.xsd";>
+    xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans.xsd";>
        
        <bean id="placeholderConfig" 
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
            <property name="location" value="/WEB-INF/red5-web.properties" />

Modified: 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java?rev=1620291&r1=1620290&r2=1620291&view=diff
==============================================================================
--- 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
 (original)
+++ 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
 Mon Aug 25 10:33:30 2014
@@ -120,7 +120,7 @@ public class RoomForm extends AdminBaseF
                List<Organisation> orgList = 
Application.getBean(OrganisationDao.class).get(0, Integer.MAX_VALUE);
                final List<RoomOrganisation> orgRooms = new 
ArrayList<RoomOrganisation>(orgList.size());
                for (Organisation org : orgList) {
-                       orgRooms.add(new RoomOrganisation(org));
+                       orgRooms.add(new RoomOrganisation(org, 
getModelObject()));
                }
                add(new 
Select2MultiChoice<RoomOrganisation>("roomOrganisations", null, new 
TextChoiceProvider<RoomOrganisation>() {
                        private static final long serialVersionUID = 1L;
@@ -152,7 +152,7 @@ public class RoomForm extends AdminBaseF
                                }
                                List<RoomOrganisation> list = new 
ArrayList<RoomOrganisation>();
                                for (Organisation o : 
getBean(OrganisationDao.class).get(ids)) {
-                                       list.add(new RoomOrganisation(o));
+                                       list.add(new RoomOrganisation(o, 
RoomForm.this.getModelObject()));
                                }
                                return list;
                        }

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java?rev=1620291&r1=1620290&r2=1620291&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java
 Mon Aug 25 10:33:30 2014
@@ -86,8 +86,11 @@ public abstract class BaseConverter {
                return getStreamsSubDir(flvRecording.getRoomId());
        }
        
-       protected String getDifference(Date from, Date to) {
-               long millis = from.getTime() - to.getTime();
+       protected long diff(Date from, Date to) {
+               return from.getTime() - to.getTime();
+       }
+
+       protected String formatMillis(long millis) {
                long hours = TimeUnit.MILLISECONDS.toHours(millis);
                millis -= TimeUnit.HOURS.toMillis(hours);
                long minutes = TimeUnit.MILLISECONDS.toMinutes(millis);
@@ -98,7 +101,7 @@ public abstract class BaseConverter {
        }
 
        protected void updateDuration(FlvRecording r) {
-               r.setDuration(getDifference(r.getRecordEnd(), 
r.getRecordStart()));
+               r.setDuration(formatMillis(diff(r.getRecordEnd(), 
r.getRecordStart())));
        }
        
        protected void deleteFileIfExists(String name) {

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvInterviewConverter.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvInterviewConverter.java?rev=1620291&r1=1620290&r2=1620291&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvInterviewConverter.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvInterviewConverter.java
 Mon Aug 25 10:33:30 2014
@@ -193,31 +193,36 @@ public class FlvInterviewConverter exten
                                        if ("0".equals(r.getExitValue())) {
                                                //TODO need to remove smallest 
gap
                                                
-                                               // stub to add
-                                               // ffmpeg -y -loop 1 -i 
/home/solomax/work/openmeetings/branches/3.0.x/dist/red5/webapps/openmeetings/streams/hibernate/default_interview_image.jpg
 -filter_complex '[0:0]scale=320:260' -c:v libx264 -t 00:00:29.059 -pix_fmt 
yuv420p out.flv
-                                               File podFB = new 
File(streamFolder, meta.getStreamName() + "_pod_" + pod + "_blank.flv");
-                                               String podPB = 
podFB.getCanonicalPath();
-                                               String[] argsPodB = new 
String[] { getPathToFFMPEG(), "-y" //
-                                                               , "-loop", "1", 
"-i", defaultInterviewImageFile.getCanonicalPath() //
-                                                               , 
"-filter_complex", String.format("[0:0]scale=%1$d:%2$d", flvWidth, flvHeight) //
-                                                               , "-c:v", 
"libx264" //
-                                                               , "-t", 
getDifference(meta.getRecordStart(), meta.getFlvRecording().getRecordStart()) //
-                                                               , "-pix_fmt", 
"yuv420p" //
-                                                               , podPB };
-                                               
returnLog.add(ProcessHelper.executeScript("blankFlvPod_" + pod , argsPodB));
+                                               long diff = 
diff(meta.getRecordStart(), meta.getFlvRecording().getRecordStart());
+                                               if (diff != 0L) {
+                                                       // stub to add
+                                                       // ffmpeg -y -loop 1 -i 
/home/solomax/work/openmeetings/branches/3.0.x/dist/red5/webapps/openmeetings/streams/hibernate/default_interview_image.jpg
 -filter_complex '[0:0]scale=320:260' -c:v libx264 -t 00:00:29.059 -pix_fmt 
yuv420p out.flv
+                                                       File podFB = new 
File(streamFolder, meta.getStreamName() + "_pod_" + pod + "_blank.flv");
+                                                       String podPB = 
podFB.getCanonicalPath();
+                                                       String[] argsPodB = new 
String[] { getPathToFFMPEG(), "-y" //
+                                                                       , 
"-loop", "1", "-i", defaultInterviewImageFile.getCanonicalPath() //
+                                                                       , 
"-filter_complex", String.format("[0:0]scale=%1$d:%2$d", flvWidth, flvHeight) //
+                                                                       , 
"-c:v", "libx264" //
+                                                                       , "-t", 
formatMillis(diff) //
+                                                                       , 
"-pix_fmt", "yuv420p" //
+                                                                       , podPB 
};
+                                                       
returnLog.add(ProcessHelper.executeScript("blankFlvPod_" + pod , argsPodB));
                                                
-                                               //ffmpeg -y -i out.flv -i 
rec_15_stream_4_2014_07_15_20_41_03.flv -filter_complex 
'[0:0]setsar=1/1[sarfix];[1:0]scale=320:260,setsar=1/1[scale];[sarfix] [scale] 
concat=n=2:v=1:a=0 [v]' -map '[v]'  output1.flv
-                                               File podF = new 
File(streamFolder, meta.getStreamName() + "_pod_" + pod + ".flv");
-                                               String podP = 
podF.getCanonicalPath();
-                                               String[] argsPod = new String[] 
{ getPathToFFMPEG(), "-y"//
-                                                               , "-i", podPB //
-                                                               , "-i", path //
-                                                               , 
"-filter_complex", 
String.format("[0:0]setsar=1/1[sarfix];[1:0]scale=%1$d:%2$d,setsar=1/1[scale];[sarfix]
 [scale] concat=n=2:v=1:a=0 [v]", flvWidth, flvHeight) //
-                                                               , "-map", "[v]" 
//
-                                                               , podP };
-                                               
returnLog.add(ProcessHelper.executeScript("shiftedFlvPod_" + pod , argsPod));
-
-                                               pods[pod - 1] = podP;
+                                                       //ffmpeg -y -i out.flv 
-i rec_15_stream_4_2014_07_15_20_41_03.flv -filter_complex 
'[0:0]setsar=1/1[sarfix];[1:0]scale=320:260,setsar=1/1[scale];[sarfix] [scale] 
concat=n=2:v=1:a=0 [v]' -map '[v]'  output1.flv
+                                                       File podF = new 
File(streamFolder, meta.getStreamName() + "_pod_" + pod + ".flv");
+                                                       String podP = 
podF.getCanonicalPath();
+                                                       String[] argsPod = new 
String[] { getPathToFFMPEG(), "-y"//
+                                                                       , "-i", 
podPB //
+                                                                       , "-i", 
path //
+                                                                       , 
"-filter_complex", 
String.format("[0:0]setsar=1/1[sarfix];[1:0]scale=%1$d:%2$d,setsar=1/1[scale];[sarfix]
 [scale] concat=n=2:v=1:a=0 [v]", flvWidth, flvHeight) //
+                                                                       , 
"-map", "[v]" //
+                                                                       , podP 
};
+                                                       
returnLog.add(ProcessHelper.executeScript("shiftedFlvPod_" + pod , argsPod));
+
+                                                       pods[pod - 1] = podP;
+                                               } else {
+                                                       pods[pod - 1] = path;
+                                               }
                                        }
                                        found = true;
                                }

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvRecorderConverter.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvRecorderConverter.java?rev=1620291&r1=1620290&r2=1620291&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvRecorderConverter.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvRecorderConverter.java
 Mon Aug 25 10:33:30 2014
@@ -136,7 +136,7 @@ public class FlvRecorderConverter extend
                        flvRecording.setFlvHeight(flvHeight);
 
                        String[] argv_fullFLV = new String[] { 
getPathToFFMPEG(), "-y",//
-                                       "-itsoffset", 
getDifference(screenMetaData.getRecordStart(), 
screenMetaData.getFlvRecording().getRecordStart()),
+                                       "-itsoffset", 
formatMillis(diff(screenMetaData.getRecordStart(), 
screenMetaData.getFlvRecording().getRecordStart())),
                                        "-i", inputScreenFullFlv, "-i", 
outputFullWav, "-ar", "22050", //
                                        "-acodec", "libmp3lame", //
                                        "-ab", "32k", //

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/FlvRecordingLog.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/FlvRecordingLog.java?rev=1620291&r1=1620290&r2=1620291&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/FlvRecordingLog.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/FlvRecordingLog.java
 Mon Aug 25 10:33:30 2014
@@ -42,6 +42,7 @@ import org.apache.openmeetings.db.entity
 @Table(name = "flvrecording_log")
 public class FlvRecordingLog implements IDataProviderEntity {
        private static final long serialVersionUID = 1L;
+       public static final int MAX_LOG_SIZE = 1 * 1024 * 1024;
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Column(name="id")
@@ -58,7 +59,7 @@ public class FlvRecordingLog implements 
        private String msgType;
        
        @Lob
-       @Column(name="full_message", length = 1 * 1024 * 1024)
+       @Column(name="ful_message", length = MAX_LOG_SIZE)
        private String fullMessage;
        
        @Column(name="exit_value")
@@ -96,7 +97,8 @@ public class FlvRecordingLog implements 
                return fullMessage;
        }
        public void setFullMessage(String fullMessage) {
-               this.fullMessage = fullMessage;
+               this.fullMessage = 
+                               fullMessage == null || fullMessage.length() < 
MAX_LOG_SIZE ? fullMessage : fullMessage.substring(0,  MAX_LOG_SIZE);
        }
        
        public String getExitValue() {

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java?rev=1620291&r1=1620290&r2=1620291&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java
 Mon Aug 25 10:33:30 2014
@@ -53,7 +53,7 @@ import org.simpleframework.xml.Root;
 
 @Entity
 @FetchGroups({
-       @FetchGroup(name = "roomModerators", attributes = { 
@FetchAttribute(name = "moderators")})
+       @FetchGroup(name = "roomModerators", attributes = { 
@FetchAttribute(name = "moderators"), @FetchAttribute(name = 
"roomOrganisations") })
 })
 @NamedQueries({
        @NamedQuery(name = "getNondeletedRooms", query = "SELECT r FROM Room r 
WHERE r.deleted = false"),
@@ -252,7 +252,7 @@ public class Room implements IDataProvid
        @Element(data = true, required = false)
        private String pin;
        
-       @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
+       @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
        @JoinColumn(name = "rooms_id", insertable = true, updatable = true)
        @ElementDependent
        @org.simpleframework.xml.Transient

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomOrganisation.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomOrganisation.java?rev=1620291&r1=1620290&r2=1620291&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomOrganisation.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomOrganisation.java
 Mon Aug 25 10:33:30 2014
@@ -71,7 +71,7 @@ public class RoomOrganisation implements
        @Element(data = true, name = "rooms_organisation_id")
        private Long id;
        
-       @ManyToOne(fetch = FetchType.LAZY)
+       @ManyToOne(fetch = FetchType.EAGER)
        @JoinColumn(name="rooms_id", nullable=true)
        @ForeignKey(enabled = true)
        @Element(name="rooms_id", data=true, required=false)
@@ -93,8 +93,9 @@ public class RoomOrganisation implements
        @Element(data=true)
        private boolean deleted;
 
-       public RoomOrganisation(Organisation org) {
+       public RoomOrganisation(Organisation org, Room room) {
                this.organisation = org;
+               this.room = room;
        }
 
        public RoomOrganisation() {

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java?rev=1620291&r1=1620290&r2=1620291&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
 Mon Aug 25 10:33:30 2014
@@ -119,7 +119,7 @@ public class RoomForm extends AdminBaseF
                List<Organisation> orgList = 
Application.getBean(OrganisationDao.class).get(0, Integer.MAX_VALUE);
                final List<RoomOrganisation> orgRooms = new 
ArrayList<RoomOrganisation>(orgList.size());
                for (Organisation org : orgList) {
-                       orgRooms.add(new RoomOrganisation(org));
+                       orgRooms.add(new RoomOrganisation(org, 
getModelObject()));
                }
                add(new 
Select2MultiChoice<RoomOrganisation>("roomOrganisations", null, new 
TextChoiceProvider<RoomOrganisation>() {
                        private static final long serialVersionUID = 1L;
@@ -151,7 +151,7 @@ public class RoomForm extends AdminBaseF
                                }
                                List<RoomOrganisation> list = new 
ArrayList<RoomOrganisation>();
                                for (Organisation o : 
getBean(OrganisationDao.class).get(ids)) {
-                                       list.add(new RoomOrganisation(o));
+                                       list.add(new RoomOrganisation(o, 
RoomForm.this.getModelObject()));
                                }
                                return list;
                        }

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/WEB-INF/red5-web.xml
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/WEB-INF/red5-web.xml?rev=1620291&r1=1620290&r2=1620291&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/WEB-INF/red5-web.xml
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/WEB-INF/red5-web.xml
 Mon Aug 25 10:33:30 2014
@@ -20,9 +20,7 @@
 -->
 <beans xmlns="http://www.springframework.org/schema/beans";
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-    xmlns:lang="http://www.springframework.org/schema/lang";
-    xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd                
            
-    http://www.springframework.org/schema/lang 
http://www.springframework.org/schema/lang/spring-lang-3.1.xsd";>
+    xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans.xsd";>
        
        <bean id="placeholderConfig" 
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
            <property name="location" value="/WEB-INF/red5-web.properties" />


Reply via email to