2 * hanndles driving the firefogg render system
5 var mvFirefoggRender = function( iObj ) {
6 return this.init( iObj );
8 var default_render_options = {
14 var default_FirefoggRender_options = {
16 //if we should save to disk (if false setup upload stuff below)
19 //set up the mvPlaylist object
20 mvFirefoggRender.prototype = {
21 //default empty render options:
23 continue_rendering:false,
24 init:function( iObj ){
27 //grab the mvFirefogg object to do basic tests
28 this.myFogg = new mvFirefogg({
33 if( this.myFogg.firefoggCheck() ){
40 //set up local fogg pointer:
41 this.fogg = this.myFogg.fogg;
43 //setup player instance
44 this.player = $j(iObj.player_target).get(0);
45 this.player_target = iObj.player_target;
47 //setup the render options (with defaults)
48 for(var i in default_render_options){
49 if( iObj['render_options'][i] ){
50 this.renderOptions[ i ] = iObj['render_options'][i];
52 this.renderOptions[ i ] = default_render_options[i];
55 //setup the application options (with defaults)
56 for(var i in default_FirefoggRender_options ){
58 this[ i ] = iObj[ i ];
60 this[ i ] = default_FirefoggRender_options[i];
63 //set up targets and local vars
65 if( iObj.target_startRender ){
66 $j(iObj.target_startRender).click(function(){
67 js_log("Start render");
70 this.target_startRender = iObj.target_startRender;
72 if( iObj.target_stopRender ){
73 $j(iObj.target_stopRender).click(function(){
76 this.target_stopRender = iObj.target_stopRender;
78 if( iObj.target_timeStatus ){
79 this.target_timeStatus = iObj.target_timeStatus;
82 startRender:function(){
84 var t = this.start_time;
85 //get the interval from renderOptions framerate
86 var interval = 1 / this.renderOptions.framerate
88 //issue a load request on the player:
92 this.fogg.initRender( JSON.stringify( _this.renderOptions ), 'foggRender' );
94 //add audio if we had any:
96 //request a target (should support rendering to temp location too)
97 this.fogg.saveVideoAs();
99 //set the continue rendering flag to true:
100 this.continue_rendering = true;
102 //internal function to hanndle updates:
103 var doNextFrame = function(){
104 $j(_this.target_timeStatus).val( " on " + (Math.round(t*10)/10) + " of "+
105 (Math.round( _this.player.getDuration() * 10) / 10 ) );
106 _this.player.setCurrentTime(t, function(){
107 _this.fogg.addFrame( $j(_this.player_target).attr('id') );
109 if(t >= _this.player.getDuration() ){
110 _this.doFinalRender();
112 if(_this.continue_rendering){
116 _this.doFinalRender();
123 stopRender:function(){
124 this.continue_rendering=false;
126 doFinalRender:function(){
127 $j(this.target_timeStatus).val("doing final render");
131 updateStatus:function(){
133 var doUpdateStatus = function(){
134 var rstatus = _this.fogg.renderstatus()
135 $j(_this.target_timeStatus).val(rstatus);
136 if(rstatus != 'done' && rstatus != 'rendering failed') {
137 setTimeout(doUpdateStatus, 100);
139 $j(_this.target_startRender).attr("disabled", false);