1- var url = 'ws://' + window . location . host + '/dmd' ;
1+ var url = 'ws://' + window . location . host + '/dmd' ;
22var typeSet = {
33 'jBinary.littleEndian' : true ,
44 gray2Planes : {
@@ -214,7 +214,9 @@ var controller = {
214214 } ) ;
215215 break ;
216216 case 'rgb24' :
217- that . renderRgb24 ( frame ) ;
217+ that . renderFrame ( frame , function ( ) {
218+ return that . rgb24toInvertedRgb24 ( frame . planes ) ;
219+ } ) ;
218220 break ;
219221 case 'dimensions' :
220222 that . setDimensions ( frame ) ;
@@ -245,10 +247,6 @@ var controller = {
245247 } ;
246248 } ,
247249
248- renderRgb24 ( frame ) {
249- console . log ( 'Colored rgb24 Frame: %s' , frame . timestamp ) ;
250- } ,
251-
252250 renderFrame : function ( data , render ) {
253251
254252 if ( ! this . _clientStart ) {
@@ -403,6 +401,23 @@ var controller = {
403401 return rgbFrame ;
404402 } ,
405403
404+ rgb24toInvertedRgb24 : function ( buffer ) {
405+ // the received frame is correctly 00..height, but graytoRgb24 uses heigth to 0, we need to revert
406+ var rgbFrame = new Uint8Array ( this . _width * this . _height * 3 ) ;
407+ var pos = 0 ;
408+ var pos_orig = 0 ;
409+ for ( var y = this . _height - 1 ; y >= 0 ; y -- ) {
410+ for ( var x = 0 ; x < this . _width ; x ++ ) {
411+ pos_orig = ( y * this . _width * 3 ) + ( x * 3 ) ;
412+ rgbFrame [ pos ] = buffer [ pos_orig ] ;
413+ rgbFrame [ pos + 1 ] = buffer [ pos_orig + 1 ] ;
414+ rgbFrame [ pos + 2 ] = buffer [ pos_orig + 1 ] ;
415+ pos += 3 ;
416+ }
417+ }
418+ return rgbFrame ;
419+ } ,
420+
406421 joinPlanes : function ( bitlength , planes ) {
407422 var frame = new ArrayBuffer ( this . _width * this . _height ) ;
408423 var planeSize = planes . byteLength / bitlength ;
@@ -422,4 +437,4 @@ var controller = {
422437 }
423438}
424439
425- window . addEventListener ( "load" , controller . init . bind ( controller ) , false ) ;
440+ window . addEventListener ( "load" , controller . init . bind ( controller ) , false ) ;
0 commit comments